From db4a742e5be332eb8290f8e5803e43aa3ab941f4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Apr 2024 10:53:36 +0000 Subject: [PATCH] Rebuild pages at f0674ec990a70c84fd4eedae146cf60eea8d333f --- AY2324S2-CS2103T-F11-1_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-T09-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-T11-3_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-T15-4_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-T16-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-T16-4_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-W09-1_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-W11-1_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-W11-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-W13-4_tp_master/commits.json | 2 +- archive.zip | Bin 18666656 -> 18750925 bytes reposense-logs/reposense.log.0 | 2530 ++++++++--------- summary.json | 2 +- 22 files changed, 1285 insertions(+), 1285 deletions(-) diff --git a/AY2324S2-CS2103T-F11-1_tp_master/commits.json b/AY2324S2-CS2103T-F11-1_tp_master/commits.json index f976b10c..9fbd7835 100644 --- a/AY2324S2-CS2103T-F11-1_tp_master/commits.json +++ b/AY2324S2-CS2103T-F11-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"shawnnlimm":[{"date":"2024-02-29","commitResults":[{"hash":"c3300a626c7e8569f3d8546b399748b24ce48874","isMergeCommit":false,"messageTitle":"docs: Update AboutUs details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}}]},{"date":"2024-03-04","commitResults":[{"hash":"9121062e15ac536c065d580668747604ad2aa813","isMergeCommit":true,"messageTitle":"Merge pull request #23 from shamesjen/master","messageBody":"Docs: Update About Us and User Guide","fileTypesAndContributionMap":{}},{"hash":"6582c1a503a5ecdc39fee3b02ed34567566a8935","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into docs/about-us","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"edd2b895dd8e77173f3c32e0415d8790ea99002e","isMergeCommit":false,"messageTitle":"docs: Update UG and DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":142,"deletions":40}}}]},{"date":"2024-03-07","commitResults":[{"hash":"445d24cd915c9dab16c5f18a91478f1ebe665ffb","isMergeCommit":false,"messageTitle":"docs: Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":13}}},{"hash":"402ff51bdca73f4443a8bac5a7edccb62d047d41","isMergeCommit":false,"messageTitle":"docs: Update Index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4b5aa3ab9a57a94136429881176d7690cbdc8d21","isMergeCommit":true,"messageTitle":"Merge pull request #25 from shawnnlimm/docs/readme","messageBody":"docs: Update README","fileTypesAndContributionMap":{}},{"hash":"2a653f3dab103c4ea4f56c3dc1b3d315d0dad101","isMergeCommit":false,"messageTitle":"docs: Fix minor case issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6e7931d700498369975a27dae630ed3926905ccd","isMergeCommit":true,"messageTitle":"Merge pull request #26 from shawnnlimm/docs/readme","messageBody":"docs: Update _config.yml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"d718e84ca86d69107cfcf22c6d965b639c190386","isMergeCommit":false,"messageTitle":"docs: Add user stories and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":80,"deletions":15}}},{"hash":"701f4f862792f3687bdd8233aff32cd80b4d6715","isMergeCommit":false,"messageTitle":"fix: Update minor issues to pass checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-17","commitResults":[{"hash":"8b9c3830b65f3e1c255e9bff49be3adb2c6714bb","isMergeCommit":false,"messageTitle":"feat: Add mark command to mark participation scores","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":4},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":102,"deletions":10}}},{"hash":"67cc51f980c7058a4140272cfda6e660a3fce439","isMergeCommit":false,"messageTitle":"test: Fix test bug and checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":11,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"8cfebf852841618d1f31ddc7d02eb31ce1da99fd","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Ryo-Seah/branch-remove-tag","messageBody":"Branch remove tag","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"611a1d2e1e0adebc41d355c523a113e7a863fd6d","isMergeCommit":false,"messageTitle":"ui: Modify color of week labels","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"407669dee8fc06dc6a0b823f25e9325d7d1d8ea3","isMergeCommit":true,"messageTitle":"Merge pull request #52 from shamesjen/branch-filter","messageBody":"Feature: FilterCommand","fileTypesAndContributionMap":{}},{"hash":"70f678cd919c94e00f6ef6cd1addecced7a8eb30","isMergeCommit":true,"messageTitle":"Merge pull request #53 from thewongdylan/dylan/redoCommand","messageBody":"Dylan/information about undone and redone commands","fileTypesAndContributionMap":{}},{"hash":"a363670164c2308a9e8d2713409444202380c617","isMergeCommit":true,"messageTitle":"Merge pull request #54 from thewongdylan/docs/ug","messageBody":"Update UserGuide for undo/redo","fileTypesAndContributionMap":{}},{"hash":"4afa0bfbc24de5ac862d80a1799dde9f680616e1","isMergeCommit":true,"messageTitle":"Merge pull request #55 from thewongdylan/docs/dg","messageBody":"Update DeveloperGuide for undo/redo","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"d4254494818f9685a9b3a17121144facd896db85","isMergeCommit":false,"messageTitle":"fix: Fix parsing logic for mark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4},"other":{"insertions":1,"deletions":1}}},{"hash":"12e9d64170fe8664f8fa358a1464a1ab080e697d","isMergeCommit":false,"messageTitle":"refactor: Removed print statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-28","commitResults":[{"hash":"4a0227003c633fe67ed05cde0131af06323fb81f","isMergeCommit":false,"messageTitle":"docs: Update UG and DG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"docs":{"insertions":216,"deletions":39},"test-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-29","commitResults":[{"hash":"51c8c6bf61d9fea35fd6ac71b61078c173797c0c","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Ryo-Seah/master","messageBody":"Update UG with Remove tag commands","fileTypesAndContributionMap":{}},{"hash":"b4bacf06d5552f7b839648fd6a9846d39a774c1d","isMergeCommit":false,"messageTitle":"refactor: Refactor MarkCommand to MarkParticipationCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8},"other":{"insertions":40,"deletions":28},"test-code":{"insertions":38,"deletions":3}}}]},{"date":"2024-03-30","commitResults":[{"hash":"c5fecb1946b43bfafdccc5e282643cec46d8b189","isMergeCommit":false,"messageTitle":"feat: Add mark attendance feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":227,"deletions":21},"other":{"insertions":4,"deletions":0},"test-code":{"insertions":161,"deletions":23}}},{"hash":"2a2af240105dcd21754b9027d3b3194387d9a1ee","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"076d799758c058b020702f3513bd9cb80f2e9f9b","isMergeCommit":false,"messageTitle":"feat: Update mark participation command word","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3f1f32ff96dc095a88d4b3e54121ed37bf42ed19","isMergeCommit":true,"messageTitle":"Merge pull request #67 from shawnnlimm/shawn/mark-attendance","messageBody":"feat: Add mark attendance feature","fileTypesAndContributionMap":{}},{"hash":"9b4338d402455242a5b6baba73ab0948076aacbf","isMergeCommit":false,"messageTitle":"feat: Modify participation scores to be greater than one","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":24,"deletions":2}}},{"hash":"8fd7bc6cb8a13de5c1c96856040803a2669e9d6d","isMergeCommit":false,"messageTitle":"ui: Modify attendance label","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-31","commitResults":[{"hash":"2f4a07281317dd408676258d40f512852523020d","isMergeCommit":true,"messageTitle":"Merge pull request #72 from Ryo-Seah/master","messageBody":"Add addAssignment feature","fileTypesAndContributionMap":{}},{"hash":"da34d8adf56829da3e97bb02f3fcf0490cff5479","isMergeCommit":true,"messageTitle":"Merge pull request #76 from thewongdylan/dylan/unmarkCommand","messageBody":"Dylan/unmark command","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"e5b8bfa57c4766b9f063f9c0be5b4dbd179b09a3","isMergeCommit":true,"messageTitle":"Merge pull request #78 from thewongdylan/dylan/unmarkCommand","messageBody":"Dylan/unmarkalla and unmarkallp","fileTypesAndContributionMap":{}},{"hash":"3216c2397874587ba0a69cf1cd01d4c2d3deaa6e","isMergeCommit":true,"messageTitle":"Merge pull request #79 from thewongdylan/dylan/unmarkCommand","messageBody":"Dylan/Add checks to prevent negative scores","fileTypesAndContributionMap":{}},{"hash":"020b1247afa6d01ec8e0432de0be2084b6e85d12","isMergeCommit":false,"messageTitle":"docs: Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":450,"deletions":156}}},{"hash":"805c0b6be1edc9cb17a27d31b22eb52c032f7e2b","isMergeCommit":true,"messageTitle":"Merge pull request #80 from shawnnlimm/shawn/docs","messageBody":"docs: Update UG","fileTypesAndContributionMap":{}},{"hash":"52962da634e3e2b3565c9db025e2024cc0c28cb2","isMergeCommit":false,"messageTitle":"docs: Fix table of contents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"e5f16a391e0b1c59d1e266938a44ca607b3ae1f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into shawn/docs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"43ef54db9fbd10b0ce5670bd3a2c030f4da8ca80","isMergeCommit":false,"messageTitle":"docs: Fix DG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"4ab4889c8abe872ca9c355fb7d8feb60181cb279","isMergeCommit":true,"messageTitle":"Merge pull request #81 from shawnnlimm/shawn/docs","messageBody":"docs: Update UG","fileTypesAndContributionMap":{}},{"hash":"ae6b66b1689246eb8ef169a4829df26f36268efa","isMergeCommit":false,"messageTitle":"docs: Fix table formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"d1b6468bc3f369a4a961ac61b4e0d33f55cd80bd","isMergeCommit":true,"messageTitle":"Merge pull request #82 from shawnnlimm/shawn/docs","messageBody":"docs: Fix table formatting","fileTypesAndContributionMap":{}}]}],"shamesjen":[{"date":"2024-03-03","commitResults":[{"hash":"0446c4f0f513c5592adaca7a1c51073b5b979d79","isMergeCommit":false,"messageTitle":"add a photogragh and update the readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":4}}},{"hash":"1ddb8ca60ecf692037687113fc26bd61715f1cbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-shamesjen\u0027 merge my edits","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5b4a950fa1cd770a6f92bffaf158eecbe46d1fd7","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Ryo-Seah/master","messageBody":"Docs: Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"1c2990b30f6227e784a2270e0d93bdf51a0d95a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5980c903b11854e7d83e7a890a58e1ae342fec50","isMergeCommit":false,"messageTitle":"add a photogragh and update the readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":16}}},{"hash":"fd2a4daefcd3c178faef5a7167b575306c7d6724","isMergeCommit":true,"messageTitle":"merge changes from upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2820718ac5549aa64e4afc9fda04e9efe4aa9f5d","isMergeCommit":false,"messageTitle":"fix a typo in the aboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"1df6b039492c5318be1736e1cc6b24936c297eef","isMergeCommit":true,"messageTitle":"Merge pull request #24 from shawnnlimm/docs/about-us","messageBody":"docs: Update DG and UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"368dea9c3f4ff064e0c30c4e7cb030f383a151ef","isMergeCommit":true,"messageTitle":"Merge pull request #32 from shawnnlimm/shawn/docs","messageBody":"docs: Add user stories and use cases","fileTypesAndContributionMap":{}},{"hash":"9c64daa4f2ba03b79564104f1f457a8453725c8a","isMergeCommit":false,"messageTitle":"docs: Update aboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a442522147ae0cb6c2c9ebe7955621cd2f2cb6ec","isMergeCommit":true,"messageTitle":"Merge pull request #42 from shawnnlimm/shawn/mark-participation","messageBody":"feat: Add mark command to mark participation scores","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"813df0bb8fee79ae4e6d15061e3f926ee797a4d2","isMergeCommit":false,"messageTitle":"Add FilterCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":0}}},{"hash":"29a614898ee8024e0856459e012bbb69dfb4a6bc","isMergeCommit":true,"messageTitle":"Merge pull request #48 from thewongdylan/dylan/undoCommand","messageBody":"Dylan/undo command","fileTypesAndContributionMap":{}},{"hash":"b7498137c5f55a0e18a29b482b0cabadccaaa86f","isMergeCommit":false,"messageTitle":"add checkstyle improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"0d5600c9acd303bb5523644d05b86400db43505e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into branch-filter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b7d3ef041a832396c0ec5a75fcb2163a7c0b1622","isMergeCommit":false,"messageTitle":"add JUnit Tests for filtercommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":130,"deletions":0}}},{"hash":"a9259790c951dda1216a9b29e249dc0aa1a9d0cd","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-filter\u0027 into branch-filter merge upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f060785c3fb904270dade5615a919445232a5ee9","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into branch-filter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3666a1f2e5417954649ba85b29dabc85fc1c97ed","isMergeCommit":true,"messageTitle":"Merge pull request #51 from shawnnlimm/shawn/mark-participation","messageBody":"ui: Modify color of week labels","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"63fa111c35fca14334b9fe637e4833a6ff510a25","isMergeCommit":false,"messageTitle":"add MarkAll functionality to the app","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":146,"deletions":2},"test-code":{"insertions":105,"deletions":0}}},{"hash":"2f3f00f7ac4168cacad74d33b1c7998c6956a92f","isMergeCommit":false,"messageTitle":"add some changes to match with the new fields in the addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}}]},{"date":"2024-03-31","commitResults":[{"hash":"8025b17179191ed9fbf497aaecfe193ce518f20e","isMergeCommit":false,"messageTitle":"add markallparticipation and refactored markall to markallattendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":188,"deletions":18},"test-code":{"insertions":117,"deletions":13}}},{"hash":"2f9858e171d1a42a5c58eec47e541c1558c53a87","isMergeCommit":false,"messageTitle":"add mark all participation and refactors markallattendance","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":23}}},{"hash":"2d62577c208fac55ab16e2dbebeac899bc09d865","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-markallp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b7a0f9c563b8c5e7e91eb2156f812fc477b5b2af","isMergeCommit":true,"messageTitle":"Merge pull request #73 from shamesjen/branch-markallp","messageBody":"Mark all participation","fileTypesAndContributionMap":{}},{"hash":"217ab644ba943c669797c11061fda18a46125a3e","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Ryo-Seah/master","messageBody":"Add Junit tests for AddAssignmentCommand","fileTypesAndContributionMap":{}}]}],"Ryo-Seah":[{"date":"2024-03-03","commitResults":[{"hash":"93678c844ca10f3f0013962538243199683b6d5d","isMergeCommit":false,"messageTitle":"Partial complete Remove Tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":191,"deletions":0},"test-code":{"insertions":7,"deletions":0}}},{"hash":"8d26c210767bfbdb54120f786ef9f8d7329e85ee","isMergeCommit":true,"messageTitle":"Merge pull request #15 from shawnnlimm/docs/about-us","messageBody":"docs: Update AboutUs details","fileTypesAndContributionMap":{}},{"hash":"1eb8ebe95f45fe1e8d3a90f1a1773c8dab26a8d0","isMergeCommit":false,"messageTitle":"Update Aboutus -Ryo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"c20d6dd68f0b76017bf8d153b1116fe9fbbbf8e6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b509fa2c6c1384f44867e66af8e20c24ab5396cf","isMergeCommit":false,"messageTitle":"Updated User Guide, add Remove Tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"24730f1625ff2fbc8716e24c3cf43669a7d5cf54","isMergeCommit":true,"messageTitle":"Merge pull request #20 from thewongdylan/master","messageBody":"Update AboutUs -Dylan","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"04d73ee4f894cf94ff1b8d6736d3f9f7f054c0de","isMergeCommit":false,"messageTitle":"Complete Remove Tag command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":9}}},{"hash":"698565b7bca19af3e58ccafef6ca7c6fbf0bcc63","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab477e0d08437c09fffb6cca4fe781d9f19bc63f","isMergeCommit":true,"messageTitle":"Merge pull request #34 from shamesjen/master","messageBody":"docs: Update aboutUS","fileTypesAndContributionMap":{}},{"hash":"f8d4a6db615d9d4fdbf79e70163b11f7a50800cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"effe1ee06c0e0914c556d8d44d4ba91289d7e370","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":49,"deletions":0}}},{"hash":"42858a9a9cf667e1ae050efe06a12a289995a541","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-remove-tag\u0027 of https://github.com/Ryo-Seah/tp into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e5643c1399f5e2d95cd1e21622146f640229be46","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":21}}},{"hash":"fd6ccee3148d703c590d1c72e5fb251baa896e20","isMergeCommit":false,"messageTitle":"Fix checkstyleTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":9}}},{"hash":"65d978cdb9edfee2dc8462faa9e76c9c348ed2be","isMergeCommit":false,"messageTitle":"Fix test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a290d91a7974953e097c3755a429c726b239bfa4","isMergeCommit":false,"messageTitle":"Add uniquePersonList Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":6},"test-code":{"insertions":60,"deletions":0}}},{"hash":"52d9f2e6e4a46f4303fdd847b47843b46d3dda7e","isMergeCommit":false,"messageTitle":"Add Tests RemoveTagCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":1}}},{"hash":"859455e129b7895bf86663c7ca5717f1bb9ed537","isMergeCommit":false,"messageTitle":"Add RemoveTagCommandParser Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":21},"test-code":{"insertions":16,"deletions":8}}},{"hash":"21ad45f42a9f1c43400da286db4ac9e33a73d57b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e80a4471982d036590fda8d5a7d62620fc45c0b0","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"27e273ed4d8c54195cfb3ecb6a462c0559dc326b","isMergeCommit":false,"messageTitle":"Fix checkStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"66ed65e786a3da2e2f75e99bd5cb33d023eefb17","isMergeCommit":false,"messageTitle":"Add removeTagFromAllCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":173,"deletions":0}}},{"hash":"d764db46a20c052ba18a51dd851345e51d41a100","isMergeCommit":false,"messageTitle":"Fix documentations and error handling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7}}}]},{"date":"2024-03-19","commitResults":[{"hash":"fb24fadb82f89fd29e22841d5c55dfcd8a2ce4af","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"07a8e9bf8e0d0084d2c2a6d547c85f9c586e91c2","isMergeCommit":true,"messageTitle":"Merge pull request #49 from thewongdylan/dylan/redoCommand","messageBody":"Dylan/redo command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"5b1426039023cd59d1aaf8cfb2d76d0d52a87c7f","isMergeCommit":false,"messageTitle":"Update UG with Remove tag commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":3}}},{"hash":"c3f18e34bfbd5920ed9d74403c50ee5a6f60df7b","isMergeCommit":true,"messageTitle":"Merge pull request #64 from shamesjen/branch-commandonfilter","messageBody":"add MarkAll functionality to the app","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"93d2680f16ed97c303eb6ce22e93bfb8f576f3b5","isMergeCommit":false,"messageTitle":"Add customizable Assignments feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":356,"deletions":27},"test-code":{"insertions":28,"deletions":10}}},{"hash":"ddf5857fda5245f40cedbe56c533ef143b230fbf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Ryo-Seah/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"49a039e5de79c2355375f6bd32e3aa9d41d9163e","isMergeCommit":false,"messageTitle":"Checkstyle updates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":38},"test-code":{"insertions":12,"deletions":7}}},{"hash":"76caf3498c3ea5fe4284528d5984a70bcf0b4877","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":23,"deletions":5}}},{"hash":"7319c99afdf18b9d76d7b3c8a3468cdbda9d97bf","isMergeCommit":true,"messageTitle":"Merge pull request #70 from shawnnlimm/shawn/mark-participation","messageBody":"feat: Modify participation scores to be greater than one","fileTypesAndContributionMap":{}},{"hash":"93366ee2fa5f9faff87395caadad3152b784df43","isMergeCommit":true,"messageTitle":"Merge pull request #71 from shawnnlimm/shawn/mark-attendance","messageBody":"ui: Modify attendance label","fileTypesAndContributionMap":{}},{"hash":"bdecb7b85667ba65d06ba20190a25de890e0b947","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-31","commitResults":[{"hash":"7ad14e8151946953f6b0900426b98bb188be2e86","isMergeCommit":false,"messageTitle":"Remove print statements, small debugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"ab25c785d6b091646dd92e80408ad3fb8629c72b","isMergeCommit":false,"messageTitle":"Remove all print statements, change command word","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5},"test-code":{"insertions":0,"deletions":2}}},{"hash":"ec85b9810771924771a3349caf3c0feda607dc41","isMergeCommit":false,"messageTitle":"Add Junit tests for AddAssignmentCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":14},"test-code":{"insertions":136,"deletions":0}}},{"hash":"91420d31c40de5e7cc322b880c38b4fe1996fb69","isMergeCommit":false,"messageTitle":"Refactor AddAssignment to make it persist in state.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}},{"hash":"451b1c40206b295919ffa02c45640b36f0ce1dea","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9bd5e9c91ace140e55c5efc834d5690183b77a16","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":3}}},{"hash":"1bdd7527db778d95c374e4b1f389d27107d40469","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Ryo-Seah/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f2b4aef7520e8a0f365c0bd44c6e1b0048116f6e","isMergeCommit":false,"messageTitle":"Refactor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}}]},{"date":"2024-04-01","commitResults":[{"hash":"77b66922c6351e3f7710a6c9822d185bcec055ba","isMergeCommit":false,"messageTitle":"Add partial MarkAssignment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":208,"deletions":10}}},{"hash":"515e9f9fce7d675f3bf1c5237e7095e220e76779","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"28569e4c63bcaaa17c758eece5dd3029e914f9a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Ryo-Seah/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"f8cde7f6f497344626c9f8e0cf49c2e13e1d8c22","isMergeCommit":false,"messageTitle":"Add markAssignmentCommand, fix storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":25},"test-code":{"insertions":4,"deletions":2}}},{"hash":"03ffcbdff16c2d418e74f5f091a1644516df3420","isMergeCommit":false,"messageTitle":"Refactor Mark Assignment to Grade Assignment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"other":{"insertions":13,"deletions":13}}},{"hash":"0bc7ff324c1c252ec742b53df5cd21e45081ad24","isMergeCommit":false,"messageTitle":"Add Junit Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":161,"deletions":0}}},{"hash":"bd5b46edbcea3c9c5336738674c9660af1f9aab4","isMergeCommit":false,"messageTitle":"CheckStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":14}}},{"hash":"c1a0950cdabf7b01d2ba844da04af61000daebc9","isMergeCommit":false,"messageTitle":"Add removeAssignment and Junit Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":1},"test-code":{"insertions":70,"deletions":0}}},{"hash":"f4f6c206b8d4114c7a44557a6d6c363e356f693d","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":4}}},{"hash":"ddb1562fbcfb5024a872b4165bbdfed9f3909ea1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Ryo-Seah/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"560c6256e9e5aaeac4b10c86ec699f539a122427","isMergeCommit":false,"messageTitle":"Update typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"thewongdylan":[{"date":"2024-03-03","commitResults":[{"hash":"d9f77585ad6cf6e736e514b897589553c3f38ed5","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"Edited description, added image\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f6c303dec0e612d6f3d5ddf03b08e61b2cc6dcd2","isMergeCommit":true,"messageTitle":"Merge branch \u0027docs/about-us\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"73d3e4a3d8136d4e5e14c6b62ae937767f7932ba","isMergeCommit":false,"messageTitle":"Add undo command","messageBody":"Added undo command allowing users to undo previously issued command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":2}}}]},{"date":"2024-03-19","commitResults":[{"hash":"afe4a1dbc97b4c4d3aefe1161fefc11fe88332c1","isMergeCommit":false,"messageTitle":"Add tests for undoCommand","messageBody":"Added tests and other minor fixes\n","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"e50277981f7ee2be5736a6c0bf1661d31c309e1e","isMergeCommit":false,"messageTitle":"Refine tests for undoCommand","messageBody":"Refined tests and other minor fixes, documentation\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":10},"test-code":{"insertions":45,"deletions":3}}},{"hash":"c8e9e66a54d699ed6c9907b64ad77d9b9b41c4b2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/undoCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"db4f0ce259f426773d93020af43831caaaa23ade","isMergeCommit":false,"messageTitle":"Fix documentation","messageBody":"Minor documentation fixes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"946b9649218d24b2005de37f371cb80c95b493b8","isMergeCommit":false,"messageTitle":"Add undo functionality for new commands","messageBody":"Added undo functionality for newly added \"mark\" and \"RemoveTag\" commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"e6bc4787a97489d88863d1d0fb108e504300f5a2","isMergeCommit":false,"messageTitle":"Add redo command","messageBody":"Added redo command\nAdded purging of redundant future states when changes are made after\nundoing.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":11},"test-code":{"insertions":22,"deletions":2}}},{"hash":"c52b6799752a33d2f4bfb127f2c23458bc7dfed1","isMergeCommit":false,"messageTitle":"Add tests for redoCommand","messageBody":"Added tests for redoCommand\n","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":0}}},{"hash":"38ac7b4229a4f78286c8372cc237f606af987e44","isMergeCommit":true,"messageTitle":"Merge pull request #45 from Ryo-Seah/branch-remove-tag","messageBody":"Branch remove tag","fileTypesAndContributionMap":{}},{"hash":"41ffee0beccbeca182f00bd1188b206af6539204","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/redoCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5d900e045397bd882188b5405a57f7495ac4c4a0","isMergeCommit":false,"messageTitle":"Update undo/redo functionality for new commands","messageBody":"Added state saving functionality for RemoveTagFromAll command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}},{"hash":"6f2d76f32f7f9a876a0ac1faa289c1bf3c5b73a1","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"Minor style fixes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f7aa74bdf829d4daa205cfb730ea4ffd309b6151","isMergeCommit":false,"messageTitle":"Add test for purge() command","messageBody":"Added test for purge() command, amended relevant files as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":30,"deletions":2}}},{"hash":"554d3c7217e15c94e69276bf6e8674fff1d78dfc","isMergeCommit":false,"messageTitle":"Add information about undone/redone commands","messageBody":"Added information about undone/redone commands when issuing undo/redo\n\nImplemented through commandResultList in VersionedAddressBook\n","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":24},"test-code":{"insertions":14,"deletions":2}}},{"hash":"358e93abf190425c09170518faeabb45827f43e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/redoCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1089022c1ab5f5f29bdf8ac57a9a98c9296d7882","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"Fixed UndoCommandTest and RedoCommandTest\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6},"test-code":{"insertions":4,"deletions":2}}},{"hash":"869c878eed6cc2e0f922149ea5721a3c00884d3d","isMergeCommit":false,"messageTitle":"Update UserGuide for undo/redo","messageBody":"Updated documentation for undo/redo\n\nMinor formatting changes\n","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":4}}},{"hash":"76f2fe8544104cde80f86acb84c51b71e0ff4cab","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"Minor style fix (newline at EOF)\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"3c4355d2caef80d990db5536b9208a394928e7ef","isMergeCommit":false,"messageTitle":"Update DeveloperGuide for undo/redo","messageBody":"Updated DeveloperGuide with implementation of undo/redo and Use Cases.\n","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":17}}}]},{"date":"2024-03-28","commitResults":[{"hash":"1a1b0a8a1a28ebefae6cc7f69267e72288b6032e","isMergeCommit":true,"messageTitle":"Merge pull request #56 from shawnnlimm/shawn/mark-participation","messageBody":"fix: Fix parsing logic for mark command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"4e3f101ffed3f82faea6b6e1bae8aa144421324f","isMergeCommit":false,"messageTitle":"Edit student info fields","messageBody":"Modified existing info fields to better suit TA needs\n- Replaced phone number with matric number\n- Replaced address with telegram handle\n\nAlso edited all relevant classes, methods, and tests\nto accomodate the changes.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":159,"deletions":148},"other":{"insertions":30,"deletions":31},"docs":{"insertions":67,"deletions":67},"test-code":{"insertions":362,"deletions":362}}},{"hash":"4507e299505d053601c50a15c3e5c42f0a5fa477","isMergeCommit":false,"messageTitle":"Fix documentation","messageBody":"Rectify error in previous commit where all instances of \"address\" were\naccidentally refactored to \"telegramHandle\", even when unwanted.\n","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":67}}},{"hash":"9a9131a9cc184a53457da52089aefd41910391e4","isMergeCommit":true,"messageTitle":"Merge pull request #58 from shawnnlimm/shawn/docs","messageBody":"docs: Update UG and DG","fileTypesAndContributionMap":{}},{"hash":"da0bde239122cbc6fc9ff5cb952ac0f1a93bf70a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/studentInfoFields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54809223b71a96881f3d1c45b48640de376f394c","isMergeCommit":true,"messageTitle":"Merge pull request #60 from thewongdylan/dylan/studentInfoFields","messageBody":"Edit student info fields","tags":["v1.3"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"8f0c00591a9ea3f0db394e5d76317f587c6b1070","isMergeCommit":true,"messageTitle":"Merge pull request #66 from shawnnlimm/shawn/mark-participation","messageBody":"refactor: Refactor MarkCommand to MarkParticipationCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-31","commitResults":[{"hash":"357ca7884b4a7109c227b01ac90f97833bd87d6e","isMergeCommit":false,"messageTitle":"Add unamrka command","messageBody":"Added command to unmark attendance\n\nTODO: add tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":162,"deletions":2}}},{"hash":"3a8c796674c4b3f51cba2d6f6431eb5ec06edc7c","isMergeCommit":false,"messageTitle":"Add unmarkp command","messageBody":"Added command to unmark participation\n\nTODO: add tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":247,"deletions":39},"test-code":{"insertions":15,"deletions":12}}},{"hash":"120e38adc27f91f9738a392d36b707a744064921","isMergeCommit":false,"messageTitle":"Add tests for unmarka and unmarkp","messageBody":"Added tests for Unmark Attendance and Unmark Participation commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":242,"deletions":2}}},{"hash":"1af90c891938517e905c6d904964e5653bb2a370","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/unmarkCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e49f5aa4e73511626beb06268dddc109e09c8746","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"Fix merge conflicts for unmarka and unmarkp\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":23},"test-code":{"insertions":6,"deletions":6}}},{"hash":"bde0a7bf38cb1fcbfc8143f2d55481cd4ad49ea3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/unmarkCommand","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"2dedb3d1f7780e9ea10aa3f5e4ad48b02d499989","isMergeCommit":false,"messageTitle":"Add unmarkalla and unmarkallp commands","messageBody":"Added commands to unmark all attendance and participation for filtered\nstudents\n\nTODO: add tests for both new commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":382,"deletions":45}}},{"hash":"9dcbbdd22befbaa687b79fbd056e61a91a80c38c","isMergeCommit":false,"messageTitle":"Add tests for unmarkalla and unmarkallp","messageBody":"Added tests for new commands: unmarkalla and unmarkallp\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":220,"deletions":2}}}]},{"date":"2024-04-04","commitResults":[{"hash":"ec386199ebe887887ce6a2f2e17318c3baf8547f","isMergeCommit":false,"messageTitle":"Add checks to prevent negative scores","messageBody":"Added checks to prevent unmarkalla and unmarkallp from producing\nnegative attendance/participation\n\nAlso added relevant tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":4},"test-code":{"insertions":53,"deletions":3}}}]},{"date":"2024-04-05","commitResults":[{"hash":"be3b9c9680958fd4d5e454aad355e487beda957c","isMergeCommit":true,"messageTitle":"Merge pull request #83 from Ryo-Seah/master","messageBody":"Add Mark Assignment Command","fileTypesAndContributionMap":{}},{"hash":"85e817fc61c843506447de3e4d40bc85bae0fe26","isMergeCommit":true,"messageTitle":"Merge pull request #84 from Ryo-Seah/master","messageBody":"Add RemoveAssignment feature","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"shawnnlimm":{"docs":789,"functional-code":416,"test-code":302,"other":3},"shamesjen":{"docs":8,"functional-code":420,"test-code":331},"Ryo-Seah":{"docs":86,"functional-code":1073,"test-code":566},"thewongdylan":{"docs":111,"functional-code":1282,"test-code":1030}},"authorContributionVariance":{"shawnnlimm":17687.31,"shamesjen":6293.594,"Ryo-Seah":16875.06,"thewongdylan":64744.246},"authorDisplayNameMap":{"shawnnlimm":"CS2103T-F11-1 SHAW..IJIE","shamesjen":"CS2103T-F11-1 SHEN..AMES","Ryo-Seah":"CS2103T-F11-1 SEAH.. RYO","thewongdylan":"CS2103T-F11-1 DYLA.. WAI"}} +{"authorDailyContributionsMap":{"shawnnlimm":[{"date":"2024-02-29","commitResults":[{"hash":"c3300a626c7e8569f3d8546b399748b24ce48874","isMergeCommit":false,"messageTitle":"docs: Update AboutUs details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}}]},{"date":"2024-03-04","commitResults":[{"hash":"9121062e15ac536c065d580668747604ad2aa813","isMergeCommit":true,"messageTitle":"Merge pull request #23 from shamesjen/master","messageBody":"Docs: Update About Us and User Guide","fileTypesAndContributionMap":{}},{"hash":"6582c1a503a5ecdc39fee3b02ed34567566a8935","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into docs/about-us","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"edd2b895dd8e77173f3c32e0415d8790ea99002e","isMergeCommit":false,"messageTitle":"docs: Update UG and DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":142,"deletions":40}}}]},{"date":"2024-03-07","commitResults":[{"hash":"445d24cd915c9dab16c5f18a91478f1ebe665ffb","isMergeCommit":false,"messageTitle":"docs: Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":13}}},{"hash":"402ff51bdca73f4443a8bac5a7edccb62d047d41","isMergeCommit":false,"messageTitle":"docs: Update Index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4b5aa3ab9a57a94136429881176d7690cbdc8d21","isMergeCommit":true,"messageTitle":"Merge pull request #25 from shawnnlimm/docs/readme","messageBody":"docs: Update README","fileTypesAndContributionMap":{}},{"hash":"2a653f3dab103c4ea4f56c3dc1b3d315d0dad101","isMergeCommit":false,"messageTitle":"docs: Fix minor case issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6e7931d700498369975a27dae630ed3926905ccd","isMergeCommit":true,"messageTitle":"Merge pull request #26 from shawnnlimm/docs/readme","messageBody":"docs: Update _config.yml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"d718e84ca86d69107cfcf22c6d965b639c190386","isMergeCommit":false,"messageTitle":"docs: Add user stories and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":80,"deletions":15}}},{"hash":"701f4f862792f3687bdd8233aff32cd80b4d6715","isMergeCommit":false,"messageTitle":"fix: Update minor issues to pass checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-17","commitResults":[{"hash":"8b9c3830b65f3e1c255e9bff49be3adb2c6714bb","isMergeCommit":false,"messageTitle":"feat: Add mark command to mark participation scores","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":4},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":102,"deletions":10}}},{"hash":"67cc51f980c7058a4140272cfda6e660a3fce439","isMergeCommit":false,"messageTitle":"test: Fix test bug and checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":11,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"8cfebf852841618d1f31ddc7d02eb31ce1da99fd","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Ryo-Seah/branch-remove-tag","messageBody":"Branch remove tag","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"611a1d2e1e0adebc41d355c523a113e7a863fd6d","isMergeCommit":false,"messageTitle":"ui: Modify color of week labels","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"407669dee8fc06dc6a0b823f25e9325d7d1d8ea3","isMergeCommit":true,"messageTitle":"Merge pull request #52 from shamesjen/branch-filter","messageBody":"Feature: FilterCommand","fileTypesAndContributionMap":{}},{"hash":"70f678cd919c94e00f6ef6cd1addecced7a8eb30","isMergeCommit":true,"messageTitle":"Merge pull request #53 from thewongdylan/dylan/redoCommand","messageBody":"Dylan/information about undone and redone commands","fileTypesAndContributionMap":{}},{"hash":"a363670164c2308a9e8d2713409444202380c617","isMergeCommit":true,"messageTitle":"Merge pull request #54 from thewongdylan/docs/ug","messageBody":"Update UserGuide for undo/redo","fileTypesAndContributionMap":{}},{"hash":"4afa0bfbc24de5ac862d80a1799dde9f680616e1","isMergeCommit":true,"messageTitle":"Merge pull request #55 from thewongdylan/docs/dg","messageBody":"Update DeveloperGuide for undo/redo","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"d4254494818f9685a9b3a17121144facd896db85","isMergeCommit":false,"messageTitle":"fix: Fix parsing logic for mark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4},"other":{"insertions":1,"deletions":1}}},{"hash":"12e9d64170fe8664f8fa358a1464a1ab080e697d","isMergeCommit":false,"messageTitle":"refactor: Removed print statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-28","commitResults":[{"hash":"4a0227003c633fe67ed05cde0131af06323fb81f","isMergeCommit":false,"messageTitle":"docs: Update UG and DG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"docs":{"insertions":216,"deletions":39},"test-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-29","commitResults":[{"hash":"51c8c6bf61d9fea35fd6ac71b61078c173797c0c","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Ryo-Seah/master","messageBody":"Update UG with Remove tag commands","fileTypesAndContributionMap":{}},{"hash":"b4bacf06d5552f7b839648fd6a9846d39a774c1d","isMergeCommit":false,"messageTitle":"refactor: Refactor MarkCommand to MarkParticipationCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8},"other":{"insertions":40,"deletions":28},"test-code":{"insertions":38,"deletions":3}}}]},{"date":"2024-03-30","commitResults":[{"hash":"c5fecb1946b43bfafdccc5e282643cec46d8b189","isMergeCommit":false,"messageTitle":"feat: Add mark attendance feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":227,"deletions":21},"other":{"insertions":4,"deletions":0},"test-code":{"insertions":161,"deletions":23}}},{"hash":"2a2af240105dcd21754b9027d3b3194387d9a1ee","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"076d799758c058b020702f3513bd9cb80f2e9f9b","isMergeCommit":false,"messageTitle":"feat: Update mark participation command word","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3f1f32ff96dc095a88d4b3e54121ed37bf42ed19","isMergeCommit":true,"messageTitle":"Merge pull request #67 from shawnnlimm/shawn/mark-attendance","messageBody":"feat: Add mark attendance feature","fileTypesAndContributionMap":{}},{"hash":"9b4338d402455242a5b6baba73ab0948076aacbf","isMergeCommit":false,"messageTitle":"feat: Modify participation scores to be greater than one","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":24,"deletions":2}}},{"hash":"8fd7bc6cb8a13de5c1c96856040803a2669e9d6d","isMergeCommit":false,"messageTitle":"ui: Modify attendance label","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-31","commitResults":[{"hash":"2f4a07281317dd408676258d40f512852523020d","isMergeCommit":true,"messageTitle":"Merge pull request #72 from Ryo-Seah/master","messageBody":"Add addAssignment feature","fileTypesAndContributionMap":{}},{"hash":"da34d8adf56829da3e97bb02f3fcf0490cff5479","isMergeCommit":true,"messageTitle":"Merge pull request #76 from thewongdylan/dylan/unmarkCommand","messageBody":"Dylan/unmark command","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"e5b8bfa57c4766b9f063f9c0be5b4dbd179b09a3","isMergeCommit":true,"messageTitle":"Merge pull request #78 from thewongdylan/dylan/unmarkCommand","messageBody":"Dylan/unmarkalla and unmarkallp","fileTypesAndContributionMap":{}},{"hash":"3216c2397874587ba0a69cf1cd01d4c2d3deaa6e","isMergeCommit":true,"messageTitle":"Merge pull request #79 from thewongdylan/dylan/unmarkCommand","messageBody":"Dylan/Add checks to prevent negative scores","fileTypesAndContributionMap":{}},{"hash":"020b1247afa6d01ec8e0432de0be2084b6e85d12","isMergeCommit":false,"messageTitle":"docs: Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":450,"deletions":156}}},{"hash":"805c0b6be1edc9cb17a27d31b22eb52c032f7e2b","isMergeCommit":true,"messageTitle":"Merge pull request #80 from shawnnlimm/shawn/docs","messageBody":"docs: Update UG","fileTypesAndContributionMap":{}},{"hash":"52962da634e3e2b3565c9db025e2024cc0c28cb2","isMergeCommit":false,"messageTitle":"docs: Fix table of contents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"e5f16a391e0b1c59d1e266938a44ca607b3ae1f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into shawn/docs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"43ef54db9fbd10b0ce5670bd3a2c030f4da8ca80","isMergeCommit":false,"messageTitle":"docs: Fix DG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"4ab4889c8abe872ca9c355fb7d8feb60181cb279","isMergeCommit":true,"messageTitle":"Merge pull request #81 from shawnnlimm/shawn/docs","messageBody":"docs: Update UG","fileTypesAndContributionMap":{}},{"hash":"ae6b66b1689246eb8ef169a4829df26f36268efa","isMergeCommit":false,"messageTitle":"docs: Fix table formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"d1b6468bc3f369a4a961ac61b4e0d33f55cd80bd","isMergeCommit":true,"messageTitle":"Merge pull request #82 from shawnnlimm/shawn/docs","messageBody":"docs: Fix table formatting","fileTypesAndContributionMap":{}}]}],"shamesjen":[{"date":"2024-03-03","commitResults":[{"hash":"0446c4f0f513c5592adaca7a1c51073b5b979d79","isMergeCommit":false,"messageTitle":"add a photogragh and update the readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":4}}},{"hash":"1ddb8ca60ecf692037687113fc26bd61715f1cbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-shamesjen\u0027 merge my edits","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5b4a950fa1cd770a6f92bffaf158eecbe46d1fd7","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Ryo-Seah/master","messageBody":"Docs: Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"1c2990b30f6227e784a2270e0d93bdf51a0d95a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5980c903b11854e7d83e7a890a58e1ae342fec50","isMergeCommit":false,"messageTitle":"add a photogragh and update the readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":16}}},{"hash":"fd2a4daefcd3c178faef5a7167b575306c7d6724","isMergeCommit":true,"messageTitle":"merge changes from upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2820718ac5549aa64e4afc9fda04e9efe4aa9f5d","isMergeCommit":false,"messageTitle":"fix a typo in the aboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"1df6b039492c5318be1736e1cc6b24936c297eef","isMergeCommit":true,"messageTitle":"Merge pull request #24 from shawnnlimm/docs/about-us","messageBody":"docs: Update DG and UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"368dea9c3f4ff064e0c30c4e7cb030f383a151ef","isMergeCommit":true,"messageTitle":"Merge pull request #32 from shawnnlimm/shawn/docs","messageBody":"docs: Add user stories and use cases","fileTypesAndContributionMap":{}},{"hash":"9c64daa4f2ba03b79564104f1f457a8453725c8a","isMergeCommit":false,"messageTitle":"docs: Update aboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a442522147ae0cb6c2c9ebe7955621cd2f2cb6ec","isMergeCommit":true,"messageTitle":"Merge pull request #42 from shawnnlimm/shawn/mark-participation","messageBody":"feat: Add mark command to mark participation scores","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"813df0bb8fee79ae4e6d15061e3f926ee797a4d2","isMergeCommit":false,"messageTitle":"Add FilterCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":0}}},{"hash":"29a614898ee8024e0856459e012bbb69dfb4a6bc","isMergeCommit":true,"messageTitle":"Merge pull request #48 from thewongdylan/dylan/undoCommand","messageBody":"Dylan/undo command","fileTypesAndContributionMap":{}},{"hash":"b7498137c5f55a0e18a29b482b0cabadccaaa86f","isMergeCommit":false,"messageTitle":"add checkstyle improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"0d5600c9acd303bb5523644d05b86400db43505e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into branch-filter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b7d3ef041a832396c0ec5a75fcb2163a7c0b1622","isMergeCommit":false,"messageTitle":"add JUnit Tests for filtercommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":130,"deletions":0}}},{"hash":"a9259790c951dda1216a9b29e249dc0aa1a9d0cd","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-filter\u0027 into branch-filter merge upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f060785c3fb904270dade5615a919445232a5ee9","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into branch-filter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3666a1f2e5417954649ba85b29dabc85fc1c97ed","isMergeCommit":true,"messageTitle":"Merge pull request #51 from shawnnlimm/shawn/mark-participation","messageBody":"ui: Modify color of week labels","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"63fa111c35fca14334b9fe637e4833a6ff510a25","isMergeCommit":false,"messageTitle":"add MarkAll functionality to the app","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":146,"deletions":2},"test-code":{"insertions":105,"deletions":0}}},{"hash":"2f3f00f7ac4168cacad74d33b1c7998c6956a92f","isMergeCommit":false,"messageTitle":"add some changes to match with the new fields in the addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}}]},{"date":"2024-03-31","commitResults":[{"hash":"8025b17179191ed9fbf497aaecfe193ce518f20e","isMergeCommit":false,"messageTitle":"add markallparticipation and refactored markall to markallattendance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":188,"deletions":18},"test-code":{"insertions":117,"deletions":13}}},{"hash":"2f9858e171d1a42a5c58eec47e541c1558c53a87","isMergeCommit":false,"messageTitle":"add mark all participation and refactors markallattendance","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":23}}},{"hash":"2d62577c208fac55ab16e2dbebeac899bc09d865","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-markallp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b7a0f9c563b8c5e7e91eb2156f812fc477b5b2af","isMergeCommit":true,"messageTitle":"Merge pull request #73 from shamesjen/branch-markallp","messageBody":"Mark all participation","fileTypesAndContributionMap":{}},{"hash":"217ab644ba943c669797c11061fda18a46125a3e","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Ryo-Seah/master","messageBody":"Add Junit tests for AddAssignmentCommand","fileTypesAndContributionMap":{}}]}],"Ryo-Seah":[{"date":"2024-03-03","commitResults":[{"hash":"93678c844ca10f3f0013962538243199683b6d5d","isMergeCommit":false,"messageTitle":"Partial complete Remove Tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":191,"deletions":0},"test-code":{"insertions":7,"deletions":0}}},{"hash":"8d26c210767bfbdb54120f786ef9f8d7329e85ee","isMergeCommit":true,"messageTitle":"Merge pull request #15 from shawnnlimm/docs/about-us","messageBody":"docs: Update AboutUs details","fileTypesAndContributionMap":{}},{"hash":"1eb8ebe95f45fe1e8d3a90f1a1773c8dab26a8d0","isMergeCommit":false,"messageTitle":"Update Aboutus -Ryo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"c20d6dd68f0b76017bf8d153b1116fe9fbbbf8e6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b509fa2c6c1384f44867e66af8e20c24ab5396cf","isMergeCommit":false,"messageTitle":"Updated User Guide, add Remove Tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"24730f1625ff2fbc8716e24c3cf43669a7d5cf54","isMergeCommit":true,"messageTitle":"Merge pull request #20 from thewongdylan/master","messageBody":"Update AboutUs -Dylan","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"04d73ee4f894cf94ff1b8d6736d3f9f7f054c0de","isMergeCommit":false,"messageTitle":"Complete Remove Tag command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":9}}},{"hash":"698565b7bca19af3e58ccafef6ca7c6fbf0bcc63","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab477e0d08437c09fffb6cca4fe781d9f19bc63f","isMergeCommit":true,"messageTitle":"Merge pull request #34 from shamesjen/master","messageBody":"docs: Update aboutUS","fileTypesAndContributionMap":{}},{"hash":"f8d4a6db615d9d4fdbf79e70163b11f7a50800cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"effe1ee06c0e0914c556d8d44d4ba91289d7e370","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":49,"deletions":0}}},{"hash":"42858a9a9cf667e1ae050efe06a12a289995a541","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-remove-tag\u0027 of https://github.com/Ryo-Seah/tp into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e5643c1399f5e2d95cd1e21622146f640229be46","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":21}}},{"hash":"fd6ccee3148d703c590d1c72e5fb251baa896e20","isMergeCommit":false,"messageTitle":"Fix checkstyleTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":9}}},{"hash":"65d978cdb9edfee2dc8462faa9e76c9c348ed2be","isMergeCommit":false,"messageTitle":"Fix test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a290d91a7974953e097c3755a429c726b239bfa4","isMergeCommit":false,"messageTitle":"Add uniquePersonList Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":6},"test-code":{"insertions":60,"deletions":0}}},{"hash":"52d9f2e6e4a46f4303fdd847b47843b46d3dda7e","isMergeCommit":false,"messageTitle":"Add Tests RemoveTagCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":1}}},{"hash":"859455e129b7895bf86663c7ca5717f1bb9ed537","isMergeCommit":false,"messageTitle":"Add RemoveTagCommandParser Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":21},"test-code":{"insertions":16,"deletions":8}}},{"hash":"21ad45f42a9f1c43400da286db4ac9e33a73d57b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e80a4471982d036590fda8d5a7d62620fc45c0b0","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"27e273ed4d8c54195cfb3ecb6a462c0559dc326b","isMergeCommit":false,"messageTitle":"Fix checkStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"66ed65e786a3da2e2f75e99bd5cb33d023eefb17","isMergeCommit":false,"messageTitle":"Add removeTagFromAllCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":173,"deletions":0}}},{"hash":"d764db46a20c052ba18a51dd851345e51d41a100","isMergeCommit":false,"messageTitle":"Fix documentations and error handling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7}}}]},{"date":"2024-03-19","commitResults":[{"hash":"fb24fadb82f89fd29e22841d5c55dfcd8a2ce4af","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-remove-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"07a8e9bf8e0d0084d2c2a6d547c85f9c586e91c2","isMergeCommit":true,"messageTitle":"Merge pull request #49 from thewongdylan/dylan/redoCommand","messageBody":"Dylan/redo command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"5b1426039023cd59d1aaf8cfb2d76d0d52a87c7f","isMergeCommit":false,"messageTitle":"Update UG with Remove tag commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":3}}},{"hash":"c3f18e34bfbd5920ed9d74403c50ee5a6f60df7b","isMergeCommit":true,"messageTitle":"Merge pull request #64 from shamesjen/branch-commandonfilter","messageBody":"add MarkAll functionality to the app","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"93d2680f16ed97c303eb6ce22e93bfb8f576f3b5","isMergeCommit":false,"messageTitle":"Add customizable Assignments feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":356,"deletions":27},"test-code":{"insertions":28,"deletions":10}}},{"hash":"ddf5857fda5245f40cedbe56c533ef143b230fbf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Ryo-Seah/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"49a039e5de79c2355375f6bd32e3aa9d41d9163e","isMergeCommit":false,"messageTitle":"Checkstyle updates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":38},"test-code":{"insertions":12,"deletions":7}}},{"hash":"76caf3498c3ea5fe4284528d5984a70bcf0b4877","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":23,"deletions":5}}},{"hash":"7319c99afdf18b9d76d7b3c8a3468cdbda9d97bf","isMergeCommit":true,"messageTitle":"Merge pull request #70 from shawnnlimm/shawn/mark-participation","messageBody":"feat: Modify participation scores to be greater than one","fileTypesAndContributionMap":{}},{"hash":"93366ee2fa5f9faff87395caadad3152b784df43","isMergeCommit":true,"messageTitle":"Merge pull request #71 from shawnnlimm/shawn/mark-attendance","messageBody":"ui: Modify attendance label","fileTypesAndContributionMap":{}},{"hash":"bdecb7b85667ba65d06ba20190a25de890e0b947","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-31","commitResults":[{"hash":"7ad14e8151946953f6b0900426b98bb188be2e86","isMergeCommit":false,"messageTitle":"Remove print statements, small debugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"ab25c785d6b091646dd92e80408ad3fb8629c72b","isMergeCommit":false,"messageTitle":"Remove all print statements, change command word","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5},"test-code":{"insertions":0,"deletions":2}}},{"hash":"ec85b9810771924771a3349caf3c0feda607dc41","isMergeCommit":false,"messageTitle":"Add Junit tests for AddAssignmentCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":14},"test-code":{"insertions":136,"deletions":0}}},{"hash":"91420d31c40de5e7cc322b880c38b4fe1996fb69","isMergeCommit":false,"messageTitle":"Refactor AddAssignment to make it persist in state.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}},{"hash":"451b1c40206b295919ffa02c45640b36f0ce1dea","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9bd5e9c91ace140e55c5efc834d5690183b77a16","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":3}}},{"hash":"1bdd7527db778d95c374e4b1f389d27107d40469","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Ryo-Seah/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f2b4aef7520e8a0f365c0bd44c6e1b0048116f6e","isMergeCommit":false,"messageTitle":"Refactor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}}]},{"date":"2024-04-01","commitResults":[{"hash":"77b66922c6351e3f7710a6c9822d185bcec055ba","isMergeCommit":false,"messageTitle":"Add partial MarkAssignment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":208,"deletions":10}}},{"hash":"515e9f9fce7d675f3bf1c5237e7095e220e76779","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F11-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"28569e4c63bcaaa17c758eece5dd3029e914f9a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Ryo-Seah/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"f8cde7f6f497344626c9f8e0cf49c2e13e1d8c22","isMergeCommit":false,"messageTitle":"Add markAssignmentCommand, fix storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":25},"test-code":{"insertions":4,"deletions":2}}},{"hash":"03ffcbdff16c2d418e74f5f091a1644516df3420","isMergeCommit":false,"messageTitle":"Refactor Mark Assignment to Grade Assignment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"other":{"insertions":13,"deletions":13}}},{"hash":"0bc7ff324c1c252ec742b53df5cd21e45081ad24","isMergeCommit":false,"messageTitle":"Add Junit Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":161,"deletions":0}}},{"hash":"bd5b46edbcea3c9c5336738674c9660af1f9aab4","isMergeCommit":false,"messageTitle":"CheckStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":14}}},{"hash":"c1a0950cdabf7b01d2ba844da04af61000daebc9","isMergeCommit":false,"messageTitle":"Add removeAssignment and Junit Test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":1},"test-code":{"insertions":70,"deletions":0}}},{"hash":"f4f6c206b8d4114c7a44557a6d6c363e356f693d","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":4}}},{"hash":"ddb1562fbcfb5024a872b4165bbdfed9f3909ea1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Ryo-Seah/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"560c6256e9e5aaeac4b10c86ec699f539a122427","isMergeCommit":false,"messageTitle":"Update typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"thewongdylan":[{"date":"2024-03-03","commitResults":[{"hash":"d9f77585ad6cf6e736e514b897589553c3f38ed5","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"Edited description, added image\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f6c303dec0e612d6f3d5ddf03b08e61b2cc6dcd2","isMergeCommit":true,"messageTitle":"Merge branch \u0027docs/about-us\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"73d3e4a3d8136d4e5e14c6b62ae937767f7932ba","isMergeCommit":false,"messageTitle":"Add undo command","messageBody":"Added undo command allowing users to undo previously issued command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":2}}}]},{"date":"2024-03-19","commitResults":[{"hash":"afe4a1dbc97b4c4d3aefe1161fefc11fe88332c1","isMergeCommit":false,"messageTitle":"Add tests for undoCommand","messageBody":"Added tests and other minor fixes\n","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"e50277981f7ee2be5736a6c0bf1661d31c309e1e","isMergeCommit":false,"messageTitle":"Refine tests for undoCommand","messageBody":"Refined tests and other minor fixes, documentation\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":10},"test-code":{"insertions":45,"deletions":3}}},{"hash":"c8e9e66a54d699ed6c9907b64ad77d9b9b41c4b2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/undoCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"db4f0ce259f426773d93020af43831caaaa23ade","isMergeCommit":false,"messageTitle":"Fix documentation","messageBody":"Minor documentation fixes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"946b9649218d24b2005de37f371cb80c95b493b8","isMergeCommit":false,"messageTitle":"Add undo functionality for new commands","messageBody":"Added undo functionality for newly added \"mark\" and \"RemoveTag\" commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"e6bc4787a97489d88863d1d0fb108e504300f5a2","isMergeCommit":false,"messageTitle":"Add redo command","messageBody":"Added redo command\nAdded purging of redundant future states when changes are made after\nundoing.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":11},"test-code":{"insertions":22,"deletions":2}}},{"hash":"c52b6799752a33d2f4bfb127f2c23458bc7dfed1","isMergeCommit":false,"messageTitle":"Add tests for redoCommand","messageBody":"Added tests for redoCommand\n","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":0}}},{"hash":"38ac7b4229a4f78286c8372cc237f606af987e44","isMergeCommit":true,"messageTitle":"Merge pull request #45 from Ryo-Seah/branch-remove-tag","messageBody":"Branch remove tag","fileTypesAndContributionMap":{}},{"hash":"41ffee0beccbeca182f00bd1188b206af6539204","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/redoCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5d900e045397bd882188b5405a57f7495ac4c4a0","isMergeCommit":false,"messageTitle":"Update undo/redo functionality for new commands","messageBody":"Added state saving functionality for RemoveTagFromAll command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}},{"hash":"6f2d76f32f7f9a876a0ac1faa289c1bf3c5b73a1","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"Minor style fixes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f7aa74bdf829d4daa205cfb730ea4ffd309b6151","isMergeCommit":false,"messageTitle":"Add test for purge() command","messageBody":"Added test for purge() command, amended relevant files as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":30,"deletions":2}}},{"hash":"554d3c7217e15c94e69276bf6e8674fff1d78dfc","isMergeCommit":false,"messageTitle":"Add information about undone/redone commands","messageBody":"Added information about undone/redone commands when issuing undo/redo\n\nImplemented through commandResultList in VersionedAddressBook\n","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":24},"test-code":{"insertions":14,"deletions":2}}},{"hash":"358e93abf190425c09170518faeabb45827f43e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/redoCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1089022c1ab5f5f29bdf8ac57a9a98c9296d7882","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"Fixed UndoCommandTest and RedoCommandTest\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6},"test-code":{"insertions":4,"deletions":2}}},{"hash":"869c878eed6cc2e0f922149ea5721a3c00884d3d","isMergeCommit":false,"messageTitle":"Update UserGuide for undo/redo","messageBody":"Updated documentation for undo/redo\n\nMinor formatting changes\n","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":4}}},{"hash":"76f2fe8544104cde80f86acb84c51b71e0ff4cab","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"Minor style fix (newline at EOF)\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"3c4355d2caef80d990db5536b9208a394928e7ef","isMergeCommit":false,"messageTitle":"Update DeveloperGuide for undo/redo","messageBody":"Updated DeveloperGuide with implementation of undo/redo and Use Cases.\n","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":17}}}]},{"date":"2024-03-28","commitResults":[{"hash":"1a1b0a8a1a28ebefae6cc7f69267e72288b6032e","isMergeCommit":true,"messageTitle":"Merge pull request #56 from shawnnlimm/shawn/mark-participation","messageBody":"fix: Fix parsing logic for mark command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"4e3f101ffed3f82faea6b6e1bae8aa144421324f","isMergeCommit":false,"messageTitle":"Edit student info fields","messageBody":"Modified existing info fields to better suit TA needs\n- Replaced phone number with matric number\n- Replaced address with telegram handle\n\nAlso edited all relevant classes, methods, and tests\nto accomodate the changes.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":159,"deletions":148},"other":{"insertions":30,"deletions":31},"docs":{"insertions":67,"deletions":67},"test-code":{"insertions":362,"deletions":362}}},{"hash":"4507e299505d053601c50a15c3e5c42f0a5fa477","isMergeCommit":false,"messageTitle":"Fix documentation","messageBody":"Rectify error in previous commit where all instances of \"address\" were\naccidentally refactored to \"telegramHandle\", even when unwanted.\n","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":67}}},{"hash":"9a9131a9cc184a53457da52089aefd41910391e4","isMergeCommit":true,"messageTitle":"Merge pull request #58 from shawnnlimm/shawn/docs","messageBody":"docs: Update UG and DG","fileTypesAndContributionMap":{}},{"hash":"da0bde239122cbc6fc9ff5cb952ac0f1a93bf70a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/studentInfoFields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54809223b71a96881f3d1c45b48640de376f394c","isMergeCommit":true,"messageTitle":"Merge pull request #60 from thewongdylan/dylan/studentInfoFields","messageBody":"Edit student info fields","tags":["v1.3"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"8f0c00591a9ea3f0db394e5d76317f587c6b1070","isMergeCommit":true,"messageTitle":"Merge pull request #66 from shawnnlimm/shawn/mark-participation","messageBody":"refactor: Refactor MarkCommand to MarkParticipationCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-31","commitResults":[{"hash":"357ca7884b4a7109c227b01ac90f97833bd87d6e","isMergeCommit":false,"messageTitle":"Add unamrka command","messageBody":"Added command to unmark attendance\n\nTODO: add tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":162,"deletions":2}}},{"hash":"3a8c796674c4b3f51cba2d6f6431eb5ec06edc7c","isMergeCommit":false,"messageTitle":"Add unmarkp command","messageBody":"Added command to unmark participation\n\nTODO: add tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":247,"deletions":39},"test-code":{"insertions":15,"deletions":12}}},{"hash":"120e38adc27f91f9738a392d36b707a744064921","isMergeCommit":false,"messageTitle":"Add tests for unmarka and unmarkp","messageBody":"Added tests for Unmark Attendance and Unmark Participation commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":242,"deletions":2}}},{"hash":"1af90c891938517e905c6d904964e5653bb2a370","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/unmarkCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e49f5aa4e73511626beb06268dddc109e09c8746","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"Fix merge conflicts for unmarka and unmarkp\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":23},"test-code":{"insertions":6,"deletions":6}}},{"hash":"bde0a7bf38cb1fcbfc8143f2d55481cd4ad49ea3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into dylan/unmarkCommand","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"2dedb3d1f7780e9ea10aa3f5e4ad48b02d499989","isMergeCommit":false,"messageTitle":"Add unmarkalla and unmarkallp commands","messageBody":"Added commands to unmark all attendance and participation for filtered\nstudents\n\nTODO: add tests for both new commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":382,"deletions":45}}},{"hash":"9dcbbdd22befbaa687b79fbd056e61a91a80c38c","isMergeCommit":false,"messageTitle":"Add tests for unmarkalla and unmarkallp","messageBody":"Added tests for new commands: unmarkalla and unmarkallp\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":220,"deletions":2}}}]},{"date":"2024-04-04","commitResults":[{"hash":"ec386199ebe887887ce6a2f2e17318c3baf8547f","isMergeCommit":false,"messageTitle":"Add checks to prevent negative scores","messageBody":"Added checks to prevent unmarkalla and unmarkallp from producing\nnegative attendance/participation\n\nAlso added relevant tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":4},"test-code":{"insertions":53,"deletions":3}}}]},{"date":"2024-04-05","commitResults":[{"hash":"be3b9c9680958fd4d5e454aad355e487beda957c","isMergeCommit":true,"messageTitle":"Merge pull request #83 from Ryo-Seah/master","messageBody":"Add Mark Assignment Command","fileTypesAndContributionMap":{}},{"hash":"85e817fc61c843506447de3e4d40bc85bae0fe26","isMergeCommit":true,"messageTitle":"Merge pull request #84 from Ryo-Seah/master","messageBody":"Add RemoveAssignment feature","tags":["v1.3.0"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"shawnnlimm":{"docs":789,"functional-code":416,"test-code":302,"other":3},"shamesjen":{"docs":8,"functional-code":420,"test-code":331},"Ryo-Seah":{"docs":86,"functional-code":1073,"test-code":566},"thewongdylan":{"docs":111,"functional-code":1282,"test-code":1030}},"authorContributionVariance":{"shawnnlimm":17687.31,"shamesjen":6293.594,"Ryo-Seah":16875.06,"thewongdylan":64744.246},"authorDisplayNameMap":{"shawnnlimm":"CS2103T-F11-1 SHAW..IJIE","shamesjen":"CS2103T-F11-1 SHEN..AMES","Ryo-Seah":"CS2103T-F11-1 SEAH.. RYO","thewongdylan":"CS2103T-F11-1 DYLA.. WAI"}} diff --git a/AY2324S2-CS2103T-T09-2_tp_master/authorship.json b/AY2324S2-CS2103T-T09-2_tp_master/authorship.json index c7be8f2f..93ae4e41 100644 --- a/AY2324S2-CS2103T-T09-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T09-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T09-2/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T09-2/tp/graph/badge.svg?token\u003dBMICX593IT)](https://codecov.io/gh/AY2324S2-CS2103T-T09-2/tp)","lastModifiedDate":"2024-02-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"# Introduction","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"Welcome to BookKeeper, your solution for efficient customer management for **small business owners in the floral","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"industry**. \u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"This application is designed to streamline customer lists and enhance productivity for individuals operating","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"small businesses with limited resources and manpower. With BookKeeper, you can easily manage customer information, track","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"orders, and personalize your customer interactions, all through a user-friendly command-line interface.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"For the detailed documentation of this project, see the [BookKeeper](https://ay2324s2-cs2103t-t09-2.github.io/tp/).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":"# Acknowledgement","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" contact details.","lastModifiedDate":"2024-02-17"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":"* It is written in OOP fashion. ","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":"* It provides a reasonably well-written code base bigger (around 6 KLoC)","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":"* It comes with a reasonable level of user and developer documentation.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":"This project is based on the AddressBook Level-3 project and is a part of the [se-education.org](https://se-education.org/addressbook-level3) initiative.","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":"# Features","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":"## Customer Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":"### 1. Add Customer","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":"Adds a customer to the customer\u0027s storage.","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":"Example: `add \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":"Successfully added \u003ccustomer name\u003e to your list!","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":"### 2. Delete Customer","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":"Delete selected customer from the customer\u0027s storage.","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"Example: `delete \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":"Successfully removed \u003ccustomer name\u003e from the list","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":"### 3. Edit Customer","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":"Edit selected customer information by adding more information such as Age, Phone Number, Past purchased record, ","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":"Birthday, Address.","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":"Example: `edit \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":"Successfully edit \u003ccustomer name\u003e information","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":"### 4. VIP Customer","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":"Indicating that this specific customer is important.","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":"Example: `vip \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":"Successfully set \u003ccustomer name\u003e as VIP","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":"## Order Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":"### 1. Add Order","lastModifiedDate":"2024-03-06"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":"Adds an order into the order\u0027s storage, together with the customer name.","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":"Example: `add \u003ccustomer name, order, due date\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"An order has been added for \u003ccustomer name\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":82,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":"### 2. Delete Order","lastModifiedDate":"2024-03-06"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":"Delete order of the specific customer.","lastModifiedDate":"2024-03-06"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":"Example: `delete \u003ccustomer name, order\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":"\u003ccustomer name\u003e order of \u003c(order item)\u003e has been cancelled","lastModifiedDate":"2024-03-06"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":"### 3. Edit Order","lastModifiedDate":"2024-03-06"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":"Edit the customer\u0027s order.","lastModifiedDate":"2024-03-06"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":"Example: `edit \u003ccustomer name, old order, new order\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":"Successfully edit \u003ccustomer name\u003e order","lastModifiedDate":"2024-03-06"},{"lineNumber":102,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":"### 4. Prioritize Order","lastModifiedDate":"2024-03-06"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":"Prioritize the customer\u0027s order.","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"kailinteoo"},"content":"Example: `prioritize \u003ccustomer name, order\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":110,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":"Successfully prioritized \u003ccustomer name, order\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":112,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":113,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":114,"author":{"gitId":"kailinteoo"},"content":"## Viewing Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":"### 1. View Customer Detail","lastModifiedDate":"2024-03-06"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":"View customer information, such as Name, Age, Phone Number, Past purchase record, Birthday, Address.","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":"Example: `view \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":"Jasper Tan info: [...]","lastModifiedDate":"2024-03-06"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":"Tan Qing Yong info : [...]","lastModifiedDate":"2024-03-06"},{"lineNumber":125,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":"### 2. View Order Detail","lastModifiedDate":"2024-03-06"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":"View Order information, such as order by when, who order, quantity.","lastModifiedDate":"2024-03-06"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":"Example: `view \u003corder\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":132,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":133,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":134,"author":{"gitId":"kailinteoo"},"content":"Petite Bouquet: ","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"kailinteoo"},"content":"1. total of \u003cquantity\u003e order by \u003ccustomer name\u003e on \u003cdate\u003e ","lastModifiedDate":"2024-03-06"},{"lineNumber":136,"author":{"gitId":"kailinteoo"},"content":"2. total of \u003cquantity\u003e order by \u003ccustomer name\u003e on \u003cdate\u003e ","lastModifiedDate":"2024-03-06"},{"lineNumber":137,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":138,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":139,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":140,"author":{"gitId":"kailinteoo"},"content":"### 3. View Statistics","lastModifiedDate":"2024-03-06"},{"lineNumber":141,"author":{"gitId":"kailinteoo"},"content":"Show how many orders has been completed.","lastModifiedDate":"2024-03-06"},{"lineNumber":142,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":143,"author":{"gitId":"kailinteoo"},"content":"Example: `stat`","lastModifiedDate":"2024-03-06"},{"lineNumber":144,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":145,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":146,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":147,"author":{"gitId":"kailinteoo"},"content":"\u003ca list of stat\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":148,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":149,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":150,"author":{"gitId":"kailinteoo"},"content":"### 4. View Ranking","lastModifiedDate":"2024-03-06"},{"lineNumber":151,"author":{"gitId":"kailinteoo"},"content":"View which florist sell the best and total sell quantity.","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":153,"author":{"gitId":"kailinteoo"},"content":"Example: `view ranking`","lastModifiedDate":"2024-03-06"},{"lineNumber":154,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":155,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":156,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":157,"author":{"gitId":"kailinteoo"},"content":"Top 1: Preserved Hydrangea Bouquet, total sold of \u003cquantity\u003e ","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":159,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":160,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":161,"author":{"gitId":"kailinteoo"},"content":"## Sorting Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":162,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":163,"author":{"gitId":"kailinteoo"},"content":"### 1. Sort Order by Date","lastModifiedDate":"2024-03-06"},{"lineNumber":164,"author":{"gitId":"kailinteoo"},"content":"Sort when the order is due based on the date (excluding prioritize order).","lastModifiedDate":"2024-03-06"},{"lineNumber":165,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":166,"author":{"gitId":"kailinteoo"},"content":"Example: `sort orderdate`","lastModifiedDate":"2024-03-06"},{"lineNumber":167,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":168,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":169,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":170,"author":{"gitId":"kailinteoo"},"content":"1. Jasper Tan, Eternal Love Preserved Red Rose Flower Bouquet, 24 Feb 2024 ","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"kailinteoo"},"content":"2. Tan Qin Yong, Mocha Romance Bouquet, 1 Apr 2024 ","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":173,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":174,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":175,"author":{"gitId":"kailinteoo"},"content":"### 2. Sort Order by order type","lastModifiedDate":"2024-03-06"},{"lineNumber":176,"author":{"gitId":"kailinteoo"},"content":"Sort depending on what kind of order.","lastModifiedDate":"2024-03-06"},{"lineNumber":177,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":178,"author":{"gitId":"kailinteoo"},"content":"Example: `sort ordertype`","lastModifiedDate":"2024-03-06"},{"lineNumber":179,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":180,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":181,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":182,"author":{"gitId":"kailinteoo"},"content":"Mocha Romance Bouquet:","lastModifiedDate":"2024-03-14"},{"lineNumber":183,"author":{"gitId":"kailinteoo"},"content":"1. Jasper Tan, 24 Feb 2024 ","lastModifiedDate":"2024-03-06"},{"lineNumber":184,"author":{"gitId":"kailinteoo"},"content":"2. QinYong, 1 Apr 2024 ","lastModifiedDate":"2024-03-06"},{"lineNumber":185,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":186,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":187,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":188,"author":{"gitId":"kailinteoo"},"content":"### 3. Sort Customer name by alphabetical order","lastModifiedDate":"2024-03-06"},{"lineNumber":189,"author":{"gitId":"kailinteoo"},"content":"sort the customer list.","lastModifiedDate":"2024-03-06"},{"lineNumber":190,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":191,"author":{"gitId":"kailinteoo"},"content":"Example: `sort customer`","lastModifiedDate":"2024-03-06"},{"lineNumber":192,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":193,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":194,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":195,"author":{"gitId":"kailinteoo"},"content":"1. Jasper Tan","lastModifiedDate":"2024-03-06"},{"lineNumber":196,"author":{"gitId":"kailinteoo"},"content":"2. Tan Qing Yong ","lastModifiedDate":"2024-03-06"},{"lineNumber":197,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":198,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":199,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":200,"author":{"gitId":"kailinteoo"},"content":"## Notification/ Reminder/ Deadline/ Progress Tracker","lastModifiedDate":"2024-03-06"},{"lineNumber":201,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":202,"author":{"gitId":"kailinteoo"},"content":"### 1. Deadline approaching soon for an order (within a week)","lastModifiedDate":"2024-03-06"},{"lineNumber":203,"author":{"gitId":"kailinteoo"},"content":"Send notification when order is due within a week.","lastModifiedDate":"2024-03-06"},{"lineNumber":204,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":205,"author":{"gitId":"kailinteoo"},"content":"### 2. Progress Bar","lastModifiedDate":"2024-03-06"},{"lineNumber":206,"author":{"gitId":"kailinteoo"},"content":"Show how many order left to be done.","lastModifiedDate":"2024-03-06"},{"lineNumber":207,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":208,"author":{"gitId":"kailinteoo"},"content":"Example: `progress`","lastModifiedDate":"2024-03-06"},{"lineNumber":209,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":210,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":211,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":212,"author":{"gitId":"kailinteoo"},"content":"Left \u003cquantity\u003e ","lastModifiedDate":"2024-03-06"},{"lineNumber":213,"author":{"gitId":"kailinteoo"},"content":"Done \u003cquantity\u003e ","lastModifiedDate":"2024-03-06"},{"lineNumber":214,"author":{"gitId":"kailinteoo"},"content":"Pending \u003cQuantity\u003e\"","lastModifiedDate":"2024-03-06"},{"lineNumber":215,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":216,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":217,"author":{"gitId":"kailinteoo"},"content":"## Usage Help","lastModifiedDate":"2024-03-06"},{"lineNumber":218,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":219,"author":{"gitId":"kailinteoo"},"content":"### 1. Autocomplete","lastModifiedDate":"2024-03-06"},{"lineNumber":220,"author":{"gitId":"kailinteoo"},"content":"Show all possible next commands based on currently keyed in values.","lastModifiedDate":"2024-03-06"},{"lineNumber":221,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":222,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":223,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":224,"author":{"gitId":"kailinteoo"},"content":"/modi(fy)","lastModifiedDate":"2024-03-06"},{"lineNumber":225,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":226,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":227,"author":{"gitId":"kailinteoo"},"content":"### 2. User manual","lastModifiedDate":"2024-03-06"},{"lineNumber":228,"author":{"gitId":"kailinteoo"},"content":"Shows a list of commands that can be used.","lastModifiedDate":"2024-03-06"},{"lineNumber":229,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":230,"author":{"gitId":"kailinteoo"},"content":"Example: `help`","lastModifiedDate":"2024-03-06"},{"lineNumber":231,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":232,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":233,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":234,"author":{"gitId":"kailinteoo"},"content":"Commands list: ","lastModifiedDate":"2024-03-06"},{"lineNumber":235,"author":{"gitId":"kailinteoo"},"content":"1. add. Adds a new customer to the list. Example: \"add...\" ","lastModifiedDate":"2024-03-06"},{"lineNumber":236,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":237,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":238,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"kailinteoo":232,"-":6}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"run {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" archiveFileName \u003d \u0027bookkeeper.jar\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"rertyy":4,"Jaspertzx":1,"-":71}},{"path":"config/checkstyle/checkstyle.xml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2019-02-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c!-- Checks the ordering of import statements follow the rules that the default Eclipse formatter uses.","lastModifiedDate":"2017-01-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * It is a duplicate of another import. This is, when a class is imported more than once.","lastModifiedDate":"2017-01-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the java.lang package, e.g. importing java.lang.String.","lastModifiedDate":"2017-01-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-private, static, final fields against the expression \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" value\u003d\"Variable \u0027\u0027{0}\u0027\u0027 should be in ALL_CAPS (if it is a constant) or be private (otherwise).\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*(_[a-z][a-zA-Z0-9]+){0,2}$\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method parameters against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local final variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":155,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":156,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each variable declaration is in its own statement and on its own line. --\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17"},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2018-01-25"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" on the last non-blank line preceding the fallen-into case contains \u0027fall through\u0027 (or","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" value\u003d\"fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16"},{"lineNumber":233,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07"},{"lineNumber":237,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01"},{"lineNumber":241,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":242,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":243,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01"},{"lineNumber":244,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01"},{"lineNumber":245,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003c!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2017-01-16"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10"},{"lineNumber":276,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty loops e.g. for (int i \u003d 1; i \u003e 1; i++) {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the non-assignment type operator is at the next line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":313,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22"},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22"},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22"},{"lineNumber":316,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":317,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22"},{"lineNumber":318,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22"},{"lineNumber":319,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":320,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR,","lastModifiedDate":"2017-05-22"},{"lineNumber":321,"author":{"gitId":"-"},"content":" GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, LITERAL_INSTANCEOF, TYPE_EXTENSION_AND, METHOD_REF\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":325,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the assignment type operator is at the previous end of line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":326,"author":{"gitId":"-"},"content":" This includes \"\u003d\", \"/\u003d\", \"+\u003d\", \"-\u003d\", \"*\u003d\", \"%\u003d\", \"\u003e\u003e\u003d\", \"\u003e\u003e\u003e\u003d\", \"\u003c\u003c\u003d\", \"^\u003d\", \"\u0026\u003d\".","lastModifiedDate":"2017-05-22"},{"lineNumber":327,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN,","lastModifiedDate":"2017-05-22"},{"lineNumber":329,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \",\", \"]\", \"[\", \"...\", \";\", \"(\" is at the previous end of line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":362,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":365,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15"},{"lineNumber":366,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15"},{"lineNumber":367,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15"},{"lineNumber":368,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":370,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":374,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":375,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":376,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":377,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":379,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15"},{"lineNumber":380,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":381,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":382,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":384,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20"},{"lineNumber":385,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20"},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":388,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all block-tags are ordered correctly. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Javadoc block tags appear only at the beginning of the line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":" \u003c!-- Checks that for block tags, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":411,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every public method (excluding getters, setters and constructors). --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":423,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public method (excluding getters, setters and constructors) has a header comment. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10"},{"lineNumber":428,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":433,"author":{"gitId":"rertyy"},"content":" \u003c!-- Other Javadoc checks --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":434,"author":{"gitId":"rertyy"},"content":" \u003cmodule name\u003d\"JavadocStyleCheck\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":435,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":436,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":437,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":3,"-":434}},{"path":"config/pre-commit-setup/add_hook.bat","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"@echo off","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"SETLOCAL EnableDelayedExpansion","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"REM Define relative path to .git/hooks","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"SET \"hooksDir\u003d../../.git/hooks\"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"REM Check if .git/hooks directory exists, if not create it","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"IF NOT EXIST \"!hooksDir!\" (","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" mkdir \"!hooksDir!\"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" echo Created directory: !hooksDir!","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":")","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"REM Check if pre-commit hook already exists","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"IF EXIST \"!hooksDir!/pre-commit\" (","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" REM Backup existing pre-commit hook","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" copy /Y \"!hooksDir!/pre-commit\" \"!hooksDir!/pre-commit.bak\"","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" echo Existing pre-commit hook backed up to: !hooksDir!/pre-commit.bak","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":")","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"REM Copy the new pre-commit hook","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"copy /Y \"pre-commit\" \"!hooksDir!/pre-commit\"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"echo New pre-commit hook setup complete.","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"rertyy":23}},{"path":"config/pre-commit-setup/add_hook.sh","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"#!/bin/bash","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"# Define relative path to .git/hooks","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"hooksDir\u003d\"../../.git/hooks\"","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"# Check if .git/hooks directory exists, if not create it","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"if [ ! -d \"$hooksDir\" ]; then","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" mkdir -p \"$hooksDir\"","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" echo \"Created directory: $hooksDir\"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"fi","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"# Check if pre-commit hook already exists","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"if [ -f \"$hooksDir/pre-commit\" ]; then","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" # Backup existing pre-commit hook","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" cp \"$hooksDir/pre-commit\" \"$hooksDir/pre-commit.bak\"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" echo \"Existing pre-commit hook backed up to: $hooksDir/pre-commit.bak\"","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"fi","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"# Copy the new pre-commit hook","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"cp \"pre-commit\" \"$hooksDir/pre-commit\"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"echo \"New pre-commit hook setup complete.\"","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"rertyy":22}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"# About Us:","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"Welcome to BookKeeper, your trusted companion in clientele management. We understand the","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"challenges faced by entrepreneurs like you. **Passionate** about sharing beautiful flowers.","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"BookKeeper is here to simplify your workflow, empower your business, and help you thrive, so you can spend more time","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"sharing your love for flowers.","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"## Product Name: BookKeeper","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"## Target Users","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"Our target users are florists in the floral industry who are looking for efficient ways to manage their","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"customer lists and streamline their customer management processes. These individuals are constrained by time due to","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"their perishable flowers. With limited resources and manpower, it is essential for them to optimize their workflows and","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":"maximize productivity.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":"## Purpose","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"In the bustling world of a small business, time is precious. BookKeeper aims to provide a seamless solution for managing","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"customer relationships, allowing you to focus on what matters most - selling flowers to others who love them just as","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"much as you. Our platform offers a user-friendly interface and powerful features to streamline your workflow, saving","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"you time and effort.","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":"## Unique Selling Point","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":"### Centralized Platform","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":"Say goodbye to scattered customer lists and spreadsheets. BookKeeper offers a centralized platform to store and search","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":"for clients, keeping all your important information in one place.","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":"### Efficiency","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":"With a command-line interface, our application is faster and more efficient than traditional methods like CRMs or","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":"Excel sheets. Spend less time navigating complex menus and more time serving your customers.","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":"### Tailored for Crochet Businesses","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"We understand the unique needs of florists, which is why our platform offers customizable fields, customizable","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"tags, and integration with e-commerce platforms.","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":"### Cost-effective","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":"BookKeeper is designed to be cost-effective and easy to use, perfect for florists with limited time and resources.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":"Maximize productivity without breaking the bank.","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":"## Value Proposition","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":"For small business owners launching services, organizing customer lists can be challenging. Our address book offers a","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":"centralized platform to store and search for clients, streamlining customer management. With a command-line interface,","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":"our application is faster and more efficient than inputting data into other systems like CRMs or Microsoft Excel.","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":"## Team Information","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":"You can reach us at the email ","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":"`jaspertan@u.nus.edu` `e0967851@u.nus.edu` `ian.tung@u.nus.edu` `e0959354@u.nus.edu`","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":"## Project team","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":"### Jasper Tan Zu Xiang","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":"\u003cimg src\u003d\"images/jaspertzx.png\" width\u003d\"200px\" height\u003d\"225px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":"[[github](https://github.com/Jaspertzx)]","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":"* Role: Front-End Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":"* Responsibilities: Specialize in creating the user interface and user experience of the BookKeeper application. Ensure","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" that the application is visually appealing, responsive, and easy to navigate for users.","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":"### Goh Ying Xuan, Shavonne","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":"\u003cimg src\u003d\"images/shavonneg.png\" width\u003d\"200px\" height\u003d\"225px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":"[[github](http://github.com/shavonneg)]","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":"* Role: UI/UX Designer","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":"* Responsibilities: Creating a seamless and intuitive user experience for the BookKeeper application. Conduct user","lastModifiedDate":"2024-03-06"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":" research, create wireframes and prototypes, and design user interfaces that are visually appealing and easy to use.","lastModifiedDate":"2024-03-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"### Tung Zhi Yong, Ian","lastModifiedDate":"2024-03-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":"\u003cimg src\u003d\"images/rertyy.png\" width\u003d\"200px\" height\u003d\"225px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":"[[github](http://github.com/rertyy)]","lastModifiedDate":"2024-03-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":"* Role: Back-End Developer","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":"* Responsibilities: Specialise in handling the logic and data behind the scenes of the BookKeeper application. From","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":" interfaces.","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":"### Kailin Teo","lastModifiedDate":"2024-03-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":"\u003cimg src\u003d\"images/kailinteoo.png\" width\u003d\"200px\" height\u003d\"225px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":"[[github](http://github.com/kailinteoo)]","lastModifiedDate":"2024-03-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":"* Role: Back-End Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":"* Responsibilities: Focus on building the server-side components of the BookKeeper application. Handle tasks such as","lastModifiedDate":"2024-03-06"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" implementing business logic, managing the local storage, and ensuring the security and scalability of the application. ","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"kailinteoo":49,"rertyy":24,"-":26}},{"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":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" original source as well}","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"and edit diagrams.","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":"**`Main`** (consisting of","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":"classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":"and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":"in charge of the app launch and shut down.","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"the command `delete 1`.","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" API `interface` mentioned in the previous point).","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":"The **API** of this component is specified","lastModifiedDate":"2024-03-02"},{"lineNumber":85,"author":{"gitId":"rertyy"},"content":"in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":"The UI consists of a `MainWindow` that is made up of parts","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":"e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`,","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":"inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the","lastModifiedDate":"2024-03-02"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":"visible GUI.","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-03-02"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":"are in the `src/main/resources/view` folder. For example, the layout of","lastModifiedDate":"2024-03-02"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":"the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":"is specified","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":"in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"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":104,"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":105,"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":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"rertyy"},"content":"**API","lastModifiedDate":"2024-03-02"},{"lineNumber":110,"author":{"gitId":"rertyy"},"content":"** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"rertyy"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-03-02"},{"lineNumber":117,"author":{"gitId":"rertyy"},"content":"call as an example.","lastModifiedDate":"2024-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"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":122,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Jaspertzx"},"content":"How the Logic component works:","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"Jaspertzx"},"content":"1. When Logic is invoked to execute a command, it delegates the command to an AddressBookParser object. This object then","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"rertyy"},"content":" creates a parser corresponding to the command type (e.g., DeleteCommandParser) and utilizes it to interpret the","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"rertyy"},"content":" command.","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"Jaspertzx"},"content":"2. This process generates a Command object (to be more specific, an instance of one of its subclasses, e.g.,","lastModifiedDate":"2024-03-26"},{"lineNumber":130,"author":{"gitId":"Jaspertzx"},"content":" DeleteCommand) which is then executed by the LogicManager.","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"Jaspertzx"},"content":"3. During execution, the command can interact with the Model (e.g., to delete a Client or manage Order details).\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"Jaspertzx"},"content":" While this interaction is depicted as a singular step in the above diagram for the sake of simplicity, the actual","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"rertyy"},"content":" implementation may involve multiple interactions (between the command object and the Model) to accomplish the","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"rertyy"},"content":" intended task.","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"Jaspertzx"},"content":"4. The outcome of the command\u0027s execution is encapsulated within a CommandResult object, which is then returned from","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"rertyy"},"content":" Logic. Additional classes in Logic (not shown in the class diagram above) that are utilized for parsing a user","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"rertyy"},"content":" command:","lastModifiedDate":"2024-03-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"Jaspertzx"},"content":"#### Implementation Details","lastModifiedDate":"2024-03-26"},{"lineNumber":142,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"Jaspertzx"},"content":"To implement the new Order Logic, a new package has to be created within the commands package to cater to the order type","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"Jaspertzx"},"content":"commands. The key changes would be:","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"Jaspertzx"},"content":"- Creation of new parser class:","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" - Created a `AddOrderCommandParser` class to create the respective `Command` object by parsing the user input. This","lastModifiedDate":"2024-03-26"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" flow is as intended, and will allow us to get the required parameters typed by the user.","lastModifiedDate":"2024-03-26"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" - Created a `DeleteOrderCommandParser` class to create the respective `Command` object by parsing the user input.","lastModifiedDate":"2024-03-26"},{"lineNumber":150,"author":{"gitId":"Jaspertzx"},"content":" This flow is as intended, and will allow us to get index of the Order object in the `ObservableList`.","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"Jaspertzx"},"content":"- Creation of new classes:","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"Jaspertzx"},"content":" - Created a `AddOrderCommand` class to cater to order creation inputs by the user. This will have the required logic","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"rertyy"},"content":" to return the appropriate `Command` to be executed in the main logic.","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"rertyy"},"content":" - Created a `DeleteOrderCommand` class to cater to delete orders by their index in their `ObservableList` class.","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"rertyy"},"content":" This will allow the users to delete by index instead of the UUID. The `DeleteOrderCommand` first checks","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"rertyy"},"content":" the `ObservableList` by index to determine if the index is valid, then checks which `Person` the order belongs to.","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"rertyy"},"content":" This allows the modification of both `Person`s and `Order`s at the same time.","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"rertyy"},"content":" - Created a `EditOrderCommand` class to cater to allow editing inputs by the user. The logic is similar to that used","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"rertyy"},"content":" by `DeleteOrderCommand`.","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"rertyy"},"content":"- Update `Model` and `ModelManager` to provide methods to support the new classes. such as creating the","lastModifiedDate":"2024-03-26"},{"lineNumber":161,"author":{"gitId":"rertyy"},"content":" new `ObservableList` object to","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"Jaspertzx"},"content":" update the JavaFX element in the UI.","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"Jaspertzx"},"content":"- JUnit Test: To verify that the classes and methods behave as expected throughout the development phases, and to","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"Jaspertzx"},"content":" ensure that future updates do not alter their behavior.","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"Jaspertzx"},"content":"#### Why is it implemented this way:","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"rertyy"},"content":"It was done in this manner to adhere to the following design principles:","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"rertyy"},"content":"- Separation of Concerns: By delegating specific responsibilities to specialized classes (like `AddressBookParser`,","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"rertyy"},"content":" AddOrderCommandParser, etc.), the design adheres to the principle of separation of concerns. This means each part of","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"rertyy"},"content":" the","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"Jaspertzx"},"content":" system has a clear responsibility, reducing complexity and making the codebase easier to understand and maintain.","lastModifiedDate":"2024-03-26"},{"lineNumber":174,"author":{"gitId":"rertyy"},"content":"- Provide Extensibility: With a modular structure, adding new functionality (like future order implementations)","lastModifiedDate":"2024-03-26"},{"lineNumber":175,"author":{"gitId":"rertyy"},"content":" involves creating new classes and modifying existing ones minimally. This approach makes the system more extendable,","lastModifiedDate":"2024-03-26"},{"lineNumber":176,"author":{"gitId":"rertyy"},"content":" as seen with the introduction of new parser and command classes for handling orders.","lastModifiedDate":"2024-03-26"},{"lineNumber":177,"author":{"gitId":"rertyy"},"content":"- Enhances Frontend Integration: By redefining how the `ObservableList` is managed within the `ModelManager` for","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"rertyy"},"content":" Orders, we enhance our capability to directly manipulate the `OrderList` view in JavaFX. This adjustment in the","lastModifiedDate":"2024-03-26"},{"lineNumber":179,"author":{"gitId":"rertyy"},"content":" ModelManager class creates a seamless and responsive interaction between the backend data structures and the frontend","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"rertyy"},"content":" user interface.","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"Jaspertzx"},"content":"By doing so, I am able to emphasize on the clear separation of duties among components and allowing flexibility to add","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"Jaspertzx"},"content":"new features with minimal disruption This strategy not only facilitates easier maintenance and scalability but also","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"Jaspertzx"},"content":"enhances our future ability to develop and create requirements or changes in functionality without affecting much of the","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"Jaspertzx"},"content":"codebase.","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":189,"author":{"gitId":"rertyy"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-03-02"},{"lineNumber":190,"author":{"gitId":"rertyy"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-03-02"},{"lineNumber":191,"author":{"gitId":"rertyy"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as","lastModifiedDate":"2024-03-02"},{"lineNumber":192,"author":{"gitId":"rertyy"},"content":" a `Command` object.","lastModifiedDate":"2024-03-02"},{"lineNumber":193,"author":{"gitId":"rertyy"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-03-02"},{"lineNumber":194,"author":{"gitId":"rertyy"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-02"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":198,"author":{"gitId":"rertyy"},"content":"**API","lastModifiedDate":"2024-03-02"},{"lineNumber":199,"author":{"gitId":"rertyy"},"content":"** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"rertyy"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"682\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"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":207,"author":{"gitId":"rertyy"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-02"},{"lineNumber":208,"author":{"gitId":"rertyy"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-02"},{"lineNumber":209,"author":{"gitId":"rertyy"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-02"},{"lineNumber":210,"author":{"gitId":"rertyy"},"content":"* stores the currently \u0027selected\u0027 `Order` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"rertyy"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cOrder\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"rertyy"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"rertyy"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as","lastModifiedDate":"2024-03-02"},{"lineNumber":214,"author":{"gitId":"rertyy"},"content":" a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-02"},{"lineNumber":215,"author":{"gitId":"rertyy"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-03-02"},{"lineNumber":216,"author":{"gitId":"rertyy"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-03-02"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":218,"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":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"rertyy"},"content":"**API","lastModifiedDate":"2024-03-02"},{"lineNumber":227,"author":{"gitId":"rertyy"},"content":"** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"kailinteoo"},"content":"Below is an updated UML class diagram illustrating the relationships and interactions among the various storage-related","lastModifiedDate":"2024-03-26"},{"lineNumber":230,"author":{"gitId":"kailinteoo"},"content":"classes:","lastModifiedDate":"2024-03-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"kailinteoo"},"content":"The `Storage` component of our application is responsible for handling the reading and writing of data to and from","lastModifiedDate":"2024-03-26"},{"lineNumber":235,"author":{"gitId":"kailinteoo"},"content":"external storage sources.","lastModifiedDate":"2024-03-26"},{"lineNumber":236,"author":{"gitId":"kailinteoo"},"content":"This includes functionalities such as saving and retrieving addressbook data and user preferences.","lastModifiedDate":"2024-03-26"},{"lineNumber":237,"author":{"gitId":"kailinteoo"},"content":"In this section, we will delve into the recent enhancements made to the `Storage` component, focusing on the","lastModifiedDate":"2024-03-26"},{"lineNumber":238,"author":{"gitId":"kailinteoo"},"content":"implementation of storing clients and order details.","lastModifiedDate":"2024-03-26"},{"lineNumber":239,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":240,"author":{"gitId":"kailinteoo"},"content":"In this enhancement, the `Storage` component has been extended to support the storage and retrieval of both client and","lastModifiedDate":"2024-03-26"},{"lineNumber":241,"author":{"gitId":"kailinteoo"},"content":"order details.","lastModifiedDate":"2024-03-26"},{"lineNumber":242,"author":{"gitId":"kailinteoo"},"content":"Previously, the `Storage` component was primarily designed to handle address book data and user preferences. However,","lastModifiedDate":"2024-03-26"},{"lineNumber":243,"author":{"gitId":"kailinteoo"},"content":"with the growing requirements of our application, it becomes necessary to accommodate the storage of clients and orders.","lastModifiedDate":"2024-03-26"},{"lineNumber":244,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":245,"author":{"gitId":"kailinteoo"},"content":"#### Implementation Details:","lastModifiedDate":"2024-03-26"},{"lineNumber":246,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":247,"author":{"gitId":"kailinteoo"},"content":"To implement this feature, several modifications were made across different classes within the `Storage` package. The","lastModifiedDate":"2024-03-26"},{"lineNumber":248,"author":{"gitId":"kailinteoo"},"content":"key changes include:","lastModifiedDate":"2024-03-26"},{"lineNumber":249,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":250,"author":{"gitId":"kailinteoo"},"content":"1. New Classes: The introduction of `JsonAdaptedClient` and `JsonAdaptedOrder` classes to facilitate the conversion","lastModifiedDate":"2024-03-26"},{"lineNumber":251,"author":{"gitId":"kailinteoo"},"content":" between JSON format and the corresponding model objects (`Client` and `Order`).","lastModifiedDate":"2024-03-26"},{"lineNumber":252,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":253,"author":{"gitId":"kailinteoo"},"content":"2. Updated Interfaces: The `AddressBookStorage` interface was extended to included methods for reading and writing","lastModifiedDate":"2024-03-26"},{"lineNumber":254,"author":{"gitId":"kailinteoo"},"content":" orders. Similarly, the `Storage` interface, which serves as an umbrella for all storage-related functionalities,","lastModifiedDate":"2024-03-26"},{"lineNumber":255,"author":{"gitId":"kailinteoo"},"content":" was update to incorporate these changes.","lastModifiedDate":"2024-03-26"},{"lineNumber":256,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":257,"author":{"gitId":"kailinteoo"},"content":"3. Storage Manager: The `StorageManager` class, which orchestrates the storage operations, was modified to delegate the","lastModifiedDate":"2024-03-26"},{"lineNumber":258,"author":{"gitId":"kailinteoo"},"content":" handling of client and order data to the appropriate storage classes.","lastModifiedDate":"2024-03-26"},{"lineNumber":259,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":260,"author":{"gitId":"kailinteoo"},"content":"4. Unit Tests: Unit tests were added or updated to ensure the correctness and robustness of the new functionalities.","lastModifiedDate":"2024-03-26"},{"lineNumber":261,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":262,"author":{"gitId":"kailinteoo"},"content":"#### Why it is implemented that way:","lastModifiedDate":"2024-03-26"},{"lineNumber":263,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":264,"author":{"gitId":"kailinteoo"},"content":"With the implementation of storing clients and orders details, the `Storage` component of our application has been","lastModifiedDate":"2024-03-26"},{"lineNumber":265,"author":{"gitId":"kailinteoo"},"content":"enhanced to better meet the evolving needs of our users. These changes not only improve the functionality of our","lastModifiedDate":"2024-03-26"},{"lineNumber":266,"author":{"gitId":"kailinteoo"},"content":"application but also lay the groundwork for future enhancements and features.","lastModifiedDate":"2024-03-26"},{"lineNumber":267,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":268,"author":{"gitId":"kailinteoo"},"content":"Future plans may involve further optimizing the storage mechanisms, exploring alternative storage formats, or","lastModifiedDate":"2024-03-26"},{"lineNumber":269,"author":{"gitId":"kailinteoo"},"content":"integrating additional data validation checks to ensure data integrity. Overall, the recent enhancements to","lastModifiedDate":"2024-03-26"},{"lineNumber":270,"author":{"gitId":"kailinteoo"},"content":"the `Storage` component","lastModifiedDate":"2024-03-26"},{"lineNumber":271,"author":{"gitId":"kailinteoo"},"content":"mark a significant step forward in enhancing the robustness and flexibility of our application.","lastModifiedDate":"2024-03-26"},{"lineNumber":272,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":273,"author":{"gitId":"kailinteoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-26"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"rertyy"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-03-02"},{"lineNumber":290,"author":{"gitId":"rertyy"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-03-02"},{"lineNumber":291,"author":{"gitId":"rertyy"},"content":"following operations:","lastModifiedDate":"2024-03-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"rertyy"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-03-02"},{"lineNumber":294,"author":{"gitId":"rertyy"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-03-02"},{"lineNumber":295,"author":{"gitId":"rertyy"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-02"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"rertyy"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()`","lastModifiedDate":"2024-03-02"},{"lineNumber":298,"author":{"gitId":"rertyy"},"content":"and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"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":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"rertyy"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-02"},{"lineNumber":303,"author":{"gitId":"rertyy"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-02"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"rertyy"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command","lastModifiedDate":"2024-03-02"},{"lineNumber":308,"author":{"gitId":"rertyy"},"content":"calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes","lastModifiedDate":"2024-03-02"},{"lineNumber":309,"author":{"gitId":"rertyy"},"content":"to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book","lastModifiedDate":"2024-03-02"},{"lineNumber":310,"author":{"gitId":"rertyy"},"content":"state.","lastModifiedDate":"2024-03-02"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"rertyy"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also","lastModifiedDate":"2024-03-02"},{"lineNumber":315,"author":{"gitId":"rertyy"},"content":"calls `Model#commitAddressBook()`, causing another modified address book state to be saved into","lastModifiedDate":"2024-03-02"},{"lineNumber":316,"author":{"gitId":"rertyy"},"content":"the `addressBookStateList`.","lastModifiedDate":"2024-03-02"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"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":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"rertyy"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing","lastModifiedDate":"2024-03-02"},{"lineNumber":325,"author":{"gitId":"rertyy"},"content":"the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer`","lastModifiedDate":"2024-03-02"},{"lineNumber":326,"author":{"gitId":"rertyy"},"content":"once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"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":331,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"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":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":345,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":347,"author":{"gitId":"rertyy"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-03-02"},{"lineNumber":348,"author":{"gitId":"rertyy"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-03-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"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":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"rertyy"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such","lastModifiedDate":"2024-03-02"},{"lineNumber":355,"author":{"gitId":"rertyy"},"content":"as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`.","lastModifiedDate":"2024-03-02"},{"lineNumber":356,"author":{"gitId":"rertyy"},"content":"Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-02"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"rertyy"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-03-02"},{"lineNumber":361,"author":{"gitId":"rertyy"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-03-02"},{"lineNumber":362,"author":{"gitId":"rertyy"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-03-02"},{"lineNumber":363,"author":{"gitId":"rertyy"},"content":"desktop applications follow.","lastModifiedDate":"2024-03-02"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"shavonneg"},"content":"### View Orders feature","lastModifiedDate":"2024-03-26"},{"lineNumber":387,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":388,"author":{"gitId":"shavonneg"},"content":"#### Proposed Implementation","lastModifiedDate":"2024-03-26"},{"lineNumber":389,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":390,"author":{"gitId":"shavonneg"},"content":"The proposed View Orders mechanism is facilitated by `ViewOrdersCommand`. It extends `Command` and implements the","lastModifiedDate":"2024-03-26"},{"lineNumber":391,"author":{"gitId":"shavonneg"},"content":"displaying of all orders that belong to a client.","lastModifiedDate":"2024-03-26"},{"lineNumber":392,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":393,"author":{"gitId":"shavonneg"},"content":"These operations are exposed in the `AddressBookParser` class as `AddressBookParser#parseCommand()`.","lastModifiedDate":"2024-03-26"},{"lineNumber":394,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":395,"author":{"gitId":"shavonneg"},"content":"Given below is an example usage scenario and how the view orders mechanism behaves at each step.","lastModifiedDate":"2024-03-26"},{"lineNumber":396,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":397,"author":{"gitId":"shavonneg"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-26"},{"lineNumber":398,"author":{"gitId":"shavonneg"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-26"},{"lineNumber":399,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":400,"author":{"gitId":"shavonneg"},"content":"Step 2. The user executes `viewOrders` command to view all the orders that they have in BookKeeper. The `viewOrders`","lastModifiedDate":"2024-03-26"},{"lineNumber":401,"author":{"gitId":"shavonneg"},"content":"command calls `Model#updateFilteredOrderList()`, causing the address book to show the list of orders","lastModifiedDate":"2024-03-26"},{"lineNumber":402,"author":{"gitId":"shavonneg"},"content":"that are tracked in the storage of the application. The `viewOrders` command then returns a new `CommandResult`, which","lastModifiedDate":"2024-03-26"},{"lineNumber":403,"author":{"gitId":"shavonneg"},"content":"displays the `MESSAGE_SUCCESS` message, which is \"Here are all your orders: \".","lastModifiedDate":"2024-03-26"},{"lineNumber":404,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":405,"author":{"gitId":"shavonneg"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-26"},{"lineNumber":406,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":407,"author":{"gitId":"shavonneg"},"content":"**Aspect: How view command executes:**","lastModifiedDate":"2024-03-26"},{"lineNumber":408,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":409,"author":{"gitId":"shavonneg"},"content":"* **Alternative 1 (current choice):** Retrieves and displays all client orders from the filtered order list.","lastModifiedDate":"2024-03-26"},{"lineNumber":410,"author":{"gitId":"shavonneg"},"content":" * Pros: Simple and straightforward implementation.","lastModifiedDate":"2024-03-26"},{"lineNumber":411,"author":{"gitId":"shavonneg"},"content":" * Cons: May result in a slower performance and higher memory usage if the filtered order list is large.","lastModifiedDate":"2024-03-26"},{"lineNumber":412,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":413,"author":{"gitId":"shavonneg"},"content":"* **Alternative 2:** Implement system for displaying orders and only load a subset of orders at a time.","lastModifiedDate":"2024-03-26"},{"lineNumber":414,"author":{"gitId":"shavonneg"},"content":" * Pros: Will use less memory (e.g. can use cache mechanisms to store recently accessed orders in memory).","lastModifiedDate":"2024-03-26"},{"lineNumber":415,"author":{"gitId":"shavonneg"},"content":" * Cons: More complex implementation of storage and memory access.","lastModifiedDate":"2024-03-26"},{"lineNumber":416,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":417,"author":{"gitId":"shavonneg"},"content":"**Why is it implemented that way**","lastModifiedDate":"2024-03-26"},{"lineNumber":418,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":419,"author":{"gitId":"shavonneg"},"content":"* This approach is chosen for its simplicity. By utilising the filtered order list maintained by the model, the","lastModifiedDate":"2024-03-26"},{"lineNumber":420,"author":{"gitId":"shavonneg"},"content":" `viewOrders` command provides a straightforward way to display all orders to the user. It also makes it easier to","lastModifiedDate":"2024-03-26"},{"lineNumber":421,"author":{"gitId":"shavonneg"},"content":" maintain.","lastModifiedDate":"2024-03-26"},{"lineNumber":422,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":423,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":433,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":434,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":435,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":436,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"Jaspertzx"},"content":"* Florists business owners or freelance hobbyist.","lastModifiedDate":"2024-03-14"},{"lineNumber":447,"author":{"gitId":"Jaspertzx"},"content":"* Prefers efficient ways to manage customer and loyalty points.","lastModifiedDate":"2024-03-14"},{"lineNumber":448,"author":{"gitId":"Jaspertzx"},"content":"* Prefers an efficient way to keep track of customer\u0027s orders.","lastModifiedDate":"2024-03-14"},{"lineNumber":449,"author":{"gitId":"kailinteoo"},"content":"* Values productivity and time-saving solutions.","lastModifiedDate":"2024-03-08"},{"lineNumber":450,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":451,"author":{"gitId":"kailinteoo"},"content":"**User Needs and Preferences**:","lastModifiedDate":"2024-03-08"},{"lineNumber":452,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":453,"author":{"gitId":"kailinteoo"},"content":"* Efficient Customer Management:","lastModifiedDate":"2024-03-08"},{"lineNumber":454,"author":{"gitId":"kailinteoo"},"content":" * Can organize and manage customer lists effectively.","lastModifiedDate":"2024-03-08"},{"lineNumber":455,"author":{"gitId":"kailinteoo"},"content":" * Prefers streamlined processes for handling customer information.","lastModifiedDate":"2024-03-08"},{"lineNumber":456,"author":{"gitId":"kailinteoo"},"content":" * Values tools that optimize workflows and save time.","lastModifiedDate":"2024-03-08"},{"lineNumber":457,"author":{"gitId":"Jaspertzx"},"content":"* Organised Orders","lastModifiedDate":"2024-03-14"},{"lineNumber":458,"author":{"gitId":"Jaspertzx"},"content":" * Prefers to organize orders and sort them via due date.","lastModifiedDate":"2024-03-14"},{"lineNumber":459,"author":{"gitId":"Jaspertzx"},"content":" * Helps to keep track of customer\u0027s delivery deadlines.","lastModifiedDate":"2024-03-14"},{"lineNumber":460,"author":{"gitId":"Jaspertzx"},"content":"* Persistent Data Storage:","lastModifiedDate":"2024-03-14"},{"lineNumber":461,"author":{"gitId":"kailinteoo"},"content":" * Prefers applications with backup and synchronization capabilities for data integrity.","lastModifiedDate":"2024-03-08"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":463,"author":{"gitId":"kailinteoo"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-08"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":465,"author":{"gitId":"Jaspertzx"},"content":"* Manage contacts faster than a typical mouse/GUI driven app.","lastModifiedDate":"2024-03-14"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"Jaspertzx"},"content":"| Priority | As a … | I want to … | So that I can… |","lastModifiedDate":"2024-03-05"},{"lineNumber":472,"author":{"gitId":"rertyy"},"content":"|----------|---------|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-18"},{"lineNumber":473,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | easily add new customers to my address book | keep track of all my clients\u0027 information in one place. |","lastModifiedDate":"2024-03-14"},{"lineNumber":474,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | have a search function | quickly find specific customers when I need to reference their details. |","lastModifiedDate":"2024-03-14"},{"lineNumber":475,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | be accessible via a command-line interface | efficiently manage my customer list without navigating through complex menus. |","lastModifiedDate":"2024-03-14"},{"lineNumber":476,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | have customizable fields | record specific details about each customer, such as their favorite colors or special requests. |","lastModifiedDate":"2024-03-14"},{"lineNumber":477,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | be cost-effective and easy to use | maximize productivity without investing in expensive CRM systems. |","lastModifiedDate":"2024-03-14"},{"lineNumber":478,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | have data backup and synchronization capabilities | access my customer information from multiple devices and ensure its security. |","lastModifiedDate":"2024-03-14"},{"lineNumber":479,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | have secure access controls and permissions settings | restrict sensitive information and ensure data privacy compliance. |","lastModifiedDate":"2024-03-14"},{"lineNumber":480,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | categorize my customers | tailor my marketing efforts accordingly based on factors like their preferred flowers or past purchases. |","lastModifiedDate":"2024-03-14"},{"lineNumber":481,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | generate reports on customer activity | analyze trends and make informed business decisions based on order history and frequency of purchases. |","lastModifiedDate":"2024-03-14"},{"lineNumber":482,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | have a reminder feature | stay organized and follow up with customers on important dates, such as birthdays or anniversaries. |","lastModifiedDate":"2024-03-14"},{"lineNumber":483,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | have customizable templates for invoices and receipts | easily generate and send professional-looking documents to my customers. |","lastModifiedDate":"2024-03-14"},{"lineNumber":484,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | have a notes section for each customer | record specific preferences and requirements for their projects. |","lastModifiedDate":"2024-03-14"},{"lineNumber":485,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | integrate with accounting software | easily track expenses related to each customer and maintain accurate financial records. |","lastModifiedDate":"2024-03-14"},{"lineNumber":486,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | have a mobile-friendly interface | easily access customer information on the go and process orders efficiently. |","lastModifiedDate":"2024-03-14"},{"lineNumber":487,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | integrate with my email client | send personalized messages and promotions to my customers directly from the platform. |","lastModifiedDate":"2024-03-14"},{"lineNumber":488,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | integrate with e-commerce platforms | automatically sync customer data and manage orders efficiently when participating in online marketplaces. |","lastModifiedDate":"2024-03-14"},{"lineNumber":489,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | track communication history with customers | provide personalized and timely customer service including emails and phone calls. |","lastModifiedDate":"2024-03-14"},{"lineNumber":490,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | support multiple user accounts with shared access | my team members can collaborate on managing customer relationships. |","lastModifiedDate":"2024-03-14"},{"lineNumber":491,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | have a scheduling feature | manage registrations and communicate updates with attendees seamlessly. |","lastModifiedDate":"2024-03-14"},{"lineNumber":492,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | have a feature for scanning and capturing customer contact information | grow my mailing list and follow up with potential leads quickly. |","lastModifiedDate":"2024-03-14"},{"lineNumber":493,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | integrate with social media platforms | easily connect with customers and engage with them through various channels. |","lastModifiedDate":"2024-03-14"},{"lineNumber":494,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | provide insights into customer demographics and preferences | tailor my product offerings and marketing campaigns to target specific audiences effectively. |","lastModifiedDate":"2024-03-14"},{"lineNumber":495,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | provide analytics and insights on customer behavior | continuously improve my products and services to meet customer needs based on purchase patterns and feedback. |","lastModifiedDate":"2024-03-14"},{"lineNumber":496,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | provide insights into customer satisfaction through feedback and reviews | address any concerns and improve the overall customer experience. |","lastModifiedDate":"2024-03-14"},{"lineNumber":497,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | offer customizable tags or labels for customers | segment my audience and target specific groups with tailored marketing campaigns. |","lastModifiedDate":"2024-03-14"},{"lineNumber":498,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | have a good out of the box experience | immediately use the application without needing to configure it for my own needs. |","lastModifiedDate":"2024-03-14"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"rertyy"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified","lastModifiedDate":"2024-03-02"},{"lineNumber":503,"author":{"gitId":"rertyy"},"content":"otherwise)","lastModifiedDate":"2024-03-02"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"rertyy"},"content":"1. User requests to list persons.","lastModifiedDate":"2024-03-07"},{"lineNumber":510,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a list of persons.","lastModifiedDate":"2024-03-07"},{"lineNumber":511,"author":{"gitId":"rertyy"},"content":"3. User requests to delete a specific person in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":512,"author":{"gitId":"rertyy"},"content":"4. AddressBook deletes the person.","lastModifiedDate":"2024-03-07"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"rertyy"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-03-02"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":530,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":531,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":532,"author":{"gitId":"rertyy"},"content":"1. User requests to add a person.","lastModifiedDate":"2024-03-07"},{"lineNumber":533,"author":{"gitId":"rertyy"},"content":"2. AddressBook adds a person.","lastModifiedDate":"2024-03-07"},{"lineNumber":534,"author":{"gitId":"rertyy"},"content":"3. AddressBook shows the added person.","lastModifiedDate":"2024-03-07"},{"lineNumber":535,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":536,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":537,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":538,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":539,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":540,"author":{"gitId":"rertyy"},"content":"* 2a. The person already exists.","lastModifiedDate":"2024-03-02"},{"lineNumber":541,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":542,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":543,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":544,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-02"},{"lineNumber":545,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":546,"author":{"gitId":"rertyy"},"content":"* 2b. The person details are invalid.","lastModifiedDate":"2024-03-02"},{"lineNumber":547,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":548,"author":{"gitId":"rertyy"},"content":" * 2b1. AddressBook shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":549,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":550,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-02"},{"lineNumber":551,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":552,"author":{"gitId":"rertyy"},"content":"**Use case: Edit a person**","lastModifiedDate":"2024-03-07"},{"lineNumber":553,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":554,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":555,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":556,"author":{"gitId":"rertyy"},"content":"1. User requests to edit a person.","lastModifiedDate":"2024-03-07"},{"lineNumber":557,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows the person to be edited.","lastModifiedDate":"2024-03-07"},{"lineNumber":558,"author":{"gitId":"rertyy"},"content":"3. User edits the person.","lastModifiedDate":"2024-03-07"},{"lineNumber":559,"author":{"gitId":"rertyy"},"content":"4. AddressBook shows the edited person.","lastModifiedDate":"2024-03-07"},{"lineNumber":560,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":561,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":562,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":563,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":564,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":565,"author":{"gitId":"rertyy"},"content":"* 2a. The person does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":566,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":567,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":568,"author":{"gitId":"rertyy"},"content":" * 2a2. AddressBook shows a list of persons with similar names.","lastModifiedDate":"2024-03-07"},{"lineNumber":569,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":570,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":571,"author":{"gitId":"rertyy"},"content":"* 3a. The person details are invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":572,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":573,"author":{"gitId":"rertyy"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":574,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":575,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":576,"author":{"gitId":"rertyy"},"content":"* 3b. The person details are unchanged.","lastModifiedDate":"2024-03-07"},{"lineNumber":577,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":578,"author":{"gitId":"rertyy"},"content":" * 3b1. AddressBook shows a message indicating no changes are made.","lastModifiedDate":"2024-03-07"},{"lineNumber":579,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":580,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":581,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":582,"author":{"gitId":"rertyy"},"content":"**Use case: Find a person**","lastModifiedDate":"2024-03-02"},{"lineNumber":583,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":584,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":585,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":586,"author":{"gitId":"rertyy"},"content":"1. User requests to find a person by name.","lastModifiedDate":"2024-03-07"},{"lineNumber":587,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a list of persons whose names contain the given keyword.","lastModifiedDate":"2024-03-07"},{"lineNumber":588,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":589,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":590,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":591,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":592,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":593,"author":{"gitId":"rertyy"},"content":"* 2a. No person is found.","lastModifiedDate":"2024-03-02"},{"lineNumber":594,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":595,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows a message indicating no person is found.","lastModifiedDate":"2024-03-02"},{"lineNumber":596,"author":{"gitId":"rertyy"},"content":" * 2a2. AddressBook shows the list of persons with similar names.","lastModifiedDate":"2024-03-07"},{"lineNumber":597,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":598,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":599,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":600,"author":{"gitId":"rertyy"},"content":"**Use case: Filter categories**","lastModifiedDate":"2024-03-02"},{"lineNumber":601,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":602,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":603,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":604,"author":{"gitId":"rertyy"},"content":"1. User requests to filter categories.","lastModifiedDate":"2024-03-07"},{"lineNumber":605,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a list of persons with the given category.","lastModifiedDate":"2024-03-07"},{"lineNumber":606,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":607,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":608,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":609,"author":{"gitId":"rertyy"},"content":"**Use case: Sort by order**","lastModifiedDate":"2024-03-07"},{"lineNumber":610,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":611,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":612,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":613,"author":{"gitId":"rertyy"},"content":"1. User requests to sort by order.","lastModifiedDate":"2024-03-07"},{"lineNumber":614,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a list of persons sorted by the given order.","lastModifiedDate":"2024-03-07"},{"lineNumber":615,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":616,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":617,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":618,"author":{"gitId":"rertyy"},"content":"**Use case: Show help**","lastModifiedDate":"2024-03-02"},{"lineNumber":619,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":620,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":621,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":622,"author":{"gitId":"rertyy"},"content":"1. User requests to show help.","lastModifiedDate":"2024-03-07"},{"lineNumber":623,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a help page.","lastModifiedDate":"2024-03-07"},{"lineNumber":624,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":625,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":626,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":627,"author":{"gitId":"rertyy"},"content":"**Use case: Clear all entries**","lastModifiedDate":"2024-03-02"},{"lineNumber":628,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":629,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":630,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":631,"author":{"gitId":"rertyy"},"content":"1. User requests to clear all entries.","lastModifiedDate":"2024-03-07"},{"lineNumber":632,"author":{"gitId":"rertyy"},"content":"2. AddressBook clears all entries.","lastModifiedDate":"2024-03-07"},{"lineNumber":633,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":634,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":635,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":636,"author":{"gitId":"rertyy"},"content":"**Use case: Exit the program**","lastModifiedDate":"2024-03-02"},{"lineNumber":637,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":638,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":639,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":640,"author":{"gitId":"rertyy"},"content":"1. User requests to exit the program.","lastModifiedDate":"2024-03-07"},{"lineNumber":641,"author":{"gitId":"rertyy"},"content":"2. AddressBook exits.","lastModifiedDate":"2024-03-07"},{"lineNumber":642,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":643,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":644,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":645,"author":{"gitId":"rertyy"},"content":"**Use case: Import data**","lastModifiedDate":"2024-03-07"},{"lineNumber":646,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":647,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":648,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":649,"author":{"gitId":"rertyy"},"content":"1. User requests to view locally saved data.","lastModifiedDate":"2024-03-07"},{"lineNumber":650,"author":{"gitId":"rertyy"},"content":"2. AddressBook opens location of saved data.","lastModifiedDate":"2024-03-07"},{"lineNumber":651,"author":{"gitId":"rertyy"},"content":"3. User stores new data to local file.","lastModifiedDate":"2024-03-07"},{"lineNumber":652,"author":{"gitId":"rertyy"},"content":"4. AddressBook imports data from file.","lastModifiedDate":"2024-03-07"},{"lineNumber":653,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":654,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":655,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":656,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":657,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":658,"author":{"gitId":"rertyy"},"content":"* 4a. The data is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":659,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":660,"author":{"gitId":"rertyy"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":661,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":662,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":663,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":664,"author":{"gitId":"rertyy"},"content":"**Use case: Export data**","lastModifiedDate":"2024-03-02"},{"lineNumber":665,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":666,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":667,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":668,"author":{"gitId":"rertyy"},"content":"1. User requests to export data.","lastModifiedDate":"2024-03-07"},{"lineNumber":669,"author":{"gitId":"rertyy"},"content":"2. AddressBook opens locally saved file.","lastModifiedDate":"2024-03-07"},{"lineNumber":670,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":671,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":672,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":673,"author":{"gitId":"rertyy"},"content":"**Use case: Add order**","lastModifiedDate":"2024-03-07"},{"lineNumber":674,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":675,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":676,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":677,"author":{"gitId":"rertyy"},"content":"1. User requests to add an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":678,"author":{"gitId":"rertyy"},"content":"2. AddressBook adds an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":679,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":680,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":681,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":682,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":683,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":684,"author":{"gitId":"rertyy"},"content":"* 2a. The order already exists.","lastModifiedDate":"2024-03-07"},{"lineNumber":685,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":686,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":687,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":688,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":689,"author":{"gitId":"rertyy"},"content":"* 2b. The order details are invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":690,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":691,"author":{"gitId":"rertyy"},"content":" * 2b1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":692,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":693,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":694,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":695,"author":{"gitId":"rertyy"},"content":"**Use case: Edit order**","lastModifiedDate":"2024-03-07"},{"lineNumber":696,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":697,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":698,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":699,"author":{"gitId":"rertyy"},"content":"1. User requests to edit an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":700,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows the order to be edited.","lastModifiedDate":"2024-03-07"},{"lineNumber":701,"author":{"gitId":"rertyy"},"content":"3. User edits the order.","lastModifiedDate":"2024-03-07"},{"lineNumber":702,"author":{"gitId":"rertyy"},"content":"4. AddressBook shows the edited order.","lastModifiedDate":"2024-03-07"},{"lineNumber":703,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":704,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":705,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":706,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":707,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":708,"author":{"gitId":"rertyy"},"content":"* 2a. The order does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":709,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":710,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":711,"author":{"gitId":"rertyy"},"content":" * 2a2. AddressBook shows a list of orders with similar names.","lastModifiedDate":"2024-03-07"},{"lineNumber":712,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":713,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":714,"author":{"gitId":"rertyy"},"content":"* 3a. The order details are invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":715,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":716,"author":{"gitId":"rertyy"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":717,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":718,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":719,"author":{"gitId":"rertyy"},"content":"* 3b. The order details are unchanged.","lastModifiedDate":"2024-03-07"},{"lineNumber":720,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":721,"author":{"gitId":"rertyy"},"content":" * 3b1. AddressBook shows a message indicating no changes are made.","lastModifiedDate":"2024-03-07"},{"lineNumber":722,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":723,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":724,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":725,"author":{"gitId":"rertyy"},"content":"**Use case: Delete order**","lastModifiedDate":"2024-03-07"},{"lineNumber":726,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":727,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":728,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":729,"author":{"gitId":"rertyy"},"content":"1. User requests to delete an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":730,"author":{"gitId":"rertyy"},"content":"2. AddressBook deletes the order.","lastModifiedDate":"2024-03-07"},{"lineNumber":731,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":732,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":733,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":734,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":735,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":736,"author":{"gitId":"rertyy"},"content":"* 2a. The order does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":737,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":738,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":739,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":740,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":741,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":742,"author":{"gitId":"rertyy"},"content":"**Use case: Prioritize order**","lastModifiedDate":"2024-03-07"},{"lineNumber":743,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":744,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":745,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":746,"author":{"gitId":"rertyy"},"content":"1. User requests to prioritize an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":747,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows the prioritized order.","lastModifiedDate":"2024-03-07"},{"lineNumber":748,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":749,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":750,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":751,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":752,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":753,"author":{"gitId":"rertyy"},"content":"* 2a. The order does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":754,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":755,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":756,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":757,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-02"},{"lineNumber":758,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":759,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":760,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":761,"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":762,"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":763,"author":{"gitId":"rertyy"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-03-18"},{"lineNumber":764,"author":{"gitId":"rertyy"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-18"},{"lineNumber":765,"author":{"gitId":"rertyy"},"content":"4. Should provide clear and informative error messages to users in case of unexpected errors. Additionally, detailed","lastModifiedDate":"2024-03-18"},{"lineNumber":766,"author":{"gitId":"rertyy"},"content":" logs should be maintained for system administrators to troubleshoot issues effectively.","lastModifiedDate":"2024-03-18"},{"lineNumber":767,"author":{"gitId":"rertyy"},"content":"5. Application architecture should be scalable to accommodate future growth in terms of users and data volume, without","lastModifiedDate":"2024-03-18"},{"lineNumber":768,"author":{"gitId":"rertyy"},"content":" compromising performance.","lastModifiedDate":"2024-03-18"},{"lineNumber":769,"author":{"gitId":"rertyy"},"content":"6. Automated backups of critical data should be performed, and there should be a documented and tested procedure for","lastModifiedDate":"2024-03-18"},{"lineNumber":770,"author":{"gitId":"rertyy"},"content":" data recovery in case of system failures or data loss.","lastModifiedDate":"2024-03-18"},{"lineNumber":771,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":772,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":773,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":774,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":775,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":776,"author":{"gitId":"shavonneg"},"content":"* **Application architecture**: Describes the patterns and techniques used to design and build an application","lastModifiedDate":"2024-03-05"},{"lineNumber":777,"author":{"gitId":"rertyy"},"content":"* **System administrators**: Professionals responsible for managing, configuring, and ensuring the proper operation of","lastModifiedDate":"2024-03-18"},{"lineNumber":778,"author":{"gitId":"rertyy"},"content":" computer systems and servers","lastModifiedDate":"2024-03-18"},{"lineNumber":779,"author":{"gitId":"rertyy"},"content":"* **Detailed logs**: Records that track events, operations, errors, and other significant activities that occur within a","lastModifiedDate":"2024-03-18"},{"lineNumber":780,"author":{"gitId":"rertyy"},"content":" software system or application.","lastModifiedDate":"2024-03-18"},{"lineNumber":781,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":782,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":783,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":784,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":785,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":786,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":787,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":788,"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":789,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":790,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":791,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":792,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":793,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":794,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":795,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":796,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":797,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":798,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":799,"author":{"gitId":"rertyy"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-03-02"},{"lineNumber":800,"author":{"gitId":"rertyy"},"content":" optimum.","lastModifiedDate":"2024-03-02"},{"lineNumber":801,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":802,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":803,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":804,"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":805,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":806,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":807,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":808,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":809,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":810,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":811,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":812,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":813,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":814,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":815,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":816,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":817,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":818,"author":{"gitId":"rertyy"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-03-02"},{"lineNumber":819,"author":{"gitId":"rertyy"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-02"},{"lineNumber":820,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":821,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":822,"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":823,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":824,"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":825,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":826,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":827,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":828,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":829,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":830,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":831,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":832,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":833,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":834,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":835,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"kailinteoo":51,"shavonneg":63,"rertyy":366,"Jaspertzx":41,"-":314}},{"path":"docs/UserGuide.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: User Guide","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":"shavonneg"},"content":"## Table of Contents","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"[1. Purpose of User Guide (UG)](#1-purpose-of-user-guide-ug)","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"[2. Introduction](#2-introduction)","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"* [2.1. Introducing BookKeeper](#21-introducing-bookkeeper)","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"* [2.2. What\u0027s New in BookKeeper release v1.4](#22-whats-new-in-bookkeeper-release-v14)","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"* [2.3. Product Description](#23-product-description)","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"* [2.4. Unique Selling Points](#24-unique-selling-points)","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" * [2.4.1. Centralised Platform](#241-centralised-platform)","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":" * [2.4.2. Efficiency](#242-efficiency)","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" * [2.4.3. Tailored for Florist Businesses](#243-tailored-for-florist-businesses)","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" * [2.4.4. Cost-Effective](#244-cost-effective)","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"[3. Target Audience with assumptions](#3-target-audience-with-assumptions)","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":"* [3.1. Target Audience](#31-target-audience)","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"* [3.2. Assumptions](#32-assumptions)","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":"[4. Quick start](#4-quick-start)","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":"[5. Commands](#5-commands)","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"* [5.1 Command summary](#51-command-summary)","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" * [5.1.1 Client](#511-client)","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" * [5.1.2 Order](#512-order)","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":"[6. Main Features](#6-main-features)","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":"[7. Information about how to use the guide](#7-information-about-how-to-use-the-guide)","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":"* [7.1. Appendix A: Technical Glossary](#71-appendix-a-technical-glossary)","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":"* [7.2. Appendix B: One page cheatsheet](#72-appendix-b-one-page-cheatsheet)","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":"* [7.3. Appendix C: FAQ](#73-appendix-c-faq)","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":"[8. Known issues](#8-known-issues)","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":"## 1. Purpose of User Guide (UG)","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":"BookKeeper is a desktop app designed for florists, in particular to manage their clients and orders when selling","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":"flower bouquets.","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":"Our User Guide (UG) provides florists with a comprehensive resource to understand and use BookKeeper effectively.","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":"Inside, we have outlined clear instructions, explanations, and best practices in order to aid florists in navigating","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":"BookKeeper’s features seamlessly. This UG is crucial to help florists comprehend the application’s functionalities,","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":"optimise their workflows, and maximise productivity with ease.","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":"BookKeeper is also optimised for use via a Command Line Interface (","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":"CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, BookKeeper can get your","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":"client management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":"## 2. Introduction","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":"### 2.1. Introducing BookKeeper","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":"BookKeeper is an application designed to simplify your client and order management.","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":"With BookKeeper, you can effortlessly organise your client information, track orders and identify loyal customers.","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":"This user guide is your comprehensive resource for understanding the full capabilities of BookKeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":"Here, we break down the installation process, system setup, and key features, ensuring seamless adoption and utilisation","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":"of our app. If you are just starting your small florist business, BookKeeper is here to help you efficiently organise","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":"your business operations.","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":"### 2.2. What\u0027s New in BookKeeper release v1.4","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":"BookKeeper v1.4 contains the following new features and improvements.","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":"* Order management enhancements","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":" * Improved functionalities for efficient order management, with features like add, delete, edit and filter orders.","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"* Links Client to Orders","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"kailinteoo"},"content":" * Seamlessly links clients to their respective orders for comprehensive tracking and management","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":"* Provides bug fixes","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":" * Fixed minor bugs to ensure the smooth operation of the application","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":"### 2.3. Product Description","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":"BookKeeper is like an address book, providing a working platform that can effectively manage user information","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":"and orders. This efficiently manages customer relationships as it maximises user productivity.","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":"### 2.4. Unique Selling Points","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":"#### 2.4.1. Centralised Platform","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":"BookKeeper offers a centralised platform where you can effortlessly store and search for client information,","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":"keeping all your vital data organised and accessible at your fingertips.","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":"#### 2.4.2. Efficiency","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":"With its intuitive command-line interface, BookKeeper is faster and more efficient than traditional methods","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":"like CRMs or Excel sheets. Spend less time navigating complex menus and more time serving your customer’s needs.","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":"#### 2.4.3. Tailored for Florist Businesses","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":"We understand the unique needs of florists, which is why BookKeeper comes equipped with customizable fields, tags,","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"kailinteoo"},"content":"and seamless integration with e-commerce platforms.","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":"#### 2.4.4. Cost-Effective","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"kailinteoo"},"content":"Designed with small businesses in mind, BookKeeper is not only powerful but also cost-effective.","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":"Say goodbye to expensive software solutions that drain your resources.","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"kailinteoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"kailinteoo"},"content":"## 3. Target Audience with assumptions","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":"### 3.1. Target Audience","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":"BookKeeper is specifically designed for small florist businesses, catering to the unique needs and challenges they face","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":"in managing client relationships and orders. Our target audience includes small florist shops, independent floral","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":"designers, and boutique flower businesses.","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"### 3.2. Assumptions","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":"1. Our application is made with the assumption that users are members of the florist industry and will understand the","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"kailinteoo"},"content":" needs as well as the terminology used by florists. They can either be business owners, managers, or employees and","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":" are looking for a tailored solution to streamline their operations.","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":"2. Users are presumed to have a basic understanding of computer operations and software usage. This can help them to","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" navigate easily through the application and follow the instructions to download and use BookKeeper,","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" as provided in this guide.","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":"3. While prior experience with customer relationship management (CRM) systems and command line interfaces (CLIs) can","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":" help users to familiarise themselves with BookKeeper fast, BookKeeper is also entry-level-friendly so that we can","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"kailinteoo"},"content":" accommodate users of all levels of technical expertise.","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"kailinteoo"},"content":"## 4. Quick start","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"kailinteoo"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/AY2324S2-CS2103T-T09-2/tp/releases).","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar`","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"shavonneg"},"content":" command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"shavonneg"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" open the help window.\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe`","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":" to the Address Book.","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"kailinteoo"},"content":"## 5. Commands","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"kailinteoo"},"content":"### 5.1 Command summary","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"Jaspertzx"},"content":"### 5.1.1 Client","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"Jaspertzx"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"Jaspertzx"},"content":"|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"Jaspertzx"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"Jaspertzx"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"Jaspertzx"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"Jaspertzx"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"Jaspertzx"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"Jaspertzx"},"content":"| **List** | `list` |","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"Jaspertzx"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"Jaspertzx"},"content":"### 5.1.2 Order","lastModifiedDate":"2024-04-03"},{"lineNumber":185,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":186,"author":{"gitId":"Jaspertzx"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"shavonneg"},"content":"|-----------------|--------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"shavonneg"},"content":"| **order** | `order INDEX by/DEADLINE c/PRICE d/DESCRIPTION` \u003cbr\u003e e.g., `order 3 by/23-07-2024 00:00 c/99.99 d/1xRoses` |","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"Jaspertzx"},"content":"| **deleteOrder** | `deleteOrder INDEX` \u003cbr/\u003e `deleteOrder 3` |","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"shavonneg"},"content":"| **editOrder** | `editOrder INDEX by/DEADLINE c/PRICE d/DESCRIPTION s/STATUS` \u003cbr\u003e e.g., `editOrder 1 by/23-07-2024 10:10 c/40 d/1xRoses s/COMPLETED` |","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":192,"author":{"gitId":"kailinteoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"kailinteoo"},"content":"## 6. Main Features","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"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":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"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":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"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":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"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":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"shavonneg"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"shavonneg"},"content":" ignored.\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":216,"author":{"gitId":"shavonneg"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"shavonneg"},"content":" as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"kailinteoo"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-04-02"},{"lineNumber":229,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":230,"author":{"gitId":"kailinteoo"},"content":"Clears all entries from the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":231,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":232,"author":{"gitId":"kailinteoo"},"content":"Format: `clear`","lastModifiedDate":"2024-04-02"},{"lineNumber":233,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":234,"author":{"gitId":"kailinteoo"},"content":"### \u003cins\u003eClient Features:","lastModifiedDate":"2024-04-02"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-02"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"shavonneg"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567`","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"shavonneg"},"content":" and `johndoe@example.com` respectively.","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"kailinteoo"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2024-04-02"},{"lineNumber":272,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":273,"author":{"gitId":"kailinteoo"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":274,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":275,"author":{"gitId":"kailinteoo"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-04-02"},{"lineNumber":276,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":277,"author":{"gitId":"kailinteoo"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2024-04-02"},{"lineNumber":278,"author":{"gitId":"kailinteoo"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-02"},{"lineNumber":279,"author":{"gitId":"kailinteoo"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-02"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":281,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-04-02"},{"lineNumber":282,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":283,"author":{"gitId":"kailinteoo"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":284,"author":{"gitId":"kailinteoo"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-04-02"},{"lineNumber":285,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":286,"author":{"gitId":"kailinteoo"},"content":"### Listing all persons : `list`","lastModifiedDate":"2024-04-02"},{"lineNumber":287,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":288,"author":{"gitId":"kailinteoo"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":289,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":290,"author":{"gitId":"kailinteoo"},"content":"Format: `list`","lastModifiedDate":"2024-04-02"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":307,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"Jaspertzx"},"content":" ![result for \u0027find alex david\u0027](images/findKarenResult.png)","lastModifiedDate":"2024-04-04"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"Jaspertzx"},"content":"### \u003cins\u003eOrder Features:","lastModifiedDate":"2024-04-04"},{"lineNumber":318,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":319,"author":{"gitId":"Jaspertzx"},"content":"### Adding an order: `order`","lastModifiedDate":"2024-04-04"},{"lineNumber":320,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":321,"author":{"gitId":"Jaspertzx"},"content":"Adds an order into BookKeeper.","lastModifiedDate":"2024-04-04"},{"lineNumber":322,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":323,"author":{"gitId":"Jaspertzx"},"content":"Format: `order \u003cINDEX\u003e by/DEADLINE c/PRICE d/DESCRIPTION`","lastModifiedDate":"2024-04-04"},{"lineNumber":324,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":325,"author":{"gitId":"Jaspertzx"},"content":"* Adds the order to the user at the specified `INDEX`.","lastModifiedDate":"2024-04-04"},{"lineNumber":326,"author":{"gitId":"Jaspertzx"},"content":" The index **must be a positive integer** 1, 2, 3, …​, and the index must exist in the Client list.","lastModifiedDate":"2024-04-04"},{"lineNumber":327,"author":{"gitId":"Jaspertzx"},"content":"* All fields must be provided.","lastModifiedDate":"2024-04-04"},{"lineNumber":328,"author":{"gitId":"Jaspertzx"},"content":"* Please specify `by/DEADLINE` field in `DD-MM-YYYY HH:MM`.","lastModifiedDate":"2024-04-04"},{"lineNumber":329,"author":{"gitId":"Jaspertzx"},"content":"* For the `c/PRICE` field, do note that any decimal places after 2 will be rounded up.","lastModifiedDate":"2024-04-04"},{"lineNumber":330,"author":{"gitId":"Jaspertzx"},"content":" * For e.g. `2.999` will be rounded up to `3.00`.","lastModifiedDate":"2024-04-04"},{"lineNumber":331,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":332,"author":{"gitId":"Jaspertzx"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":333,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":334,"author":{"gitId":"shavonneg"},"content":"* `order 1 d/1xRoses c/40 by/23-07-2024 00:00`","lastModifiedDate":"2024-04-04"},{"lineNumber":335,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":336,"author":{"gitId":"Jaspertzx"},"content":"### Deleting an order: `deleteOrder`","lastModifiedDate":"2024-04-04"},{"lineNumber":337,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":338,"author":{"gitId":"rertyy"},"content":"Deletes the specified order from BookKeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":339,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":340,"author":{"gitId":"rertyy"},"content":"Format: `deleteOrder INDEX`","lastModifiedDate":"2024-04-02"},{"lineNumber":341,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":342,"author":{"gitId":"rertyy"},"content":"* Deletes the order at the specified `INDEX`.","lastModifiedDate":"2024-04-02"},{"lineNumber":343,"author":{"gitId":"rertyy"},"content":"* The index refers to the index number shown in the displayed order list.","lastModifiedDate":"2024-04-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-04-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":348,"author":{"gitId":"rertyy"},"content":"* `deleteOrder 2` deletes the 2nd order in the order list.","lastModifiedDate":"2024-04-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":350,"author":{"gitId":"Jaspertzx"},"content":"### Editing an order : `editOrder`","lastModifiedDate":"2024-04-04"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":352,"author":{"gitId":"shavonneg"},"content":"Edits an existing order in BookKeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":354,"author":{"gitId":"shavonneg"},"content":"Format: `edit \u003cINDEX\u003e [by/DEADLINE] [c/PRICE] [d/DESCRIPTION] [s/STATUS]`","lastModifiedDate":"2024-04-02"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":356,"author":{"gitId":"shavonneg"},"content":"* Edits the order at the specified `INDEX`.","lastModifiedDate":"2024-04-02"},{"lineNumber":357,"author":{"gitId":"shavonneg"},"content":" The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-02"},{"lineNumber":358,"author":{"gitId":"shavonneg"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2024-04-02"},{"lineNumber":359,"author":{"gitId":"shavonneg"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2024-04-02"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":361,"author":{"gitId":"shavonneg"},"content":"Examples:","lastModifiedDate":"2024-04-02"},{"lineNumber":362,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":363,"author":{"gitId":"shavonneg"},"content":"* `editOrder 1 by/23-07-2024 10:10 c/40 d/1xRoses s/PENDING` Edits 1st order in the order list.","lastModifiedDate":"2024-04-02"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":365,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"shavonneg"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to","lastModifiedDate":"2024-04-02"},{"lineNumber":368,"author":{"gitId":"shavonneg"},"content":"save manually.","lastModifiedDate":"2024-04-02"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":372,"author":{"gitId":"shavonneg"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are","lastModifiedDate":"2024-04-02"},{"lineNumber":373,"author":{"gitId":"shavonneg"},"content":"welcome to update data directly by editing that data file.","lastModifiedDate":"2024-04-02"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":375,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":376,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook 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-02-09"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"lineNumber":378,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":380,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"kailinteoo"},"content":"## 7. Information about how to use the guide","lastModifiedDate":"2024-04-02"},{"lineNumber":387,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":388,"author":{"gitId":"shavonneg"},"content":"What do the colours mean?","lastModifiedDate":"2024-04-04"},{"lineNumber":389,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":390,"author":{"gitId":"shavonneg"},"content":"BookKeeper mainly uses four colours: beige, muted green, creamy yellow, and warm brown.","lastModifiedDate":"2024-04-04"},{"lineNumber":391,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":392,"author":{"gitId":"shavonneg"},"content":"We hoped to achieve a cohesive colour scheme that not only shows visual hierarchy, but provides florists with a sense","lastModifiedDate":"2024-04-04"},{"lineNumber":393,"author":{"gitId":"shavonneg"},"content":"of familiarity by choosing colours that are reminiscent of nature. The neutral colour palette caters to a the wide","lastModifiedDate":"2024-04-04"},{"lineNumber":394,"author":{"gitId":"shavonneg"},"content":"diversity of florists, be it with respect to age group or gender, while also ensuring that the app remains timeless","lastModifiedDate":"2024-04-04"},{"lineNumber":395,"author":{"gitId":"shavonneg"},"content":"and appealing.","lastModifiedDate":"2024-04-04"},{"lineNumber":396,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":397,"author":{"gitId":"shavonneg"},"content":"This combination of colours not only enhances the aesthetics of BookKeeper, but also promises a user experience that","lastModifiedDate":"2024-04-04"},{"lineNumber":398,"author":{"gitId":"shavonneg"},"content":"is consistently positive and engaging.","lastModifiedDate":"2024-04-04"},{"lineNumber":399,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":400,"author":{"gitId":"kailinteoo"},"content":"### 7.1. Appendix A: Technical Glossary","lastModifiedDate":"2024-04-02"},{"lineNumber":401,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":402,"author":{"gitId":"kailinteoo"},"content":"**Java** - the programming language that the application was written in,","lastModifiedDate":"2024-04-02"},{"lineNumber":403,"author":{"gitId":"kailinteoo"},"content":"as well as the process in which the application is run","lastModifiedDate":"2024-04-02"},{"lineNumber":404,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":405,"author":{"gitId":"kailinteoo"},"content":"**Runtime** - a software that users must download onto their systems to run other applications.","lastModifiedDate":"2024-04-02"},{"lineNumber":406,"author":{"gitId":"kailinteoo"},"content":"The Java runtime allows users to run the BookKeeper application","lastModifiedDate":"2024-04-02"},{"lineNumber":407,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":408,"author":{"gitId":"kailinteoo"},"content":"**JSON (Javascript Object Notation)** - a file format used to store data which is understandable","lastModifiedDate":"2024-04-02"},{"lineNumber":409,"author":{"gitId":"kailinteoo"},"content":"for both end users and computers. BookKeeper stores its data inside addressbook.json.","lastModifiedDate":"2024-04-02"},{"lineNumber":410,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":411,"author":{"gitId":"kailinteoo"},"content":"**Command Line Interface (CLI)**","lastModifiedDate":"2024-04-02"},{"lineNumber":412,"author":{"gitId":"kailinteoo"},"content":"![Ui](images/CLI.png)","lastModifiedDate":"2024-04-02"},{"lineNumber":413,"author":{"gitId":"kailinteoo"},"content":"A user interface that allows users to interact with the computer software by typing commands into the console.","lastModifiedDate":"2024-04-02"},{"lineNumber":414,"author":{"gitId":"kailinteoo"},"content":"The CLI is one method which the BookKeeper application can be launched","lastModifiedDate":"2024-04-02"},{"lineNumber":415,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":416,"author":{"gitId":"kailinteoo"},"content":"**CRM (Customer Relationship Management)** - a program that simplifies managing of clientele and their needs.","lastModifiedDate":"2024-04-02"},{"lineNumber":417,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":418,"author":{"gitId":"kailinteoo"},"content":"**GUI (Graphical User Interface)** -","lastModifiedDate":"2024-04-02"},{"lineNumber":419,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":420,"author":{"gitId":"kailinteoo"},"content":"**Terminal Emulator**","lastModifiedDate":"2024-04-02"},{"lineNumber":421,"author":{"gitId":"kailinteoo"},"content":"An application that is used to run Command Line Interface (CLI) programs for Windows: open Command Prompt or Powershell.","lastModifiedDate":"2024-04-02"},{"lineNumber":422,"author":{"gitId":"kailinteoo"},"content":"For Mac, open Terminal. For Linux, open your terminal emulator of choice","lastModifiedDate":"2024-04-02"},{"lineNumber":423,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":424,"author":{"gitId":"shavonneg"},"content":"### 7.2. Appendix B: FAQ","lastModifiedDate":"2024-04-05"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"kailinteoo"},"content":"**Q**: I cannot run the application\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":427,"author":{"gitId":"kailinteoo"},"content":"**A**: Try updating your system. On Windows, look for Windows Update.","lastModifiedDate":"2024-04-02"},{"lineNumber":428,"author":{"gitId":"kailinteoo"},"content":"For Mac","lastModifiedDate":"2024-04-02"},{"lineNumber":429,"author":{"gitId":"kailinteoo"},"content":"For Linux, type in your terminal sudo apt update -y \u0026\u0026 sudo apt upgrade","lastModifiedDate":"2024-04-02"},{"lineNumber":430,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":431,"author":{"gitId":"kailinteoo"},"content":"**Q**: What command do I use to [...]\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":432,"author":{"gitId":"kailinteoo"},"content":"**A**: You can access the help page by clicking the Help button on the page","lastModifiedDate":"2024-04-02"},{"lineNumber":433,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":434,"author":{"gitId":"kailinteoo"},"content":"**Q**: How do I backup and restore data?\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":435,"author":{"gitId":"kailinteoo"},"content":"**A**: Your data is stored in the same directory you downloaded the application in.","lastModifiedDate":"2024-04-02"},{"lineNumber":436,"author":{"gitId":"kailinteoo"},"content":"In that directory, search for a directory called data. In that directory, it is called `addressbook.json`.","lastModifiedDate":"2024-04-02"},{"lineNumber":437,"author":{"gitId":"kailinteoo"},"content":"You may copy the addressbook.json to another location to back it up,","lastModifiedDate":"2024-04-02"},{"lineNumber":438,"author":{"gitId":"kailinteoo"},"content":"and you may copy another addressbook.json to restore existing data.","lastModifiedDate":"2024-04-02"},{"lineNumber":439,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":440,"author":{"gitId":"kailinteoo"},"content":"**Q**: Can I access the application from multiple devices at once?\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":441,"author":{"gitId":"kailinteoo"},"content":"**A**: Not at the moment. It is something that we are working on, though.","lastModifiedDate":"2024-04-02"},{"lineNumber":442,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":443,"author":{"gitId":"kailinteoo"},"content":"**Q**: Can I access this application without internet connection?\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":444,"author":{"gitId":"kailinteoo"},"content":"**A**: BookKeeper is designed to work fully offline","lastModifiedDate":"2024-04-02"},{"lineNumber":445,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":446,"author":{"gitId":"kailinteoo"},"content":"**Q**: The application is not working!!!\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":447,"author":{"gitId":"kailinteoo"},"content":"**A**: Contact us at https://github.com/AY2324S2-CS2103T-T09-2/tp/releases","lastModifiedDate":"2024-04-02"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":449,"author":{"gitId":"kailinteoo"},"content":"**Q**: How do I update my application?\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":450,"author":{"gitId":"kailinteoo"},"content":"**A**: You may download the latest release at https://github.com/AY2324S2-CS2103T-T09-2/tp/releases","lastModifiedDate":"2024-04-02"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"kailinteoo"},"content":"## 8. Known issues","lastModifiedDate":"2024-04-02"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":456,"author":{"gitId":"shavonneg"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only","lastModifiedDate":"2024-04-02"},{"lineNumber":457,"author":{"gitId":"shavonneg"},"content":" the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the","lastModifiedDate":"2024-04-02"},{"lineNumber":458,"author":{"gitId":"shavonneg"},"content":" application before running the application again.","lastModifiedDate":"2024-04-02"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":460,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"kailinteoo":163,"shavonneg":101,"rertyy":8,"Jaspertzx":33,"-":156}},{"path":"docs/diagrams/LogicClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Logic as LogicPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"Parser Classes\" as ParserClasses{","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"Class ClientCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"Class OrderCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nLogic\" as Logic","lastModifiedDate":"2022-01-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Storage {","lastModifiedDate":"2021-03-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-03-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"LogicManager .right.|\u003e Logic","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"LogicManager -right-\u003e\"1\" ParserClasses","lastModifiedDate":"2024-02-09"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":"ParserClasses ..\u003e OrderCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":"ParserClasses ..\u003e ClientCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"ClientCommand -up-|\u003e Command","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"OrderCommand -up-|\u003e Command","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"LogicManager .left.\u003e Command : \u003c\u003ccall\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"LogicManager --\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"LogicManager --\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Storage --[hidden] Model","lastModifiedDate":"2021-03-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Command .[hidden]up.\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Command .right.\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":"note right of ClientCommand: ClientCommand \u003d AddCommand, \\nFindCommand, etc","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Logic ..\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"LogicManager .down.\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Command .up.\u003e CommandResult : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"shavonneg":7,"-":43}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"Class OrderList","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":"Class Order","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":"Class OrderId","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":"Class OrderDate","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"Class Deadline","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"Class Price","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"Class Description","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"Class Status","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":"Class ClientId","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"AddressBook *--\u003e \"1\" OrderList","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"OrderList --\u003e \"~* all\" Order","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":"Order -[hidden]up-\u003eName","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":"Order *--\u003e OrderId","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"Order *--\u003e OrderDate","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":"Order *--\u003e Deadline","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"Order *--\u003e Price","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"Order *--\u003e Description","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":"Order *--\u003e Status","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"Order *--\u003e ClientId","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"rertyy":23,"-":53}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"Class JsonAdaptedOrder","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":"Class HiddenOutside #C4A484","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedOrder","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":"JsonAdaptedTag -[hidden]right-\u003e JsonAdaptedOrder","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedOrder","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kailinteoo":2,"Jaspertzx":3,"-":42}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"Class OrderListPanel","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"Class OrderCard","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"MainWindow *-down-\u003e \"1\" OrderListPanel","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":"OrderListPanel -down-\u003e \"*\" OrderCard","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":"OrderListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"OrderCard -up-|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":"OrderCard ..\u003e Model","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":"HelpWindow -[hidden]up-\u003e CommandBox","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":"MainWindow -[hidden]up-|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kailinteoo":9,"-":58}},{"path":"src/main/java/seedu/address/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Config values used by the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Config {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Path DEFAULT_CONFIG_FILE \u003d Paths.get(\"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Config values customizable through config file","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Level logLevel \u003d Level.INFO;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Path userPrefsFilePath \u003d Paths.get(\"preferences.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Level getLogLevel() {","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setLogLevel(Level logLevel) {","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.logLevel \u003d logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefsFilePath(Path userPrefsFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefsFilePath \u003d userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof Config)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Config otherConfig \u003d (Config) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return Objects.equals(logLevel, otherConfig.logLevel)","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(userPrefsFilePath, otherConfig.userPrefsFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Objects.hash(logLevel, userPrefsFilePath);","lastModifiedDate":"2018-12-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .add(\"logLevel\", logLevel)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"userPrefsFilePath\", userPrefsFilePath)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":1,"-":65}},{"path":"src/main/java/seedu/address/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Represents a version with major, minor and patch number.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Version implements Comparable\u003cVersion\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VERSION_REGEX \u003d \"V(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)(ea)?\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String EXCEPTION_STRING_NOT_VERSION \u003d \"String is not a valid Version. %s\";","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Pattern VERSION_PATTERN \u003d Pattern.compile(VERSION_REGEX);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final int major;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final int minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final int patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Version} with the given version details.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Version(int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.major \u003d major;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.minor \u003d minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.patch \u003d patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.isEarlyAccess \u003d isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses a version number string in the format V1.2.3.","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param versionString version number string","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return a Version object","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static Version fromString(String versionString) throws IllegalArgumentException {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Matcher versionMatcher \u003d VERSION_PATTERN.matcher(versionString);","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!versionMatcher.find()) {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(String.format(EXCEPTION_STRING_NOT_VERSION, versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new Version(Integer.parseInt(versionMatcher.group(1)),","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(2)),","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(3)),","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" versionMatcher.group(4) \u003d\u003d null ? false : true);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" public int getMajor() {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" return major;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" public int getMinor() {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" return minor;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" public int getPatch() {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" return patch;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" public boolean isEarlyAccess() {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" return isEarlyAccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return String.format(\"V%d.%d.%d%s\", major, minor, patch, isEarlyAccess ? \"ea\" : \"\");","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int compareTo(Version other) {","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (major !\u003d other.major) {","lastModifiedDate":"2018-08-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return major - other.major;","lastModifiedDate":"2018-08-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (minor !\u003d other.minor) {","lastModifiedDate":"2018-08-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return minor - other.minor;","lastModifiedDate":"2018-08-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (patch !\u003d other.patch) {","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return patch - other.patch;","lastModifiedDate":"2018-08-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (isEarlyAccess \u003d\u003d other.isEarlyAccess()) {","lastModifiedDate":"2018-08-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return 0;","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (isEarlyAccess) {","lastModifiedDate":"2018-08-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return -1;","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return 1;","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!(other instanceof Version)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Version otherVersion \u003d (Version) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return major \u003d\u003d otherVersion.major","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 minor \u003d\u003d otherVersion.minor","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 patch \u003d\u003d otherVersion.patch","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 isEarlyAccess \u003d\u003d otherVersion.isEarlyAccess;","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String hash \u003d String.format(\"%03d%03d%03d\", major, minor, patch);","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" hash \u003d \"1\" + hash;","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return Integer.parseInt(hash);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":18,"-":104}},{"path":"src/main/java/seedu/address/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" * A container for App specific utility functions.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AppUtil {","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"rertyy":1,"-":41}},{"path":"src/main/java/seedu/address/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Utility methods related to Collections.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" * @see #requireAllNonNull(Collection)","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"rertyy":4,"-":33}},{"path":"src/main/java/seedu/address/commons/util/DateTimeUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" * Helper functions for handling datetimes.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"public class DateTimeUtil {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Date should be in the format of dd/MM/yyyy\";","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" * Returns a list of valid date time formats.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" public static final String VALID_DATETIME_FORMAT \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" * Returns the valid formatter pattern.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" public static final DateTimeFormatter FORMATTER \u003d DateTimeFormatter.ofPattern(VALID_DATETIME_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" * @param test the date to be tested.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" * @return true if the date is valid.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" public static boolean isValidDate(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" LocalDateTime.parse(test, FORMATTER);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" * Returns the current date time as a String.","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" * @param dateTime the date to be formatted.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" * @return the current date time as a String.","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" public static String formatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" return dateTime.format(FORMATTER);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" * Returns the localDateTime object of the given date.","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" * @param dateTime the date to be parsed must be a valid dateTime.","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" * @return the localDateTime object of the given date.","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" public static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" return LocalDateTime.parse(dateTime, FORMATTER);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" * Returns current date time as a String in the common datetime format.","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" * @return the current date time as a String.","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" public static String getCurrentTime() {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" return formatDateTime(now);","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":68}},{"path":"src/main/java/seedu/address/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Writes and reads files.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String)},","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" * Creates parent directories of file if it has a parent directory.","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" * Assumes file exists.","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":5,"-":80}},{"path":"src/main/java/seedu/address/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationContext;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationFeature;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.SerializationFeature;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.module.SimpleModule;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" * Converts a Java object instance to JSON and vice versa.","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static ObjectMapper objectMapper \u003d new ObjectMapper().findAndRegisterModules()","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .registerModule(new SimpleModule(\"SimpleModule\")","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .addSerializer(Level.class, new ToStringSerializer())","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class)));","lastModifiedDate":"2016-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the JSON object from the given file or {@code Optional.empty()} object if the file is not found.","lastModifiedDate":"2023-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * If any values are missing from the file, default values will be used, as long as the file is a valid JSON file.","lastModifiedDate":"2023-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" * Converts a given string representation of a JSON data to instance of a class.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"rertyy"},"content":" * Converts a given instance of a class into its JSON data string representation.","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"rertyy"},"content":" * Gets the logging level that matches loggingLevelString.","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":7,"-":139}},{"path":"src/main/java/seedu/address/commons/util/Pair.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":" * Represents a pair of values.","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" * @param \u003cT\u003e the type of the first param.","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":" * @param \u003cU\u003e the type of the second param.","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"public class Pair\u003cT, U\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" private final T t;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" private final U u;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * Constructor for Pair.","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" * @param t the first param.","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" * @param u the second param.","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public Pair(T t, U u) {","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" this.t \u003d t;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" this.u \u003d u;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" public T getFirst() {","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" return t;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" public U getSecond() {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" return u;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"rertyy":32}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" * API of the Logic component.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" * Returns an unmodifiable view of the filtered list of persons.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" * Returns an unmodifiable view of the filtered list of orders.","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" ObservableList\u003cOrder\u003e getFilteredOrderList();","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"kailinteoo":5,"rertyy":6,"-":48}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" return model.getFilteredOrderList();","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"kailinteoo":5,"rertyy":1,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_INVALID_ORDER_DISPLAYED_INDEX \u003d \"The order index provided is invalid\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" * Formats the {@code Order} for display to the user.","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Jaspertzx"},"content":" public static String format(Order order) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" builder.append(order.getOrderId())","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Jaspertzx"},"content":" .append(\"; Deadline: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" .append(order.getDeadline())","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Jaspertzx"},"content":" .append(\"; Date Received: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" .append(order.getOrderDate())","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Jaspertzx"},"content":" .append(\"; Details: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" .append(order.getRemark());","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":17,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/clients/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" * Creates an AddCommand to add the specified {@code Person}.","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"rertyy":1,"Jaspertzx":3,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/clients/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":3,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/clients/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":3,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/clients/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"Jaspertzx"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"Jaspertzx"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"Jaspertzx"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"Jaspertzx"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cOrder\u003e orderSet \u003d editPersonDescriptor.getOrders().orElse(personToEdit.getOrders());","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, orderSet);","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":106,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"Jaspertzx"},"content":" private Set\u003cOrder\u003e orders;","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"Jaspertzx"},"content":" setOrders(toCopy.orders);","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-27"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-27"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-27"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-27"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-27"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-27"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-27"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-27"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":219,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":220,"author":{"gitId":"Jaspertzx"},"content":" * Returns an unmodifiable order set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-27"},{"lineNumber":221,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-27"},{"lineNumber":222,"author":{"gitId":"Jaspertzx"},"content":" * Returns {@code Optional#empty()} if {@code orders} is null.","lastModifiedDate":"2024-03-27"},{"lineNumber":223,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":224,"author":{"gitId":"Jaspertzx"},"content":" public Optional\u003cSet\u003cOrder\u003e\u003e getOrders() {","lastModifiedDate":"2024-03-27"},{"lineNumber":225,"author":{"gitId":"Jaspertzx"},"content":" return (orders !\u003d null) ? Optional.of(Collections.unmodifiableSet(orders)) : Optional.empty();","lastModifiedDate":"2024-03-27"},{"lineNumber":226,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":227,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":229,"author":{"gitId":"Jaspertzx"},"content":" * Sets {@code orders} to this object\u0027s {@code orders}.","lastModifiedDate":"2024-03-27"},{"lineNumber":230,"author":{"gitId":"Jaspertzx"},"content":" * A defensive copy of {@code orders} is used internally.","lastModifiedDate":"2024-03-27"},{"lineNumber":231,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"Jaspertzx"},"content":" public void setOrders(Set\u003cOrder\u003e orders) {","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"Jaspertzx"},"content":" this.orders \u003d (orders !\u003d null) ? new HashSet\u003c\u003e(orders) : null;","lastModifiedDate":"2024-03-27"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":250,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"Jaspertzx"},"content":" .add(\"orders\", orders)","lastModifiedDate":"2024-03-27"},{"lineNumber":264,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Jaspertzx":38,"-":229}},{"path":"src/main/java/seedu/address/logic/commands/clients/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Jaspertzx":3,"-":18}},{"path":"src/main/java/seedu/address/logic/commands/clients/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Jaspertzx":3,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/clients/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":3,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/clients/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":3,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/orders/AddOrderCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.orders;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":" * Adds an order to an assigned person.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"public class AddOrderCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" public static final String COMMAND_WORD \u003d \"order\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":" + \": Creates an order that is associated to a client.\"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" + \"Multiple orders will be appended to each other, \"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" + \"and old orders will always be kept during this operation\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":" + \"Parameters: INDEX (must be a positive integer), \"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" + \"DETAILS (in formation related to order), \"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":" + \"DEADLINE (the date the order is due\"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jaspertzx"},"content":" + \"r/ [ORDER]\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 d/1xRoses c/40 by/23-07-2024 00:00\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New Order added! %1$s\";","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_FAILURE \u003d \"Failed to add new Order!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" private final Order order;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" private final Index index;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" * Creates an AddOrderCommand to add the specified {@code Order}.","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" public AddOrderCommand(Index index, Order order) {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" requireAllNonNull(index, order);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jaspertzx"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Jaspertzx"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" Person editedPerson \u003d personToEdit.addOrder(order);","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" order.setPerson(editedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" model.setPersonAndAddOrder(personToEdit, editedPerson, this.order);","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Jaspertzx"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":" * the order is added to or removed from","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jaspertzx"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jaspertzx"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" return String.format(MESSAGE_SUCCESS, personToEdit.getName());","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":11,"Jaspertzx":62}},{"path":"src/main/java/seedu/address/logic/commands/orders/DeleteOrderCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.orders;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.Pair;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" * Removes an existing order in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"public class DeleteOrderCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Deleted Order: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" public static final String COMMAND_WORD \u003d \"deleteOrder\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" + \": Deletes the order identified by the index number used in the displayed order list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" + \"Example: \" + COMMAND_WORD + \" index\";","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_DELETE_ORDER_SUCCESS \u003d \"Deleted Order!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_DELETE_ORDER_FAILURE \u003d \"Failed to delete Order!\";","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" * Creates an DeleteOrderCommand to delete the specified {@code Order}.","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" public DeleteOrderCommand(Index targetIndex) {","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" List\u003cOrder\u003e lastShownOrderList \u003d model.getFilteredOrderList();","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownOrderList.size()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" Order orderToDelete \u003d lastShownOrderList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" Pair\u003cPerson, Person\u003e pair \u003d getEditedPerson(personList, orderToDelete);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" Person person \u003d pair.getFirst();","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" Person editedPerson \u003d pair.getSecond();","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" model.setPersonAndDeleteOrder(person, editedPerson, orderToDelete);","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS);","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(orderToDelete)));","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" private Pair\u003cPerson, Person\u003e getEditedPerson(List\u003cPerson\u003e personList, Order orderToDelete) throws CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" for (Person person : personList) {","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" if (person.getOrders().contains(orderToDelete)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" person.getName(), person.getPhone(), person.getEmail(),","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":" person.getAddress(), person.getTags(),","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":" removeOrder(orderToDelete, person.getOrders()));","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"rertyy"},"content":" return new Pair\u003c\u003e(person, editedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":" throw new CommandException(MESSAGE_DELETE_ORDER_FAILURE);","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":" private Set\u003cOrder\u003e removeOrder(Order orderToRemove, Set\u003cOrder\u003e orders) {","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":" HashSet\u003cOrder\u003e newOrders \u003d new HashSet\u003c\u003e(orders);","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":" newOrders.remove(orderToRemove);","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" return newOrders;","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":" || (other instanceof DeleteOrderCommand // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 targetIndex.equals(((DeleteOrderCommand) other).targetIndex)); // state check","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":58,"Jaspertzx":42}},{"path":"src/main/java/seedu/address/logic/commands/orders/EditOrderCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.orders;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BY;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"import java.util.List;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.Pair;","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":" * Edits the details of an existing order in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"public class EditOrderCommand extends Command {","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":" public static final String COMMAND_WORD \u003d \"editOrder\";","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the order identified \"","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" + \"[\" + \"DATE] \"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" + \"[\" + PREFIX_BY + \"DEADLINE] \"","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" + \"[\" + PREFIX_PRICE + \"PRICE] \"","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" + \"[\" + PREFIX_DETAILS + \"REMARK] \"","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" + \"[\" + PREFIX_STATUS + \"STATUS]...\\n\"","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \";","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" public static final String MESSAGE_EDIT_ORDER_SUCCESS \u003d \"Edited Order: %1$s\";","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" private final seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor editOrderDescriptor;","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" * @param targetIndex of the order in the filtered order list to edit","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" * @param editOrderDescriptor details to edit the order with","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":" public EditOrderCommand(Index targetIndex, seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":" requireNonNull(editOrderDescriptor);","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"shavonneg"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"shavonneg"},"content":" this.editOrderDescriptor \u003d new","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":" seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor(editOrderDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":72,"author":{"gitId":"shavonneg"},"content":" * Creates and returns a {@code Order} with the details of {@code orderToEdit}","lastModifiedDate":"2024-03-28"},{"lineNumber":73,"author":{"gitId":"shavonneg"},"content":" * edited with {@code editOrderDescriptor}.","lastModifiedDate":"2024-03-28"},{"lineNumber":74,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":75,"author":{"gitId":"shavonneg"},"content":" private static Order createEditedOrder(Order orderToEdit,","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"shavonneg"},"content":" seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"shavonneg"},"content":" assert orderToEdit !\u003d null;","lastModifiedDate":"2024-03-28"},{"lineNumber":79,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":80,"author":{"gitId":"shavonneg"},"content":" OrderDate updatedOrderDate \u003d editOrderDescriptor.getOrderDate().orElse(orderToEdit.getOrderDate());","lastModifiedDate":"2024-03-28"},{"lineNumber":81,"author":{"gitId":"shavonneg"},"content":" Deadline updatedDeadline \u003d editOrderDescriptor.getDeadline().orElse(orderToEdit.getDeadline());","lastModifiedDate":"2024-03-28"},{"lineNumber":82,"author":{"gitId":"shavonneg"},"content":" Price updatedPrice \u003d editOrderDescriptor.getPrice().orElse(orderToEdit.getPrice());","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"shavonneg"},"content":" Remark updatedRemark \u003d editOrderDescriptor.getRemark().orElse(orderToEdit.getRemark());","lastModifiedDate":"2024-03-28"},{"lineNumber":84,"author":{"gitId":"shavonneg"},"content":" Status updatedStatus \u003d editOrderDescriptor.getStatus().orElse(orderToEdit.getStatus());","lastModifiedDate":"2024-03-28"},{"lineNumber":85,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"shavonneg"},"content":" if (orderToEdit.getStatus().getStatusEnum() \u003d\u003d Status.StatusEnum.PENDING","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 updatedStatus.getStatusEnum() \u003d\u003d Status.StatusEnum.COMPLETED) {","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"shavonneg"},"content":" updatedStatus \u003d new Status(Status.StatusEnum.COMPLETED.name());","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"shavonneg"},"content":" return new Order(orderToEdit.getOrderId(), updatedOrderDate, updatedDeadline, updatedPrice, updatedRemark,","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":" updatedStatus, orderToEdit.getPerson());","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"shavonneg"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" List\u003cOrder\u003e lastShownOrderList \u003d model.getFilteredOrderList();","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownOrderList.size()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" Order orderToEdit \u003d lastShownOrderList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":" Order editedOrder \u003d createEditedOrder(orderToEdit, editOrderDescriptor);","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"shavonneg"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" Pair\u003cPerson, Person\u003e personPair \u003d getEditedPerson(personList, orderToEdit, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" Person personToEdit \u003d personPair.getFirst();","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"shavonneg"},"content":" Person editedPerson \u003d personPair.getSecond();","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" model.setPersonAndEditOrder(personToEdit, editedPerson, orderToEdit, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS);","lastModifiedDate":"2024-03-28"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_ORDER_SUCCESS, Messages.format(editedOrder)));","lastModifiedDate":"2024-03-28"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":" private Pair\u003cPerson, Person\u003e getEditedPerson(List\u003cPerson\u003e personList, Order orderToEdit, Order editedOrder) throws","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"shavonneg"},"content":" CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"shavonneg"},"content":" for (Person person : personList) {","lastModifiedDate":"2024-03-28"},{"lineNumber":120,"author":{"gitId":"shavonneg"},"content":" if (person.getOrders().contains(orderToEdit)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":121,"author":{"gitId":"shavonneg"},"content":" Set\u003cOrder\u003e newOrders \u003d new HashSet\u003c\u003e(person.getOrders());","lastModifiedDate":"2024-03-28"},{"lineNumber":122,"author":{"gitId":"shavonneg"},"content":" newOrders.remove(orderToEdit);","lastModifiedDate":"2024-03-28"},{"lineNumber":123,"author":{"gitId":"shavonneg"},"content":" newOrders.add(editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":124,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":125,"author":{"gitId":"shavonneg"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-28"},{"lineNumber":126,"author":{"gitId":"shavonneg"},"content":" person.getName(), person.getPhone(), person.getEmail(),","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"shavonneg"},"content":" person.getAddress(), person.getTags(), newOrders);","lastModifiedDate":"2024-03-28"},{"lineNumber":128,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":129,"author":{"gitId":"shavonneg"},"content":" return new Pair\u003c\u003e(person, editedPerson);","lastModifiedDate":"2024-03-28"},{"lineNumber":130,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":131,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" throw new CommandException(\"Failed to find the person associated with this order!\");","lastModifiedDate":"2024-03-28"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":137,"author":{"gitId":"shavonneg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-28"},{"lineNumber":138,"author":{"gitId":"shavonneg"},"content":" return true;","lastModifiedDate":"2024-03-28"},{"lineNumber":139,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":141,"author":{"gitId":"shavonneg"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-28"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" if (!(other instanceof seedu.address.logic.commands.orders.EditOrderCommand)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" return false;","lastModifiedDate":"2024-03-28"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":145,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":146,"author":{"gitId":"shavonneg"},"content":" seedu.address.logic.commands.orders.EditOrderCommand otherEditOrderCommand \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":147,"author":{"gitId":"shavonneg"},"content":" (seedu.address.logic.commands.orders.EditOrderCommand) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":148,"author":{"gitId":"shavonneg"},"content":" return targetIndex.equals(otherEditOrderCommand.targetIndex)","lastModifiedDate":"2024-03-28"},{"lineNumber":149,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 editOrderDescriptor.equals(otherEditOrderCommand.editOrderDescriptor);","lastModifiedDate":"2024-03-28"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":151,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-28"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-28"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":" .add(\"editOrderDescriptor\", editOrderDescriptor)","lastModifiedDate":"2024-03-28"},{"lineNumber":157,"author":{"gitId":"shavonneg"},"content":" .toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":160,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":161,"author":{"gitId":"shavonneg"},"content":" * Stores the details to edit the order with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-28"},{"lineNumber":162,"author":{"gitId":"shavonneg"},"content":" * corresponding field value of the order.","lastModifiedDate":"2024-03-28"},{"lineNumber":163,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":164,"author":{"gitId":"shavonneg"},"content":" public static class EditOrderDescriptor {","lastModifiedDate":"2024-03-28"},{"lineNumber":165,"author":{"gitId":"shavonneg"},"content":" private OrderDate orderDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":166,"author":{"gitId":"shavonneg"},"content":" private Deadline deadline;","lastModifiedDate":"2024-03-28"},{"lineNumber":167,"author":{"gitId":"shavonneg"},"content":" private Price price;","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"shavonneg"},"content":" private Remark remark;","lastModifiedDate":"2024-03-28"},{"lineNumber":169,"author":{"gitId":"shavonneg"},"content":" private Status status;","lastModifiedDate":"2024-03-28"},{"lineNumber":170,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":171,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptor() {","lastModifiedDate":"2024-03-28"},{"lineNumber":172,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":173,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":174,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":175,"author":{"gitId":"shavonneg"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-28"},{"lineNumber":176,"author":{"gitId":"shavonneg"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-28"},{"lineNumber":177,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":178,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptor(seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor toCopy) {","lastModifiedDate":"2024-03-28"},{"lineNumber":179,"author":{"gitId":"shavonneg"},"content":" setOrderDate(toCopy.orderDate);","lastModifiedDate":"2024-03-28"},{"lineNumber":180,"author":{"gitId":"shavonneg"},"content":" setDeadline(toCopy.deadline);","lastModifiedDate":"2024-03-28"},{"lineNumber":181,"author":{"gitId":"shavonneg"},"content":" setPrice(toCopy.price);","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"shavonneg"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-28"},{"lineNumber":183,"author":{"gitId":"shavonneg"},"content":" setStatus(toCopy.status);","lastModifiedDate":"2024-03-28"},{"lineNumber":184,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":185,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":186,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":187,"author":{"gitId":"shavonneg"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-28"},{"lineNumber":188,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":189,"author":{"gitId":"shavonneg"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-28"},{"lineNumber":190,"author":{"gitId":"shavonneg"},"content":" return CollectionUtil.isAnyNonNull(orderDate, deadline, price, remark, status);","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":192,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":193,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cOrderDate\u003e getOrderDate() {","lastModifiedDate":"2024-03-28"},{"lineNumber":194,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(orderDate);","lastModifiedDate":"2024-03-28"},{"lineNumber":195,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":196,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":197,"author":{"gitId":"shavonneg"},"content":" public void setOrderDate(OrderDate orderDate) {","lastModifiedDate":"2024-03-28"},{"lineNumber":198,"author":{"gitId":"shavonneg"},"content":" this.orderDate \u003d orderDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":199,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":200,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":201,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cDeadline\u003e getDeadline() {","lastModifiedDate":"2024-03-28"},{"lineNumber":202,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(deadline);","lastModifiedDate":"2024-03-28"},{"lineNumber":203,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":204,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":205,"author":{"gitId":"shavonneg"},"content":" public void setDeadline(Deadline deadline) {","lastModifiedDate":"2024-03-28"},{"lineNumber":206,"author":{"gitId":"shavonneg"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-28"},{"lineNumber":207,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":208,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":209,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cPrice\u003e getPrice() {","lastModifiedDate":"2024-03-29"},{"lineNumber":210,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(price);","lastModifiedDate":"2024-03-29"},{"lineNumber":211,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":212,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":213,"author":{"gitId":"shavonneg"},"content":" public void setPrice(Price price) {","lastModifiedDate":"2024-03-29"},{"lineNumber":214,"author":{"gitId":"shavonneg"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-29"},{"lineNumber":215,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":216,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":217,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-28"},{"lineNumber":218,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-28"},{"lineNumber":219,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":220,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":221,"author":{"gitId":"shavonneg"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-28"},{"lineNumber":222,"author":{"gitId":"shavonneg"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-28"},{"lineNumber":223,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":224,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":225,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cStatus\u003e getStatus() {","lastModifiedDate":"2024-03-28"},{"lineNumber":226,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(status);","lastModifiedDate":"2024-03-28"},{"lineNumber":227,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":228,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":229,"author":{"gitId":"shavonneg"},"content":" public void setStatus(Status status) {","lastModifiedDate":"2024-03-28"},{"lineNumber":230,"author":{"gitId":"shavonneg"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-28"},{"lineNumber":231,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":232,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":233,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":234,"author":{"gitId":"shavonneg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":235,"author":{"gitId":"shavonneg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-28"},{"lineNumber":236,"author":{"gitId":"shavonneg"},"content":" return true;","lastModifiedDate":"2024-03-28"},{"lineNumber":237,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":238,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":239,"author":{"gitId":"shavonneg"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-28"},{"lineNumber":240,"author":{"gitId":"shavonneg"},"content":" if (!(other instanceof seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":241,"author":{"gitId":"shavonneg"},"content":" return false;","lastModifiedDate":"2024-03-28"},{"lineNumber":242,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":243,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":244,"author":{"gitId":"shavonneg"},"content":" seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor otherEditOrderDescriptor \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":245,"author":{"gitId":"shavonneg"},"content":" (seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":246,"author":{"gitId":"shavonneg"},"content":" return Objects.equals(orderDate, otherEditOrderDescriptor.orderDate)","lastModifiedDate":"2024-03-28"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 Objects.equals(deadline, otherEditOrderDescriptor.deadline)","lastModifiedDate":"2024-03-28"},{"lineNumber":248,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 Objects.equals(price, otherEditOrderDescriptor.price)","lastModifiedDate":"2024-03-29"},{"lineNumber":249,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 Objects.equals(remark, otherEditOrderDescriptor.remark)","lastModifiedDate":"2024-03-28"},{"lineNumber":250,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 Objects.equals(status, otherEditOrderDescriptor.status);","lastModifiedDate":"2024-03-28"},{"lineNumber":251,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":252,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":253,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":254,"author":{"gitId":"shavonneg"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":255,"author":{"gitId":"shavonneg"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-28"},{"lineNumber":256,"author":{"gitId":"shavonneg"},"content":" .add(\"orderDate\", orderDate)","lastModifiedDate":"2024-03-28"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":" .add(\"deadline\", deadline)","lastModifiedDate":"2024-03-28"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" .add(\"price\", price)","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"shavonneg"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-28"},{"lineNumber":260,"author":{"gitId":"shavonneg"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-03-28"},{"lineNumber":261,"author":{"gitId":"shavonneg"},"content":" .toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":262,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":263,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":264,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"shavonneg":263,"Jaspertzx":1}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new AddCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" Set\u003cOrder\u003e orderList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, orderList);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"rertyy":11,"Jaspertzx":4,"-":50}},{"path":"src/main/java/seedu/address/logic/parser/AddOrderCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BY;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" * Parses input arguments and creates a new AddOrderCommand object.","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":"public class AddOrderCommandParser implements Parser\u003cAddOrderCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jaspertzx"},"content":" * Parses the given {@code String} of arguments in the context of the AddOrderCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" * and returns an AddOrderCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" public AddOrderCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" PREFIX_DETAILS, PREFIX_BY, PREFIX_PRICE);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":" Index index;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" AddOrderCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" OrderId orderId \u003d new OrderId();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" OrderDate orderDate \u003d new OrderDate(DateTimeUtil.getCurrentTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Jaspertzx"},"content":" Deadline deadline;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jaspertzx"},"content":" Remark remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" Price price;","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" deadline \u003d new Deadline(argMultimap.getValue(PREFIX_BY).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":" remark \u003d new Remark(argMultimap.getValue(PREFIX_DETAILS).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":" price \u003d new Price(argMultimap.getValue(PREFIX_PRICE).get());","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":" } catch (NoSuchElementException error) {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jaspertzx"},"content":" AddOrderCommand.MESSAGE_USAGE), error);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" Status status \u003d new Status(\"pending\");","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":" Order order \u003d new Order(orderId, orderDate, deadline, price, remark, status);","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" return new AddOrderCommand(index, order);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":4,"rertyy":4,"Jaspertzx":59}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.orders.EditOrderCommand;","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" case AddOrderCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":" return new AddOrderCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":" case DeleteOrderCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" return new DeleteOrderCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"shavonneg"},"content":" case EditOrderCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"shavonneg"},"content":" return new EditOrderCommandParser().parse(arguments);","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"shavonneg":4,"Jaspertzx":16,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" * Prefixes mapped to their respective arguments.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" **/","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"rertyy":3,"-":77}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" * {@see findAllPrefixPositions}.","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"rertyy"},"content":" private int startPosition;","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"rertyy":3,"-":145}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands.","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" /* Prefix definitions. */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":" public static final Prefix PREFIX_DETAILS \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":" public static final Prefix PREFIX_BY \u003d new Prefix(\"by/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":" public static final Prefix PREFIX_PRICE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":" public static final Prefix PREFIX_STATUS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"shavonneg":1,"rertyy":2,"Jaspertzx":3,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new DeleteCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"rertyy":2,"Jaspertzx":1,"-":27}},{"path":"src/main/java/seedu/address/logic/parser/DeleteOrderCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new DeleteOrderCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"public class DeleteOrderCommandParser implements Parser\u003cDeleteOrderCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":" * Parses the given {@code String} of arguments in the context of the","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":" * DeleteOrderCommand and returns a DeleteOrderCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":" public DeleteOrderCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" return new DeleteOrderCommand(index);","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteOrderCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":6,"Jaspertzx":23}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new EditCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"rertyy":2,"Jaspertzx":2,"-":82}},{"path":"src/main/java/seedu/address/logic/parser/EditOrderCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BY;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.orders.EditOrderCommand;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":" * Parses input arguments and creates a new EditOrderCommand object.","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"public class EditOrderCommandParser implements Parser\u003cEditOrderCommand\u003e {","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":" * Parses the given {@code String} of arguments in the context of the EditOrderCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" * and returns an EditOrderCommand object for execution.","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":" public EditOrderCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_BY, PREFIX_PRICE, PREFIX_DETAILS, PREFIX_STATUS);","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":" Index targetIndex;","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" try {","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" targetIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditOrderCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_BY, PREFIX_PRICE, PREFIX_DETAILS, PREFIX_STATUS);","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" EditOrderCommand.EditOrderDescriptor editOrderDescriptor \u003d new EditOrderCommand.EditOrderDescriptor();","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" if (argMultimap.getValue(PREFIX_BY).isPresent()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor.setDeadline(ParserUtil.parseDeadline(argMultimap.getValue(PREFIX_BY).get()));","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" if (argMultimap.getValue(PREFIX_PRICE).isPresent()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor.setPrice(ParserUtil.parsePrice(argMultimap.getValue(PREFIX_PRICE).get()));","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" if (argMultimap.getValue(PREFIX_DETAILS).isPresent()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_DETAILS).get()));","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" if (argMultimap.getValue(PREFIX_STATUS).isPresent()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor.setStatus(ParserUtil.parseStatus(argMultimap.getValue(PREFIX_STATUS).get()));","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" return new EditOrderCommand(targetIndex, editOrderDescriptor);","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"shavonneg":58}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new FindCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"rertyy":2,"Jaspertzx":1,"-":31}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"Jaspertzx"},"content":" * Parses a {@code String orderId} into a {@code OrderId}.","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"Jaspertzx"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"Jaspertzx"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"Jaspertzx"},"content":" * @throws ParseException if the given {@code orderId} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"Jaspertzx"},"content":" public static OrderId parseOrderId(String orderId) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(orderId);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"Jaspertzx"},"content":" String trimmedTag \u003d orderId.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" if (!OrderId.isValidOrderId(trimmedTag)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" throw new ParseException(OrderId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"Jaspertzx"},"content":" return new OrderId(trimmedTag);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":147,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":148,"author":{"gitId":"shavonneg"},"content":" * Parses a {@code String deadline} into a {@code deadline}.","lastModifiedDate":"2024-03-28"},{"lineNumber":149,"author":{"gitId":"shavonneg"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":151,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the given {@code deadline} is invalid.","lastModifiedDate":"2024-03-28"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" public static Deadline parseDeadline(String deadline) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-28"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" String trimmedDeadline \u003d deadline.trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":" if (!Deadline.isValidDeadline(trimmedDeadline)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":157,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(Deadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"shavonneg"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"shavonneg"},"content":" return new Deadline(trimmedDeadline);","lastModifiedDate":"2024-03-28"},{"lineNumber":160,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":161,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":162,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":163,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":164,"author":{"gitId":"shavonneg"},"content":" * Parses a {@code String price} into a {@code price}.","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"shavonneg"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":166,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":167,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the given {@code price} is invalid.","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":169,"author":{"gitId":"shavonneg"},"content":" public static Price parsePrice(String price) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"shavonneg"},"content":" requireNonNull(price);","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"shavonneg"},"content":" String trimmedPrice \u003d price.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"shavonneg"},"content":" if (!Price.isValidPrice(trimmedPrice)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"shavonneg"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":175,"author":{"gitId":"shavonneg"},"content":" return new Price(trimmedPrice);","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":177,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":178,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":179,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":180,"author":{"gitId":"shavonneg"},"content":" * Parses a {@code String remark} into a {@code remark}.","lastModifiedDate":"2024-03-28"},{"lineNumber":181,"author":{"gitId":"shavonneg"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":182,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":183,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the given {@code remark} is invalid.","lastModifiedDate":"2024-03-28"},{"lineNumber":184,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":185,"author":{"gitId":"shavonneg"},"content":" public static Remark parseRemark(String remark) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":186,"author":{"gitId":"shavonneg"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-28"},{"lineNumber":187,"author":{"gitId":"shavonneg"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":188,"author":{"gitId":"shavonneg"},"content":" if (!Remark.isValidRemark(trimmedRemark)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":189,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(Remark.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":190,"author":{"gitId":"shavonneg"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":191,"author":{"gitId":"shavonneg"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-03-28"},{"lineNumber":192,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":193,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":194,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":195,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":196,"author":{"gitId":"shavonneg"},"content":" * Parses a {@code String status} into a {@code status}.","lastModifiedDate":"2024-03-28"},{"lineNumber":197,"author":{"gitId":"shavonneg"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":198,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":199,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the given {@code status} is invalid.","lastModifiedDate":"2024-03-28"},{"lineNumber":200,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":201,"author":{"gitId":"shavonneg"},"content":" public static Status parseStatus(String status) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":202,"author":{"gitId":"shavonneg"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-28"},{"lineNumber":203,"author":{"gitId":"shavonneg"},"content":" String trimmedStatus \u003d status.trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":204,"author":{"gitId":"shavonneg"},"content":" if (!Status.isValidStatus(trimmedStatus)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":205,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":206,"author":{"gitId":"shavonneg"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":207,"author":{"gitId":"shavonneg"},"content":" return new Status(trimmedStatus);","lastModifiedDate":"2024-03-28"},{"lineNumber":208,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":209,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"kailinteoo":5,"shavonneg":68,"Jaspertzx":13,"-":124}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * Wraps all data at the address-book level.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" public AddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":" persons.setPersonAndAddOrder(target, editedPerson, order);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" persons.setPersonAndDeleteOrder(target, editedPerson, order);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" * Replaces the given order {@code target} in the list with {@code editedOrder}.","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":" * The person identity of {@code editedOrder} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"shavonneg"},"content":" requireNonNull(editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"shavonneg"},"content":" persons.setPersonAndEditOrder(target, editedPerson, order, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getOrderList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Jaspertzx"},"content":" return persons.asUnmodifiableObservableListOrders();","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":156,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"shavonneg":15,"rertyy":14,"Jaspertzx":5,"-":123}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" * {@code Predicate} that always evaluate to true.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" * {@code Predicate} that always evaluate to true.","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" Predicate\u003cOrder\u003e PREDICATE_SHOW_ALL_ORDERS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" * Returns the AddressBook.","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" void setPersonAndAddOrder(Person target, Person editedPerson, Order order);","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":" void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"shavonneg"},"content":" void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" * Returns an unmodifiable view of the filtered person list.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"rertyy"},"content":" * Returns an unmodifiable view of the filtered order list.","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" ObservableList\u003cOrder\u003e getFilteredOrderList();","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" * Updates the filter of the filtered order list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"shavonneg"},"content":" void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":29,"rertyy":8,"Jaspertzx":1,"-":80}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" private final FilteredList\u003cOrder\u003e filteredOrders;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" filteredOrders \u003d new FilteredList\u003c\u003e(this.addressBook.getOrderList());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" return userPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"shavonneg"},"content":" return addressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"shavonneg"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" addressBook.setPersonAndAddOrder(target, editedPerson, order);","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"rertyy"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"rertyy"},"content":" addressBook.setPersonAndDeleteOrder(target, editedPerson, order);","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":132,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-28"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(target, editedPerson, order, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":137,"author":{"gitId":"shavonneg"},"content":" addressBook.setPersonAndEditOrder(target, editedPerson, order, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":138,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":139,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":141,"author":{"gitId":"Jaspertzx"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Order \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"Jaspertzx"},"content":" * Returns an unmodifiable view of the list of {@code Order} backed by the internal list of.","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"Jaspertzx"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" return filteredOrders;","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"Jaspertzx"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"rertyy"},"content":" filteredOrders.setPredicate(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":162,"author":{"gitId":"rertyy"},"content":" * {@code versionedAddressBook}.","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"kailinteoo":7,"shavonneg":18,"rertyy":13,"Jaspertzx":15,"-":138}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" * Unmodifiable view of an address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" * Returns an unmodifiable view of the orders list.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" * This list will not contain any duplicate orders.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" ObservableList\u003cOrder\u003e getOrderList();","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":6,"rertyy":2,"-":16}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":" Path getOrderBookFilePath();","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"kailinteoo":2,"-":16}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" private Path orderBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" setOrderBookFilePath(newUserPrefs.getOrderBookFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath)","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 orderBookFilePath.equals(otherUserPrefs.orderBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":" return Objects.hash(guiSettings, addressBookFilePath, orderBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":" sb.append(\"\\nLocal data file location : \" + orderBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d OrderBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":" public Path getOrderBookFilePath() {","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":" return orderBookFilePath;","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":" public void setOrderBookFilePath(Path orderBookFilePath) {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"kailinteoo"},"content":" requireNonNull(orderBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":" this.orderBookFilePath \u003d orderBookFilePath;","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"kailinteoo":19,"-":86}},{"path":"src/main/java/seedu/address/model/order/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Represents a Deadline that an order must be fulfilled","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDeadline(String)}.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"public class Deadline implements Comparable\u003cDeadline\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" \"A deadline should be in the format of \"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" + \"DD-MM-YYYY HH:MM, e.g. 01-01-2024 23:59\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" public final LocalDateTime deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" * Constructs a {@code deadline}.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" * @param deadline A valid deadline.","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" public Deadline(String deadline) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" checkArgument(isValidDeadline(deadline), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" this.deadline \u003d DateTimeUtil.parseDateTime(deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" * Returns true if a given string is a valid deadline.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" public static boolean isValidDeadline(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" return DateTimeUtil.isValidDate(test);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" public int compareTo(Deadline other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" return this.deadline.compareTo(other.deadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" return DateTimeUtil.formatDateTime(deadline);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof Deadline)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" Deadline otherDeadline \u003d (Deadline) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" return deadline.equals(otherDeadline.deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" return deadline.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":68,"Jaspertzx":5}},{"path":"src/main/java/seedu/address/model/order/Order.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" * Represents an Order.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"public class Order {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" private final OrderId orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" private final OrderDate orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" private final Deadline deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" private final Price price;","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" private final Status status;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" private Person person;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" public Order(OrderId orderId, OrderDate orderDate, Deadline deadline,","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" Price price, Remark remark, Status status","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" ) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" requireAllNonNull(orderId, orderDate, deadline, price, remark, status);","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" this.orderId \u003d orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" this.orderDate \u003d orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" public Order(OrderId orderId, OrderDate orderDate, Deadline deadline,","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" Price price, Remark remark, Status status, Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" requireAllNonNull(orderId, orderDate, deadline, price, remark, status, person);","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" this.orderId \u003d orderId;","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" this.orderDate \u003d orderDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" public OrderId getOrderId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" return orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" public OrderDate getOrderDate() {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" return orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" public Deadline getDeadline() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" return deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" public Price getPrice() {","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" return price;","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" return remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" public Status getStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" return status;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" public boolean checkId(OrderId orderId) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":" return this.getOrderId().equals(orderId);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"rertyy"},"content":" public Person getPerson() {","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" return person;","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"rertyy"},"content":" public void setPerson(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof Order)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"rertyy"},"content":" Order otherOrder \u003d (Order) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"rertyy"},"content":" return otherOrder.getOrderId().equals(getOrderId())","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 otherOrder.getOrderDate().equals(getOrderDate())","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 otherOrder.getDeadline().equals(getDeadline())","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 otherOrder.getPrice().equals(getPrice())","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 otherOrder.getRemark().equals(getRemark())","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 otherOrder.getStatus().equals(getStatus())","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 Objects.equals(otherOrder.getPerson(), getPerson());","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":" return Objects.hash(orderId, orderDate, deadline, price, remark, status);","lastModifiedDate":"2024-03-28"},{"lineNumber":117,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"rertyy"},"content":" // Intentionally do not include Person within the order to prevent infinite loop","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"rertyy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" .add(\"orderId\", orderId)","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":" .add(\"orderDate\", orderDate)","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":" .add(\"deadline\", deadline)","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":" .add(\"price\", price)","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"rertyy"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"rertyy"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"rertyy"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":132,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":10,"rertyy":118,"Jaspertzx":4}},{"path":"src/main/java/seedu/address/model/order/OrderDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Represents the date an order was placed.","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"public class OrderDate {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" \"Order date should be in the format of DD-MM-YYYY HH:MM, e.g. 01-01-2024 23:59\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" private final LocalDateTime orderDate;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" * Constructs a {@code OrderDate}.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" * @param orderDate A valid order date.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" public OrderDate(String orderDate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" requireNonNull(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" checkArgument(isValidOrderDate(orderDate), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" this.orderDate \u003d DateTimeUtil.parseDateTime(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" public static boolean isValidOrderDate(String orderDate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" return DateTimeUtil.isValidDate(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" return DateTimeUtil.formatDateTime(orderDate);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof OrderDate)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" OrderDate otherOrderDate \u003d (OrderDate) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" return orderDate.equals(otherOrderDate.orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" return orderDate.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":2,"rertyy":55}},{"path":"src/main/java/seedu/address/model/order/OrderId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import java.util.UUID;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" * Represents an Order\u0027s ID in the order book.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":" * Guarantees: immutable.","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"public class OrderId {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Order ID should be a valid UUID\";","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":" private final UUID id;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" * Constructs an {@code OrderId}.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" public OrderId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" this.id \u003d UUID.randomUUID();","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" * Constructs an {@code OrderId} from a UUID.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" * @param id UUID to be used as the OrderId.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" public OrderId(String id) throws IllegalArgumentException {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" this.id \u003d UUID.fromString(id);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" * Checks whether a OrderId string is valid.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" * @param test String to be tested.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" * @return true if the string is a valid UUID, false otherwise.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" public static boolean isValidOrderId(String test) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" UUID.fromString(test);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" return id.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" if (other instanceof String) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" return id.toString().equals(other);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" if (other instanceof OrderId) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" OrderId otherOrderId \u003d (OrderId) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" return id.equals(otherOrderId.id);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" return id.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":19,"rertyy":55,"Jaspertzx":1}},{"path":"src/main/java/seedu/address/model/order/OrderNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":" * Tests that an {@code Order}\u0027s name matches any of the keywords given.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"public class OrderNameContainsKeywordsPredicate implements Predicate\u003cOrder\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":" public OrderNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":" public boolean test(Order order) {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(order.getRemark().toString(), keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" if (!(other instanceof OrderNameContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate otherPredicate \u003d (OrderNameContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" return keywords.equals(otherPredicate.keywords);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"shavonneg":43}},{"path":"src/main/java/seedu/address/model/order/Price.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import java.text.DecimalFormat;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":" * Represents the price of items for the order in the order book.","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPrice(String)}","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"public class Price {","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":" \"Price must be a positive number and can only include up to two decimal places\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" public final double value;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" * Constructs a {@code Price}.","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" * @param value A valid price.","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":" public Price(String value) {","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" checkArgument(isValidPrice(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" this.value \u003d truncateToTwoDecimalPlaces(Double.parseDouble(value));","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" * Returns true if a given double is a valid price.","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" * @param test the price to be tested","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" * @return true if the price is valid","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" public static boolean isValidPrice(String test) {","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" return Double.parseDouble(test) \u003e 0;","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" * Truncates a double value to two decimal places.","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" * @param value the double value to be truncated","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" * @return the truncated value","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" private double truncateToTwoDecimalPlaces(double value) {","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" DecimalFormat df \u003d new DecimalFormat(\"#.##\");","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" return Double.parseDouble(df.format(value));","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" return String.valueOf(value);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":" if (!(other instanceof Price)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" Price otherPrice \u003d (Price) other;","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" return value \u003d\u003d otherPrice.value;","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":" return Double.hashCode(value);","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":33,"rertyy":41}},{"path":"src/main/java/seedu/address/model/order/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" * Represents the remark of an order in the order book.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"public class Remark {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Remark can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * The first character of the remark must not be a whitespace,","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public final String value;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" * @param remark A valid remark.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" checkArgument(isValidRemark(remark), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" this.value \u003d remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" * Returns true if a given string is a valid remark.","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" * @param test the remark to be tested.","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" * @return true if the remark is valid.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" public static boolean isValidRemark(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" return value;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" return otherRemark.value.equals(this.value);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":65}},{"path":"src/main/java/seedu/address/model/order/Status.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Represents an Order\u0027s status in the order book.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStatus(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"public class Status {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" \"Status can only be either \u0027pending\u0027, \u0027completed\u0027 or \u0027canceled\u0027\";","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" private final StatusEnum status;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" * Constructs a {@code Status}.","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" * @param status A valid status.","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" public Status(String status) {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" checkArgument(isValidStatus(status), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" this.status \u003d StatusEnum.valueOf(status.toUpperCase());","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" * Returns true if a given string is a valid status.","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" public static boolean isValidStatus(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" return !test.isBlank()","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 !test.isEmpty()","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 Arrays.stream(StatusEnum.values())","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" .anyMatch(status -\u003e status.name().equalsIgnoreCase(test));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" * Returns the status enum value.","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" public StatusEnum getStatusEnum() {","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" return status;","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" return status.name();","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof Status)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" Status otherStatus \u003d (Status) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" return otherStatus.status.equals(this.status);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" return status.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" * Represents the statuses an order can take in the order book.","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" public enum StatusEnum {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" PENDING, COMPLETED, CANCELED","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"shavonneg":7,"rertyy":73}},{"path":"src/main/java/seedu/address/model/order/exceptions/OrderNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order.exceptions;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":" * Signals that the operation is unable to find the specified Order.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"public class OrderNotFoundException extends RuntimeException {","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":7}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" private final Set\u003cOrder\u003e orders \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cTag\u003e tags, Set\u003cOrder\u003e orders) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" requireAllNonNull(name, phone, email, address, tags, orders);","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" this.orders.addAll(orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" * Returns an immutable order set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"Jaspertzx"},"content":" public Set\u003cOrder\u003e getOrders() {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"Jaspertzx"},"content":" return Collections.unmodifiableSet(this.orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" * Returns a new Person object, with the specified Order added to the orders object.","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"Jaspertzx"},"content":" * @param order the order to be added","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" * @return new Person object","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" public Person addOrder(Order order) {","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cOrder\u003e newOrders \u003d new HashSet\u003c\u003e(orders);","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" newOrders.add(order);","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":" return new Person(this.name, this.phone, this.email, this.address, this.getTags(), newOrders);","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Jaspertzx"},"content":" * The list of orders in this person.","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Jaspertzx"},"content":" public List\u003cOrder\u003e getOrdersList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Jaspertzx"},"content":" return new ArrayList\u003c\u003e(orders);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 orders.equals(otherPerson.orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"kailinteoo"},"content":" return Objects.hash(name, phone, email, address, tags, orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"kailinteoo"},"content":" .add(\"orders\", orders)","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"kailinteoo":4,"Jaspertzx":35,"-":114}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" private final ObservableList\u003cOrder\u003e internalOrderList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":" private final ObservableList\u003cOrder\u003e internalUnmodifiableListOrder \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" FXCollections.unmodifiableObservableList(internalOrderList);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" * Removes the respective Order object from the ObservableList as well.","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":" * @param target person to be removed.","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"rertyy"},"content":" * @param editedPerson person to be added.","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"shavonneg"},"content":" * @param order order to be added.","lastModifiedDate":"2024-03-28"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"rertyy"},"content":" setPerson(target, editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"shavonneg"},"content":" internalOrderList.remove(order);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" sortOrders();","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":" * Adds the Order object to the ObservableList as well.","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":" * @param target person to be removed.","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" * @param editedPerson person to be added.","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" * @param order order to be removed.","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" setPerson(target, editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"rertyy"},"content":" internalOrderList.add(order);","lastModifiedDate":"2024-03-29"},{"lineNumber":101,"author":{"gitId":"Jaspertzx"},"content":" sortOrders();","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"shavonneg"},"content":" * @param person person to be removed.","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" * @param editedPerson person to be added.","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" * @param orderToDelete order to be removed.","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"shavonneg"},"content":" * @param orderToAdd order to be added.","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person person, Person editedPerson, Order orderToDelete, Order orderToAdd) {","lastModifiedDate":"2024-03-28"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(person, orderToDelete, orderToAdd);","lastModifiedDate":"2024-03-28"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" setPerson(person, editedPerson);","lastModifiedDate":"2024-03-28"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":" int index \u003d internalOrderList.indexOf(orderToDelete);","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":" internalOrderList.set(index, orderToAdd);","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"Jaspertzx"},"content":" sortOrders();","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"rertyy"},"content":" internalOrderList.removeAll(toRemove.getOrdersList());","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" setOrders();","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":152,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":160,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"Jaspertzx"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cOrder\u003e asUnmodifiableObservableListOrders() {","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"Jaspertzx"},"content":" return internalUnmodifiableListOrder;","lastModifiedDate":"2024-04-03"},{"lineNumber":166,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":167,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"Jaspertzx"},"content":" private void setOrders() {","lastModifiedDate":"2024-04-03"},{"lineNumber":169,"author":{"gitId":"Jaspertzx"},"content":" List\u003cOrder\u003e creationOrderList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"Jaspertzx"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jaspertzx"},"content":" creationOrderList.addAll(person.getOrdersList());","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jaspertzx"},"content":" internalOrderList.setAll(creationOrderList);","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jaspertzx"},"content":" private void sortOrders() {","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"Jaspertzx"},"content":" FXCollections.sort(internalOrderList, (order1, order2) -\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"Jaspertzx"},"content":" order1.getDeadline().compareTo(order2.getDeadline()));","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":214,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":215,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":216,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":217,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"shavonneg":21,"rertyy":24,"Jaspertzx":30,"-":149}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" private SampleDataUtil() {","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" } //","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" Set\u003cOrder\u003e s1 \u003d Set.of(","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" new Order(new OrderId(\"69c25c8d-9e34-4d9d-8bad-e378f203ae73\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" new OrderDate(\"01-03-2024 23:59\"), new Deadline(\"01-03-2024 23:59\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" new Price(\"50\"), new Remark(\"No remark\"), new Status(\"PENDING\")),","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" new Order(new OrderId(\"b7d063c5-f803-4f75-b2ad-777ec679b75e\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" new OrderDate(\"10-02-2024 11:33\"), new Deadline(\"14-02-2024 10:59\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" new Price(\"20\"), new Remark(\"No remark\"), new Status(\"COMPLETED\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" Set\u003cOrder\u003e s2 \u003d Set.of(","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" new Order(new OrderId(\"fc64826c-369b-4f45-97c0-f98e2edfa006\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" new OrderDate(\"10-10-2024 01:50\"), new Deadline(\"15-10-2024 13:50\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" new Price(\"30\"), new Remark(\"No remark\"), new Status(\"CANCELED\")),","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" new Order(new OrderId(\"cd7e3cb4-c310-4692-ba68-a779f6e09d68\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" new OrderDate(\"10-02-2024 11:33\"), new Deadline(\"14-02-2024 10:59\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" new Price(\"20\"), new Remark(\"No remark\"), new Status(\"CANCELED\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" Person p1 \u003d new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" new Email(\"alexyeoh@example.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" getTagSet(\"friends\"), s1);","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" p1.getOrders().forEach(order -\u003e order.setPerson(p1));","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" Person p2 \u003d new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" new Email(\"berniceyu@example.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" getTagSet(\"colleagues\", \"friends\"), s2);","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" p2.getOrders().forEach(order -\u003e order.setPerson(p2));","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" Person p3 \u003d new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" new Email(\"charlotte@example.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" getTagSet(\"neighbours\"), Set.of());","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" Person p4 \u003d new Person(new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" new Email(\"lidavid@example.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" getTagSet(\"family\"), Set.of());","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" Person p5 \u003d new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" new Email(\"irfan@example.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" getTagSet(\"classmates\"), Set.of());","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" Person p6 \u003d new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" new Email(\"royb@example.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" getTagSet(\"colleagues\"), Set.of());","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" return new Person[]{p1, p2, p3, p4, p5, p6};","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"kailinteoo":9,"rertyy":36,"-":40}},{"path":"src/main/java/seedu/address/storage/AddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents a storage for {@link seedu.address.model.AddressBook}.","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" * Returns AddressBook(client) data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"kailinteoo":3,"-":44}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedOrder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" * Jackson-friendly version of {@link Order}.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":"public class JsonAdaptedOrder {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Order\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" private final String orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":" private final String orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" private final String deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" private final String price;","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" private final String remark;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" private final String status;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" * Constructs a {@code JsonAdaptedOrder} with the given order details.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" @JsonCreator","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" public JsonAdaptedOrder(@JsonProperty(\"orderId\") String orderId, @JsonProperty(\"orderDate\") String orderDate,","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" @JsonProperty(\"deadline\") String deadline, @JsonProperty(\"price\") String price,","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" @JsonProperty(\"remark\") String remark, @JsonProperty(\"status\") String status) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" this.orderId \u003d orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" this.orderDate \u003d orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" * Converts a given {code Order} into this class for Jackson use.","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" public JsonAdaptedOrder(Order source) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":" orderId \u003d source.getOrderId().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" orderDate \u003d source.getOrderDate().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" deadline \u003d source.getDeadline().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" price \u003d source.getPrice().toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" remark \u003d source.getRemark().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":" status \u003d source.getStatus().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":" * Converts this Jackson-friendly adapted order object into the model\u0027s {@code Order} object.","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted order.","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":" public Order toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":" if (orderId \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" OrderId.class.getSimpleName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":" if (!OrderId.isValidOrderId(orderId)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(OrderId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":" final OrderId modelOrderId \u003d new OrderId(orderId);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":" if (orderDate \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" OrderDate.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":" if (!OrderDate.isValidOrderDate(orderDate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(OrderDate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":" final OrderDate modelOrderDate \u003d new OrderDate(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":" if (deadline \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":" Deadline.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":" if (!Deadline.isValidDeadline(deadline)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(Deadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":" final Deadline modelDeadline \u003d new Deadline(deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":" if (price \u003d\u003d null) {","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":" throw new NumberFormatException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Price.class.getSimpleName()));","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":" if (!Price.isValidPrice(price)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":" throw new NumberFormatException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"rertyy"},"content":" final Price modelPrice \u003d new Price(price);","lastModifiedDate":"2024-03-29"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":" if (remark \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"kailinteoo"},"content":" if (!Remark.isValidRemark(remark)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(Remark.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":" final Remark modelRemarks \u003d new Remark(remark);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"kailinteoo"},"content":" if (status \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Status.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":" if (!Status.isValidStatus(status)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" final Status modelStatus \u003d new Status(status);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":" return new Order(modelOrderId, modelOrderDate, modelDeadline, modelPrice, modelRemarks, modelStatus);","lastModifiedDate":"2024-03-28"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":122,"rertyy":1,"Jaspertzx":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" private final List\u003cJsonAdaptedOrder\u003e orders \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" @JsonProperty(\"orders\") List\u003cJsonAdaptedOrder\u003e orders) {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" if (orders !\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" this.orders.addAll(orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" orders.addAll(source.getOrders().stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":" .map(JsonAdaptedOrder::new)","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":" final List\u003cOrder\u003e personOrders \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":" for (JsonAdaptedOrder order : orders) {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":" personOrders.add(order.toModelType());","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":" final Set\u003cOrder\u003e modelOrders \u003d new HashSet\u003c\u003e(personOrders);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":" Person newPerson \u003d new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelOrders);","lastModifiedDate":"2024-03-29"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":" newPerson.getOrders().forEach(order -\u003e order.setPerson(newPerson));","lastModifiedDate":"2024-03-29"},{"lineNumber":126,"author":{"gitId":"rertyy"},"content":" return newPerson;","lastModifiedDate":"2024-03-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"kailinteoo":19,"rertyy":3,"-":107}},{"path":"src/main/java/seedu/address/storage/JsonAddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" private Path addressBookFilePath;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" //private Path filePath;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" * Constructs a {@code JsonAddressBookStorage} with the specified file paths.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" * @param addressBookFilePath The file path for the address book data.","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" public JsonAddressBookStorage(Path addressBookFilePath) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" return addressBookFilePath;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" return readAddressBook(addressBookFilePath);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":" saveAddressBook(addressBook, addressBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"kailinteoo":13,"-":75}},{"path":"src/main/java/seedu/address/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" * A class to access UserPrefs stored in the hard disk as a json file.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorage implements UserPrefsStorage {","lastModifiedDate":"2016-10-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public JsonUserPrefsStorage(Path filePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" * Similar to {@link #readUserPrefs()}.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(prefsFilePath, UserPrefs.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"rertyy":3,"-":45}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" * API of the Storage component.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"kailinteoo":1,"rertyy":1,"-":31}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" public static final String USERGUIDE_URL \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" \"https://ay2324s2-cs2103t-t09-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" * @throws IllegalStateException \u003cul\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"rertyy":5,"-":98}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" private OrderListPanel orderListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" private StackPane orderListPanelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" orderListPanel \u003d new OrderListPanel(logic.getFilteredOrderList());","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":" orderListPanelPlaceholder.getChildren().add(orderListPanel.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":177,"author":{"gitId":"kailinteoo"},"content":" public OrderListPanel getOrderListPanel() {","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"kailinteoo"},"content":" return orderListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"kailinteoo":11,"-":196}},{"path":"src/main/java/seedu/address/ui/OrderCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"public class OrderCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":" private static final String FXML \u003d \"OrderListCard.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" public final Order order;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" private Label name;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" private Label id;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" private Label clientName;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" @FXML","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" private Label orderId;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" private Label orderDate;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" private Label deadline;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" private Label price;","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" private Label remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" private Label status;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" private FlowPane tags;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" public OrderCard(Order order, int displayedIndex) {","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":" super(FXML);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" orderId.setText(\"OrderId: \" + order.getOrderId().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" clientName.setText(\"Client Name: \" + order.getPerson().getName().toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" orderDate.setText(\"Date: \" + order.getOrderDate().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" deadline.setText(\"Deadline: \" + order.getDeadline().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":" price.setText(\"Price: \" + order.getPrice().toString());","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" remark.setText(\"Description: \" + order.getRemark().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" status.setText(\"Status: \" + order.getStatus().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"kailinteoo":55,"rertyy":10}},{"path":"src/main/java/seedu/address/ui/OrderListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":" * Panel containing the list of orders.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"public class OrderListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" private static final String FXML \u003d \"OrderListPanel.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" private final Logger logger \u003d LogsCenter.getLogger(OrderListPanel.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" private ListView\u003cOrder\u003e orderListView;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" * Creates a {@code OrderListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" public OrderListPanel(ObservableList\u003cOrder\u003e orderList) {","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" super(FXML);","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" orderListView.setItems(orderList);","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" orderListView.setCellFactory(listView -\u003e new OrderListViewCell());","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Order} using a {@code OrderCard}.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" class OrderListViewCell extends ListCell\u003cOrder\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" protected void updateItem(Order order, boolean empty) {","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" super.updateItem(order, empty);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" if (empty || order \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" setText(null);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" setGraphic(new OrderCard(order, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"kailinteoo":44,"rertyy":6}},{"path":"src/main/java/seedu/address/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-09-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" * API of UI component.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public interface Ui {","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Starts the UI (and the App).","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" void start(Stage primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"rertyy":4,"-":11}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC;","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":" background-color: #E8E3DC; /* Used in the default.html file */","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":" -fx-text-fill: #4D3319; /* dark brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" -fx-text-fill: #4D3319; /* dark brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #F5F5DC; /* cream background for entering commands */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":" -fx-background-color: #E8E3DC;","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" -fx-border-color: lightgrey;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" -fx-border-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" -fx-background-color: #E8E3DC; /* light brown button */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" -fx-text-fill: #4D3319; /* text */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #8A9A5B; /* not quite sure where */","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" -fx-base: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" -fx-control-inner-background: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":".status-bar {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":".split-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"shavonneg"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":71,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":75,"author":{"gitId":"shavonneg"},"content":" -fx-border-color: #5D534A; /* earthy brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"shavonneg"},"content":".result-display {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":88,"author":{"gitId":"shavonneg"},"content":" -fx-text-fill: #4D3319; /* dark brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: transparent, #EDEDED, transparent, #EDEDED; /* grey white */","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":".section-title {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"shavonneg"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"shavonneg"},"content":" -fx-padding: 5px;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #8A9A5B; /* green background for tags */","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":30,"Jaspertzx":2,"-":81}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" title\u003d\"BookKeeper\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\"/\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\"/\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" \u003c!-- SplitPane to hold both person list and order list --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" \u003cSplitPane VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" \u003c!-- Person List Section --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" \u003cLabel text\u003d\"My Clients\" styleClass\u003d\"section-title\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" \u003c!-- Order List Section --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":" \u003cLabel text\u003d\"My Orders\" styleClass\u003d\"section-title\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":" \u003cStackPane fx:id\u003d\"orderListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\"/\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":20,"-":49}},{"path":"src/main/resources/view/OrderListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"\u003cHBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"orderId\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" \u003cLabel fx:id\u003d\"clientName\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$clientName\"/\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"orderDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$orderDate\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"deadline\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$deadline\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"price\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$price\"/\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$status\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"kailinteoo":31,"rertyy":1}},{"path":"src/main/resources/view/OrderListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"\u003cVBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" \u003cListView fx:id\u003d\"orderListView\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"kailinteoo":6,"rertyy":1}},{"path":"src/test/java/seedu/address/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":" // Please uncomment this","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":" // @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":" // public void getImage_exitingImage() {","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":" // assertNotNull(AppUtil.getImage(\"/images/address_book_32.png\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":" // }","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"shavonneg":5,"-":30}},{"path":"src/test/java/seedu/address/commons/util/DateTimeUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"class DateTimeUtilTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" void isValidDate() {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" void parseDateTime() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":14}},{"path":"src/test/java/seedu/address/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.testutil.SerializableTestClass;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * Tests JSON Read and Write.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path SERIALIZATION_FILE \u003d TestUtil.getFilePathInSandboxFolder(\"serialize.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void serializeObjectToJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d new SerializableTestClass();","lastModifiedDate":"2016-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" serializableTestClass.setTestValues();","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonUtil.serializeObjectToJsonFile(SERIALIZATION_FILE, serializableTestClass);","lastModifiedDate":"2016-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(FileUtil.readFromFile(SERIALIZATION_FILE), SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void deserializeObjectFromJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(SERIALIZATION_FILE, SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d JsonUtil","lastModifiedDate":"2016-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .deserializeObjectFromJsonFile(SERIALIZATION_FILE, SerializableTestClass.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getName(), SerializableTestClass.getNameTestValue());","lastModifiedDate":"2016-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getListOfLocalDateTimes(), SerializableTestClass.getListTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getMapOfIntegerToString(), SerializableTestClass.getHashMapTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_readJsonStringToObjectInstance_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_writeThenReadObjectToJson_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":1,"-":44}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":" public void getFilteredOrderList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredOrderList().remove(0));","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":" * Executes the command and confirms that:","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" * - the internal model manager state is the same as that in {@code expectedModel}. \u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"rertyy"},"content":" * - the internal model manager state is the same as that in {@code expectedModel}. \u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":169,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"kailinteoo":4,"shavonneg":6,"rertyy":4,"Jaspertzx":1,"-":170}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.OrderNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" * - the {@code actualModel} matches {@code expectedModel}.","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"rertyy"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged.","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" * Updates {@code model}\u0027s filtered orders list to show only the order at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" public static void showOrderAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"shavonneg"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"shavonneg"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":" model.updateFilteredOrderList(new OrderNameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" assertEquals(1, model.getFilteredOrderList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"shavonneg":14,"rertyy":4,"Jaspertzx":1,"-":126}},{"path":"src/test/java/seedu/address/logic/commands/clients/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"shavonneg":1,"-":47}},{"path":"src/test/java/seedu/address/logic/commands/clients/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" assertEquals(addAliceCommand, addAliceCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" assertEquals(addAliceCommand, addAliceCommandCopy);","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" assertNotEquals(1, addAliceCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, addAliceCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":" assertNotEquals(addAliceCommand, addBobCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"rertyy"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"kailinteoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":166,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":179,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":221,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"kailinteoo":2,"shavonneg":22,"rertyy":12,"-":194}},{"path":"src/test/java/seedu/address/logic/commands/clients/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"shavonneg":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/clients/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"shavonneg":1,"-":119}},{"path":"src/test/java/seedu/address/logic/commands/clients/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"rertyy"},"content":" * but smaller than size of address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"shavonneg":1,"rertyy":1,"Jaspertzx":1,"-":181}},{"path":"src/test/java/seedu/address/logic/commands/clients/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"Jaspertzx"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", orders\u003d\"","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":" + editPersonDescriptor.getOrders().orElse(null) + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"shavonneg":1,"Jaspertzx":3,"-":68}},{"path":"src/test/java/seedu/address/logic/commands/clients/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.commands.clients.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"shavonneg":2,"Jaspertzx":1,"-":18}},{"path":"src/test/java/seedu/address/logic/commands/clients/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"shavonneg":1,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/clients/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.commands.clients.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"shavonneg":2,"Jaspertzx":1,"-":18}},{"path":"src/test/java/seedu/address/logic/commands/clients/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"shavonneg":1,"-":38}},{"path":"src/test/java/seedu/address/logic/commands/orders/AddOrderCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":"public class AddOrderCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":" public void execute_orderAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d builder.build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":" ModelStubAcceptingOrderAdded modelStub \u003d new ModelStubAcceptingOrderAdded(order, person);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" CommandResult commandResult \u003d new AddOrderCommand(targetIndex, order).execute(modelStub);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" assertEquals(1, modelStub.getFilteredOrderList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" public void execute_orderAcceptedByModel_indexError() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d builder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jaspertzx"},"content":" ModelStubAcceptingOrderAdded modelStub \u003d new ModelStubAcceptingOrderAdded(order, person);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" assertThrows(CommandException.class, () -\u003e new AddOrderCommand(targetIndex, order).execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Jaspertzx"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Jaspertzx"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Jaspertzx"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Jaspertzx"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Jaspertzx"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jaspertzx"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-29"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"Jaspertzx"},"content":" * A Model stub that always accepts the order being added.","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"Jaspertzx"},"content":" private class ModelStubAcceptingOrderAdded extends AddOrderCommandTest.ModelStub {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"Jaspertzx"},"content":" private Order order;","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"Jaspertzx"},"content":" private Person person;","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"Jaspertzx"},"content":" ModelStubAcceptingOrderAdded(Order order, Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"Jaspertzx"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"Jaspertzx"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jaspertzx"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jaspertzx"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jaspertzx"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"kailinteoo"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"kailinteoo"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"Jaspertzx"},"content":" List\u003cPerson\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"Jaspertzx"},"content":" sampleList.add(this.person);","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"Jaspertzx"},"content":" ObservableList\u003cPerson\u003e personList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"Jaspertzx"},"content":" return personList;","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"rertyy"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"Jaspertzx"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(this.person.getOrders());","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"Jaspertzx"},"content":" return orderList;","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"rertyy"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"rertyy"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":9,"shavonneg":20,"rertyy":15,"Jaspertzx":159}},{"path":"src/test/java/seedu/address/logic/commands/orders/DeleteOrderCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":"public class DeleteOrderCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":" public void execute_deleteOrderByModel_deleteSuccessful() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d builder.build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":" ModelStubDeletingOrder modelStub \u003d new ModelStubDeletingOrder(order, person);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" CommandResult commandResult \u003d new AddOrderCommand(INDEX_FIRST_ORDER, order).execute(modelStub);","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" commandResult \u003d new DeleteOrderCommand(INDEX_FIRST_ORDER).execute(modelStub);","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" assertEquals(0, modelStub.getOrderList().size());","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" public void execute_deleteOrderByModel_deleteUnsuccessful() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d builder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jaspertzx"},"content":" ModelStubDeletingOrder modelStub \u003d new ModelStubDeletingOrder(order, person);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" assertThrows(CommandException.class, () -\u003e new DeleteOrderCommand(INDEX_FIRST_ORDER).execute(modelStub));","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Jaspertzx"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Jaspertzx"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Jaspertzx"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"Jaspertzx"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"Jaspertzx"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"Jaspertzx"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"Jaspertzx"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"rertyy"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":131,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-29"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":135,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"Jaspertzx"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"Jaspertzx"},"content":" * A Model stub that always accepts the order being added.","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"Jaspertzx"},"content":" private class ModelStubDeletingOrder extends ModelStub {","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"Jaspertzx"},"content":" private Order order;","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"Jaspertzx"},"content":" private Person person;","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"Jaspertzx"},"content":" ModelStubDeletingOrder(Order order, Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"Jaspertzx"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"Jaspertzx"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jaspertzx"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jaspertzx"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jaspertzx"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"kailinteoo"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"kailinteoo"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"rertyy"},"content":" requireAllNonNull(target, editedPerson, order);","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"rertyy"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"Jaspertzx"},"content":" List\u003cPerson\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"Jaspertzx"},"content":" sampleList.add(this.person);","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"Jaspertzx"},"content":" ObservableList\u003cPerson\u003e personList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"Jaspertzx"},"content":" return personList;","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"rertyy"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"rertyy"},"content":" List\u003cOrder\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"rertyy"},"content":" sampleList.add(this.order);","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"rertyy"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"rertyy"},"content":" return orderList;","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"rertyy"},"content":" private ObservableList\u003cOrder\u003e getOrderList() {","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"Jaspertzx"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(this.person.getOrders());","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"Jaspertzx"},"content":" return orderList;","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"Jaspertzx"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"Jaspertzx"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"Jaspertzx"},"content":" addressBook.addPerson(this.person);","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"Jaspertzx"},"content":" return addressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"rertyy"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"rertyy"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"kailinteoo":9,"shavonneg":20,"rertyy":36,"Jaspertzx":156}},{"path":"src/test/java/seedu/address/logic/commands/orders/EditOrderCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.orders;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_ORDER;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":"public class EditOrderCommandTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" // TODO: implement tests for successful editing of orders","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":" // @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":" // public void execute_editOrderByModel_editSuccessful() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":" // PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" // Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" // OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" // Order originalOrder \u003d orderBuilder.build();","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" // ModelStubEditingOrder modelStub \u003d new ModelStubEditingOrder(originalOrder, person);","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" // Order editedOrder \u003d orderBuilder.withStatus(\"completed\").build();","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand.EditOrderDescriptor descriptor \u003d new EditOrderDescriptorBuilder(editedOrder).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand editOrderCommand \u003d new EditOrderCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" // String expectedMessage \u003d String.format(EditOrderCommand.MESSAGE_EDIT_ORDER_SUCCESS, editedOrder);","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" // assertCommandSuccess(editOrderCommand, modelStub, expectedMessage, modelStub);","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" // }","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" // TODO: implement tests for successful indexing and correct description","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" // @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":" // public void execute_validIndexAndDescriptor_success() {","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":" // Order editedOrder \u003d new OrderBuilder().withStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand.EditOrderDescriptor descriptor \u003d new EditOrderDescriptorBuilder(editedOrder).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand editOrderCommand \u003d new EditOrderCommand(INDEX_FIRST_ORDER, descriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" // String expectedMessage \u003d String.format(MESSAGE_EDIT_ORDER_SUCCESS, editedOrder);","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" // assertCommandSuccess(editOrderCommand, model, expectedMessage, model);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" // }","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":" // TODO: implement test for createEditedOrder","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" // @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":" // public void testExecute_createEditedOrder() throws Exception {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"shavonneg"},"content":" // PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"shavonneg"},"content":" // Person person \u003d personBuilder.build();","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":" // // Create an original order","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"shavonneg"},"content":" // Order originalOrder \u003d new Order(new OrderId(), new OrderDate(\"01-02-2024 10:09\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"shavonneg"},"content":" // new Deadline(\"22-02-2024 23:59\"), new Price(\"100.00\"), new Remark(\"Original remark\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"shavonneg"},"content":" // new Status(\"PENDING\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"shavonneg"},"content":" // // Set up edit descriptor with new values","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand.EditOrderDescriptor editDescriptor \u003d new EditOrderCommand.EditOrderDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setOrderDate(new OrderDate(\"01-02-2024 10:09\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setDeadline(new Deadline(\"01-03-2024 23:59\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setPrice(new Price(\"150.00\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setRemark(new Remark(\"Updated remark\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setStatus(new Status(\"COMPLETED\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"shavonneg"},"content":" // // Create EditOrderCommand with target index and edit descriptor","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand editOrderCommand \u003d new EditOrderCommand(Index.fromZeroBased(0), editDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"shavonneg"},"content":" // // Create a model with the original order and associated person","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"shavonneg"},"content":" // Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"shavonneg"},"content":" // model.addPerson(person); // Add the person to the model","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"shavonneg"},"content":" // model.setPersonAndAddOrder(person, person, originalOrder); // Pass same person for target and editedPerson","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"shavonneg"},"content":" // // Execute the edit command","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"shavonneg"},"content":" // editOrderCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"shavonneg"},"content":" // // Retrieve the edited order from the model","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"shavonneg"},"content":" // Order editedOrder \u003d model.getFilteredOrderList().get(0);","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"shavonneg"},"content":" // // Verify that the edited order details match the expected values","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" // assertNotNull(editedOrder);","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new OrderDate(\"01-02-2024 10:09\"), editedOrder.getOrderDate());","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new Deadline(\"01-03-2024 23:59\"), editedOrder.getDeadline());","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new Price(\"150.00\"), editedOrder.getPrice());","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new Remark(\"Updated remark\"), editedOrder.getRemark());","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new Status(\"COMPLETED\"), editedOrder.getStatus());","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" // }","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":106,"author":{"gitId":"shavonneg"},"content":" public void execute_orderAcceptedByModel_indexError() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":107,"author":{"gitId":"shavonneg"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"shavonneg"},"content":" Order order \u003d orderBuilder.build();","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"shavonneg"},"content":" ModelStubEditingOrder modelStub \u003d new ModelStubEditingOrder(order, person);","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" Index targetIndex \u003d INDEX_SECOND_ORDER;","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" EditOrderCommand editOrderCommand \u003d new EditOrderCommand(targetIndex,","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" new EditOrderCommand.EditOrderDescriptor());","lastModifiedDate":"2024-03-29"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" assertThrows(CommandException.class, () -\u003e editOrderCommand.execute(modelStub));","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"shavonneg"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":121,"author":{"gitId":"shavonneg"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-29"},{"lineNumber":124,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":125,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":126,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":127,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":128,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-29"},{"lineNumber":129,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":130,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":131,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-29"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"shavonneg"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-29"},{"lineNumber":139,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-29"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":145,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":146,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":147,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":148,"author":{"gitId":"shavonneg"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-29"},{"lineNumber":149,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":151,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":166,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"shavonneg"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"shavonneg"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":178,"author":{"gitId":"shavonneg"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":180,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":183,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":184,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":187,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":188,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":189,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":190,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":192,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":193,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-29"},{"lineNumber":194,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":195,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":196,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":197,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":198,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":200,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":201,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":202,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":203,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":204,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":205,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":206,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":207,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":208,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":209,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":210,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":211,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":212,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":213,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":214,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":215,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":216,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":217,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":218,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":219,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":220,"author":{"gitId":"shavonneg"},"content":" * A Model stub that always accepts the order being added.","lastModifiedDate":"2024-03-29"},{"lineNumber":221,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":222,"author":{"gitId":"shavonneg"},"content":" private class ModelStubEditingOrder extends seedu.address.logic.commands.orders.EditOrderCommandTest.ModelStub {","lastModifiedDate":"2024-03-29"},{"lineNumber":223,"author":{"gitId":"shavonneg"},"content":" private Order order;","lastModifiedDate":"2024-03-29"},{"lineNumber":224,"author":{"gitId":"shavonneg"},"content":" private Person person;","lastModifiedDate":"2024-03-29"},{"lineNumber":225,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":226,"author":{"gitId":"shavonneg"},"content":" ModelStubEditingOrder(Order order, Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":227,"author":{"gitId":"shavonneg"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-29"},{"lineNumber":228,"author":{"gitId":"shavonneg"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-29"},{"lineNumber":229,"author":{"gitId":"shavonneg"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-29"},{"lineNumber":230,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":231,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":232,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":233,"author":{"gitId":"shavonneg"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-29"},{"lineNumber":234,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":235,"author":{"gitId":"shavonneg"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-29"},{"lineNumber":236,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":237,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":238,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":239,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":240,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":241,"author":{"gitId":"shavonneg"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-29"},{"lineNumber":242,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":243,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":244,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":245,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":246,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(target, editedPerson, order);","lastModifiedDate":"2024-03-29"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-29"},{"lineNumber":248,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":249,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":250,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":251,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":252,"author":{"gitId":"shavonneg"},"content":" List\u003cPerson\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":253,"author":{"gitId":"shavonneg"},"content":" sampleList.add(this.person);","lastModifiedDate":"2024-03-29"},{"lineNumber":254,"author":{"gitId":"shavonneg"},"content":" ObservableList\u003cPerson\u003e personList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-29"},{"lineNumber":255,"author":{"gitId":"shavonneg"},"content":" return personList;","lastModifiedDate":"2024-03-29"},{"lineNumber":256,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":260,"author":{"gitId":"shavonneg"},"content":" List\u003cOrder\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":261,"author":{"gitId":"shavonneg"},"content":" sampleList.add(this.order);","lastModifiedDate":"2024-03-29"},{"lineNumber":262,"author":{"gitId":"shavonneg"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-29"},{"lineNumber":263,"author":{"gitId":"shavonneg"},"content":" return orderList;","lastModifiedDate":"2024-03-29"},{"lineNumber":264,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":265,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":266,"author":{"gitId":"shavonneg"},"content":" private ObservableList\u003cOrder\u003e getOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":267,"author":{"gitId":"shavonneg"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(this.person.getOrders());","lastModifiedDate":"2024-03-29"},{"lineNumber":268,"author":{"gitId":"shavonneg"},"content":" return orderList;","lastModifiedDate":"2024-03-29"},{"lineNumber":269,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":270,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":272,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-29"},{"lineNumber":273,"author":{"gitId":"shavonneg"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-29"},{"lineNumber":274,"author":{"gitId":"shavonneg"},"content":" addressBook.addPerson(this.person);","lastModifiedDate":"2024-03-29"},{"lineNumber":275,"author":{"gitId":"shavonneg"},"content":" return addressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":276,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":277,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":278,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":279,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":280,"author":{"gitId":"shavonneg"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":281,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":282,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":283,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"shavonneg":283}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Jaspertzx":1,"-":195}},{"path":"src/test/java/seedu/address/logic/parser/AddOrderCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"public class AddOrderCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":" private AddOrderCommandParser parser \u003d new AddOrderCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":" public void parse_missingPrefix_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":" final String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddOrderCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":" assertParseFailure(parser, \"1\", expectedMessage);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":" assertParseFailure(parser, \"abc\", expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":" public void check_sameCurrentTime_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" DateTimeUtil.getCurrentTime();","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertEquals(DateTimeUtil.getCurrentTime(), now.format(formatter));","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"rertyy":3,"Jaspertzx":32}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.orders.EditOrderCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Jaspertzx"},"content":" public void parseCommand_createOrder() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"Jaspertzx"},"content":" String remarks \u003d \" d/1xRoses\";","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" String cost \u003d \" c/100\";","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"Jaspertzx"},"content":" String date \u003d \" by/10-10-2024 00:00\";","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"Jaspertzx"},"content":" assertTrue(parser.parseCommand(AddOrderCommand.COMMAND_WORD + \" 1\"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":" + remarks + cost + date) instanceof AddOrderCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Jaspertzx"},"content":" public void parseCommand_deleteOrder() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"rertyy"},"content":" // OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"rertyy"},"content":" // OrderId orderId \u003d builder.build().getOrderId();","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"rertyy"},"content":" assertTrue(","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"rertyy"},"content":" parser.parseCommand(DeleteOrderCommand.COMMAND_WORD + \" 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"rertyy"},"content":" instanceof DeleteOrderCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" public void parseCommand_editOrder() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" String remarks \u003d \" d/ 1xRoses\";","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" String price \u003d \" c/ 40\";","lastModifiedDate":"2024-03-30"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":" String deadline \u003d \" by/ 23-07-2024 10:10\";","lastModifiedDate":"2024-03-30"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":" String status \u003d \" s/ PENDING\";","lastModifiedDate":"2024-03-30"},{"lineNumber":118,"author":{"gitId":"shavonneg"},"content":" assertTrue(parser.parseCommand(EditOrderCommand.COMMAND_WORD + \" 1\"","lastModifiedDate":"2024-03-30"},{"lineNumber":119,"author":{"gitId":"shavonneg"},"content":" + deadline + price + remarks + status) instanceof EditOrderCommand);","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":121,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"shavonneg":11,"rertyy":5,"Jaspertzx":24,"-":92}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"Jaspertzx":1,"-":31}},{"path":"src/test/java/seedu/address/logic/parser/DeleteOrderCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":" * Contains unit tests for {@code DeleteOrderCommandParser}.","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"public class DeleteOrderCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":" private DeleteOrderCommandParser parser \u003d new DeleteOrderCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertParseSuccess(parser, \"1\", new DeleteOrderCommand(INDEX_FIRST_ORDER));","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" public void parse_emptyIdValue_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" final String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteOrderCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" assertParseFailure(parser, \"\", expectedMessage);","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"rertyy":5,"Jaspertzx":24}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Jaspertzx":2,"-":206}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"Jaspertzx":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" private static final String INVALID_DEADLINE \u003d \"123456\";","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" private static final String INVALID_PRICE \u003d \"ab\";","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" private static final String INVALID_REMARK \u003d \" \";","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" private static final String INVALID_STATUS \u003d \"ALMOST\";","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" private static final String VALID_DEADLINE \u003d \"23-07-2024 10:23\";","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" private static final String VALID_PRICE \u003d \"40\";","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" private static final String VALID_REMARK \u003d \"1xRoses\";","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" private static final String VALID_STATUS \u003d \"PENDING\";","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":204,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"Jaspertzx"},"content":" public void parseOrderId_invalidId_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"Jaspertzx"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseOrderId((String) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"Jaspertzx"},"content":" public void testParseNullOrderId() {","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"Jaspertzx"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseOrderId(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"Jaspertzx"},"content":" public void testParseOrderIdWithWhitespaces() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"Jaspertzx"},"content":" String input \u003d \" \" + builder.build().getOrderId().toString() + \" \";","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"Jaspertzx"},"content":" OrderId result \u003d ParserUtil.parseOrderId(input);","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"Jaspertzx"},"content":" assertNotNull(result);","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"Jaspertzx"},"content":" public void testParseInvalidOrderId() {","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"Jaspertzx"},"content":" String input \u003d \"123\";","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"kailinteoo"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseOrderId(input));","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":230,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":231,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":235,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":236,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":237,"author":{"gitId":"shavonneg"},"content":" public void parseDeadline_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":238,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDeadline((String) null));","lastModifiedDate":"2024-03-30"},{"lineNumber":239,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":240,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":241,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":242,"author":{"gitId":"shavonneg"},"content":" public void parseDeadline_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":243,"author":{"gitId":"shavonneg"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDeadline(INVALID_DEADLINE));","lastModifiedDate":"2024-03-30"},{"lineNumber":244,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":245,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":246,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":" public void parseDeadline_validValueWithoutWhitespace_returnsDeadline() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":248,"author":{"gitId":"shavonneg"},"content":" Deadline expectedDeadline \u003d new Deadline(VALID_DEADLINE);","lastModifiedDate":"2024-03-30"},{"lineNumber":249,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedDeadline, ParserUtil.parseDeadline(VALID_DEADLINE));","lastModifiedDate":"2024-03-30"},{"lineNumber":250,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":251,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":252,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":253,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":254,"author":{"gitId":"shavonneg"},"content":" public void parsePrice_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":255,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePrice((String) null));","lastModifiedDate":"2024-03-30"},{"lineNumber":256,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":259,"author":{"gitId":"shavonneg"},"content":" public void parsePrice_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":260,"author":{"gitId":"shavonneg"},"content":" assertThrows(NumberFormatException.class, () -\u003e ParserUtil.parsePrice(INVALID_PRICE));","lastModifiedDate":"2024-03-30"},{"lineNumber":261,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":262,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":263,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":264,"author":{"gitId":"shavonneg"},"content":" public void parsePrice_validValueWithoutWhitespace_returnsPrice() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":265,"author":{"gitId":"shavonneg"},"content":" Price expectedPrice \u003d new Price(VALID_PRICE);","lastModifiedDate":"2024-03-30"},{"lineNumber":266,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedPrice, ParserUtil.parsePrice(VALID_PRICE));","lastModifiedDate":"2024-03-30"},{"lineNumber":267,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":268,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":269,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":270,"author":{"gitId":"shavonneg"},"content":" public void parsePrice_validValueWithWhitespace_returnsTrimmedPrice() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":271,"author":{"gitId":"shavonneg"},"content":" String priceWithWhitespace \u003d WHITESPACE + VALID_PRICE + WHITESPACE;","lastModifiedDate":"2024-03-30"},{"lineNumber":272,"author":{"gitId":"shavonneg"},"content":" Price expectedPrice \u003d new Price(VALID_PRICE);","lastModifiedDate":"2024-03-30"},{"lineNumber":273,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedPrice, ParserUtil.parsePrice(priceWithWhitespace));","lastModifiedDate":"2024-03-30"},{"lineNumber":274,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":275,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":276,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":277,"author":{"gitId":"shavonneg"},"content":" public void parseRemark_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":278,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRemark((String) null));","lastModifiedDate":"2024-03-30"},{"lineNumber":279,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":280,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":281,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":282,"author":{"gitId":"shavonneg"},"content":" public void parseRemark_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":283,"author":{"gitId":"shavonneg"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRemark(INVALID_REMARK));","lastModifiedDate":"2024-03-30"},{"lineNumber":284,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":285,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":286,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":287,"author":{"gitId":"shavonneg"},"content":" public void parseRemark_validValueWithoutWhitespace_returnsRemark() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":288,"author":{"gitId":"shavonneg"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK);","lastModifiedDate":"2024-03-30"},{"lineNumber":289,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(VALID_REMARK));","lastModifiedDate":"2024-03-30"},{"lineNumber":290,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":291,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":292,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":293,"author":{"gitId":"shavonneg"},"content":" public void parseStatus_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":294,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseStatus((String) null));","lastModifiedDate":"2024-03-30"},{"lineNumber":295,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":296,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":297,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":298,"author":{"gitId":"shavonneg"},"content":" public void parseStatus_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":299,"author":{"gitId":"shavonneg"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseStatus(INVALID_STATUS));","lastModifiedDate":"2024-03-30"},{"lineNumber":300,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":301,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":302,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":303,"author":{"gitId":"shavonneg"},"content":" public void parseStatus_validValueWithoutWhitespace_returnsStatus() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":304,"author":{"gitId":"shavonneg"},"content":" Status expectedStatus \u003d new Status(VALID_STATUS);","lastModifiedDate":"2024-03-30"},{"lineNumber":305,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedStatus, ParserUtil.parseStatus(VALID_STATUS));","lastModifiedDate":"2024-03-30"},{"lineNumber":306,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":307,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"kailinteoo":2,"shavonneg":84,"Jaspertzx":25,"-":196}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" private final ObservableList\u003cOrder\u003e orders \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"rertyy"},"content":" public ObservableList\u003cOrder\u003e getOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"rertyy"},"content":" return orders;","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"shavonneg":5,"rertyy":3,"-":108}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" public void getOrderList_anyOrder_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" assertEquals(0, modelManager.getFilteredOrderList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" public void getFilteredOrderList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"rertyy"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredOrderList().remove(0));","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"shavonneg":4,"rertyy":2,"Jaspertzx":4,"-":132}},{"path":"src/test/java/seedu/address/model/order/DeadlineTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"class DeadlineTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Deadline(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public void constructor_invalidDeadline_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" String invalidDeadline \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Deadline(invalidDeadline));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" public void isValidDeadline() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" // null deadline","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e Deadline.isValidDeadline(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" // invalid deadlines","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\"11-15-2024 21:51\")); // invalid date format","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\"41-15-2024 21:51\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\"15-41-2024 21:51\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" // valid deadlines","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" assertTrue(Deadline.isValidDeadline(\"15-12-3024 21:51\")); // long deadline","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" assertTrue(Deadline.isValidDeadline(\"11-05-2024 21:51\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" assertTrue(Deadline.isValidDeadline(\"01-05-2024 01:01\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" public void compareDeadline() {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" Deadline deadline \u003d new Deadline(\"01-01-2024 00:00\");","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" // smaller values -\u003e returns 1","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(1, deadline.compareTo(new Deadline(\"01-01-2023 00:00\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"Jaspertzx"},"content":" // bigger values -\u003e returns -1","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(-1, deadline.compareTo(new Deadline(\"01-01-2024 01:00\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"Jaspertzx"},"content":" // same values -\u003e returns 0","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(0, deadline.compareTo(new Deadline(\"01-01-2024 00:00\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" Deadline deadline \u003d new Deadline(\"11-05-2024 21:51\");","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" assertEquals(deadline, new Deadline(\"11-05-2024 21:51\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" assertEquals(deadline, deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" assertNotEquals(deadline, 0.0);","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" assertNotEquals(deadline, new Deadline(\"11-05-2024 21:52\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":62,"Jaspertzx":14}},{"path":"src/test/java/seedu/address/model/order/OrderDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"class OrderDateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e new OrderDate(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public void constructor_invalidOrderDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" String invalidOrderDate \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new OrderDate(invalidOrderDate));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" public void isValidOrderDate() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" // null OrderDate","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e OrderDate.isValidOrderDate(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" // invalid OrderDates","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\"11-15-2024 21:51\")); // invalid date format","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\"41-15-2024 21:51\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\"15-41-2024 21:51\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" // valid OrderDates","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" assertTrue(OrderDate.isValidOrderDate(\"15-12-3024 21:51\")); // long OrderDate","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" assertTrue(OrderDate.isValidOrderDate(\"11-05-2024 21:51\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" assertTrue(OrderDate.isValidOrderDate(\"01-05-2024 01:01\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" OrderDate orderDate \u003d new OrderDate(\"11-05-2024 21:51\");","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" assertEquals(orderDate, new OrderDate(\"11-05-2024 21:51\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" assertEquals(orderDate, orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" assertNotEquals(orderDate, 0.0);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" assertNotEquals(orderDate, new OrderDate(\"11-05-2024 21:52\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":62}},{"path":"src/test/java/seedu/address/model/order/OrderIdTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.OrderBuilder.DEFAULT_ORDER_ID;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"class OrderIdTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" void constructor_invalidOrderId_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" String invalidOrderId \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new OrderId(invalidOrderId));","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" void testEquals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" OrderId orderId \u003d new OrderId();","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" // different object -\u003e negligible chance to be equals","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" assertNotEquals(orderId, new OrderId());","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" OrderId fixedOrderId1 \u003d new OrderId(DEFAULT_ORDER_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" OrderId fixedOrderId2 \u003d new OrderId(DEFAULT_ORDER_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" assertEquals(fixedOrderId1, fixedOrderId2);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertEquals(orderId, orderId);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" // same object representation -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" assertEquals(orderId, orderId.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" assertNotEquals(orderId, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":42}},{"path":"src/test/java/seedu/address/model/order/OrderNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.testutil.TypicalOrders.ROSES;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":"public class OrderNameContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate firstPredicate \u003d new","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate secondPredicate \u003d new","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate firstPredicateCopy \u003d new","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" assertEquals(firstPredicate, firstPredicateCopy);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":" assertNotEquals(1, firstPredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" // Zero keywords","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate predicate \u003d new OrderNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" assertFalse(predicate.test(new OrderBuilder(ROSES).withPrice(\"200\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate predicate \u003d new OrderNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" String expected \u003d OrderNameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":61}},{"path":"src/test/java/seedu/address/model/order/OrderTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.TypicalOrders.LILIES;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.TypicalOrders.ROSES;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"class OrderTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" Order rosesCopy \u003d new OrderBuilder(ROSES).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" assertEquals(ROSES, rosesCopy);","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" assertEquals(ROSES, ROSES);","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, 5);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" // different order -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, LILIES);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" // EditedRoses","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" Order editedRoses;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" Order nullRoses;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" // different price -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" editedRoses \u003d new OrderBuilder(ROSES).withPrice(\"200\").build();","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" // different deadline -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" .withDeadline(\"11-05-2024 21:51\")","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" // different order date -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" .withOrderDate(\"11-05-2024 21:51\")","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" .withRemark(\"Different remark\")","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" // different status -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" .withStatus(\"PENDING\")","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" // different orderId -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" .withOrderId(\"434d72c4-f045-448c-84a7-6d70704e9730\")","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" .withPerson(TypicalPersons.CARL)","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"rertyy"},"content":" String expected \u003d Order.class.getCanonicalName()","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"rertyy"},"content":" + \"{orderId\u003d\" + ROSES.getOrderId()","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" + \", orderDate\u003d\" + ROSES.getOrderDate()","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":" + \", deadline\u003d\" + ROSES.getDeadline()","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":" + \", price\u003d\" + ROSES.getPrice()","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"rertyy"},"content":" + \", remark\u003d\" + ROSES.getRemark()","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":" + \", status\u003d\" + ROSES.getStatus()","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":" + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":" assertEquals(expected, ROSES.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":3,"rertyy":90}},{"path":"src/test/java/seedu/address/model/order/PriceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"class PriceTest {","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":" void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NullPointerException.class, () -\u003e new Price(null));","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" void constructor_invalidPriceEmpty_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" String invalidPrice \u003d \"\";","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Price(invalidPrice));","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" void constructor_invalidPriceNegative_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" String invalidPrice \u003d \"-1\";","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Price(invalidPrice));","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" void constructor_invalidPriceZero_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" String invalidPrice \u003d \"0\";","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Price(invalidPrice));","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" void isValidPrice() {","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NullPointerException.class, () -\u003e Price.isValidPrice(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NumberFormatException.class, () -\u003e Price.isValidPrice(\"\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" assertFalse(Price.isValidPrice(\"-1\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NumberFormatException.class, () -\u003e Price.isValidPrice(\" \"));","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" assertFalse(Price.isValidPrice(\"0\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"1\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"100\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"1.5\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"1.55\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"1.500\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":" void testEquals() {","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":" Price price \u003d new Price(\"1\");","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":" assertEquals(price, new Price(\"1\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":" assertEquals(price, price);","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" assertNotEquals(null, price);","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" assertNotEquals(price, 0.0);","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":" assertNotEquals(price, new Price(\"2\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"kailinteoo":75}},{"path":"src/test/java/seedu/address/model/order/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"class RemarkTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public void constructor_invalidRemark_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" String invalidRemark \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Remark(invalidRemark));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" public void isValidRemark() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" // null remark","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e Remark.isValidRemark(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" // invalid remarks","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" assertFalse(Remark.isValidRemark(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertFalse(Remark.isValidRemark(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" // valid remarks","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" assertTrue(Remark.isValidRemark(\"A valid remark.\")); // Non-empty remark","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" assertTrue(Remark.isValidRemark(\"12345\")); // Numbers only","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" assertTrue(Remark.isValidRemark(\"Remark with spaces\")); // Contains spaces","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" assertTrue(Remark.isValidRemark(\"Remark-with-dashes\")); // Contains dashes","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" Remark remark \u003d new Remark(\"A valid remark.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" assertEquals(remark, new Remark(\"A valid remark.\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" assertEquals(remark, remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" assertNotEquals(remark, 0.0);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" assertNotEquals(remark, new Remark(\"Another remark\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":60}},{"path":"src/test/java/seedu/address/model/order/StatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"class StatusTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Status(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public void constructor_invalidStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" String invalidStatus \u003d \"invalid\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Status(invalidStatus));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":" public void getStatus_returnsCorrectStatus() {","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" Status.StatusEnum expectedStatus \u003d Status.StatusEnum.valueOf(\"PENDING\");","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":" Status status \u003d new Status(\"PENDING\");","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" Status.StatusEnum actualStatus \u003d status.getStatusEnum();","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedStatus, actualStatus, \"getStatus should return the correct status.\");","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" public void isValidStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" // null status","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e Status.isValidStatus(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" // invalid statuses","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" assertFalse(Status.isValidStatus(\"invalid\")); // Not matching any status enum","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" assertFalse(Status.isValidStatus(\"\")); // Not matching any status enum","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" assertFalse(Status.isValidStatus(\" \")); // Empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" // valid statuses","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"pending\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"completed\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"canceled\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"PENDING\")); // Case insensitivity","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"COMPLETED\")); // Case insensitivity","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"CANCELED\")); // Case insensitivity","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" Status status \u003d new Status(\"pending\");","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" assertEquals(status, new Status(\"pending\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" assertEquals(status, status);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, status);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" assertNotEquals(status, 5.0);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" assertNotEquals(status, new Status(\"completed\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"shavonneg":8,"rertyy":63}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getOrders().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Jaspertzx"},"content":" public void isSameTestWithOrder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d orderBuilder.build();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cOrder\u003e setOfOrders \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":" setOfOrders.add(order);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":" Person editedAlice \u003d new Person(person.getName(), person.getPhone(),","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"Jaspertzx"},"content":" person.getEmail(), person.getAddress(), person.getTags(), setOfOrders);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"Jaspertzx"},"content":" assertTrue(person.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":" + \", orders\u003d\" + ALICE.getOrders() + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"kailinteoo":4,"Jaspertzx":19,"-":98}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"Jaspertzx"},"content":" public void addOrder_existingPerson_addOrder() {","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d new OrderBuilder().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.add(person);","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"Jaspertzx"},"content":" Person editedPerson \u003d person.addOrder(order);","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.setPersonAndAddOrder(person, editedPerson, order);","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(1, uniquePersonList.asUnmodifiableObservableListOrders().size());","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"Jaspertzx"},"content":" public void removeOrder_existingPersonAndOrder_removeOrder() {","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d new OrderBuilder().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.add(person);","lastModifiedDate":"2024-04-03"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" Person editedPerson \u003d person.addOrder(order);","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.setPersonAndAddOrder(person, editedPerson, order);","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.setPersonAndDeleteOrder(editedPerson, person, order);","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(0, uniquePersonList.asUnmodifiableObservableListOrders().size());","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":199,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":200,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":201,"author":{"gitId":"shavonneg"},"content":" public void setPersonsAndAddOrder_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":202,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersonAndAddOrder(ALICE, null,","lastModifiedDate":"2024-03-30"},{"lineNumber":203,"author":{"gitId":"shavonneg"},"content":" null));","lastModifiedDate":"2024-03-30"},{"lineNumber":204,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":205,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":206,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":207,"author":{"gitId":"shavonneg"},"content":" public void setPersonsAndAddOrder_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":208,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersonAndAddOrder(null,","lastModifiedDate":"2024-03-30"},{"lineNumber":209,"author":{"gitId":"shavonneg"},"content":" null, null));","lastModifiedDate":"2024-03-30"},{"lineNumber":210,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":211,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":212,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":213,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndAddOrder_validPersonAndOrder_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":214,"author":{"gitId":"shavonneg"},"content":" UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":215,"author":{"gitId":"shavonneg"},"content":" Person originalPerson \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":216,"author":{"gitId":"shavonneg"},"content":" Person editedPerson \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"shavonneg"},"content":" OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":218,"author":{"gitId":"shavonneg"},"content":" Order newOrder \u003d orderBuilder.build();","lastModifiedDate":"2024-04-04"},{"lineNumber":219,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":220,"author":{"gitId":"shavonneg"},"content":" uniquePersonList.add(originalPerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"shavonneg"},"content":" assertDoesNotThrow(() -\u003e uniquePersonList.setPersonAndAddOrder(originalPerson, editedPerson, newOrder));","lastModifiedDate":"2024-04-04"},{"lineNumber":222,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"shavonneg"},"content":" assertTrue(uniquePersonList.contains(editedPerson));","lastModifiedDate":"2024-04-04"},{"lineNumber":224,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":227,"author":{"gitId":"shavonneg"},"content":" public void setPersonsAndDeleteOrder_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":228,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersonAndDeleteOrder(BOB, null,","lastModifiedDate":"2024-03-30"},{"lineNumber":229,"author":{"gitId":"shavonneg"},"content":" null));","lastModifiedDate":"2024-03-30"},{"lineNumber":230,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":231,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":232,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":233,"author":{"gitId":"shavonneg"},"content":" public void setPersonsAndDeleteOrder_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":234,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersonAndDeleteOrder(null,","lastModifiedDate":"2024-03-30"},{"lineNumber":235,"author":{"gitId":"shavonneg"},"content":" null, null));","lastModifiedDate":"2024-03-30"},{"lineNumber":236,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":237,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":238,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":239,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndDeleteOrder_orderDoesNotExist_personUnchanged() {","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"shavonneg"},"content":" UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"shavonneg"},"content":" Person originalPerson \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"shavonneg"},"content":" Person editedPerson \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"shavonneg"},"content":" OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":244,"author":{"gitId":"shavonneg"},"content":" Order newOrder \u003d orderBuilder.build();","lastModifiedDate":"2024-04-04"},{"lineNumber":245,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":246,"author":{"gitId":"shavonneg"},"content":" uniquePersonList.add(originalPerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"shavonneg"},"content":" assertDoesNotThrow(() -\u003e uniquePersonList.setPersonAndDeleteOrder(originalPerson, editedPerson, newOrder));","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"shavonneg"},"content":" public void testEquals_sameInput() {","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"shavonneg"},"content":" UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"shavonneg"},"content":" assertEquals(uniquePersonList, uniquePersonList);","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" public void testEquals_sameOutput() {","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"shavonneg"},"content":" UniquePersonList list1 \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"shavonneg"},"content":" UniquePersonList list2 \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"shavonneg"},"content":" list1.add(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"shavonneg"},"content":" list2.add(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"shavonneg"},"content":" assertEquals(list1.equals(list2), list2.equals(list1));","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":267,"author":{"gitId":"shavonneg"},"content":" public void testHashCode() {","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"shavonneg"},"content":" UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"shavonneg"},"content":" int initialHashCode \u003d uniquePersonList.hashCode();","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"shavonneg"},"content":" for (int i \u003d 0; i \u003c 10; i++) {","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"shavonneg"},"content":" assertEquals(initialHashCode, uniquePersonList.hashCode());","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"Jaspertzx"},"content":" public void equals() {","lastModifiedDate":"2024-04-03"},{"lineNumber":276,"author":{"gitId":"Jaspertzx"},"content":" assertTrue(uniquePersonList.equals(uniquePersonList));","lastModifiedDate":"2024-04-03"},{"lineNumber":277,"author":{"gitId":"Jaspertzx"},"content":" UniquePersonList uniquePersonList2 \u003d new UniquePersonList();","lastModifiedDate":"2024-04-03"},{"lineNumber":278,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList2.add(new PersonBuilder().build());","lastModifiedDate":"2024-04-03"},{"lineNumber":279,"author":{"gitId":"Jaspertzx"},"content":" assertFalse(uniquePersonList.equals(uniquePersonList2));","lastModifiedDate":"2024-04-03"},{"lineNumber":280,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":281,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"shavonneg":79,"Jaspertzx":27,"-":175}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedOrderTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import static seedu.address.storage.JsonAdaptedOrder.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"public class JsonAdaptedOrderTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_ORDERID \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_ORDERDATE \u003d \"41-15-2024 21:51\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_DEADLINE \u003d \"41-15-2024 21:51\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_PRICE \u003d \"0\";","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_REMARK \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_STATUS \u003d \"invalid\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_ORDERID \u003d \"69c25c8d-9e34-4d9d-8bad-e378f203ae73\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_ORDERDATE \u003d \"01-03-2024 23:59\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_DEADLINE \u003d \"01-04-2024 23:59\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_PRICE \u003d \"50\";","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_REMARK \u003d \"No remark\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_STATUS \u003d \"CANCELED\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" /*@Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_validOrderDetails_returnsOrder() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d new JsonAdaptedOrder(ROSES);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" assertEquals(ROSES, order.toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" }*/","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidOrderId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(INVALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d OrderId.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullOrderId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(null, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, OrderId.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidOrderDate_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, INVALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d OrderDate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullOrderDate_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, null, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, OrderDate.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidDeadline_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, INVALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d Deadline.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullDeadline_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, null, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Deadline.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidPrice_throwsIllegalValueException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, INVALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d Price.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NumberFormatException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullPrice_throwsIllegalValueException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, null,","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Price.class.getSimpleName());","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NumberFormatException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidRemark_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":113,"author":{"gitId":"kailinteoo"},"content":" INVALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d Remark.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullRemark_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":" null, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, INVALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d Status.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":140,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, null);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Status.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"kailinteoo":145}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_ORDERID \u003d \"#FXXXXXXXX\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_ORDERDATE \u003d \"24/D/23\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_DEADLINE \u003d \"24/D/23\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_PRICE \u003d \"@6.7\";","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_REMARK \u003d \"%HOME\";","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_STATUS \u003d \"#NOW\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" private static final List\u003cJsonAdaptedOrder\u003e VALID_ORDERS \u003d BENSON.getOrders().stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" .map(JsonAdaptedOrder::new)","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":" VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":" VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":" VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidOrders_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"kailinteoo"},"content":" List\u003cJsonAdaptedOrder\u003e invalidOrders \u003d new ArrayList\u003c\u003e(VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":" invalidOrders.add(new JsonAdaptedOrder(INVALID_ORDERID, INVALID_ORDERDATE, INVALID_DEADLINE, INVALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":" INVALID_REMARK, INVALID_STATUS));","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, invalidOrders);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"kailinteoo":32,"-":101}},{"path":"src/test/java/seedu/address/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-07-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2019-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2019-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A set of assertion methods useful for writing tests.","lastModifiedDate":"2017-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Assert {","lastModifiedDate":"2017-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception.","lastModifiedDate":"2019-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This is a wrapper method that invokes {@link Assertions#assertThrows(Class, Executable)}, to maintain consistency","lastModifiedDate":"2019-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * with our custom {@link #assertThrows(Class, String, Executable)} method.","lastModifiedDate":"2019-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * To standardize API calls in this project, users should use this method instead of","lastModifiedDate":"2019-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * {@link Assertions#assertThrows(Class, Executable)}.","lastModifiedDate":"2019-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception with the {@code expectedMessage}.","lastModifiedDate":"2019-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * If there\u0027s no need for the verification of the exception\u0027s error message, call","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@link #assertThrows(Class, Executable)} instead.","lastModifiedDate":"2019-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see #assertThrows(Class, Executable)","lastModifiedDate":"2019-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-02-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, String expectedMessage,","lastModifiedDate":"2019-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" * Asserts that executing the {@code executable} throws an exception of the {@code expectedType}.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" * @param expectedType The class of the Exception expected to be thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":" * @param executable The executable code block that is expected to throw the exception.","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" public static void assertThrowsExactly(Class\u003c? extends Throwable\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" expectedType, Executable executable, String expectedMessage) {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" Assertions.assertTrue(expectedType.isInstance(thrownException),","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" \"Expected thrown exception to be exactly of type \"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" + expectedType.getSimpleName()","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" + \" but was \" + thrownException.getClass().getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"Jaspertzx":15,"-":34}},{"path":"src/test/java/seedu/address/testutil/EditOrderDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":" * A utility class to help with building EditOrderDescriptor objects.","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"public class EditOrderDescriptorBuilder {","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" private EditOrderDescriptor descriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder() {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" descriptor \u003d new EditOrderDescriptor();","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder(EditOrderDescriptor descriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":" this.descriptor \u003d new EditOrderDescriptor(descriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":" * Returns an {@code EditOrderDescriptor} with fields containing {@code order}\u0027s details.","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder(Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":" descriptor \u003d new EditOrderDescriptor();","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" descriptor.setOrderDate(order.getOrderDate());","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" descriptor.setDeadline(order.getDeadline());","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" descriptor.setPrice(order.getPrice());","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" descriptor.setRemark(order.getRemark());","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":" descriptor.setStatus(order.getStatus());","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code OrderDate} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withOrderDate(String orderDate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" descriptor.setOrderDate(new OrderDate(orderDate));","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code Deadline} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withDeadline(String deadline) {","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" descriptor.setDeadline(new Deadline(deadline));","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code Price} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withPrice(String price) {","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" descriptor.setPrice(new Price(price));","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code Remark} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"shavonneg"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code Status} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withStatus(String status) {","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"shavonneg"},"content":" descriptor.setStatus(new Status(status));","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptor build() {","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"shavonneg"},"content":" return descriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"shavonneg":81}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"rertyy":1,"Jaspertzx":1,"-":85}},{"path":"src/test/java/seedu/address/testutil/OrderBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * A utility class to help with building Order objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":"public class OrderBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" // Solution below adapted from https://stackoverflow.com/a/29059595","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_ORDER_ID \u003d \"58b76419-f9ff-4aa1-8e70-604993fc1a20\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_ORDER_DATE \u003d \"10-10-2024 00:00\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_DEADLINE \u003d \"11-10-2024 23:59\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" public static final String DEFAULT_PRICE \u003d \"100\";","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_REMARK \u003d \"No remark\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_STATUS \u003d \"PENDING\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" private OrderId orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" private OrderDate orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" private Deadline deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" private Price price;","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" private Remark remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" private Status status;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" private Person person;","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" * Creates a {@code OrderBuilder} with the default details.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" public OrderBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" orderId \u003d new OrderId(DEFAULT_ORDER_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" orderDate \u003d new OrderDate(DEFAULT_ORDER_DATE);","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" deadline \u003d new Deadline(DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" price \u003d new Price(DEFAULT_PRICE);","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" status \u003d new Status(DEFAULT_STATUS);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" * Initializes the OrderBuilder with the data of {@code orderToCopy}.","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" public OrderBuilder(Order orderToCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" orderId \u003d orderToCopy.getOrderId();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" orderDate \u003d orderToCopy.getOrderDate();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" deadline \u003d orderToCopy.getDeadline();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":" price \u003d orderToCopy.getPrice();","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" remark \u003d orderToCopy.getRemark();","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" status \u003d orderToCopy.getStatus();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" person \u003d orderToCopy.getPerson();","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" * Sets the {@code OrderId} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withOrderId(String orderId) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" this.orderId \u003d new OrderId(orderId);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" * Sets the {@code OrderDate} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withOrderDate(String orderDate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" this.orderDate \u003d new OrderDate(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":" * Sets the {@code Deadline} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withDeadline(String deadline) {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"rertyy"},"content":" this.deadline \u003d new Deadline(deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":" * Sets the {@code Price} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-28"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":" public OrderBuilder withPrice(String price) {","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":" this.price \u003d new Price(price);","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":" * Sets the {@code Remark} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"rertyy"},"content":" * Sets the {@code Status} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withStatus(String status) {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"rertyy"},"content":" this.status \u003d new Status(status);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"rertyy"},"content":" * Sets the {@code Person} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withPerson(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"rertyy"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":115,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"rertyy"},"content":" * Builds the Order object.","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":121,"author":{"gitId":"rertyy"},"content":" public Order build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"rertyy"},"content":" return new Order(orderId, orderDate, deadline, price, remark, status, person);","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":8,"rertyy":117}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"Jaspertzx"},"content":" private Set\u003cOrder\u003e orders;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" orders \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" orders \u003d new HashSet\u003c\u003e(personToCopy.getOrders());","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" return new Person(name, phone, email, address, tags, orders);","lastModifiedDate":"2024-03-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Jaspertzx":5,"-":95}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Jaspertzx":2,"-":60}},{"path":"src/test/java/seedu/address/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" * A class used to test serialization and deserialization.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class SerializableTestClass {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String JSON_STRING_REPRESENTATION \u003d String.format(\"{%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \" \\\"name\\\" : \\\"This is a test class\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \" \\\"listOfLocalDateTimes\\\" : \"","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"[ \\\"-999999999-01-01T00:00:00\\\", \\\"+999999999-12-31T23:59:59.999999999\\\", \"","lastModifiedDate":"2016-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"\\\"0001-01-01T01:01:00\\\" ],%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \" \\\"mapOfIntegerToString\\\" : {%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \" \\\"1\\\" : \\\"One\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \" \\\"2\\\" : \\\"Two\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" \\\"3\\\" : \\\"Three\\\"%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" }%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"}\");","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String NAME_TEST_VALUE \u003d \"This is a test class\";","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private String name;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private List\u003cLocalDateTime\u003e listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private HashMap\u003cInteger, String\u003e mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getNameTestValue() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return NAME_TEST_VALUE;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static List\u003cLocalDateTime\u003e getListTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" List\u003cLocalDateTime\u003e listOfLocalDateTimes \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MIN);","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MAX);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.of(1, 1, 1, 1, 1));","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static HashMap\u003cInteger, String\u003e getHashMapTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" HashMap\u003cInteger, String\u003e mapOfIntegerToString \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(1, \"One\");","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(2, \"Two\");","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(3, \"Three\");","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d getNameTestValue();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" listOfLocalDateTimes \u003d getListTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" mapOfIntegerToString \u003d getHashMapTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getName() {","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public List\u003cLocalDateTime\u003e getListOfLocalDateTimes() {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public HashMap\u003cInteger, String\u003e getMapOfIntegerToString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":1,"-":71}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":" public static final Index INDEX_FIRST_ORDER \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":" public static final Index INDEX_SECOND_ORDER \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"shavonneg":3,"-":12}},{"path":"src/test/java/seedu/address/testutil/TypicalOrders.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" * A utility class containing a list of {@code Order} objects to be used in tests.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"public class TypicalOrders {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" public static final Order ROSES \u003d new OrderBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" .withOrderId(\"69c25c8d-9e34-4d9d-8bad-e378f203ae73\")","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" .withOrderDate(\"01-03-2024 23:59\")","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" .withDeadline(\"01-04-2024 23:59\")","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":" .withPrice(\"10\")","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" .withRemark(\"No remark\")","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" .withStatus(\"CANCELED\")","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" .withPerson(TypicalPersons.ALICE)","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" public static final Order LILIES \u003d new OrderBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" .withOrderId(\"69c25c8d-9e34-4d9d-8bad-e378f203ae74\")","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" .withOrderDate(\"23-03-2024 11:59\")","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" .withDeadline(\"05-12-2024 20:57\")","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" .withPrice(\"10\")","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" .withRemark(\"Important\")","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" .withStatus(\"PENDING\")","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" .withPerson(TypicalPersons.BOB)","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" private TypicalOrders() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" } // prevents instantiation","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":2,"rertyy":28}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T09-2/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T09-2/tp/graph/badge.svg?token\u003dBMICX593IT)](https://codecov.io/gh/AY2324S2-CS2103T-T09-2/tp)","lastModifiedDate":"2024-02-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"# Introduction","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"Welcome to BookKeeper, your solution for efficient customer management for **small business owners in the floral","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"industry**. \u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"This application is designed to streamline customer lists and enhance productivity for individuals operating","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"small businesses with limited resources and manpower. With BookKeeper, you can easily manage customer information, track","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"orders, and personalize your customer interactions, all through a user-friendly command-line interface.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":"For the detailed documentation of this project, see","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"the [BookKeeper website](https://ay2324s2-cs2103t-t09-2.github.io/tp/).","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"# Acknowledgement","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":"The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"contact details.","lastModifiedDate":"2024-02-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":"* It is written in OOP fashion.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":"* It provides a reasonably well-written code base bigger (around 6 KLoC)","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":"* It comes with a reasonable level of user and developer documentation.","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"This project is based on the AddressBook Level-3 project and is a part of","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"the [se-education.org](https://se-education.org/addressbook-level3) initiative.","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":"# Features","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":"## Customer Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":"### 1. Add Customer","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":"Adds a customer to the customer\u0027s storage.","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"Example: `add \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"Successfully added \u003ccustomer name\u003e to your list!","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":"### 2. Delete Customer","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":"Delete selected customer from the customer\u0027s storage.","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":"Example: `delete \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":"Successfully removed \u003ccustomer name\u003e from the list","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":"### 3. Edit Customer","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":"Edit selected customer information by adding more information such as Age, Phone Number, Past purchased record,","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":"Birthday, Address.","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":"Example: `edit \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":"Successfully edit \u003ccustomer name\u003e information","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":"### 4. VIP Customer","lastModifiedDate":"2024-03-06"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":"Indicating that this specific customer is important.","lastModifiedDate":"2024-03-06"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":"Example: `vip \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"Successfully set \u003ccustomer name\u003e as VIP","lastModifiedDate":"2024-03-06"},{"lineNumber":82,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":"## Order Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":"### 1. Add Order","lastModifiedDate":"2024-03-06"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":"Adds an order into the order\u0027s storage, together with the customer name.","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":"Example: `add \u003ccustomer name, order, due date\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":"An order has been added for \u003ccustomer name\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":"### 2. Delete Order","lastModifiedDate":"2024-03-06"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":"Delete order of the specific customer.","lastModifiedDate":"2024-03-06"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":102,"author":{"gitId":"kailinteoo"},"content":"Example: `delete \u003ccustomer name, order\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":105,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"kailinteoo"},"content":"\u003ccustomer name\u003e order of \u003c(order item)\u003e has been cancelled","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":110,"author":{"gitId":"kailinteoo"},"content":"### 3. Edit Order","lastModifiedDate":"2024-03-06"},{"lineNumber":111,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"kailinteoo"},"content":"Edit the customer\u0027s order.","lastModifiedDate":"2024-03-06"},{"lineNumber":113,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":114,"author":{"gitId":"kailinteoo"},"content":"Example: `edit \u003ccustomer name, old order, new order\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":117,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":"Successfully edit \u003ccustomer name\u003e order","lastModifiedDate":"2024-03-06"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"### 4. Prioritize Order","lastModifiedDate":"2024-03-06"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":"Prioritize the customer\u0027s order.","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":"Example: `prioritize \u003ccustomer name, order\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":129,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":"Successfully prioritized \u003ccustomer name, order\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":132,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":133,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":134,"author":{"gitId":"kailinteoo"},"content":"## Viewing Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":135,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":136,"author":{"gitId":"kailinteoo"},"content":"### 1. View Customer Detail","lastModifiedDate":"2024-03-06"},{"lineNumber":137,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"kailinteoo"},"content":"View customer information, such as Name, Age, Phone Number, Past purchase record, Birthday, Address.","lastModifiedDate":"2024-03-06"},{"lineNumber":139,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":140,"author":{"gitId":"kailinteoo"},"content":"Example: `view \u003ccustomer name\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":141,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":142,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":143,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":145,"author":{"gitId":"kailinteoo"},"content":"Jasper Tan info: [...]","lastModifiedDate":"2024-03-06"},{"lineNumber":146,"author":{"gitId":"kailinteoo"},"content":"Tan Qing Yong info : [...]","lastModifiedDate":"2024-03-06"},{"lineNumber":147,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":148,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":149,"author":{"gitId":"kailinteoo"},"content":"### 2. View Order Detail","lastModifiedDate":"2024-03-06"},{"lineNumber":150,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"kailinteoo"},"content":"View Order information, such as order by when, who order, quantity.","lastModifiedDate":"2024-03-06"},{"lineNumber":152,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":153,"author":{"gitId":"kailinteoo"},"content":"Example: `view \u003corder\u003e`","lastModifiedDate":"2024-03-06"},{"lineNumber":154,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":155,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":156,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":158,"author":{"gitId":"kailinteoo"},"content":"Petite Bouquet: ","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"kailinteoo"},"content":"1. total of \u003cquantity\u003e order by \u003ccustomer name\u003e on \u003cdate\u003e ","lastModifiedDate":"2024-03-06"},{"lineNumber":160,"author":{"gitId":"kailinteoo"},"content":"2. total of \u003cquantity\u003e order by \u003ccustomer name\u003e on \u003cdate\u003e ","lastModifiedDate":"2024-03-06"},{"lineNumber":161,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":162,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":163,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":164,"author":{"gitId":"kailinteoo"},"content":"### 3. View Statistics","lastModifiedDate":"2024-03-06"},{"lineNumber":165,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"kailinteoo"},"content":"Show how many orders has been completed.","lastModifiedDate":"2024-03-06"},{"lineNumber":167,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":168,"author":{"gitId":"kailinteoo"},"content":"Example: `stat`","lastModifiedDate":"2024-03-06"},{"lineNumber":169,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":170,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":171,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":173,"author":{"gitId":"kailinteoo"},"content":"\u003ca list of stat\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":174,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":175,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":176,"author":{"gitId":"kailinteoo"},"content":"### 4. View Ranking","lastModifiedDate":"2024-03-06"},{"lineNumber":177,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"kailinteoo"},"content":"View which florist sell the best and total sell quantity.","lastModifiedDate":"2024-03-14"},{"lineNumber":179,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":180,"author":{"gitId":"kailinteoo"},"content":"Example: `view ranking`","lastModifiedDate":"2024-03-06"},{"lineNumber":181,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":182,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":183,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":185,"author":{"gitId":"kailinteoo"},"content":"Top 1: Preserved Hydrangea Bouquet, total sold of \u003cquantity\u003e ","lastModifiedDate":"2024-03-14"},{"lineNumber":186,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":187,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":188,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":189,"author":{"gitId":"kailinteoo"},"content":"## Sorting Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":190,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":191,"author":{"gitId":"kailinteoo"},"content":"### 1. Sort Order by Date","lastModifiedDate":"2024-03-06"},{"lineNumber":192,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":193,"author":{"gitId":"kailinteoo"},"content":"Sort when the order is due based on the date (excluding prioritize order).","lastModifiedDate":"2024-03-06"},{"lineNumber":194,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":195,"author":{"gitId":"kailinteoo"},"content":"Example: `sort orderdate`","lastModifiedDate":"2024-03-06"},{"lineNumber":196,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":197,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":198,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":199,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":200,"author":{"gitId":"kailinteoo"},"content":"1. Jasper Tan, Eternal Love Preserved Red Rose Flower Bouquet, 24 Feb 2024 ","lastModifiedDate":"2024-03-14"},{"lineNumber":201,"author":{"gitId":"kailinteoo"},"content":"2. Tan Qin Yong, Mocha Romance Bouquet, 1 Apr 2024 ","lastModifiedDate":"2024-03-14"},{"lineNumber":202,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":203,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":204,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":205,"author":{"gitId":"kailinteoo"},"content":"### 2. Sort Order by order type","lastModifiedDate":"2024-03-06"},{"lineNumber":206,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":207,"author":{"gitId":"kailinteoo"},"content":"Sort depending on what kind of order.","lastModifiedDate":"2024-03-06"},{"lineNumber":208,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":209,"author":{"gitId":"kailinteoo"},"content":"Example: `sort ordertype`","lastModifiedDate":"2024-03-06"},{"lineNumber":210,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":211,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":212,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":213,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":214,"author":{"gitId":"kailinteoo"},"content":"Mocha Romance Bouquet:","lastModifiedDate":"2024-03-14"},{"lineNumber":215,"author":{"gitId":"kailinteoo"},"content":"1. Jasper Tan, 24 Feb 2024 ","lastModifiedDate":"2024-03-06"},{"lineNumber":216,"author":{"gitId":"kailinteoo"},"content":"2. QinYong, 1 Apr 2024 ","lastModifiedDate":"2024-03-06"},{"lineNumber":217,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":218,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":219,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":220,"author":{"gitId":"kailinteoo"},"content":"### 3. Sort Customer name by alphabetical order","lastModifiedDate":"2024-03-06"},{"lineNumber":221,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":222,"author":{"gitId":"kailinteoo"},"content":"sort the customer list.","lastModifiedDate":"2024-03-06"},{"lineNumber":223,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":224,"author":{"gitId":"kailinteoo"},"content":"Example: `sort customer`","lastModifiedDate":"2024-03-06"},{"lineNumber":225,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":226,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":227,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":228,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":229,"author":{"gitId":"kailinteoo"},"content":"1. Jasper Tan","lastModifiedDate":"2024-03-06"},{"lineNumber":230,"author":{"gitId":"kailinteoo"},"content":"2. Tan Qing Yong ","lastModifiedDate":"2024-03-06"},{"lineNumber":231,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":232,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":233,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":234,"author":{"gitId":"kailinteoo"},"content":"## Notification/ Reminder/ Deadline/ Progress Tracker","lastModifiedDate":"2024-03-06"},{"lineNumber":235,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":236,"author":{"gitId":"kailinteoo"},"content":"### 1. Deadline approaching soon for an order (within a week)","lastModifiedDate":"2024-03-06"},{"lineNumber":237,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":238,"author":{"gitId":"kailinteoo"},"content":"Send notification when order is due within a week.","lastModifiedDate":"2024-03-06"},{"lineNumber":239,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":240,"author":{"gitId":"kailinteoo"},"content":"### 2. Progress Bar","lastModifiedDate":"2024-03-06"},{"lineNumber":241,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":242,"author":{"gitId":"kailinteoo"},"content":"Show how many order left to be done.","lastModifiedDate":"2024-03-06"},{"lineNumber":243,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":244,"author":{"gitId":"kailinteoo"},"content":"Example: `progress`","lastModifiedDate":"2024-03-06"},{"lineNumber":245,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":246,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":247,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":248,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":249,"author":{"gitId":"kailinteoo"},"content":"Left \u003cquantity\u003e ","lastModifiedDate":"2024-03-06"},{"lineNumber":250,"author":{"gitId":"kailinteoo"},"content":"Done \u003cquantity\u003e ","lastModifiedDate":"2024-03-06"},{"lineNumber":251,"author":{"gitId":"kailinteoo"},"content":"Pending \u003cQuantity\u003e\"","lastModifiedDate":"2024-03-06"},{"lineNumber":252,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":253,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":254,"author":{"gitId":"kailinteoo"},"content":"## Usage Help","lastModifiedDate":"2024-03-06"},{"lineNumber":255,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":256,"author":{"gitId":"kailinteoo"},"content":"### 1. Autocomplete","lastModifiedDate":"2024-03-06"},{"lineNumber":257,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":258,"author":{"gitId":"kailinteoo"},"content":"Show all possible next commands based on currently keyed in values.","lastModifiedDate":"2024-03-06"},{"lineNumber":259,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":260,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":261,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":262,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":263,"author":{"gitId":"kailinteoo"},"content":"/modi(fy)","lastModifiedDate":"2024-03-06"},{"lineNumber":264,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":265,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":266,"author":{"gitId":"kailinteoo"},"content":"### 2. User manual","lastModifiedDate":"2024-03-06"},{"lineNumber":267,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":268,"author":{"gitId":"kailinteoo"},"content":"Shows a list of commands that can be used.","lastModifiedDate":"2024-03-06"},{"lineNumber":269,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":270,"author":{"gitId":"kailinteoo"},"content":"Example: `help`","lastModifiedDate":"2024-03-06"},{"lineNumber":271,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":272,"author":{"gitId":"kailinteoo"},"content":"Expected output:","lastModifiedDate":"2024-03-06"},{"lineNumber":273,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":274,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":275,"author":{"gitId":"kailinteoo"},"content":"Commands list: ","lastModifiedDate":"2024-03-06"},{"lineNumber":276,"author":{"gitId":"kailinteoo"},"content":"1. add. Adds a new customer to the list. Example: \"add...\" ","lastModifiedDate":"2024-03-06"},{"lineNumber":277,"author":{"gitId":"kailinteoo"},"content":"[...]","lastModifiedDate":"2024-03-06"},{"lineNumber":278,"author":{"gitId":"kailinteoo"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":279,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"kailinteoo":230,"rertyy":43,"-":6}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"run {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" archiveFileName \u003d \u0027bookkeeper.jar\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"rertyy":4,"Jaspertzx":1,"-":71}},{"path":"config/checkstyle/checkstyle.xml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2019-02-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2017-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c!-- Checks the ordering of import statements follow the rules that the default Eclipse formatter uses.","lastModifiedDate":"2017-01-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * It is a duplicate of another import. This is, when a class is imported more than once.","lastModifiedDate":"2017-01-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the java.lang package, e.g. importing java.lang.String.","lastModifiedDate":"2017-01-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-private, static, final fields against the expression \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" value\u003d\"Variable \u0027\u0027{0}\u0027\u0027 should be in ALL_CAPS (if it is a constant) or be private (otherwise).\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2017-01-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*(_[a-z][a-zA-Z0-9]+){0,2}$\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method parameters against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local final variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":155,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01"},{"lineNumber":156,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each variable declaration is in its own statement and on its own line. --\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2017-09-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17"},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2018-01-25"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" on the last non-blank line preceding the fallen-into case contains \u0027fall through\u0027 (or","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" value\u003d\"fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16"},{"lineNumber":233,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07"},{"lineNumber":237,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01"},{"lineNumber":241,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":242,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01"},{"lineNumber":243,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01"},{"lineNumber":244,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01"},{"lineNumber":245,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2017-04-01"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003c!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2017-01-16"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2017-04-03"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10"},{"lineNumber":276,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty loops e.g. for (int i \u003d 1; i \u003e 1; i++) {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2016-08-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the non-assignment type operator is at the next line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":313,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22"},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22"},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22"},{"lineNumber":316,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":317,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22"},{"lineNumber":318,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22"},{"lineNumber":319,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":320,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR,","lastModifiedDate":"2017-05-22"},{"lineNumber":321,"author":{"gitId":"-"},"content":" GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, LITERAL_INSTANCEOF, TYPE_EXTENSION_AND, METHOD_REF\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":325,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the assignment type operator is at the previous end of line in a line wrap.","lastModifiedDate":"2017-05-22"},{"lineNumber":326,"author":{"gitId":"-"},"content":" This includes \"\u003d\", \"/\u003d\", \"+\u003d\", \"-\u003d\", \"*\u003d\", \"%\u003d\", \"\u003e\u003e\u003d\", \"\u003e\u003e\u003e\u003d\", \"\u003c\u003c\u003d\", \"^\u003d\", \"\u0026\u003d\".","lastModifiedDate":"2017-05-22"},{"lineNumber":327,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN,","lastModifiedDate":"2017-05-22"},{"lineNumber":329,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \",\", \"]\", \"[\", \"...\", \";\", \"(\" is at the previous end of line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14"},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":362,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":365,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15"},{"lineNumber":366,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15"},{"lineNumber":367,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15"},{"lineNumber":368,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":370,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":374,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":375,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15"},{"lineNumber":376,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15"},{"lineNumber":377,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":379,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15"},{"lineNumber":380,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":381,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":382,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15"},{"lineNumber":384,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20"},{"lineNumber":385,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20"},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":388,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all block-tags are ordered correctly. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Javadoc block tags appear only at the beginning of the line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":" \u003c!-- Checks that for block tags, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":411,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every public method (excluding getters, setters and constructors). --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27"},{"lineNumber":423,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public method (excluding getters, setters and constructors) has a header comment. --\u003e","lastModifiedDate":"2022-05-29"},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10"},{"lineNumber":428,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20"},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":433,"author":{"gitId":"rertyy"},"content":" \u003c!-- Other Javadoc checks --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":434,"author":{"gitId":"rertyy"},"content":" \u003cmodule name\u003d\"JavadocStyleCheck\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":435,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":436,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":437,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":3,"-":434}},{"path":"config/pre-commit-setup/add_hook.bat","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"@echo off","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"SETLOCAL EnableDelayedExpansion","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"REM Define relative path to .git/hooks","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"SET \"hooksDir\u003d../../.git/hooks\"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"REM Check if .git/hooks directory exists, if not create it","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"IF NOT EXIST \"!hooksDir!\" (","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" mkdir \"!hooksDir!\"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" echo Created directory: !hooksDir!","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":")","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"REM Check if pre-commit hook already exists","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"IF EXIST \"!hooksDir!/pre-commit\" (","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" REM Backup existing pre-commit hook","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" copy /Y \"!hooksDir!/pre-commit\" \"!hooksDir!/pre-commit.bak\"","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" echo Existing pre-commit hook backed up to: !hooksDir!/pre-commit.bak","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":")","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"REM Copy the new pre-commit hook","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"copy /Y \"pre-commit\" \"!hooksDir!/pre-commit\"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"echo New pre-commit hook setup complete.","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"rertyy":23}},{"path":"config/pre-commit-setup/add_hook.sh","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"#!/bin/bash","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"# Define relative path to .git/hooks","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"hooksDir\u003d\"../../.git/hooks\"","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"# Check if .git/hooks directory exists, if not create it","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"if [ ! -d \"$hooksDir\" ]; then","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" mkdir -p \"$hooksDir\"","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" echo \"Created directory: $hooksDir\"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"fi","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"# Check if pre-commit hook already exists","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"if [ -f \"$hooksDir/pre-commit\" ]; then","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" # Backup existing pre-commit hook","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" cp \"$hooksDir/pre-commit\" \"$hooksDir/pre-commit.bak\"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" echo \"Existing pre-commit hook backed up to: $hooksDir/pre-commit.bak\"","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"fi","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"# Copy the new pre-commit hook","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"cp \"pre-commit\" \"$hooksDir/pre-commit\"","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"echo \"New pre-commit hook setup complete.\"","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"rertyy":22}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"# About Us:","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"Welcome to BookKeeper, your trusted companion in clientele management. We understand the","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"challenges faced by entrepreneurs like you. **Passionate** about sharing beautiful flowers.","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"BookKeeper is here to simplify your workflow, empower your business, and help you thrive, so you can spend more time","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"sharing your love for flowers.","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"## Product Name: BookKeeper","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"## Target Users","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"Our target users are florists in the floral industry who are looking for efficient ways to manage their","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"customer lists and streamline their customer management processes. These individuals are constrained by time due to","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"their perishable flowers. With limited resources and manpower, it is essential for them to optimize their workflows and","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":"maximize productivity.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":"## Purpose","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"In the bustling world of a small business, time is precious. BookKeeper aims to provide a seamless solution for managing","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"customer relationships, allowing you to focus on what matters most - selling flowers to others who love them just as","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"much as you. Our platform offers a user-friendly interface and powerful features to streamline your workflow, saving","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"you time and effort.","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":"## Unique Selling Point","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":"### Centralized Platform","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":"Say goodbye to scattered customer lists and spreadsheets. BookKeeper offers a centralized platform to store and search","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":"for clients, keeping all your important information in one place.","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":"### Efficiency","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":"With a command-line interface, our application is faster and more efficient than traditional methods like CRMs or","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":"Excel sheets. Spend less time navigating complex menus and more time serving your customers.","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":"### Tailored for Crochet Businesses","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"We understand the unique needs of florists, which is why our platform offers customizable fields, customizable","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"tags, and integration with e-commerce platforms.","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":"### Cost-effective","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":"BookKeeper is designed to be cost-effective and easy to use, perfect for florists with limited time and resources.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":"Maximize productivity without breaking the bank.","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":"## Value Proposition","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":"For small business owners launching services, organizing customer lists can be challenging. Our address book offers a","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":"centralized platform to store and search for clients, streamlining customer management. With a command-line interface,","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":"our application is faster and more efficient than inputting data into other systems like CRMs or Microsoft Excel.","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":"## Team Information","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":"You can reach us at the email ","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":"`jaspertan@u.nus.edu` `e0967851@u.nus.edu` `ian.tung@u.nus.edu` `e0959354@u.nus.edu`","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":"## Project team","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":"### Jasper Tan Zu Xiang","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":"\u003cimg src\u003d\"images/jaspertzx.png\" width\u003d\"200px\" height\u003d\"225px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":"[[github](https://github.com/Jaspertzx)]","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":"* Role: Front-End Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":"* Responsibilities: Specialize in creating the user interface and user experience of the BookKeeper application. Ensure","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" that the application is visually appealing, responsive, and easy to navigate for users.","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":"### Goh Ying Xuan, Shavonne","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":"\u003cimg src\u003d\"images/shavonneg.png\" width\u003d\"200px\" height\u003d\"225px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":"[[github](http://github.com/shavonneg)]","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":"* Role: UI/UX Designer","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":"* Responsibilities: Creating a seamless and intuitive user experience for the BookKeeper application. Conduct user","lastModifiedDate":"2024-03-06"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":" research, create wireframes and prototypes, and design user interfaces that are visually appealing and easy to use.","lastModifiedDate":"2024-03-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"### Tung Zhi Yong, Ian","lastModifiedDate":"2024-03-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":"\u003cimg src\u003d\"images/rertyy.png\" width\u003d\"200px\" height\u003d\"225px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":"[[github](http://github.com/rertyy)]","lastModifiedDate":"2024-03-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":"* Role: Back-End Developer","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":"* Responsibilities: Specialise in handling the logic and data behind the scenes of the BookKeeper application. From","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":" interfaces.","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":"### Kailin Teo","lastModifiedDate":"2024-03-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":"\u003cimg src\u003d\"images/kailinteoo.png\" width\u003d\"200px\" height\u003d\"225px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":"[[github](http://github.com/kailinteoo)]","lastModifiedDate":"2024-03-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":"* Role: Back-End Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":"* Responsibilities: Focus on building the server-side components of the BookKeeper application. Handle tasks such as","lastModifiedDate":"2024-03-06"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" implementing business logic, managing the local storage, and ensuring the security and scalability of the application. ","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"kailinteoo":49,"rertyy":24,"-":26}},{"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":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" original source as well}","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"and edit diagrams.","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":"**`Main`** (consisting of","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":"classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":"and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":"in charge of the app launch and shut down.","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"the command `delete 1`.","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" API `interface` mentioned in the previous point).","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":"The **API** of this component is specified","lastModifiedDate":"2024-03-02"},{"lineNumber":85,"author":{"gitId":"rertyy"},"content":"in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":"The UI consists of a `MainWindow` that is made up of parts","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":"e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`,","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":"inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the","lastModifiedDate":"2024-03-02"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":"visible GUI.","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-03-02"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":"are in the `src/main/resources/view` folder. For example, the layout of","lastModifiedDate":"2024-03-02"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":"the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":"is specified","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":"in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"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":104,"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":105,"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":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"rertyy"},"content":"**API","lastModifiedDate":"2024-03-02"},{"lineNumber":110,"author":{"gitId":"rertyy"},"content":"** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"rertyy"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-03-02"},{"lineNumber":117,"author":{"gitId":"rertyy"},"content":"call as an example.","lastModifiedDate":"2024-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"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":122,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Jaspertzx"},"content":"How the Logic component works:","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"Jaspertzx"},"content":"1. When Logic is invoked to execute a command, it delegates the command to an AddressBookParser object. This object then","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"rertyy"},"content":" creates a parser corresponding to the command type (e.g., DeleteCommandParser) and utilizes it to interpret the","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"rertyy"},"content":" command.","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"Jaspertzx"},"content":"2. This process generates a Command object (to be more specific, an instance of one of its subclasses, e.g.,","lastModifiedDate":"2024-03-26"},{"lineNumber":130,"author":{"gitId":"Jaspertzx"},"content":" DeleteCommand) which is then executed by the LogicManager.","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"Jaspertzx"},"content":"3. During execution, the command can interact with the Model (e.g., to delete a Client or manage Order details).\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"Jaspertzx"},"content":" While this interaction is depicted as a singular step in the above diagram for the sake of simplicity, the actual","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"rertyy"},"content":" implementation may involve multiple interactions (between the command object and the Model) to accomplish the","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"rertyy"},"content":" intended task.","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"Jaspertzx"},"content":"4. The outcome of the command\u0027s execution is encapsulated within a CommandResult object, which is then returned from","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"rertyy"},"content":" Logic. Additional classes in Logic (not shown in the class diagram above) that are utilized for parsing a user","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"rertyy"},"content":" command:","lastModifiedDate":"2024-03-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"Jaspertzx"},"content":"#### Implementation Details","lastModifiedDate":"2024-03-26"},{"lineNumber":142,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"Jaspertzx"},"content":"To implement the new Order Logic, a new package has to be created within the commands package to cater to the order type","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"Jaspertzx"},"content":"commands. The key changes would be:","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"Jaspertzx"},"content":"- Creation of new parser class:","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" - Created a `AddOrderCommandParser` class to create the respective `Command` object by parsing the user input. This","lastModifiedDate":"2024-03-26"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" flow is as intended, and will allow us to get the required parameters typed by the user.","lastModifiedDate":"2024-03-26"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" - Created a `DeleteOrderCommandParser` class to create the respective `Command` object by parsing the user input.","lastModifiedDate":"2024-03-26"},{"lineNumber":150,"author":{"gitId":"Jaspertzx"},"content":" This flow is as intended, and will allow us to get index of the Order object in the `ObservableList`.","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"Jaspertzx"},"content":"- Creation of new classes:","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"Jaspertzx"},"content":" - Created a `AddOrderCommand` class to cater to order creation inputs by the user. This will have the required logic","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"rertyy"},"content":" to return the appropriate `Command` to be executed in the main logic.","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"rertyy"},"content":" - Created a `DeleteOrderCommand` class to cater to delete orders by their index in their `ObservableList` class.","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"rertyy"},"content":" This will allow the users to delete by index instead of the UUID. The `DeleteOrderCommand` first checks","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"rertyy"},"content":" the `ObservableList` by index to determine if the index is valid, then checks which `Person` the order belongs to.","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"rertyy"},"content":" This allows the modification of both `Person`s and `Order`s at the same time.","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"rertyy"},"content":" - Created a `EditOrderCommand` class to cater to allow editing inputs by the user. The logic is similar to that used","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"rertyy"},"content":" by `DeleteOrderCommand`.","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"rertyy"},"content":"- Update `Model` and `ModelManager` to provide methods to support the new classes. such as creating the","lastModifiedDate":"2024-03-26"},{"lineNumber":161,"author":{"gitId":"rertyy"},"content":" new `ObservableList` object to","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"Jaspertzx"},"content":" update the JavaFX element in the UI.","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"Jaspertzx"},"content":"- JUnit Test: To verify that the classes and methods behave as expected throughout the development phases, and to","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"Jaspertzx"},"content":" ensure that future updates do not alter their behavior.","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"Jaspertzx"},"content":"#### Why is it implemented this way:","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"rertyy"},"content":"It was done in this manner to adhere to the following design principles:","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"rertyy"},"content":"- Separation of Concerns: By delegating specific responsibilities to specialized classes (like `AddressBookParser`,","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"rertyy"},"content":" AddOrderCommandParser, etc.), the design adheres to the principle of separation of concerns. This means each part of","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"rertyy"},"content":" the","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"Jaspertzx"},"content":" system has a clear responsibility, reducing complexity and making the codebase easier to understand and maintain.","lastModifiedDate":"2024-03-26"},{"lineNumber":174,"author":{"gitId":"rertyy"},"content":"- Provide Extensibility: With a modular structure, adding new functionality (like future order implementations)","lastModifiedDate":"2024-03-26"},{"lineNumber":175,"author":{"gitId":"rertyy"},"content":" involves creating new classes and modifying existing ones minimally. This approach makes the system more extendable,","lastModifiedDate":"2024-03-26"},{"lineNumber":176,"author":{"gitId":"rertyy"},"content":" as seen with the introduction of new parser and command classes for handling orders.","lastModifiedDate":"2024-03-26"},{"lineNumber":177,"author":{"gitId":"rertyy"},"content":"- Enhances Frontend Integration: By redefining how the `ObservableList` is managed within the `ModelManager` for","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"rertyy"},"content":" Orders, we enhance our capability to directly manipulate the `OrderList` view in JavaFX. This adjustment in the","lastModifiedDate":"2024-03-26"},{"lineNumber":179,"author":{"gitId":"rertyy"},"content":" ModelManager class creates a seamless and responsive interaction between the backend data structures and the frontend","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"rertyy"},"content":" user interface.","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"Jaspertzx"},"content":"By doing so, I am able to emphasize on the clear separation of duties among components and allowing flexibility to add","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"Jaspertzx"},"content":"new features with minimal disruption This strategy not only facilitates easier maintenance and scalability but also","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"Jaspertzx"},"content":"enhances our future ability to develop and create requirements or changes in functionality without affecting much of the","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"Jaspertzx"},"content":"codebase.","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":189,"author":{"gitId":"rertyy"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-03-02"},{"lineNumber":190,"author":{"gitId":"rertyy"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-03-02"},{"lineNumber":191,"author":{"gitId":"rertyy"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as","lastModifiedDate":"2024-03-02"},{"lineNumber":192,"author":{"gitId":"rertyy"},"content":" a `Command` object.","lastModifiedDate":"2024-03-02"},{"lineNumber":193,"author":{"gitId":"rertyy"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-03-02"},{"lineNumber":194,"author":{"gitId":"rertyy"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-02"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":198,"author":{"gitId":"rertyy"},"content":"**API","lastModifiedDate":"2024-03-02"},{"lineNumber":199,"author":{"gitId":"rertyy"},"content":"** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"rertyy"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"682\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"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":207,"author":{"gitId":"rertyy"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-02"},{"lineNumber":208,"author":{"gitId":"rertyy"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-02"},{"lineNumber":209,"author":{"gitId":"rertyy"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-02"},{"lineNumber":210,"author":{"gitId":"rertyy"},"content":"* stores the currently \u0027selected\u0027 `Order` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"rertyy"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cOrder\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"rertyy"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"rertyy"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as","lastModifiedDate":"2024-03-02"},{"lineNumber":214,"author":{"gitId":"rertyy"},"content":" a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-02"},{"lineNumber":215,"author":{"gitId":"rertyy"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-03-02"},{"lineNumber":216,"author":{"gitId":"rertyy"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-03-02"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":218,"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":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"rertyy"},"content":"**API","lastModifiedDate":"2024-03-02"},{"lineNumber":227,"author":{"gitId":"rertyy"},"content":"** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-02"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"kailinteoo"},"content":"Below is an updated UML class diagram illustrating the relationships and interactions among the various storage-related","lastModifiedDate":"2024-03-26"},{"lineNumber":230,"author":{"gitId":"kailinteoo"},"content":"classes:","lastModifiedDate":"2024-03-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"kailinteoo"},"content":"The `Storage` component of our application is responsible for handling the reading and writing of data to and from","lastModifiedDate":"2024-03-26"},{"lineNumber":235,"author":{"gitId":"kailinteoo"},"content":"external storage sources.","lastModifiedDate":"2024-03-26"},{"lineNumber":236,"author":{"gitId":"kailinteoo"},"content":"This includes functionalities such as saving and retrieving addressbook data and user preferences.","lastModifiedDate":"2024-03-26"},{"lineNumber":237,"author":{"gitId":"kailinteoo"},"content":"In this section, we will delve into the recent enhancements made to the `Storage` component, focusing on the","lastModifiedDate":"2024-03-26"},{"lineNumber":238,"author":{"gitId":"kailinteoo"},"content":"implementation of storing clients and order details.","lastModifiedDate":"2024-03-26"},{"lineNumber":239,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":240,"author":{"gitId":"kailinteoo"},"content":"In this enhancement, the `Storage` component has been extended to support the storage and retrieval of both client and","lastModifiedDate":"2024-03-26"},{"lineNumber":241,"author":{"gitId":"kailinteoo"},"content":"order details.","lastModifiedDate":"2024-03-26"},{"lineNumber":242,"author":{"gitId":"kailinteoo"},"content":"Previously, the `Storage` component was primarily designed to handle address book data and user preferences. However,","lastModifiedDate":"2024-03-26"},{"lineNumber":243,"author":{"gitId":"kailinteoo"},"content":"with the growing requirements of our application, it becomes necessary to accommodate the storage of clients and orders.","lastModifiedDate":"2024-03-26"},{"lineNumber":244,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":245,"author":{"gitId":"kailinteoo"},"content":"#### Implementation Details:","lastModifiedDate":"2024-03-26"},{"lineNumber":246,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":247,"author":{"gitId":"kailinteoo"},"content":"To implement this feature, several modifications were made across different classes within the `Storage` package. The","lastModifiedDate":"2024-03-26"},{"lineNumber":248,"author":{"gitId":"kailinteoo"},"content":"key changes include:","lastModifiedDate":"2024-03-26"},{"lineNumber":249,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":250,"author":{"gitId":"kailinteoo"},"content":"1. New Classes: The introduction of `JsonAdaptedClient` and `JsonAdaptedOrder` classes to facilitate the conversion","lastModifiedDate":"2024-03-26"},{"lineNumber":251,"author":{"gitId":"kailinteoo"},"content":" between JSON format and the corresponding model objects (`Client` and `Order`).","lastModifiedDate":"2024-03-26"},{"lineNumber":252,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":253,"author":{"gitId":"kailinteoo"},"content":"2. Updated Interfaces: The `AddressBookStorage` interface was extended to included methods for reading and writing","lastModifiedDate":"2024-03-26"},{"lineNumber":254,"author":{"gitId":"kailinteoo"},"content":" orders. Similarly, the `Storage` interface, which serves as an umbrella for all storage-related functionalities,","lastModifiedDate":"2024-03-26"},{"lineNumber":255,"author":{"gitId":"kailinteoo"},"content":" was update to incorporate these changes.","lastModifiedDate":"2024-03-26"},{"lineNumber":256,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":257,"author":{"gitId":"kailinteoo"},"content":"3. Storage Manager: The `StorageManager` class, which orchestrates the storage operations, was modified to delegate the","lastModifiedDate":"2024-03-26"},{"lineNumber":258,"author":{"gitId":"kailinteoo"},"content":" handling of client and order data to the appropriate storage classes.","lastModifiedDate":"2024-03-26"},{"lineNumber":259,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":260,"author":{"gitId":"kailinteoo"},"content":"4. Unit Tests: Unit tests were added or updated to ensure the correctness and robustness of the new functionalities.","lastModifiedDate":"2024-03-26"},{"lineNumber":261,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":262,"author":{"gitId":"kailinteoo"},"content":"#### Why it is implemented that way:","lastModifiedDate":"2024-03-26"},{"lineNumber":263,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":264,"author":{"gitId":"kailinteoo"},"content":"With the implementation of storing clients and orders details, the `Storage` component of our application has been","lastModifiedDate":"2024-03-26"},{"lineNumber":265,"author":{"gitId":"kailinteoo"},"content":"enhanced to better meet the evolving needs of our users. These changes not only improve the functionality of our","lastModifiedDate":"2024-03-26"},{"lineNumber":266,"author":{"gitId":"kailinteoo"},"content":"application but also lay the groundwork for future enhancements and features.","lastModifiedDate":"2024-03-26"},{"lineNumber":267,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":268,"author":{"gitId":"kailinteoo"},"content":"Future plans may involve further optimizing the storage mechanisms, exploring alternative storage formats, or","lastModifiedDate":"2024-03-26"},{"lineNumber":269,"author":{"gitId":"kailinteoo"},"content":"integrating additional data validation checks to ensure data integrity. Overall, the recent enhancements to","lastModifiedDate":"2024-03-26"},{"lineNumber":270,"author":{"gitId":"kailinteoo"},"content":"the `Storage` component","lastModifiedDate":"2024-03-26"},{"lineNumber":271,"author":{"gitId":"kailinteoo"},"content":"mark a significant step forward in enhancing the robustness and flexibility of our application.","lastModifiedDate":"2024-03-26"},{"lineNumber":272,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":273,"author":{"gitId":"kailinteoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-26"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"rertyy"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-03-02"},{"lineNumber":290,"author":{"gitId":"rertyy"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-03-02"},{"lineNumber":291,"author":{"gitId":"rertyy"},"content":"following operations:","lastModifiedDate":"2024-03-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"rertyy"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-03-02"},{"lineNumber":294,"author":{"gitId":"rertyy"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-03-02"},{"lineNumber":295,"author":{"gitId":"rertyy"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-02"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"rertyy"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()`","lastModifiedDate":"2024-03-02"},{"lineNumber":298,"author":{"gitId":"rertyy"},"content":"and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"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":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"rertyy"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-02"},{"lineNumber":303,"author":{"gitId":"rertyy"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-02"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"rertyy"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command","lastModifiedDate":"2024-03-02"},{"lineNumber":308,"author":{"gitId":"rertyy"},"content":"calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes","lastModifiedDate":"2024-03-02"},{"lineNumber":309,"author":{"gitId":"rertyy"},"content":"to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book","lastModifiedDate":"2024-03-02"},{"lineNumber":310,"author":{"gitId":"rertyy"},"content":"state.","lastModifiedDate":"2024-03-02"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"rertyy"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also","lastModifiedDate":"2024-03-02"},{"lineNumber":315,"author":{"gitId":"rertyy"},"content":"calls `Model#commitAddressBook()`, causing another modified address book state to be saved into","lastModifiedDate":"2024-03-02"},{"lineNumber":316,"author":{"gitId":"rertyy"},"content":"the `addressBookStateList`.","lastModifiedDate":"2024-03-02"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"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":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"rertyy"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing","lastModifiedDate":"2024-03-02"},{"lineNumber":325,"author":{"gitId":"rertyy"},"content":"the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer`","lastModifiedDate":"2024-03-02"},{"lineNumber":326,"author":{"gitId":"rertyy"},"content":"once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"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":331,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"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":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":345,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":347,"author":{"gitId":"rertyy"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-03-02"},{"lineNumber":348,"author":{"gitId":"rertyy"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-03-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"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":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"rertyy"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such","lastModifiedDate":"2024-03-02"},{"lineNumber":355,"author":{"gitId":"rertyy"},"content":"as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`.","lastModifiedDate":"2024-03-02"},{"lineNumber":356,"author":{"gitId":"rertyy"},"content":"Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-02"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"rertyy"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-03-02"},{"lineNumber":361,"author":{"gitId":"rertyy"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-03-02"},{"lineNumber":362,"author":{"gitId":"rertyy"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-03-02"},{"lineNumber":363,"author":{"gitId":"rertyy"},"content":"desktop applications follow.","lastModifiedDate":"2024-03-02"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"shavonneg"},"content":"### View Orders feature","lastModifiedDate":"2024-03-26"},{"lineNumber":387,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":388,"author":{"gitId":"shavonneg"},"content":"#### Proposed Implementation","lastModifiedDate":"2024-03-26"},{"lineNumber":389,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":390,"author":{"gitId":"shavonneg"},"content":"The proposed View Orders mechanism is facilitated by `ViewOrdersCommand`. It extends `Command` and implements the","lastModifiedDate":"2024-03-26"},{"lineNumber":391,"author":{"gitId":"shavonneg"},"content":"displaying of all orders that belong to a client.","lastModifiedDate":"2024-03-26"},{"lineNumber":392,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":393,"author":{"gitId":"shavonneg"},"content":"These operations are exposed in the `AddressBookParser` class as `AddressBookParser#parseCommand()`.","lastModifiedDate":"2024-03-26"},{"lineNumber":394,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":395,"author":{"gitId":"shavonneg"},"content":"Given below is an example usage scenario and how the view orders mechanism behaves at each step.","lastModifiedDate":"2024-03-26"},{"lineNumber":396,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":397,"author":{"gitId":"shavonneg"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-26"},{"lineNumber":398,"author":{"gitId":"shavonneg"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-26"},{"lineNumber":399,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":400,"author":{"gitId":"shavonneg"},"content":"Step 2. The user executes `viewOrders` command to view all the orders that they have in BookKeeper. The `viewOrders`","lastModifiedDate":"2024-03-26"},{"lineNumber":401,"author":{"gitId":"shavonneg"},"content":"command calls `Model#updateFilteredOrderList()`, causing the address book to show the list of orders","lastModifiedDate":"2024-03-26"},{"lineNumber":402,"author":{"gitId":"shavonneg"},"content":"that are tracked in the storage of the application. The `viewOrders` command then returns a new `CommandResult`, which","lastModifiedDate":"2024-03-26"},{"lineNumber":403,"author":{"gitId":"shavonneg"},"content":"displays the `MESSAGE_SUCCESS` message, which is \"Here are all your orders: \".","lastModifiedDate":"2024-03-26"},{"lineNumber":404,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":405,"author":{"gitId":"shavonneg"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-26"},{"lineNumber":406,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":407,"author":{"gitId":"shavonneg"},"content":"**Aspect: How view command executes:**","lastModifiedDate":"2024-03-26"},{"lineNumber":408,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":409,"author":{"gitId":"shavonneg"},"content":"* **Alternative 1 (current choice):** Retrieves and displays all client orders from the filtered order list.","lastModifiedDate":"2024-03-26"},{"lineNumber":410,"author":{"gitId":"shavonneg"},"content":" * Pros: Simple and straightforward implementation.","lastModifiedDate":"2024-03-26"},{"lineNumber":411,"author":{"gitId":"shavonneg"},"content":" * Cons: May result in a slower performance and higher memory usage if the filtered order list is large.","lastModifiedDate":"2024-03-26"},{"lineNumber":412,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":413,"author":{"gitId":"shavonneg"},"content":"* **Alternative 2:** Implement system for displaying orders and only load a subset of orders at a time.","lastModifiedDate":"2024-03-26"},{"lineNumber":414,"author":{"gitId":"shavonneg"},"content":" * Pros: Will use less memory (e.g. can use cache mechanisms to store recently accessed orders in memory).","lastModifiedDate":"2024-03-26"},{"lineNumber":415,"author":{"gitId":"shavonneg"},"content":" * Cons: More complex implementation of storage and memory access.","lastModifiedDate":"2024-03-26"},{"lineNumber":416,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":417,"author":{"gitId":"shavonneg"},"content":"**Why is it implemented that way**","lastModifiedDate":"2024-03-26"},{"lineNumber":418,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":419,"author":{"gitId":"shavonneg"},"content":"* This approach is chosen for its simplicity. By utilising the filtered order list maintained by the model, the","lastModifiedDate":"2024-03-26"},{"lineNumber":420,"author":{"gitId":"shavonneg"},"content":" `viewOrders` command provides a straightforward way to display all orders to the user. It also makes it easier to","lastModifiedDate":"2024-03-26"},{"lineNumber":421,"author":{"gitId":"shavonneg"},"content":" maintain.","lastModifiedDate":"2024-03-26"},{"lineNumber":422,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":423,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":433,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":434,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":435,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":436,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"Jaspertzx"},"content":"* Florists business owners or freelance hobbyist.","lastModifiedDate":"2024-03-14"},{"lineNumber":447,"author":{"gitId":"Jaspertzx"},"content":"* Prefers efficient ways to manage customer and loyalty points.","lastModifiedDate":"2024-03-14"},{"lineNumber":448,"author":{"gitId":"Jaspertzx"},"content":"* Prefers an efficient way to keep track of customer\u0027s orders.","lastModifiedDate":"2024-03-14"},{"lineNumber":449,"author":{"gitId":"kailinteoo"},"content":"* Values productivity and time-saving solutions.","lastModifiedDate":"2024-03-08"},{"lineNumber":450,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":451,"author":{"gitId":"kailinteoo"},"content":"**User Needs and Preferences**:","lastModifiedDate":"2024-03-08"},{"lineNumber":452,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":453,"author":{"gitId":"kailinteoo"},"content":"* Efficient Customer Management:","lastModifiedDate":"2024-03-08"},{"lineNumber":454,"author":{"gitId":"kailinteoo"},"content":" * Can organize and manage customer lists effectively.","lastModifiedDate":"2024-03-08"},{"lineNumber":455,"author":{"gitId":"kailinteoo"},"content":" * Prefers streamlined processes for handling customer information.","lastModifiedDate":"2024-03-08"},{"lineNumber":456,"author":{"gitId":"kailinteoo"},"content":" * Values tools that optimize workflows and save time.","lastModifiedDate":"2024-03-08"},{"lineNumber":457,"author":{"gitId":"Jaspertzx"},"content":"* Organised Orders","lastModifiedDate":"2024-03-14"},{"lineNumber":458,"author":{"gitId":"Jaspertzx"},"content":" * Prefers to organize orders and sort them via due date.","lastModifiedDate":"2024-03-14"},{"lineNumber":459,"author":{"gitId":"Jaspertzx"},"content":" * Helps to keep track of customer\u0027s delivery deadlines.","lastModifiedDate":"2024-03-14"},{"lineNumber":460,"author":{"gitId":"Jaspertzx"},"content":"* Persistent Data Storage:","lastModifiedDate":"2024-03-14"},{"lineNumber":461,"author":{"gitId":"kailinteoo"},"content":" * Prefers applications with backup and synchronization capabilities for data integrity.","lastModifiedDate":"2024-03-08"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":463,"author":{"gitId":"kailinteoo"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-08"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":465,"author":{"gitId":"Jaspertzx"},"content":"* Manage contacts faster than a typical mouse/GUI driven app.","lastModifiedDate":"2024-03-14"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"Jaspertzx"},"content":"| Priority | As a … | I want to … | So that I can… |","lastModifiedDate":"2024-03-05"},{"lineNumber":472,"author":{"gitId":"rertyy"},"content":"|----------|---------|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-18"},{"lineNumber":473,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | easily add new customers to my address book | keep track of all my clients\u0027 information in one place. |","lastModifiedDate":"2024-03-14"},{"lineNumber":474,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | have a search function | quickly find specific customers when I need to reference their details. |","lastModifiedDate":"2024-03-14"},{"lineNumber":475,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | be accessible via a command-line interface | efficiently manage my customer list without navigating through complex menus. |","lastModifiedDate":"2024-03-14"},{"lineNumber":476,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | have customizable fields | record specific details about each customer, such as their favorite colors or special requests. |","lastModifiedDate":"2024-03-14"},{"lineNumber":477,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | be cost-effective and easy to use | maximize productivity without investing in expensive CRM systems. |","lastModifiedDate":"2024-03-14"},{"lineNumber":478,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | have data backup and synchronization capabilities | access my customer information from multiple devices and ensure its security. |","lastModifiedDate":"2024-03-14"},{"lineNumber":479,"author":{"gitId":"shavonneg"},"content":"| `* * *` | Florist | have secure access controls and permissions settings | restrict sensitive information and ensure data privacy compliance. |","lastModifiedDate":"2024-03-14"},{"lineNumber":480,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | categorize my customers | tailor my marketing efforts accordingly based on factors like their preferred flowers or past purchases. |","lastModifiedDate":"2024-03-14"},{"lineNumber":481,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | generate reports on customer activity | analyze trends and make informed business decisions based on order history and frequency of purchases. |","lastModifiedDate":"2024-03-14"},{"lineNumber":482,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | have a reminder feature | stay organized and follow up with customers on important dates, such as birthdays or anniversaries. |","lastModifiedDate":"2024-03-14"},{"lineNumber":483,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | have customizable templates for invoices and receipts | easily generate and send professional-looking documents to my customers. |","lastModifiedDate":"2024-03-14"},{"lineNumber":484,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | have a notes section for each customer | record specific preferences and requirements for their projects. |","lastModifiedDate":"2024-03-14"},{"lineNumber":485,"author":{"gitId":"shavonneg"},"content":"| `* *` | Florist | integrate with accounting software | easily track expenses related to each customer and maintain accurate financial records. |","lastModifiedDate":"2024-03-14"},{"lineNumber":486,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | have a mobile-friendly interface | easily access customer information on the go and process orders efficiently. |","lastModifiedDate":"2024-03-14"},{"lineNumber":487,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | integrate with my email client | send personalized messages and promotions to my customers directly from the platform. |","lastModifiedDate":"2024-03-14"},{"lineNumber":488,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | integrate with e-commerce platforms | automatically sync customer data and manage orders efficiently when participating in online marketplaces. |","lastModifiedDate":"2024-03-14"},{"lineNumber":489,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | track communication history with customers | provide personalized and timely customer service including emails and phone calls. |","lastModifiedDate":"2024-03-14"},{"lineNumber":490,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | support multiple user accounts with shared access | my team members can collaborate on managing customer relationships. |","lastModifiedDate":"2024-03-14"},{"lineNumber":491,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | have a scheduling feature | manage registrations and communicate updates with attendees seamlessly. |","lastModifiedDate":"2024-03-14"},{"lineNumber":492,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | have a feature for scanning and capturing customer contact information | grow my mailing list and follow up with potential leads quickly. |","lastModifiedDate":"2024-03-14"},{"lineNumber":493,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | integrate with social media platforms | easily connect with customers and engage with them through various channels. |","lastModifiedDate":"2024-03-14"},{"lineNumber":494,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | provide insights into customer demographics and preferences | tailor my product offerings and marketing campaigns to target specific audiences effectively. |","lastModifiedDate":"2024-03-14"},{"lineNumber":495,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | provide analytics and insights on customer behavior | continuously improve my products and services to meet customer needs based on purchase patterns and feedback. |","lastModifiedDate":"2024-03-14"},{"lineNumber":496,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | provide insights into customer satisfaction through feedback and reviews | address any concerns and improve the overall customer experience. |","lastModifiedDate":"2024-03-14"},{"lineNumber":497,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | offer customizable tags or labels for customers | segment my audience and target specific groups with tailored marketing campaigns. |","lastModifiedDate":"2024-03-14"},{"lineNumber":498,"author":{"gitId":"shavonneg"},"content":"| `*` | Florist | have a good out of the box experience | immediately use the application without needing to configure it for my own needs. |","lastModifiedDate":"2024-03-14"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"rertyy"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified","lastModifiedDate":"2024-03-02"},{"lineNumber":503,"author":{"gitId":"rertyy"},"content":"otherwise)","lastModifiedDate":"2024-03-02"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"rertyy"},"content":"1. User requests to list persons.","lastModifiedDate":"2024-03-07"},{"lineNumber":510,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a list of persons.","lastModifiedDate":"2024-03-07"},{"lineNumber":511,"author":{"gitId":"rertyy"},"content":"3. User requests to delete a specific person in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":512,"author":{"gitId":"rertyy"},"content":"4. AddressBook deletes the person.","lastModifiedDate":"2024-03-07"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"rertyy"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-03-02"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":530,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":531,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":532,"author":{"gitId":"rertyy"},"content":"1. User requests to add a person.","lastModifiedDate":"2024-03-07"},{"lineNumber":533,"author":{"gitId":"rertyy"},"content":"2. AddressBook adds a person.","lastModifiedDate":"2024-03-07"},{"lineNumber":534,"author":{"gitId":"rertyy"},"content":"3. AddressBook shows the added person.","lastModifiedDate":"2024-03-07"},{"lineNumber":535,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":536,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":537,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":538,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":539,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":540,"author":{"gitId":"rertyy"},"content":"* 2a. The person already exists.","lastModifiedDate":"2024-03-02"},{"lineNumber":541,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":542,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":543,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":544,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-02"},{"lineNumber":545,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":546,"author":{"gitId":"rertyy"},"content":"* 2b. The person details are invalid.","lastModifiedDate":"2024-03-02"},{"lineNumber":547,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":548,"author":{"gitId":"rertyy"},"content":" * 2b1. AddressBook shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":549,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":550,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-02"},{"lineNumber":551,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":552,"author":{"gitId":"rertyy"},"content":"**Use case: Edit a person**","lastModifiedDate":"2024-03-07"},{"lineNumber":553,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":554,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":555,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":556,"author":{"gitId":"rertyy"},"content":"1. User requests to edit a person.","lastModifiedDate":"2024-03-07"},{"lineNumber":557,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows the person to be edited.","lastModifiedDate":"2024-03-07"},{"lineNumber":558,"author":{"gitId":"rertyy"},"content":"3. User edits the person.","lastModifiedDate":"2024-03-07"},{"lineNumber":559,"author":{"gitId":"rertyy"},"content":"4. AddressBook shows the edited person.","lastModifiedDate":"2024-03-07"},{"lineNumber":560,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":561,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":562,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":563,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":564,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":565,"author":{"gitId":"rertyy"},"content":"* 2a. The person does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":566,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":567,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":568,"author":{"gitId":"rertyy"},"content":" * 2a2. AddressBook shows a list of persons with similar names.","lastModifiedDate":"2024-03-07"},{"lineNumber":569,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":570,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":571,"author":{"gitId":"rertyy"},"content":"* 3a. The person details are invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":572,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":573,"author":{"gitId":"rertyy"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":574,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":575,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":576,"author":{"gitId":"rertyy"},"content":"* 3b. The person details are unchanged.","lastModifiedDate":"2024-03-07"},{"lineNumber":577,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":578,"author":{"gitId":"rertyy"},"content":" * 3b1. AddressBook shows a message indicating no changes are made.","lastModifiedDate":"2024-03-07"},{"lineNumber":579,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":580,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":581,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":582,"author":{"gitId":"rertyy"},"content":"**Use case: Find a person**","lastModifiedDate":"2024-03-02"},{"lineNumber":583,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":584,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":585,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":586,"author":{"gitId":"rertyy"},"content":"1. User requests to find a person by name.","lastModifiedDate":"2024-03-07"},{"lineNumber":587,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a list of persons whose names contain the given keyword.","lastModifiedDate":"2024-03-07"},{"lineNumber":588,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":589,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":590,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":591,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":592,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":593,"author":{"gitId":"rertyy"},"content":"* 2a. No person is found.","lastModifiedDate":"2024-03-02"},{"lineNumber":594,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":595,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows a message indicating no person is found.","lastModifiedDate":"2024-03-02"},{"lineNumber":596,"author":{"gitId":"rertyy"},"content":" * 2a2. AddressBook shows the list of persons with similar names.","lastModifiedDate":"2024-03-07"},{"lineNumber":597,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":598,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":599,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":600,"author":{"gitId":"rertyy"},"content":"**Use case: Filter categories**","lastModifiedDate":"2024-03-02"},{"lineNumber":601,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":602,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":603,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":604,"author":{"gitId":"rertyy"},"content":"1. User requests to filter categories.","lastModifiedDate":"2024-03-07"},{"lineNumber":605,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a list of persons with the given category.","lastModifiedDate":"2024-03-07"},{"lineNumber":606,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":607,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":608,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":609,"author":{"gitId":"rertyy"},"content":"**Use case: Sort by order**","lastModifiedDate":"2024-03-07"},{"lineNumber":610,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":611,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":612,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":613,"author":{"gitId":"rertyy"},"content":"1. User requests to sort by order.","lastModifiedDate":"2024-03-07"},{"lineNumber":614,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a list of persons sorted by the given order.","lastModifiedDate":"2024-03-07"},{"lineNumber":615,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":616,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":617,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":618,"author":{"gitId":"rertyy"},"content":"**Use case: Show help**","lastModifiedDate":"2024-03-02"},{"lineNumber":619,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":620,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":621,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":622,"author":{"gitId":"rertyy"},"content":"1. User requests to show help.","lastModifiedDate":"2024-03-07"},{"lineNumber":623,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows a help page.","lastModifiedDate":"2024-03-07"},{"lineNumber":624,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":625,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":626,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":627,"author":{"gitId":"rertyy"},"content":"**Use case: Clear all entries**","lastModifiedDate":"2024-03-02"},{"lineNumber":628,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":629,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":630,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":631,"author":{"gitId":"rertyy"},"content":"1. User requests to clear all entries.","lastModifiedDate":"2024-03-07"},{"lineNumber":632,"author":{"gitId":"rertyy"},"content":"2. AddressBook clears all entries.","lastModifiedDate":"2024-03-07"},{"lineNumber":633,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":634,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":635,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":636,"author":{"gitId":"rertyy"},"content":"**Use case: Exit the program**","lastModifiedDate":"2024-03-02"},{"lineNumber":637,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":638,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":639,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":640,"author":{"gitId":"rertyy"},"content":"1. User requests to exit the program.","lastModifiedDate":"2024-03-07"},{"lineNumber":641,"author":{"gitId":"rertyy"},"content":"2. AddressBook exits.","lastModifiedDate":"2024-03-07"},{"lineNumber":642,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":643,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":644,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":645,"author":{"gitId":"rertyy"},"content":"**Use case: Import data**","lastModifiedDate":"2024-03-07"},{"lineNumber":646,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":647,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":648,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":649,"author":{"gitId":"rertyy"},"content":"1. User requests to view locally saved data.","lastModifiedDate":"2024-03-07"},{"lineNumber":650,"author":{"gitId":"rertyy"},"content":"2. AddressBook opens location of saved data.","lastModifiedDate":"2024-03-07"},{"lineNumber":651,"author":{"gitId":"rertyy"},"content":"3. User stores new data to local file.","lastModifiedDate":"2024-03-07"},{"lineNumber":652,"author":{"gitId":"rertyy"},"content":"4. AddressBook imports data from file.","lastModifiedDate":"2024-03-07"},{"lineNumber":653,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":654,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":655,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":656,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":657,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":658,"author":{"gitId":"rertyy"},"content":"* 4a. The data is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":659,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":660,"author":{"gitId":"rertyy"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":661,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":662,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":663,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":664,"author":{"gitId":"rertyy"},"content":"**Use case: Export data**","lastModifiedDate":"2024-03-02"},{"lineNumber":665,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":666,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":667,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":668,"author":{"gitId":"rertyy"},"content":"1. User requests to export data.","lastModifiedDate":"2024-03-07"},{"lineNumber":669,"author":{"gitId":"rertyy"},"content":"2. AddressBook opens locally saved file.","lastModifiedDate":"2024-03-07"},{"lineNumber":670,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":671,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":672,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":673,"author":{"gitId":"rertyy"},"content":"**Use case: Add order**","lastModifiedDate":"2024-03-07"},{"lineNumber":674,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":675,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":676,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":677,"author":{"gitId":"rertyy"},"content":"1. User requests to add an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":678,"author":{"gitId":"rertyy"},"content":"2. AddressBook adds an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":679,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":680,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":681,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":682,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":683,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":684,"author":{"gitId":"rertyy"},"content":"* 2a. The order already exists.","lastModifiedDate":"2024-03-07"},{"lineNumber":685,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":686,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":687,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":688,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":689,"author":{"gitId":"rertyy"},"content":"* 2b. The order details are invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":690,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":691,"author":{"gitId":"rertyy"},"content":" * 2b1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":692,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":693,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":694,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":695,"author":{"gitId":"rertyy"},"content":"**Use case: Edit order**","lastModifiedDate":"2024-03-07"},{"lineNumber":696,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":697,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":698,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":699,"author":{"gitId":"rertyy"},"content":"1. User requests to edit an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":700,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows the order to be edited.","lastModifiedDate":"2024-03-07"},{"lineNumber":701,"author":{"gitId":"rertyy"},"content":"3. User edits the order.","lastModifiedDate":"2024-03-07"},{"lineNumber":702,"author":{"gitId":"rertyy"},"content":"4. AddressBook shows the edited order.","lastModifiedDate":"2024-03-07"},{"lineNumber":703,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":704,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":705,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":706,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":707,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":708,"author":{"gitId":"rertyy"},"content":"* 2a. The order does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":709,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":710,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":711,"author":{"gitId":"rertyy"},"content":" * 2a2. AddressBook shows a list of orders with similar names.","lastModifiedDate":"2024-03-07"},{"lineNumber":712,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":713,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":714,"author":{"gitId":"rertyy"},"content":"* 3a. The order details are invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":715,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":716,"author":{"gitId":"rertyy"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":717,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":718,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":719,"author":{"gitId":"rertyy"},"content":"* 3b. The order details are unchanged.","lastModifiedDate":"2024-03-07"},{"lineNumber":720,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":721,"author":{"gitId":"rertyy"},"content":" * 3b1. AddressBook shows a message indicating no changes are made.","lastModifiedDate":"2024-03-07"},{"lineNumber":722,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":723,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":724,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":725,"author":{"gitId":"rertyy"},"content":"**Use case: Delete order**","lastModifiedDate":"2024-03-07"},{"lineNumber":726,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":727,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":728,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":729,"author":{"gitId":"rertyy"},"content":"1. User requests to delete an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":730,"author":{"gitId":"rertyy"},"content":"2. AddressBook deletes the order.","lastModifiedDate":"2024-03-07"},{"lineNumber":731,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":732,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":733,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":734,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":735,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":736,"author":{"gitId":"rertyy"},"content":"* 2a. The order does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":737,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":738,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":739,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":740,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":741,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":742,"author":{"gitId":"rertyy"},"content":"**Use case: Prioritize order**","lastModifiedDate":"2024-03-07"},{"lineNumber":743,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":744,"author":{"gitId":"rertyy"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":745,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":746,"author":{"gitId":"rertyy"},"content":"1. User requests to prioritize an order.","lastModifiedDate":"2024-03-07"},{"lineNumber":747,"author":{"gitId":"rertyy"},"content":"2. AddressBook shows the prioritized order.","lastModifiedDate":"2024-03-07"},{"lineNumber":748,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":749,"author":{"gitId":"rertyy"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":750,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":751,"author":{"gitId":"rertyy"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":752,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":753,"author":{"gitId":"rertyy"},"content":"* 2a. The order does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":754,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":755,"author":{"gitId":"rertyy"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":756,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":757,"author":{"gitId":"rertyy"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-02"},{"lineNumber":758,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":759,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":760,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":761,"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":762,"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":763,"author":{"gitId":"rertyy"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-03-18"},{"lineNumber":764,"author":{"gitId":"rertyy"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-18"},{"lineNumber":765,"author":{"gitId":"rertyy"},"content":"4. Should provide clear and informative error messages to users in case of unexpected errors. Additionally, detailed","lastModifiedDate":"2024-03-18"},{"lineNumber":766,"author":{"gitId":"rertyy"},"content":" logs should be maintained for system administrators to troubleshoot issues effectively.","lastModifiedDate":"2024-03-18"},{"lineNumber":767,"author":{"gitId":"rertyy"},"content":"5. Application architecture should be scalable to accommodate future growth in terms of users and data volume, without","lastModifiedDate":"2024-03-18"},{"lineNumber":768,"author":{"gitId":"rertyy"},"content":" compromising performance.","lastModifiedDate":"2024-03-18"},{"lineNumber":769,"author":{"gitId":"rertyy"},"content":"6. Automated backups of critical data should be performed, and there should be a documented and tested procedure for","lastModifiedDate":"2024-03-18"},{"lineNumber":770,"author":{"gitId":"rertyy"},"content":" data recovery in case of system failures or data loss.","lastModifiedDate":"2024-03-18"},{"lineNumber":771,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":772,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":773,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":774,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":775,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":776,"author":{"gitId":"shavonneg"},"content":"* **Application architecture**: Describes the patterns and techniques used to design and build an application","lastModifiedDate":"2024-03-05"},{"lineNumber":777,"author":{"gitId":"rertyy"},"content":"* **System administrators**: Professionals responsible for managing, configuring, and ensuring the proper operation of","lastModifiedDate":"2024-03-18"},{"lineNumber":778,"author":{"gitId":"rertyy"},"content":" computer systems and servers","lastModifiedDate":"2024-03-18"},{"lineNumber":779,"author":{"gitId":"rertyy"},"content":"* **Detailed logs**: Records that track events, operations, errors, and other significant activities that occur within a","lastModifiedDate":"2024-03-18"},{"lineNumber":780,"author":{"gitId":"rertyy"},"content":" software system or application.","lastModifiedDate":"2024-03-18"},{"lineNumber":781,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":782,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":783,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":784,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":785,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":786,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":787,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":788,"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":789,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":790,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":791,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":792,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":793,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":794,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":795,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":796,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":797,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":798,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":799,"author":{"gitId":"rertyy"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-03-02"},{"lineNumber":800,"author":{"gitId":"rertyy"},"content":" optimum.","lastModifiedDate":"2024-03-02"},{"lineNumber":801,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":802,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":803,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":804,"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":805,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":806,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":807,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":808,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":809,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":810,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":811,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":812,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":813,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":814,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":815,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":816,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":817,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":818,"author":{"gitId":"rertyy"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-03-02"},{"lineNumber":819,"author":{"gitId":"rertyy"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-02"},{"lineNumber":820,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":821,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":822,"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":823,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":824,"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":825,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":826,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":827,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":828,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":829,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":830,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":831,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":832,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":833,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":834,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":835,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"kailinteoo":51,"shavonneg":63,"rertyy":366,"Jaspertzx":41,"-":314}},{"path":"docs/UserGuide.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: User Guide","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":"shavonneg"},"content":"## Table of Contents","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"[1. Purpose of User Guide (UG)](#1-purpose-of-user-guide-ug)","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"[2. Introduction](#2-introduction)","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"* [2.1. Introducing BookKeeper](#21-introducing-bookkeeper)","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"* [2.2. What\u0027s New in BookKeeper release v1.4](#22-whats-new-in-bookkeeper-release-v14)","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"* [2.3. Product Description](#23-product-description)","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"* [2.4. Unique Selling Points](#24-unique-selling-points)","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" * [2.4.1. Centralised Platform](#241-centralised-platform)","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":" * [2.4.2. Efficiency](#242-efficiency)","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" * [2.4.3. Tailored for Florist Businesses](#243-tailored-for-florist-businesses)","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" * [2.4.4. Cost-Effective](#244-cost-effective)","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"[3. Target Audience with assumptions](#3-target-audience-with-assumptions)","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":"* [3.1. Target Audience](#31-target-audience)","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"* [3.2. Assumptions](#32-assumptions)","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":"[4. Quick start](#4-quick-start)","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":"[5. Commands](#5-commands)","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"* [5.1 Command summary](#51-command-summary)","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" * [5.1.1 Client](#511-client)","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" * [5.1.2 Order](#512-order)","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":"[6. Main Features](#6-main-features)","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":"[7. Information about how to use the guide](#7-information-about-how-to-use-the-guide)","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":"* [7.1. Appendix A: Technical Glossary](#71-appendix-a-technical-glossary)","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":"* [7.2. Appendix B: One page cheatsheet](#72-appendix-b-one-page-cheatsheet)","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":"* [7.3. Appendix C: FAQ](#73-appendix-c-faq)","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":"[8. Known issues](#8-known-issues)","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":"## 1. Purpose of User Guide (UG)","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":"BookKeeper is a desktop app designed for florists, in particular to manage their clients and orders when selling","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":"flower bouquets.","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":"Our User Guide (UG) provides florists with a comprehensive resource to understand and use BookKeeper effectively.","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":"Inside, we have outlined clear instructions, explanations, and best practices in order to aid florists in navigating","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":"BookKeeper’s features seamlessly. This UG is crucial to help florists comprehend the application’s functionalities,","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":"optimise their workflows, and maximise productivity with ease.","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":"BookKeeper is also optimised for use via a Command Line Interface (","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":"CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, BookKeeper can get your","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":"client management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":"## 2. Introduction","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":"### 2.1. Introducing BookKeeper","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":"BookKeeper is an application designed to simplify your client and order management.","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":"With BookKeeper, you can effortlessly organise your client information, track orders and identify loyal customers.","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":"This user guide is your comprehensive resource for understanding the full capabilities of BookKeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":"Here, we break down the installation process, system setup, and key features, ensuring seamless adoption and utilisation","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":"of our app. If you are just starting your small florist business, BookKeeper is here to help you efficiently organise","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":"your business operations.","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":"### 2.2. What\u0027s New in BookKeeper release v1.4","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":"BookKeeper v1.4 contains the following new features and improvements.","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":"* Order management enhancements","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":" * Improved functionalities for efficient order management, with features like add, delete, edit and filter orders.","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"* Links Client to Orders","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"kailinteoo"},"content":" * Seamlessly links clients to their respective orders for comprehensive tracking and management","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":"* Provides bug fixes","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":" * Fixed minor bugs to ensure the smooth operation of the application","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":"### 2.3. Product Description","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":"BookKeeper is like an address book, providing a working platform that can effectively manage user information","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":"and orders. This efficiently manages customer relationships as it maximises user productivity.","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":"### 2.4. Unique Selling Points","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":"#### 2.4.1. Centralised Platform","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":"BookKeeper offers a centralised platform where you can effortlessly store and search for client information,","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":"keeping all your vital data organised and accessible at your fingertips.","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":"#### 2.4.2. Efficiency","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":"With its intuitive command-line interface, BookKeeper is faster and more efficient than traditional methods","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":"like CRMs or Excel sheets. Spend less time navigating complex menus and more time serving your customer’s needs.","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":"#### 2.4.3. Tailored for Florist Businesses","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":"We understand the unique needs of florists, which is why BookKeeper comes equipped with customizable fields, tags,","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"kailinteoo"},"content":"and seamless integration with e-commerce platforms.","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":"#### 2.4.4. Cost-Effective","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"kailinteoo"},"content":"Designed with small businesses in mind, BookKeeper is not only powerful but also cost-effective.","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":"Say goodbye to expensive software solutions that drain your resources.","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"kailinteoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"kailinteoo"},"content":"## 3. Target Audience with assumptions","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":"### 3.1. Target Audience","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":"BookKeeper is specifically designed for small florist businesses, catering to the unique needs and challenges they face","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":"in managing client relationships and orders. Our target audience includes small florist shops, independent floral","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":"designers, and boutique flower businesses.","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"### 3.2. Assumptions","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":"1. Our application is made with the assumption that users are members of the florist industry and will understand the","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"kailinteoo"},"content":" needs as well as the terminology used by florists. They can either be business owners, managers, or employees and","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":" are looking for a tailored solution to streamline their operations.","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":"2. Users are presumed to have a basic understanding of computer operations and software usage. This can help them to","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" navigate easily through the application and follow the instructions to download and use BookKeeper,","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" as provided in this guide.","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":"3. While prior experience with customer relationship management (CRM) systems and command line interfaces (CLIs) can","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":" help users to familiarise themselves with BookKeeper fast, BookKeeper is also entry-level-friendly so that we can","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"kailinteoo"},"content":" accommodate users of all levels of technical expertise.","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"kailinteoo"},"content":"## 4. Quick start","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"kailinteoo"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/AY2324S2-CS2103T-T09-2/tp/releases).","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar`","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"shavonneg"},"content":" command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"shavonneg"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" open the help window.\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe`","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":" to the Address Book.","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"kailinteoo"},"content":"## 5. Commands","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"kailinteoo"},"content":"### 5.1 Command summary","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"Jaspertzx"},"content":"### 5.1.1 Client","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"Jaspertzx"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"Jaspertzx"},"content":"|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"Jaspertzx"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"Jaspertzx"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"Jaspertzx"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"Jaspertzx"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"Jaspertzx"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"Jaspertzx"},"content":"| **List** | `list` |","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"Jaspertzx"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"Jaspertzx"},"content":"### 5.1.2 Order","lastModifiedDate":"2024-04-03"},{"lineNumber":185,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":186,"author":{"gitId":"Jaspertzx"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"shavonneg"},"content":"|-----------------|--------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"shavonneg"},"content":"| **order** | `order INDEX by/DEADLINE c/PRICE d/DESCRIPTION` \u003cbr\u003e e.g., `order 3 by/23-07-2024 00:00 c/99.99 d/1xRoses` |","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"Jaspertzx"},"content":"| **deleteOrder** | `deleteOrder INDEX` \u003cbr/\u003e `deleteOrder 3` |","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"shavonneg"},"content":"| **editOrder** | `editOrder INDEX by/DEADLINE c/PRICE d/DESCRIPTION s/STATUS` \u003cbr\u003e e.g., `editOrder 1 by/23-07-2024 10:10 c/40 d/1xRoses s/COMPLETED` |","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":192,"author":{"gitId":"kailinteoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"kailinteoo"},"content":"## 6. Main Features","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"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":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"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":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"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":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"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":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"shavonneg"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"shavonneg"},"content":" ignored.\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":216,"author":{"gitId":"shavonneg"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"shavonneg"},"content":" as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"kailinteoo"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-04-02"},{"lineNumber":229,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":230,"author":{"gitId":"kailinteoo"},"content":"Clears all entries from the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":231,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":232,"author":{"gitId":"kailinteoo"},"content":"Format: `clear`","lastModifiedDate":"2024-04-02"},{"lineNumber":233,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":234,"author":{"gitId":"kailinteoo"},"content":"### \u003cins\u003eClient Features:","lastModifiedDate":"2024-04-02"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-02"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"shavonneg"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567`","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"shavonneg"},"content":" and `johndoe@example.com` respectively.","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"kailinteoo"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2024-04-02"},{"lineNumber":272,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":273,"author":{"gitId":"kailinteoo"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":274,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":275,"author":{"gitId":"kailinteoo"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-04-02"},{"lineNumber":276,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":277,"author":{"gitId":"kailinteoo"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2024-04-02"},{"lineNumber":278,"author":{"gitId":"kailinteoo"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-02"},{"lineNumber":279,"author":{"gitId":"kailinteoo"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-02"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":281,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-04-02"},{"lineNumber":282,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":283,"author":{"gitId":"kailinteoo"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":284,"author":{"gitId":"kailinteoo"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-04-02"},{"lineNumber":285,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":286,"author":{"gitId":"kailinteoo"},"content":"### Listing all persons : `list`","lastModifiedDate":"2024-04-02"},{"lineNumber":287,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":288,"author":{"gitId":"kailinteoo"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":289,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":290,"author":{"gitId":"kailinteoo"},"content":"Format: `list`","lastModifiedDate":"2024-04-02"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":307,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"Jaspertzx"},"content":" ![result for \u0027find alex david\u0027](images/findKarenResult.png)","lastModifiedDate":"2024-04-04"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"Jaspertzx"},"content":"### \u003cins\u003eOrder Features:","lastModifiedDate":"2024-04-04"},{"lineNumber":318,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":319,"author":{"gitId":"Jaspertzx"},"content":"### Adding an order: `order`","lastModifiedDate":"2024-04-04"},{"lineNumber":320,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":321,"author":{"gitId":"Jaspertzx"},"content":"Adds an order into BookKeeper.","lastModifiedDate":"2024-04-04"},{"lineNumber":322,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":323,"author":{"gitId":"Jaspertzx"},"content":"Format: `order \u003cINDEX\u003e by/DEADLINE c/PRICE d/DESCRIPTION`","lastModifiedDate":"2024-04-04"},{"lineNumber":324,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":325,"author":{"gitId":"Jaspertzx"},"content":"* Adds the order to the user at the specified `INDEX`.","lastModifiedDate":"2024-04-04"},{"lineNumber":326,"author":{"gitId":"Jaspertzx"},"content":" The index **must be a positive integer** 1, 2, 3, …​, and the index must exist in the Client list.","lastModifiedDate":"2024-04-04"},{"lineNumber":327,"author":{"gitId":"Jaspertzx"},"content":"* All fields must be provided.","lastModifiedDate":"2024-04-04"},{"lineNumber":328,"author":{"gitId":"Jaspertzx"},"content":"* Please specify `by/DEADLINE` field in `DD-MM-YYYY HH:MM`.","lastModifiedDate":"2024-04-04"},{"lineNumber":329,"author":{"gitId":"Jaspertzx"},"content":"* For the `c/PRICE` field, do note that any decimal places after 2 will be rounded up.","lastModifiedDate":"2024-04-04"},{"lineNumber":330,"author":{"gitId":"Jaspertzx"},"content":" * For e.g. `2.999` will be rounded up to `3.00`.","lastModifiedDate":"2024-04-04"},{"lineNumber":331,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":332,"author":{"gitId":"Jaspertzx"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":333,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":334,"author":{"gitId":"shavonneg"},"content":"* `order 1 d/1xRoses c/40 by/23-07-2024 00:00`","lastModifiedDate":"2024-04-04"},{"lineNumber":335,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":336,"author":{"gitId":"Jaspertzx"},"content":"### Deleting an order: `deleteOrder`","lastModifiedDate":"2024-04-04"},{"lineNumber":337,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":338,"author":{"gitId":"rertyy"},"content":"Deletes the specified order from BookKeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":339,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":340,"author":{"gitId":"rertyy"},"content":"Format: `deleteOrder INDEX`","lastModifiedDate":"2024-04-02"},{"lineNumber":341,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":342,"author":{"gitId":"rertyy"},"content":"* Deletes the order at the specified `INDEX`.","lastModifiedDate":"2024-04-02"},{"lineNumber":343,"author":{"gitId":"rertyy"},"content":"* The index refers to the index number shown in the displayed order list.","lastModifiedDate":"2024-04-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-04-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":348,"author":{"gitId":"rertyy"},"content":"* `deleteOrder 2` deletes the 2nd order in the order list.","lastModifiedDate":"2024-04-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":350,"author":{"gitId":"Jaspertzx"},"content":"### Editing an order : `editOrder`","lastModifiedDate":"2024-04-04"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":352,"author":{"gitId":"shavonneg"},"content":"Edits an existing order in BookKeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":354,"author":{"gitId":"shavonneg"},"content":"Format: `edit \u003cINDEX\u003e [by/DEADLINE] [c/PRICE] [d/DESCRIPTION] [s/STATUS]`","lastModifiedDate":"2024-04-02"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":356,"author":{"gitId":"shavonneg"},"content":"* Edits the order at the specified `INDEX`.","lastModifiedDate":"2024-04-02"},{"lineNumber":357,"author":{"gitId":"shavonneg"},"content":" The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-02"},{"lineNumber":358,"author":{"gitId":"shavonneg"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2024-04-02"},{"lineNumber":359,"author":{"gitId":"shavonneg"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2024-04-02"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":361,"author":{"gitId":"shavonneg"},"content":"Examples:","lastModifiedDate":"2024-04-02"},{"lineNumber":362,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":363,"author":{"gitId":"shavonneg"},"content":"* `editOrder 1 by/23-07-2024 10:10 c/40 d/1xRoses s/PENDING` Edits 1st order in the order list.","lastModifiedDate":"2024-04-02"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":365,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"shavonneg"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to","lastModifiedDate":"2024-04-02"},{"lineNumber":368,"author":{"gitId":"shavonneg"},"content":"save manually.","lastModifiedDate":"2024-04-02"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":372,"author":{"gitId":"shavonneg"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are","lastModifiedDate":"2024-04-02"},{"lineNumber":373,"author":{"gitId":"shavonneg"},"content":"welcome to update data directly by editing that data file.","lastModifiedDate":"2024-04-02"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":375,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":376,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook 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-02-09"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"lineNumber":378,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":380,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"kailinteoo"},"content":"## 7. Information about how to use the guide","lastModifiedDate":"2024-04-02"},{"lineNumber":387,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":388,"author":{"gitId":"shavonneg"},"content":"What do the colours mean?","lastModifiedDate":"2024-04-04"},{"lineNumber":389,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":390,"author":{"gitId":"shavonneg"},"content":"BookKeeper mainly uses four colours: beige, muted green, creamy yellow, and warm brown.","lastModifiedDate":"2024-04-04"},{"lineNumber":391,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":392,"author":{"gitId":"shavonneg"},"content":"We hoped to achieve a cohesive colour scheme that not only shows visual hierarchy, but provides florists with a sense","lastModifiedDate":"2024-04-04"},{"lineNumber":393,"author":{"gitId":"shavonneg"},"content":"of familiarity by choosing colours that are reminiscent of nature. The neutral colour palette caters to a the wide","lastModifiedDate":"2024-04-04"},{"lineNumber":394,"author":{"gitId":"shavonneg"},"content":"diversity of florists, be it with respect to age group or gender, while also ensuring that the app remains timeless","lastModifiedDate":"2024-04-04"},{"lineNumber":395,"author":{"gitId":"shavonneg"},"content":"and appealing.","lastModifiedDate":"2024-04-04"},{"lineNumber":396,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":397,"author":{"gitId":"shavonneg"},"content":"This combination of colours not only enhances the aesthetics of BookKeeper, but also promises a user experience that","lastModifiedDate":"2024-04-04"},{"lineNumber":398,"author":{"gitId":"shavonneg"},"content":"is consistently positive and engaging.","lastModifiedDate":"2024-04-04"},{"lineNumber":399,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":400,"author":{"gitId":"kailinteoo"},"content":"### 7.1. Appendix A: Technical Glossary","lastModifiedDate":"2024-04-02"},{"lineNumber":401,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":402,"author":{"gitId":"kailinteoo"},"content":"**Java** - the programming language that the application was written in,","lastModifiedDate":"2024-04-02"},{"lineNumber":403,"author":{"gitId":"kailinteoo"},"content":"as well as the process in which the application is run","lastModifiedDate":"2024-04-02"},{"lineNumber":404,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":405,"author":{"gitId":"kailinteoo"},"content":"**Runtime** - a software that users must download onto their systems to run other applications.","lastModifiedDate":"2024-04-02"},{"lineNumber":406,"author":{"gitId":"kailinteoo"},"content":"The Java runtime allows users to run the BookKeeper application","lastModifiedDate":"2024-04-02"},{"lineNumber":407,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":408,"author":{"gitId":"kailinteoo"},"content":"**JSON (Javascript Object Notation)** - a file format used to store data which is understandable","lastModifiedDate":"2024-04-02"},{"lineNumber":409,"author":{"gitId":"kailinteoo"},"content":"for both end users and computers. BookKeeper stores its data inside addressbook.json.","lastModifiedDate":"2024-04-02"},{"lineNumber":410,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":411,"author":{"gitId":"kailinteoo"},"content":"**Command Line Interface (CLI)**","lastModifiedDate":"2024-04-02"},{"lineNumber":412,"author":{"gitId":"kailinteoo"},"content":"![Ui](images/CLI.png)","lastModifiedDate":"2024-04-02"},{"lineNumber":413,"author":{"gitId":"kailinteoo"},"content":"A user interface that allows users to interact with the computer software by typing commands into the console.","lastModifiedDate":"2024-04-02"},{"lineNumber":414,"author":{"gitId":"kailinteoo"},"content":"The CLI is one method which the BookKeeper application can be launched","lastModifiedDate":"2024-04-02"},{"lineNumber":415,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":416,"author":{"gitId":"kailinteoo"},"content":"**CRM (Customer Relationship Management)** - a program that simplifies managing of clientele and their needs.","lastModifiedDate":"2024-04-02"},{"lineNumber":417,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":418,"author":{"gitId":"kailinteoo"},"content":"**GUI (Graphical User Interface)** -","lastModifiedDate":"2024-04-02"},{"lineNumber":419,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":420,"author":{"gitId":"kailinteoo"},"content":"**Terminal Emulator**","lastModifiedDate":"2024-04-02"},{"lineNumber":421,"author":{"gitId":"kailinteoo"},"content":"An application that is used to run Command Line Interface (CLI) programs for Windows: open Command Prompt or Powershell.","lastModifiedDate":"2024-04-02"},{"lineNumber":422,"author":{"gitId":"kailinteoo"},"content":"For Mac, open Terminal. For Linux, open your terminal emulator of choice","lastModifiedDate":"2024-04-02"},{"lineNumber":423,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":424,"author":{"gitId":"shavonneg"},"content":"### 7.2. Appendix B: FAQ","lastModifiedDate":"2024-04-05"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"kailinteoo"},"content":"**Q**: I cannot run the application\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":427,"author":{"gitId":"kailinteoo"},"content":"**A**: Try updating your system. On Windows, look for Windows Update.","lastModifiedDate":"2024-04-02"},{"lineNumber":428,"author":{"gitId":"kailinteoo"},"content":"For Mac","lastModifiedDate":"2024-04-02"},{"lineNumber":429,"author":{"gitId":"kailinteoo"},"content":"For Linux, type in your terminal sudo apt update -y \u0026\u0026 sudo apt upgrade","lastModifiedDate":"2024-04-02"},{"lineNumber":430,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":431,"author":{"gitId":"kailinteoo"},"content":"**Q**: What command do I use to [...]\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":432,"author":{"gitId":"kailinteoo"},"content":"**A**: You can access the help page by clicking the Help button on the page","lastModifiedDate":"2024-04-02"},{"lineNumber":433,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":434,"author":{"gitId":"kailinteoo"},"content":"**Q**: How do I backup and restore data?\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":435,"author":{"gitId":"kailinteoo"},"content":"**A**: Your data is stored in the same directory you downloaded the application in.","lastModifiedDate":"2024-04-02"},{"lineNumber":436,"author":{"gitId":"kailinteoo"},"content":"In that directory, search for a directory called data. In that directory, it is called `addressbook.json`.","lastModifiedDate":"2024-04-02"},{"lineNumber":437,"author":{"gitId":"kailinteoo"},"content":"You may copy the addressbook.json to another location to back it up,","lastModifiedDate":"2024-04-02"},{"lineNumber":438,"author":{"gitId":"kailinteoo"},"content":"and you may copy another addressbook.json to restore existing data.","lastModifiedDate":"2024-04-02"},{"lineNumber":439,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":440,"author":{"gitId":"kailinteoo"},"content":"**Q**: Can I access the application from multiple devices at once?\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":441,"author":{"gitId":"kailinteoo"},"content":"**A**: Not at the moment. It is something that we are working on, though.","lastModifiedDate":"2024-04-02"},{"lineNumber":442,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":443,"author":{"gitId":"kailinteoo"},"content":"**Q**: Can I access this application without internet connection?\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":444,"author":{"gitId":"kailinteoo"},"content":"**A**: BookKeeper is designed to work fully offline","lastModifiedDate":"2024-04-02"},{"lineNumber":445,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":446,"author":{"gitId":"kailinteoo"},"content":"**Q**: The application is not working!!!\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":447,"author":{"gitId":"kailinteoo"},"content":"**A**: Contact us at https://github.com/AY2324S2-CS2103T-T09-2/tp/releases","lastModifiedDate":"2024-04-02"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":449,"author":{"gitId":"kailinteoo"},"content":"**Q**: How do I update my application?\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":450,"author":{"gitId":"kailinteoo"},"content":"**A**: You may download the latest release at https://github.com/AY2324S2-CS2103T-T09-2/tp/releases","lastModifiedDate":"2024-04-02"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"kailinteoo"},"content":"## 8. Known issues","lastModifiedDate":"2024-04-02"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":456,"author":{"gitId":"shavonneg"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only","lastModifiedDate":"2024-04-02"},{"lineNumber":457,"author":{"gitId":"shavonneg"},"content":" the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the","lastModifiedDate":"2024-04-02"},{"lineNumber":458,"author":{"gitId":"shavonneg"},"content":" application before running the application again.","lastModifiedDate":"2024-04-02"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":460,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"kailinteoo":163,"shavonneg":101,"rertyy":8,"Jaspertzx":33,"-":156}},{"path":"docs/diagrams/LogicClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Logic as LogicPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"Parser Classes\" as ParserClasses{","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"Class ClientCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"Class OrderCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nLogic\" as Logic","lastModifiedDate":"2022-01-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Storage {","lastModifiedDate":"2021-03-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-03-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"LogicManager .right.|\u003e Logic","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"LogicManager -right-\u003e\"1\" ParserClasses","lastModifiedDate":"2024-02-09"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":"ParserClasses ..\u003e OrderCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":"ParserClasses ..\u003e ClientCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"ClientCommand -up-|\u003e Command","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"OrderCommand -up-|\u003e Command","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"LogicManager .left.\u003e Command : \u003c\u003ccall\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"LogicManager --\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"LogicManager --\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Storage --[hidden] Model","lastModifiedDate":"2021-03-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Command .[hidden]up.\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Command .right.\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":"note right of ClientCommand: ClientCommand \u003d AddCommand, \\nFindCommand, etc","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Logic ..\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"LogicManager .down.\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Command .up.\u003e CommandResult : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"shavonneg":7,"-":43}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"Class OrderList","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":"Class Order","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":"Class OrderId","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":"Class OrderDate","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"Class Deadline","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"Class Price","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"Class Description","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"Class Status","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":"Class ClientId","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"AddressBook *--\u003e \"1\" OrderList","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"OrderList --\u003e \"~* all\" Order","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":"Order -[hidden]up-\u003eName","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":"Order *--\u003e OrderId","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"Order *--\u003e OrderDate","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":"Order *--\u003e Deadline","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"Order *--\u003e Price","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"Order *--\u003e Description","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":"Order *--\u003e Status","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"Order *--\u003e ClientId","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"rertyy":23,"-":53}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"Class JsonAdaptedOrder","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":"Class HiddenOutside #C4A484","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedOrder","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":"JsonAdaptedTag -[hidden]right-\u003e JsonAdaptedOrder","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedOrder","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kailinteoo":2,"Jaspertzx":3,"-":42}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"Class OrderListPanel","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"Class OrderCard","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"MainWindow *-down-\u003e \"1\" OrderListPanel","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":"OrderListPanel -down-\u003e \"*\" OrderCard","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":"OrderListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"OrderCard -up-|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":"OrderCard ..\u003e Model","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":"HelpWindow -[hidden]up-\u003e CommandBox","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":"MainWindow -[hidden]up-|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kailinteoo":9,"-":58}},{"path":"docs/index.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: AddressBook Level-3","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":"rertyy"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T09-2/tp/actions)","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T09-2/tp/graph/badge.svg?token\u003dBMICX593IT)](https://codecov.io/gh/AY2324S2-CS2103T-T09-2/tp)","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"# Introduction","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"Welcome to BookKeeper, your solution for efficient customer management for **small business owners in the floral","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":"industry**. \u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"This application is designed to streamline customer lists and enhance productivity for individuals operating","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"small businesses with limited resources and manpower. With BookKeeper, you can easily manage customer information, track","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"orders, and personalize your customer interactions, all through a user-friendly command-line interface.","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"For the detailed documentation of this project, see","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"the [BookKeeper website](https://ay2324s2-cs2103t-t09-2.github.io/tp/).","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":"* If you are interested in using BookKeeper, head over to the [_Quick Start_ section of the **User Guide","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" **](UserGuide.html#quick-start).","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":"* If you are interested in developing BookKeeper, the [**Developer Guide**](DeveloperGuide.html) is a good place to","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" start.","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":"* Libraries","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"rertyy":19,"-":13}},{"path":"src/main/java/seedu/address/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Config values used by the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Config {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Path DEFAULT_CONFIG_FILE \u003d Paths.get(\"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Config values customizable through config file","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Level logLevel \u003d Level.INFO;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Path userPrefsFilePath \u003d Paths.get(\"preferences.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Level getLogLevel() {","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setLogLevel(Level logLevel) {","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.logLevel \u003d logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefsFilePath(Path userPrefsFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefsFilePath \u003d userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof Config)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Config otherConfig \u003d (Config) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return Objects.equals(logLevel, otherConfig.logLevel)","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(userPrefsFilePath, otherConfig.userPrefsFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Objects.hash(logLevel, userPrefsFilePath);","lastModifiedDate":"2018-12-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .add(\"logLevel\", logLevel)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"userPrefsFilePath\", userPrefsFilePath)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":1,"-":65}},{"path":"src/main/java/seedu/address/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Represents a version with major, minor and patch number.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Version implements Comparable\u003cVersion\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VERSION_REGEX \u003d \"V(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)(ea)?\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String EXCEPTION_STRING_NOT_VERSION \u003d \"String is not a valid Version. %s\";","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Pattern VERSION_PATTERN \u003d Pattern.compile(VERSION_REGEX);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final int major;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final int minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final int patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Version} with the given version details.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Version(int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.major \u003d major;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.minor \u003d minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.patch \u003d patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.isEarlyAccess \u003d isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses a version number string in the format V1.2.3.","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param versionString version number string","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return a Version object","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static Version fromString(String versionString) throws IllegalArgumentException {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Matcher versionMatcher \u003d VERSION_PATTERN.matcher(versionString);","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!versionMatcher.find()) {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(String.format(EXCEPTION_STRING_NOT_VERSION, versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new Version(Integer.parseInt(versionMatcher.group(1)),","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(2)),","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(3)),","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" versionMatcher.group(4) \u003d\u003d null ? false : true);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" public int getMajor() {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" return major;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" public int getMinor() {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" return minor;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" public int getPatch() {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" return patch;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" public boolean isEarlyAccess() {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" return isEarlyAccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return String.format(\"V%d.%d.%d%s\", major, minor, patch, isEarlyAccess ? \"ea\" : \"\");","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int compareTo(Version other) {","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (major !\u003d other.major) {","lastModifiedDate":"2018-08-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return major - other.major;","lastModifiedDate":"2018-08-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (minor !\u003d other.minor) {","lastModifiedDate":"2018-08-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return minor - other.minor;","lastModifiedDate":"2018-08-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (patch !\u003d other.patch) {","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return patch - other.patch;","lastModifiedDate":"2018-08-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (isEarlyAccess \u003d\u003d other.isEarlyAccess()) {","lastModifiedDate":"2018-08-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return 0;","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (isEarlyAccess) {","lastModifiedDate":"2018-08-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return -1;","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return 1;","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!(other instanceof Version)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Version otherVersion \u003d (Version) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return major \u003d\u003d otherVersion.major","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 minor \u003d\u003d otherVersion.minor","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 patch \u003d\u003d otherVersion.patch","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 isEarlyAccess \u003d\u003d otherVersion.isEarlyAccess;","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String hash \u003d String.format(\"%03d%03d%03d\", major, minor, patch);","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" hash \u003d \"1\" + hash;","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return Integer.parseInt(hash);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":18,"-":104}},{"path":"src/main/java/seedu/address/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" * A container for App specific utility functions.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AppUtil {","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"rertyy":1,"-":41}},{"path":"src/main/java/seedu/address/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Utility methods related to Collections.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" * @see #requireAllNonNull(Collection)","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"rertyy":4,"-":33}},{"path":"src/main/java/seedu/address/commons/util/DateTimeUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" * Helper functions for handling datetimes.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"public class DateTimeUtil {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Date should be in the format of dd/MM/yyyy\";","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" * Returns a list of valid date time formats.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" public static final String VALID_DATETIME_FORMAT \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" * Returns the valid formatter pattern.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" public static final DateTimeFormatter FORMATTER \u003d DateTimeFormatter.ofPattern(VALID_DATETIME_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" * @param test the date to be tested.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" * @return true if the date is valid.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" public static boolean isValidDate(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" LocalDateTime.parse(test, FORMATTER);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" * Returns the current date time as a String.","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" * @param dateTime the date to be formatted.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" * @return the current date time as a String.","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" public static String formatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" return dateTime.format(FORMATTER);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" * Returns the localDateTime object of the given date.","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" * @param dateTime the date to be parsed must be a valid dateTime.","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" * @return the localDateTime object of the given date.","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" public static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" return LocalDateTime.parse(dateTime, FORMATTER);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" * Returns current date time as a String in the common datetime format.","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" * @return the current date time as a String.","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" public static String getCurrentTime() {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" return formatDateTime(now);","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":68}},{"path":"src/main/java/seedu/address/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Writes and reads files.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String)},","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" * Creates parent directories of file if it has a parent directory.","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" * Assumes file exists.","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":5,"-":80}},{"path":"src/main/java/seedu/address/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationContext;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationFeature;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.SerializationFeature;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.module.SimpleModule;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" * Converts a Java object instance to JSON and vice versa.","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static ObjectMapper objectMapper \u003d new ObjectMapper().findAndRegisterModules()","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .registerModule(new SimpleModule(\"SimpleModule\")","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .addSerializer(Level.class, new ToStringSerializer())","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class)));","lastModifiedDate":"2016-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the JSON object from the given file or {@code Optional.empty()} object if the file is not found.","lastModifiedDate":"2023-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * If any values are missing from the file, default values will be used, as long as the file is a valid JSON file.","lastModifiedDate":"2023-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" * Converts a given string representation of a JSON data to instance of a class.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"rertyy"},"content":" * Converts a given instance of a class into its JSON data string representation.","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"rertyy"},"content":" * Gets the logging level that matches loggingLevelString.","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":7,"-":139}},{"path":"src/main/java/seedu/address/commons/util/Pair.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":" * Represents a pair of values.","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" * @param \u003cT\u003e the type of the first param.","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":" * @param \u003cU\u003e the type of the second param.","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"public class Pair\u003cT, U\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" private final T t;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" private final U u;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * Constructor for Pair.","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" * @param t the first param.","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" * @param u the second param.","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public Pair(T t, U u) {","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" this.t \u003d t;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" this.u \u003d u;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" public T getFirst() {","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" return t;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" public U getSecond() {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" return u;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"rertyy":32}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" * API of the Logic component.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" * Returns an unmodifiable view of the filtered list of persons.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" * Returns an unmodifiable view of the filtered list of orders.","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" ObservableList\u003cOrder\u003e getFilteredOrderList();","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"kailinteoo":5,"rertyy":6,"-":48}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" return model.getFilteredOrderList();","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"kailinteoo":5,"rertyy":1,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_INVALID_ORDER_DISPLAYED_INDEX \u003d \"The order index provided is invalid\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" * Formats the {@code Order} for display to the user.","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Jaspertzx"},"content":" public static String format(Order order) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" builder.append(order.getOrderId())","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Jaspertzx"},"content":" .append(\"; Deadline: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" .append(order.getDeadline())","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Jaspertzx"},"content":" .append(\"; Date Received: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" .append(order.getOrderDate())","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Jaspertzx"},"content":" .append(\"; Details: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" .append(order.getRemark());","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":17,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/clients/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" * Creates an AddCommand to add the specified {@code Person}.","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"rertyy":1,"Jaspertzx":3,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/clients/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":3,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/clients/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":3,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/clients/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"Jaspertzx"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"Jaspertzx"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"Jaspertzx"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"Jaspertzx"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cOrder\u003e orderSet \u003d editPersonDescriptor.getOrders().orElse(personToEdit.getOrders());","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, orderSet);","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":106,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"Jaspertzx"},"content":" private Set\u003cOrder\u003e orders;","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"Jaspertzx"},"content":" setOrders(toCopy.orders);","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-27"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-27"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-27"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-27"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-27"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-27"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-27"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-27"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":219,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":220,"author":{"gitId":"Jaspertzx"},"content":" * Returns an unmodifiable order set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-27"},{"lineNumber":221,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-27"},{"lineNumber":222,"author":{"gitId":"Jaspertzx"},"content":" * Returns {@code Optional#empty()} if {@code orders} is null.","lastModifiedDate":"2024-03-27"},{"lineNumber":223,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":224,"author":{"gitId":"Jaspertzx"},"content":" public Optional\u003cSet\u003cOrder\u003e\u003e getOrders() {","lastModifiedDate":"2024-03-27"},{"lineNumber":225,"author":{"gitId":"Jaspertzx"},"content":" return (orders !\u003d null) ? Optional.of(Collections.unmodifiableSet(orders)) : Optional.empty();","lastModifiedDate":"2024-03-27"},{"lineNumber":226,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":227,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":229,"author":{"gitId":"Jaspertzx"},"content":" * Sets {@code orders} to this object\u0027s {@code orders}.","lastModifiedDate":"2024-03-27"},{"lineNumber":230,"author":{"gitId":"Jaspertzx"},"content":" * A defensive copy of {@code orders} is used internally.","lastModifiedDate":"2024-03-27"},{"lineNumber":231,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"Jaspertzx"},"content":" public void setOrders(Set\u003cOrder\u003e orders) {","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"Jaspertzx"},"content":" this.orders \u003d (orders !\u003d null) ? new HashSet\u003c\u003e(orders) : null;","lastModifiedDate":"2024-03-27"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":250,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"Jaspertzx"},"content":" .add(\"orders\", orders)","lastModifiedDate":"2024-03-27"},{"lineNumber":264,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Jaspertzx":38,"-":229}},{"path":"src/main/java/seedu/address/logic/commands/clients/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Jaspertzx":3,"-":18}},{"path":"src/main/java/seedu/address/logic/commands/clients/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Jaspertzx":3,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/clients/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":3,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/clients/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jaspertzx":3,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/orders/AddOrderCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.orders;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":" * Adds an order to an assigned person.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"public class AddOrderCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" public static final String COMMAND_WORD \u003d \"order\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":" + \": Creates an order that is associated to a client.\"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" + \"Multiple orders will be appended to each other, \"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" + \"and old orders will always be kept during this operation\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":" + \"Parameters: INDEX (must be a positive integer), \"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" + \"DETAILS (in formation related to order), \"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":" + \"DEADLINE (the date the order is due\"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jaspertzx"},"content":" + \"r/ [ORDER]\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 d/1xRoses c/40 by/23-07-2024 00:00\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New Order added! %1$s\";","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_FAILURE \u003d \"Failed to add new Order!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" private final Order order;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" private final Index index;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" * Creates an AddOrderCommand to add the specified {@code Order}.","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" public AddOrderCommand(Index index, Order order) {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" requireAllNonNull(index, order);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jaspertzx"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Jaspertzx"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" Person editedPerson \u003d personToEdit.addOrder(order);","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" order.setPerson(editedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" model.setPersonAndAddOrder(personToEdit, editedPerson, this.order);","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Jaspertzx"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":" * the order is added to or removed from","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jaspertzx"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jaspertzx"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" return String.format(MESSAGE_SUCCESS, personToEdit.getName());","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":11,"Jaspertzx":62}},{"path":"src/main/java/seedu/address/logic/commands/orders/DeleteOrderCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands.orders;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.Pair;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" * Removes an existing order in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"public class DeleteOrderCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Deleted Order: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" public static final String COMMAND_WORD \u003d \"deleteOrder\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" + \": Deletes the order identified by the index number used in the displayed order list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" + \"Example: \" + COMMAND_WORD + \" index\";","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" public static final String MESSAGE_DELETE_ORDER_SUCCESS \u003d \"Deleted Order!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_DELETE_ORDER_FAILURE \u003d \"Failed to delete Order!\";","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" * Creates an DeleteOrderCommand to delete the specified {@code Order}.","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" public DeleteOrderCommand(Index targetIndex) {","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" List\u003cOrder\u003e lastShownOrderList \u003d model.getFilteredOrderList();","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownOrderList.size()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" Order orderToDelete \u003d lastShownOrderList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" Pair\u003cPerson, Person\u003e pair \u003d getEditedPerson(personList, orderToDelete);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" Person person \u003d pair.getFirst();","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" Person editedPerson \u003d pair.getSecond();","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" model.setPersonAndDeleteOrder(person, editedPerson, orderToDelete);","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS);","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(orderToDelete)));","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" private Pair\u003cPerson, Person\u003e getEditedPerson(List\u003cPerson\u003e personList, Order orderToDelete) throws CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" for (Person person : personList) {","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" if (person.getOrders().contains(orderToDelete)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" person.getName(), person.getPhone(), person.getEmail(),","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":" person.getAddress(), person.getTags(),","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":" removeOrder(orderToDelete, person.getOrders()));","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"rertyy"},"content":" return new Pair\u003c\u003e(person, editedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":" throw new CommandException(MESSAGE_DELETE_ORDER_FAILURE);","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":" private Set\u003cOrder\u003e removeOrder(Order orderToRemove, Set\u003cOrder\u003e orders) {","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":" HashSet\u003cOrder\u003e newOrders \u003d new HashSet\u003c\u003e(orders);","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":" newOrders.remove(orderToRemove);","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" return newOrders;","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":" || (other instanceof DeleteOrderCommand // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 targetIndex.equals(((DeleteOrderCommand) other).targetIndex)); // state check","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":58,"Jaspertzx":42}},{"path":"src/main/java/seedu/address/logic/commands/orders/EditOrderCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.orders;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BY;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"import java.util.List;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.Pair;","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":" * Edits the details of an existing order in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"public class EditOrderCommand extends Command {","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":" public static final String COMMAND_WORD \u003d \"editOrder\";","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the order identified \"","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" + \"[\" + \"DATE] \"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" + \"[\" + PREFIX_BY + \"DEADLINE] \"","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" + \"[\" + PREFIX_PRICE + \"PRICE] \"","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" + \"[\" + PREFIX_DETAILS + \"REMARK] \"","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" + \"[\" + PREFIX_STATUS + \"STATUS]...\\n\"","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \";","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" public static final String MESSAGE_EDIT_ORDER_SUCCESS \u003d \"Edited Order: %1$s\";","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" private final seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor editOrderDescriptor;","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" * @param targetIndex of the order in the filtered order list to edit","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" * @param editOrderDescriptor details to edit the order with","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":" public EditOrderCommand(Index targetIndex, seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":" requireNonNull(editOrderDescriptor);","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"shavonneg"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"shavonneg"},"content":" this.editOrderDescriptor \u003d new","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":" seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor(editOrderDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":72,"author":{"gitId":"shavonneg"},"content":" * Creates and returns a {@code Order} with the details of {@code orderToEdit}","lastModifiedDate":"2024-03-28"},{"lineNumber":73,"author":{"gitId":"shavonneg"},"content":" * edited with {@code editOrderDescriptor}.","lastModifiedDate":"2024-03-28"},{"lineNumber":74,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":75,"author":{"gitId":"shavonneg"},"content":" private static Order createEditedOrder(Order orderToEdit,","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"shavonneg"},"content":" seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"shavonneg"},"content":" assert orderToEdit !\u003d null;","lastModifiedDate":"2024-03-28"},{"lineNumber":79,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":80,"author":{"gitId":"shavonneg"},"content":" OrderDate updatedOrderDate \u003d editOrderDescriptor.getOrderDate().orElse(orderToEdit.getOrderDate());","lastModifiedDate":"2024-03-28"},{"lineNumber":81,"author":{"gitId":"shavonneg"},"content":" Deadline updatedDeadline \u003d editOrderDescriptor.getDeadline().orElse(orderToEdit.getDeadline());","lastModifiedDate":"2024-03-28"},{"lineNumber":82,"author":{"gitId":"shavonneg"},"content":" Price updatedPrice \u003d editOrderDescriptor.getPrice().orElse(orderToEdit.getPrice());","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"shavonneg"},"content":" Remark updatedRemark \u003d editOrderDescriptor.getRemark().orElse(orderToEdit.getRemark());","lastModifiedDate":"2024-03-28"},{"lineNumber":84,"author":{"gitId":"shavonneg"},"content":" Status updatedStatus \u003d editOrderDescriptor.getStatus().orElse(orderToEdit.getStatus());","lastModifiedDate":"2024-03-28"},{"lineNumber":85,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"shavonneg"},"content":" if (orderToEdit.getStatus().getStatusEnum() \u003d\u003d Status.StatusEnum.PENDING","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 updatedStatus.getStatusEnum() \u003d\u003d Status.StatusEnum.COMPLETED) {","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"shavonneg"},"content":" updatedStatus \u003d new Status(Status.StatusEnum.COMPLETED.name());","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"shavonneg"},"content":" return new Order(orderToEdit.getOrderId(), updatedOrderDate, updatedDeadline, updatedPrice, updatedRemark,","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":" updatedStatus, orderToEdit.getPerson());","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"shavonneg"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" List\u003cOrder\u003e lastShownOrderList \u003d model.getFilteredOrderList();","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownOrderList.size()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" Order orderToEdit \u003d lastShownOrderList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":" Order editedOrder \u003d createEditedOrder(orderToEdit, editOrderDescriptor);","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"shavonneg"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" Pair\u003cPerson, Person\u003e personPair \u003d getEditedPerson(personList, orderToEdit, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" Person personToEdit \u003d personPair.getFirst();","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"shavonneg"},"content":" Person editedPerson \u003d personPair.getSecond();","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" model.setPersonAndEditOrder(personToEdit, editedPerson, orderToEdit, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS);","lastModifiedDate":"2024-03-28"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_ORDER_SUCCESS, Messages.format(editedOrder)));","lastModifiedDate":"2024-03-28"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":" private Pair\u003cPerson, Person\u003e getEditedPerson(List\u003cPerson\u003e personList, Order orderToEdit, Order editedOrder) throws","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"shavonneg"},"content":" CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"shavonneg"},"content":" for (Person person : personList) {","lastModifiedDate":"2024-03-28"},{"lineNumber":120,"author":{"gitId":"shavonneg"},"content":" if (person.getOrders().contains(orderToEdit)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":121,"author":{"gitId":"shavonneg"},"content":" Set\u003cOrder\u003e newOrders \u003d new HashSet\u003c\u003e(person.getOrders());","lastModifiedDate":"2024-03-28"},{"lineNumber":122,"author":{"gitId":"shavonneg"},"content":" newOrders.remove(orderToEdit);","lastModifiedDate":"2024-03-28"},{"lineNumber":123,"author":{"gitId":"shavonneg"},"content":" newOrders.add(editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":124,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":125,"author":{"gitId":"shavonneg"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-28"},{"lineNumber":126,"author":{"gitId":"shavonneg"},"content":" person.getName(), person.getPhone(), person.getEmail(),","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"shavonneg"},"content":" person.getAddress(), person.getTags(), newOrders);","lastModifiedDate":"2024-03-28"},{"lineNumber":128,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":129,"author":{"gitId":"shavonneg"},"content":" return new Pair\u003c\u003e(person, editedPerson);","lastModifiedDate":"2024-03-28"},{"lineNumber":130,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":131,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" throw new CommandException(\"Failed to find the person associated with this order!\");","lastModifiedDate":"2024-03-28"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":137,"author":{"gitId":"shavonneg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-28"},{"lineNumber":138,"author":{"gitId":"shavonneg"},"content":" return true;","lastModifiedDate":"2024-03-28"},{"lineNumber":139,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":141,"author":{"gitId":"shavonneg"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-28"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" if (!(other instanceof seedu.address.logic.commands.orders.EditOrderCommand)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" return false;","lastModifiedDate":"2024-03-28"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":145,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":146,"author":{"gitId":"shavonneg"},"content":" seedu.address.logic.commands.orders.EditOrderCommand otherEditOrderCommand \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":147,"author":{"gitId":"shavonneg"},"content":" (seedu.address.logic.commands.orders.EditOrderCommand) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":148,"author":{"gitId":"shavonneg"},"content":" return targetIndex.equals(otherEditOrderCommand.targetIndex)","lastModifiedDate":"2024-03-28"},{"lineNumber":149,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 editOrderDescriptor.equals(otherEditOrderCommand.editOrderDescriptor);","lastModifiedDate":"2024-03-28"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":151,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-28"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-28"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":" .add(\"editOrderDescriptor\", editOrderDescriptor)","lastModifiedDate":"2024-03-28"},{"lineNumber":157,"author":{"gitId":"shavonneg"},"content":" .toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":160,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":161,"author":{"gitId":"shavonneg"},"content":" * Stores the details to edit the order with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-28"},{"lineNumber":162,"author":{"gitId":"shavonneg"},"content":" * corresponding field value of the order.","lastModifiedDate":"2024-03-28"},{"lineNumber":163,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":164,"author":{"gitId":"shavonneg"},"content":" public static class EditOrderDescriptor {","lastModifiedDate":"2024-03-28"},{"lineNumber":165,"author":{"gitId":"shavonneg"},"content":" private OrderDate orderDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":166,"author":{"gitId":"shavonneg"},"content":" private Deadline deadline;","lastModifiedDate":"2024-03-28"},{"lineNumber":167,"author":{"gitId":"shavonneg"},"content":" private Price price;","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"shavonneg"},"content":" private Remark remark;","lastModifiedDate":"2024-03-28"},{"lineNumber":169,"author":{"gitId":"shavonneg"},"content":" private Status status;","lastModifiedDate":"2024-03-28"},{"lineNumber":170,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":171,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptor() {","lastModifiedDate":"2024-03-28"},{"lineNumber":172,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":173,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":174,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":175,"author":{"gitId":"shavonneg"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-28"},{"lineNumber":176,"author":{"gitId":"shavonneg"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-28"},{"lineNumber":177,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":178,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptor(seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor toCopy) {","lastModifiedDate":"2024-03-28"},{"lineNumber":179,"author":{"gitId":"shavonneg"},"content":" setOrderDate(toCopy.orderDate);","lastModifiedDate":"2024-03-28"},{"lineNumber":180,"author":{"gitId":"shavonneg"},"content":" setDeadline(toCopy.deadline);","lastModifiedDate":"2024-03-28"},{"lineNumber":181,"author":{"gitId":"shavonneg"},"content":" setPrice(toCopy.price);","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"shavonneg"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-28"},{"lineNumber":183,"author":{"gitId":"shavonneg"},"content":" setStatus(toCopy.status);","lastModifiedDate":"2024-03-28"},{"lineNumber":184,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":185,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":186,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":187,"author":{"gitId":"shavonneg"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-28"},{"lineNumber":188,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":189,"author":{"gitId":"shavonneg"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-28"},{"lineNumber":190,"author":{"gitId":"shavonneg"},"content":" return CollectionUtil.isAnyNonNull(orderDate, deadline, price, remark, status);","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":192,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":193,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cOrderDate\u003e getOrderDate() {","lastModifiedDate":"2024-03-28"},{"lineNumber":194,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(orderDate);","lastModifiedDate":"2024-03-28"},{"lineNumber":195,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":196,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":197,"author":{"gitId":"shavonneg"},"content":" public void setOrderDate(OrderDate orderDate) {","lastModifiedDate":"2024-03-28"},{"lineNumber":198,"author":{"gitId":"shavonneg"},"content":" this.orderDate \u003d orderDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":199,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":200,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":201,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cDeadline\u003e getDeadline() {","lastModifiedDate":"2024-03-28"},{"lineNumber":202,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(deadline);","lastModifiedDate":"2024-03-28"},{"lineNumber":203,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":204,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":205,"author":{"gitId":"shavonneg"},"content":" public void setDeadline(Deadline deadline) {","lastModifiedDate":"2024-03-28"},{"lineNumber":206,"author":{"gitId":"shavonneg"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-28"},{"lineNumber":207,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":208,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":209,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cPrice\u003e getPrice() {","lastModifiedDate":"2024-03-29"},{"lineNumber":210,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(price);","lastModifiedDate":"2024-03-29"},{"lineNumber":211,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":212,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":213,"author":{"gitId":"shavonneg"},"content":" public void setPrice(Price price) {","lastModifiedDate":"2024-03-29"},{"lineNumber":214,"author":{"gitId":"shavonneg"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-29"},{"lineNumber":215,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":216,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":217,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-28"},{"lineNumber":218,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-28"},{"lineNumber":219,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":220,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":221,"author":{"gitId":"shavonneg"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-28"},{"lineNumber":222,"author":{"gitId":"shavonneg"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-28"},{"lineNumber":223,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":224,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":225,"author":{"gitId":"shavonneg"},"content":" public Optional\u003cStatus\u003e getStatus() {","lastModifiedDate":"2024-03-28"},{"lineNumber":226,"author":{"gitId":"shavonneg"},"content":" return Optional.ofNullable(status);","lastModifiedDate":"2024-03-28"},{"lineNumber":227,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":228,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":229,"author":{"gitId":"shavonneg"},"content":" public void setStatus(Status status) {","lastModifiedDate":"2024-03-28"},{"lineNumber":230,"author":{"gitId":"shavonneg"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-28"},{"lineNumber":231,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":232,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":233,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":234,"author":{"gitId":"shavonneg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":235,"author":{"gitId":"shavonneg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-28"},{"lineNumber":236,"author":{"gitId":"shavonneg"},"content":" return true;","lastModifiedDate":"2024-03-28"},{"lineNumber":237,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":238,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":239,"author":{"gitId":"shavonneg"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-28"},{"lineNumber":240,"author":{"gitId":"shavonneg"},"content":" if (!(other instanceof seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":241,"author":{"gitId":"shavonneg"},"content":" return false;","lastModifiedDate":"2024-03-28"},{"lineNumber":242,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":243,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":244,"author":{"gitId":"shavonneg"},"content":" seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor otherEditOrderDescriptor \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":245,"author":{"gitId":"shavonneg"},"content":" (seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":246,"author":{"gitId":"shavonneg"},"content":" return Objects.equals(orderDate, otherEditOrderDescriptor.orderDate)","lastModifiedDate":"2024-03-28"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 Objects.equals(deadline, otherEditOrderDescriptor.deadline)","lastModifiedDate":"2024-03-28"},{"lineNumber":248,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 Objects.equals(price, otherEditOrderDescriptor.price)","lastModifiedDate":"2024-03-29"},{"lineNumber":249,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 Objects.equals(remark, otherEditOrderDescriptor.remark)","lastModifiedDate":"2024-03-28"},{"lineNumber":250,"author":{"gitId":"shavonneg"},"content":" \u0026\u0026 Objects.equals(status, otherEditOrderDescriptor.status);","lastModifiedDate":"2024-03-28"},{"lineNumber":251,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":252,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":253,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":254,"author":{"gitId":"shavonneg"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":255,"author":{"gitId":"shavonneg"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-28"},{"lineNumber":256,"author":{"gitId":"shavonneg"},"content":" .add(\"orderDate\", orderDate)","lastModifiedDate":"2024-03-28"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":" .add(\"deadline\", deadline)","lastModifiedDate":"2024-03-28"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" .add(\"price\", price)","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"shavonneg"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-28"},{"lineNumber":260,"author":{"gitId":"shavonneg"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-03-28"},{"lineNumber":261,"author":{"gitId":"shavonneg"},"content":" .toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":262,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":263,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":264,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"shavonneg":263,"Jaspertzx":1}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new AddCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" Set\u003cOrder\u003e orderList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, orderList);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"rertyy":11,"Jaspertzx":4,"-":50}},{"path":"src/main/java/seedu/address/logic/parser/AddOrderCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BY;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" * Parses input arguments and creates a new AddOrderCommand object.","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":"public class AddOrderCommandParser implements Parser\u003cAddOrderCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jaspertzx"},"content":" * Parses the given {@code String} of arguments in the context of the AddOrderCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" * and returns an AddOrderCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" public AddOrderCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" PREFIX_DETAILS, PREFIX_BY, PREFIX_PRICE);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":" Index index;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" AddOrderCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" OrderId orderId \u003d new OrderId();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" OrderDate orderDate \u003d new OrderDate(DateTimeUtil.getCurrentTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Jaspertzx"},"content":" Deadline deadline;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jaspertzx"},"content":" Remark remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" Price price;","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" deadline \u003d new Deadline(argMultimap.getValue(PREFIX_BY).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":" remark \u003d new Remark(argMultimap.getValue(PREFIX_DETAILS).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":" price \u003d new Price(argMultimap.getValue(PREFIX_PRICE).get());","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":" } catch (NoSuchElementException error) {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jaspertzx"},"content":" AddOrderCommand.MESSAGE_USAGE), error);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" Status status \u003d new Status(\"pending\");","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":" Order order \u003d new Order(orderId, orderDate, deadline, price, remark, status);","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" return new AddOrderCommand(index, order);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":4,"rertyy":4,"Jaspertzx":59}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.orders.EditOrderCommand;","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" case AddOrderCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":" return new AddOrderCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":" case DeleteOrderCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" return new DeleteOrderCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"shavonneg"},"content":" case EditOrderCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"shavonneg"},"content":" return new EditOrderCommandParser().parse(arguments);","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"shavonneg":4,"Jaspertzx":16,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" * Prefixes mapped to their respective arguments.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" **/","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"rertyy":3,"-":77}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" * {@see findAllPrefixPositions}.","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"rertyy"},"content":" private int startPosition;","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"rertyy":3,"-":145}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands.","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" /* Prefix definitions. */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":" public static final Prefix PREFIX_DETAILS \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":" public static final Prefix PREFIX_BY \u003d new Prefix(\"by/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":" public static final Prefix PREFIX_PRICE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":" public static final Prefix PREFIX_STATUS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"shavonneg":1,"rertyy":2,"Jaspertzx":3,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new DeleteCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"rertyy":2,"Jaspertzx":1,"-":27}},{"path":"src/main/java/seedu/address/logic/parser/DeleteOrderCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new DeleteOrderCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"public class DeleteOrderCommandParser implements Parser\u003cDeleteOrderCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":" * Parses the given {@code String} of arguments in the context of the","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":" * DeleteOrderCommand and returns a DeleteOrderCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":" public DeleteOrderCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" return new DeleteOrderCommand(index);","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteOrderCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":6,"Jaspertzx":23}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new EditCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"rertyy":2,"Jaspertzx":2,"-":82}},{"path":"src/main/java/seedu/address/logic/parser/EditOrderCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BY;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.orders.EditOrderCommand;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":" * Parses input arguments and creates a new EditOrderCommand object.","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"public class EditOrderCommandParser implements Parser\u003cEditOrderCommand\u003e {","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":" * Parses the given {@code String} of arguments in the context of the EditOrderCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" * and returns an EditOrderCommand object for execution.","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":" public EditOrderCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_BY, PREFIX_PRICE, PREFIX_DETAILS, PREFIX_STATUS);","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":" Index targetIndex;","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" try {","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" targetIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditOrderCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_BY, PREFIX_PRICE, PREFIX_DETAILS, PREFIX_STATUS);","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" EditOrderCommand.EditOrderDescriptor editOrderDescriptor \u003d new EditOrderCommand.EditOrderDescriptor();","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" if (argMultimap.getValue(PREFIX_BY).isPresent()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor.setDeadline(ParserUtil.parseDeadline(argMultimap.getValue(PREFIX_BY).get()));","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" if (argMultimap.getValue(PREFIX_PRICE).isPresent()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor.setPrice(ParserUtil.parsePrice(argMultimap.getValue(PREFIX_PRICE).get()));","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" if (argMultimap.getValue(PREFIX_DETAILS).isPresent()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_DETAILS).get()));","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" if (argMultimap.getValue(PREFIX_STATUS).isPresent()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" editOrderDescriptor.setStatus(ParserUtil.parseStatus(argMultimap.getValue(PREFIX_STATUS).get()));","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" return new EditOrderCommand(targetIndex, editOrderDescriptor);","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"shavonneg":58}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" * Parses input arguments and creates a new FindCommand object.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"rertyy":2,"Jaspertzx":1,"-":31}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"Jaspertzx"},"content":" * Parses a {@code String orderId} into a {@code OrderId}.","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"Jaspertzx"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"Jaspertzx"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"Jaspertzx"},"content":" * @throws ParseException if the given {@code orderId} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"Jaspertzx"},"content":" public static OrderId parseOrderId(String orderId) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(orderId);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"Jaspertzx"},"content":" String trimmedTag \u003d orderId.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" if (!OrderId.isValidOrderId(trimmedTag)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" throw new ParseException(OrderId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"Jaspertzx"},"content":" return new OrderId(trimmedTag);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":147,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":148,"author":{"gitId":"shavonneg"},"content":" * Parses a {@code String deadline} into a {@code deadline}.","lastModifiedDate":"2024-03-28"},{"lineNumber":149,"author":{"gitId":"shavonneg"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":151,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the given {@code deadline} is invalid.","lastModifiedDate":"2024-03-28"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" public static Deadline parseDeadline(String deadline) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-28"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" String trimmedDeadline \u003d deadline.trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":" if (!Deadline.isValidDeadline(trimmedDeadline)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":157,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(Deadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"shavonneg"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"shavonneg"},"content":" return new Deadline(trimmedDeadline);","lastModifiedDate":"2024-03-28"},{"lineNumber":160,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":161,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":162,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":163,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":164,"author":{"gitId":"shavonneg"},"content":" * Parses a {@code String price} into a {@code price}.","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"shavonneg"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":166,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":167,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the given {@code price} is invalid.","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":169,"author":{"gitId":"shavonneg"},"content":" public static Price parsePrice(String price) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"shavonneg"},"content":" requireNonNull(price);","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"shavonneg"},"content":" String trimmedPrice \u003d price.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"shavonneg"},"content":" if (!Price.isValidPrice(trimmedPrice)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"shavonneg"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":175,"author":{"gitId":"shavonneg"},"content":" return new Price(trimmedPrice);","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":177,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":178,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":179,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":180,"author":{"gitId":"shavonneg"},"content":" * Parses a {@code String remark} into a {@code remark}.","lastModifiedDate":"2024-03-28"},{"lineNumber":181,"author":{"gitId":"shavonneg"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":182,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":183,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the given {@code remark} is invalid.","lastModifiedDate":"2024-03-28"},{"lineNumber":184,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":185,"author":{"gitId":"shavonneg"},"content":" public static Remark parseRemark(String remark) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":186,"author":{"gitId":"shavonneg"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-28"},{"lineNumber":187,"author":{"gitId":"shavonneg"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":188,"author":{"gitId":"shavonneg"},"content":" if (!Remark.isValidRemark(trimmedRemark)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":189,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(Remark.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":190,"author":{"gitId":"shavonneg"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":191,"author":{"gitId":"shavonneg"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-03-28"},{"lineNumber":192,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":193,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":194,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":195,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":196,"author":{"gitId":"shavonneg"},"content":" * Parses a {@code String status} into a {@code status}.","lastModifiedDate":"2024-03-28"},{"lineNumber":197,"author":{"gitId":"shavonneg"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":198,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":199,"author":{"gitId":"shavonneg"},"content":" * @throws ParseException if the given {@code status} is invalid.","lastModifiedDate":"2024-03-28"},{"lineNumber":200,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":201,"author":{"gitId":"shavonneg"},"content":" public static Status parseStatus(String status) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":202,"author":{"gitId":"shavonneg"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-28"},{"lineNumber":203,"author":{"gitId":"shavonneg"},"content":" String trimmedStatus \u003d status.trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":204,"author":{"gitId":"shavonneg"},"content":" if (!Status.isValidStatus(trimmedStatus)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":205,"author":{"gitId":"shavonneg"},"content":" throw new ParseException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":206,"author":{"gitId":"shavonneg"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":207,"author":{"gitId":"shavonneg"},"content":" return new Status(trimmedStatus);","lastModifiedDate":"2024-03-28"},{"lineNumber":208,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":209,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"kailinteoo":5,"shavonneg":68,"Jaspertzx":13,"-":124}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * Wraps all data at the address-book level.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" public AddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":" persons.setPersonAndAddOrder(target, editedPerson, order);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" persons.setPersonAndDeleteOrder(target, editedPerson, order);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" * Replaces the given order {@code target} in the list with {@code editedOrder}.","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":" * The person identity of {@code editedOrder} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"shavonneg"},"content":" requireNonNull(editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"shavonneg"},"content":" persons.setPersonAndEditOrder(target, editedPerson, order, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getOrderList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Jaspertzx"},"content":" return persons.asUnmodifiableObservableListOrders();","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":156,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"shavonneg":15,"rertyy":14,"Jaspertzx":5,"-":123}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" * {@code Predicate} that always evaluate to true.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" * {@code Predicate} that always evaluate to true.","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" Predicate\u003cOrder\u003e PREDICATE_SHOW_ALL_ORDERS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" * Returns the AddressBook.","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" void setPersonAndAddOrder(Person target, Person editedPerson, Order order);","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":" void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"shavonneg"},"content":" void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" * Returns an unmodifiable view of the filtered person list.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"rertyy"},"content":" * Returns an unmodifiable view of the filtered order list.","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" ObservableList\u003cOrder\u003e getFilteredOrderList();","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" * Updates the filter of the filtered order list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"shavonneg"},"content":" void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":29,"rertyy":8,"Jaspertzx":1,"-":80}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" private final FilteredList\u003cOrder\u003e filteredOrders;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" filteredOrders \u003d new FilteredList\u003c\u003e(this.addressBook.getOrderList());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" return userPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"shavonneg"},"content":" return addressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"shavonneg"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" addressBook.setPersonAndAddOrder(target, editedPerson, order);","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"rertyy"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"rertyy"},"content":" addressBook.setPersonAndDeleteOrder(target, editedPerson, order);","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":132,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-28"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(target, editedPerson, order, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":137,"author":{"gitId":"shavonneg"},"content":" addressBook.setPersonAndEditOrder(target, editedPerson, order, editedOrder);","lastModifiedDate":"2024-03-28"},{"lineNumber":138,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":139,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":141,"author":{"gitId":"Jaspertzx"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Order \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"Jaspertzx"},"content":" * Returns an unmodifiable view of the list of {@code Order} backed by the internal list of.","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"Jaspertzx"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" return filteredOrders;","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"Jaspertzx"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"rertyy"},"content":" filteredOrders.setPredicate(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":162,"author":{"gitId":"rertyy"},"content":" * {@code versionedAddressBook}.","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"kailinteoo":7,"shavonneg":18,"rertyy":13,"Jaspertzx":15,"-":138}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" * Unmodifiable view of an address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" * Returns an unmodifiable view of the orders list.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" * This list will not contain any duplicate orders.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" ObservableList\u003cOrder\u003e getOrderList();","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":6,"rertyy":2,"-":16}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":" Path getOrderBookFilePath();","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"kailinteoo":2,"-":16}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" private Path orderBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" setOrderBookFilePath(newUserPrefs.getOrderBookFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath)","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 orderBookFilePath.equals(otherUserPrefs.orderBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":" return Objects.hash(guiSettings, addressBookFilePath, orderBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":" sb.append(\"\\nLocal data file location : \" + orderBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d OrderBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":" public Path getOrderBookFilePath() {","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":" return orderBookFilePath;","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":" public void setOrderBookFilePath(Path orderBookFilePath) {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"kailinteoo"},"content":" requireNonNull(orderBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":" this.orderBookFilePath \u003d orderBookFilePath;","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"kailinteoo":19,"-":86}},{"path":"src/main/java/seedu/address/model/order/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Represents a Deadline that an order must be fulfilled","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDeadline(String)}.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"public class Deadline implements Comparable\u003cDeadline\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" \"A deadline should be in the format of \"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" + \"DD-MM-YYYY HH:MM, e.g. 01-01-2024 23:59\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" public final LocalDateTime deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" * Constructs a {@code deadline}.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" * @param deadline A valid deadline.","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" public Deadline(String deadline) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" checkArgument(isValidDeadline(deadline), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" this.deadline \u003d DateTimeUtil.parseDateTime(deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" * Returns true if a given string is a valid deadline.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" public static boolean isValidDeadline(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" return DateTimeUtil.isValidDate(test);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" public int compareTo(Deadline other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" return this.deadline.compareTo(other.deadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" return DateTimeUtil.formatDateTime(deadline);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof Deadline)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" Deadline otherDeadline \u003d (Deadline) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" return deadline.equals(otherDeadline.deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" return deadline.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":68,"Jaspertzx":5}},{"path":"src/main/java/seedu/address/model/order/Order.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" * Represents an Order.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"public class Order {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" private final OrderId orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" private final OrderDate orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" private final Deadline deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" private final Price price;","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" private final Status status;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" private Person person;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" public Order(OrderId orderId, OrderDate orderDate, Deadline deadline,","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" Price price, Remark remark, Status status","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" ) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" requireAllNonNull(orderId, orderDate, deadline, price, remark, status);","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" this.orderId \u003d orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" this.orderDate \u003d orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" public Order(OrderId orderId, OrderDate orderDate, Deadline deadline,","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" Price price, Remark remark, Status status, Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" requireAllNonNull(orderId, orderDate, deadline, price, remark, status, person);","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" this.orderId \u003d orderId;","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" this.orderDate \u003d orderDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" public OrderId getOrderId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" return orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" public OrderDate getOrderDate() {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" return orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" public Deadline getDeadline() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" return deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" public Price getPrice() {","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" return price;","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" return remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" public Status getStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" return status;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" public boolean checkId(OrderId orderId) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":" return this.getOrderId().equals(orderId);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"rertyy"},"content":" public Person getPerson() {","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" return person;","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"rertyy"},"content":" public void setPerson(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof Order)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"rertyy"},"content":" Order otherOrder \u003d (Order) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"rertyy"},"content":" return otherOrder.getOrderId().equals(getOrderId())","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 otherOrder.getOrderDate().equals(getOrderDate())","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 otherOrder.getDeadline().equals(getDeadline())","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 otherOrder.getPrice().equals(getPrice())","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 otherOrder.getRemark().equals(getRemark())","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 otherOrder.getStatus().equals(getStatus())","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 Objects.equals(otherOrder.getPerson(), getPerson());","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":" return Objects.hash(orderId, orderDate, deadline, price, remark, status);","lastModifiedDate":"2024-03-28"},{"lineNumber":117,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"rertyy"},"content":" // Intentionally do not include Person within the order to prevent infinite loop","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"rertyy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" .add(\"orderId\", orderId)","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":" .add(\"orderDate\", orderDate)","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":" .add(\"deadline\", deadline)","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":" .add(\"price\", price)","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"rertyy"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"rertyy"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"rertyy"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":132,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":10,"rertyy":118,"Jaspertzx":4}},{"path":"src/main/java/seedu/address/model/order/OrderDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Represents the date an order was placed.","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"public class OrderDate {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" \"Order date should be in the format of DD-MM-YYYY HH:MM, e.g. 01-01-2024 23:59\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" private final LocalDateTime orderDate;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" * Constructs a {@code OrderDate}.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" * @param orderDate A valid order date.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" public OrderDate(String orderDate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" requireNonNull(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" checkArgument(isValidOrderDate(orderDate), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" this.orderDate \u003d DateTimeUtil.parseDateTime(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" public static boolean isValidOrderDate(String orderDate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" return DateTimeUtil.isValidDate(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" return DateTimeUtil.formatDateTime(orderDate);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof OrderDate)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" OrderDate otherOrderDate \u003d (OrderDate) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" return orderDate.equals(otherOrderDate.orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" return orderDate.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":2,"rertyy":55}},{"path":"src/main/java/seedu/address/model/order/OrderId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import java.util.UUID;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" * Represents an Order\u0027s ID in the order book.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":" * Guarantees: immutable.","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"public class OrderId {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Order ID should be a valid UUID\";","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":" private final UUID id;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" * Constructs an {@code OrderId}.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" public OrderId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" this.id \u003d UUID.randomUUID();","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" * Constructs an {@code OrderId} from a UUID.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" * @param id UUID to be used as the OrderId.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" public OrderId(String id) throws IllegalArgumentException {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" this.id \u003d UUID.fromString(id);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" * Checks whether a OrderId string is valid.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" * @param test String to be tested.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" * @return true if the string is a valid UUID, false otherwise.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" public static boolean isValidOrderId(String test) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" UUID.fromString(test);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" return id.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" if (other instanceof String) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" return id.toString().equals(other);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" if (other instanceof OrderId) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" OrderId otherOrderId \u003d (OrderId) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" return id.equals(otherOrderId.id);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" return id.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":19,"rertyy":55,"Jaspertzx":1}},{"path":"src/main/java/seedu/address/model/order/OrderNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":" * Tests that an {@code Order}\u0027s name matches any of the keywords given.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"public class OrderNameContainsKeywordsPredicate implements Predicate\u003cOrder\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":" public OrderNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":" public boolean test(Order order) {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(order.getRemark().toString(), keyword));","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" if (!(other instanceof OrderNameContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate otherPredicate \u003d (OrderNameContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" return keywords.equals(otherPredicate.keywords);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"shavonneg":43}},{"path":"src/main/java/seedu/address/model/order/Price.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import java.text.DecimalFormat;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":" * Represents the price of items for the order in the order book.","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPrice(String)}","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"public class Price {","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":" \"Price must be a positive number and can only include up to two decimal places\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" public final double value;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" * Constructs a {@code Price}.","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" * @param value A valid price.","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":" public Price(String value) {","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" checkArgument(isValidPrice(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" this.value \u003d truncateToTwoDecimalPlaces(Double.parseDouble(value));","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" * Returns true if a given double is a valid price.","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" * @param test the price to be tested","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" * @return true if the price is valid","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" public static boolean isValidPrice(String test) {","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" return Double.parseDouble(test) \u003e 0;","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" * Truncates a double value to two decimal places.","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" * @param value the double value to be truncated","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" * @return the truncated value","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" private double truncateToTwoDecimalPlaces(double value) {","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" DecimalFormat df \u003d new DecimalFormat(\"#.##\");","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" return Double.parseDouble(df.format(value));","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" return String.valueOf(value);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":" if (!(other instanceof Price)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" Price otherPrice \u003d (Price) other;","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" return value \u003d\u003d otherPrice.value;","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":" return Double.hashCode(value);","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":33,"rertyy":41}},{"path":"src/main/java/seedu/address/model/order/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" * Represents the remark of an order in the order book.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"public class Remark {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Remark can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * The first character of the remark must not be a whitespace,","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public final String value;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" * @param remark A valid remark.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" checkArgument(isValidRemark(remark), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" this.value \u003d remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" * Returns true if a given string is a valid remark.","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" * @param test the remark to be tested.","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" * @return true if the remark is valid.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" public static boolean isValidRemark(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" return value;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" return otherRemark.value.equals(this.value);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":65}},{"path":"src/main/java/seedu/address/model/order/Status.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" * Represents an Order\u0027s status in the order book.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStatus(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"public class Status {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" \"Status can only be either \u0027pending\u0027, \u0027completed\u0027 or \u0027canceled\u0027\";","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" private final StatusEnum status;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" * Constructs a {@code Status}.","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" * @param status A valid status.","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" public Status(String status) {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" checkArgument(isValidStatus(status), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" this.status \u003d StatusEnum.valueOf(status.toUpperCase());","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" * Returns true if a given string is a valid status.","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" public static boolean isValidStatus(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" return !test.isBlank()","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 !test.isEmpty()","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" \u0026\u0026 Arrays.stream(StatusEnum.values())","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" .anyMatch(status -\u003e status.name().equalsIgnoreCase(test));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" * Returns the status enum value.","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" public StatusEnum getStatusEnum() {","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" return status;","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" return status.name();","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" if (!(other instanceof Status)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" Status otherStatus \u003d (Status) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" return otherStatus.status.equals(this.status);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" return status.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" * Represents the statuses an order can take in the order book.","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" public enum StatusEnum {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" PENDING, COMPLETED, CANCELED","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"shavonneg":7,"rertyy":73}},{"path":"src/main/java/seedu/address/model/order/exceptions/OrderNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order.exceptions;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":" * Signals that the operation is unable to find the specified Order.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"public class OrderNotFoundException extends RuntimeException {","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":7}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" private final Set\u003cOrder\u003e orders \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cTag\u003e tags, Set\u003cOrder\u003e orders) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" requireAllNonNull(name, phone, email, address, tags, orders);","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" this.orders.addAll(orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" * Returns an immutable order set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"Jaspertzx"},"content":" public Set\u003cOrder\u003e getOrders() {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"Jaspertzx"},"content":" return Collections.unmodifiableSet(this.orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" * Returns a new Person object, with the specified Order added to the orders object.","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"Jaspertzx"},"content":" * @param order the order to be added","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" * @return new Person object","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" public Person addOrder(Order order) {","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cOrder\u003e newOrders \u003d new HashSet\u003c\u003e(orders);","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" newOrders.add(order);","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":" return new Person(this.name, this.phone, this.email, this.address, this.getTags(), newOrders);","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Jaspertzx"},"content":" * The list of orders in this person.","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Jaspertzx"},"content":" public List\u003cOrder\u003e getOrdersList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Jaspertzx"},"content":" return new ArrayList\u003c\u003e(orders);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"kailinteoo"},"content":" \u0026\u0026 orders.equals(otherPerson.orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"kailinteoo"},"content":" return Objects.hash(name, phone, email, address, tags, orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"kailinteoo"},"content":" .add(\"orders\", orders)","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"kailinteoo":4,"Jaspertzx":35,"-":114}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" private final ObservableList\u003cOrder\u003e internalOrderList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":" private final ObservableList\u003cOrder\u003e internalUnmodifiableListOrder \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" FXCollections.unmodifiableObservableList(internalOrderList);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" * Removes the respective Order object from the ObservableList as well.","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":" * @param target person to be removed.","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"rertyy"},"content":" * @param editedPerson person to be added.","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"shavonneg"},"content":" * @param order order to be added.","lastModifiedDate":"2024-03-28"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"rertyy"},"content":" setPerson(target, editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"shavonneg"},"content":" internalOrderList.remove(order);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" sortOrders();","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":" * Adds the Order object to the ObservableList as well.","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":" * @param target person to be removed.","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" * @param editedPerson person to be added.","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" * @param order order to be removed.","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" setPerson(target, editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"rertyy"},"content":" internalOrderList.add(order);","lastModifiedDate":"2024-03-29"},{"lineNumber":101,"author":{"gitId":"Jaspertzx"},"content":" sortOrders();","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"shavonneg"},"content":" * @param person person to be removed.","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" * @param editedPerson person to be added.","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" * @param orderToDelete order to be removed.","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"shavonneg"},"content":" * @param orderToAdd order to be added.","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person person, Person editedPerson, Order orderToDelete, Order orderToAdd) {","lastModifiedDate":"2024-03-28"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(person, orderToDelete, orderToAdd);","lastModifiedDate":"2024-03-28"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" setPerson(person, editedPerson);","lastModifiedDate":"2024-03-28"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":" int index \u003d internalOrderList.indexOf(orderToDelete);","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":" internalOrderList.set(index, orderToAdd);","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"Jaspertzx"},"content":" sortOrders();","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":126,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"rertyy"},"content":" internalOrderList.removeAll(toRemove.getOrdersList());","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" setOrders();","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":152,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":160,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"Jaspertzx"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cOrder\u003e asUnmodifiableObservableListOrders() {","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"Jaspertzx"},"content":" return internalUnmodifiableListOrder;","lastModifiedDate":"2024-04-03"},{"lineNumber":166,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":167,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"Jaspertzx"},"content":" private void setOrders() {","lastModifiedDate":"2024-04-03"},{"lineNumber":169,"author":{"gitId":"Jaspertzx"},"content":" List\u003cOrder\u003e creationOrderList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"Jaspertzx"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jaspertzx"},"content":" creationOrderList.addAll(person.getOrdersList());","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jaspertzx"},"content":" internalOrderList.setAll(creationOrderList);","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jaspertzx"},"content":" private void sortOrders() {","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"Jaspertzx"},"content":" FXCollections.sort(internalOrderList, (order1, order2) -\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"Jaspertzx"},"content":" order1.getDeadline().compareTo(order2.getDeadline()));","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":214,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":215,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":216,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":217,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"shavonneg":21,"rertyy":24,"Jaspertzx":30,"-":149}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" private SampleDataUtil() {","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" } //","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" Set\u003cOrder\u003e s1 \u003d Set.of(","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" new Order(new OrderId(\"69c25c8d-9e34-4d9d-8bad-e378f203ae73\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" new OrderDate(\"01-03-2024 23:59\"), new Deadline(\"01-03-2024 23:59\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" new Price(\"50\"), new Remark(\"No remark\"), new Status(\"PENDING\")),","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" new Order(new OrderId(\"b7d063c5-f803-4f75-b2ad-777ec679b75e\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" new OrderDate(\"10-02-2024 11:33\"), new Deadline(\"14-02-2024 10:59\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" new Price(\"20\"), new Remark(\"No remark\"), new Status(\"COMPLETED\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" Set\u003cOrder\u003e s2 \u003d Set.of(","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" new Order(new OrderId(\"fc64826c-369b-4f45-97c0-f98e2edfa006\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" new OrderDate(\"10-10-2024 01:50\"), new Deadline(\"15-10-2024 13:50\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" new Price(\"30\"), new Remark(\"No remark\"), new Status(\"CANCELED\")),","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" new Order(new OrderId(\"cd7e3cb4-c310-4692-ba68-a779f6e09d68\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" new OrderDate(\"10-02-2024 11:33\"), new Deadline(\"14-02-2024 10:59\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" new Price(\"20\"), new Remark(\"No remark\"), new Status(\"CANCELED\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" Person p1 \u003d new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" new Email(\"alexyeoh@example.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" getTagSet(\"friends\"), s1);","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" p1.getOrders().forEach(order -\u003e order.setPerson(p1));","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" Person p2 \u003d new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" new Email(\"berniceyu@example.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" getTagSet(\"colleagues\", \"friends\"), s2);","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" p2.getOrders().forEach(order -\u003e order.setPerson(p2));","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" Person p3 \u003d new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" new Email(\"charlotte@example.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" getTagSet(\"neighbours\"), Set.of());","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" Person p4 \u003d new Person(new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" new Email(\"lidavid@example.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" getTagSet(\"family\"), Set.of());","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" Person p5 \u003d new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" new Email(\"irfan@example.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" getTagSet(\"classmates\"), Set.of());","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" Person p6 \u003d new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" new Email(\"royb@example.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" getTagSet(\"colleagues\"), Set.of());","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" return new Person[]{p1, p2, p3, p4, p5, p6};","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"kailinteoo":9,"rertyy":36,"-":40}},{"path":"src/main/java/seedu/address/storage/AddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents a storage for {@link seedu.address.model.AddressBook}.","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" * Returns AddressBook(client) data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"kailinteoo":3,"-":44}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedOrder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" * Jackson-friendly version of {@link Order}.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":"public class JsonAdaptedOrder {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Order\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" private final String orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":" private final String orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" private final String deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" private final String price;","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" private final String remark;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" private final String status;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":" * Constructs a {@code JsonAdaptedOrder} with the given order details.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" @JsonCreator","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" public JsonAdaptedOrder(@JsonProperty(\"orderId\") String orderId, @JsonProperty(\"orderDate\") String orderDate,","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" @JsonProperty(\"deadline\") String deadline, @JsonProperty(\"price\") String price,","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" @JsonProperty(\"remark\") String remark, @JsonProperty(\"status\") String status) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" this.orderId \u003d orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" this.orderDate \u003d orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" * Converts a given {code Order} into this class for Jackson use.","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" public JsonAdaptedOrder(Order source) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":" orderId \u003d source.getOrderId().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" orderDate \u003d source.getOrderDate().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" deadline \u003d source.getDeadline().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" price \u003d source.getPrice().toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" remark \u003d source.getRemark().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":" status \u003d source.getStatus().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":" * Converts this Jackson-friendly adapted order object into the model\u0027s {@code Order} object.","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted order.","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":" public Order toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":" if (orderId \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" OrderId.class.getSimpleName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":" if (!OrderId.isValidOrderId(orderId)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(OrderId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":" final OrderId modelOrderId \u003d new OrderId(orderId);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":" if (orderDate \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" OrderDate.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":" if (!OrderDate.isValidOrderDate(orderDate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(OrderDate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":" final OrderDate modelOrderDate \u003d new OrderDate(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":" if (deadline \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":" Deadline.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":" if (!Deadline.isValidDeadline(deadline)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(Deadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":" final Deadline modelDeadline \u003d new Deadline(deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":" if (price \u003d\u003d null) {","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":" throw new NumberFormatException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Price.class.getSimpleName()));","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":" if (!Price.isValidPrice(price)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":" throw new NumberFormatException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"rertyy"},"content":" final Price modelPrice \u003d new Price(price);","lastModifiedDate":"2024-03-29"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":" if (remark \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"kailinteoo"},"content":" if (!Remark.isValidRemark(remark)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(Remark.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":" final Remark modelRemarks \u003d new Remark(remark);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"kailinteoo"},"content":" if (status \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Status.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":" if (!Status.isValidStatus(status)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":" throw new IllegalValueException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" final Status modelStatus \u003d new Status(status);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":" return new Order(modelOrderId, modelOrderDate, modelDeadline, modelPrice, modelRemarks, modelStatus);","lastModifiedDate":"2024-03-28"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":122,"rertyy":1,"Jaspertzx":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" private final List\u003cJsonAdaptedOrder\u003e orders \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" @JsonProperty(\"orders\") List\u003cJsonAdaptedOrder\u003e orders) {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" if (orders !\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" this.orders.addAll(orders);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" orders.addAll(source.getOrders().stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":" .map(JsonAdaptedOrder::new)","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":" final List\u003cOrder\u003e personOrders \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":" for (JsonAdaptedOrder order : orders) {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":" personOrders.add(order.toModelType());","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":" final Set\u003cOrder\u003e modelOrders \u003d new HashSet\u003c\u003e(personOrders);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":" Person newPerson \u003d new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelOrders);","lastModifiedDate":"2024-03-29"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":" newPerson.getOrders().forEach(order -\u003e order.setPerson(newPerson));","lastModifiedDate":"2024-03-29"},{"lineNumber":126,"author":{"gitId":"rertyy"},"content":" return newPerson;","lastModifiedDate":"2024-03-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"kailinteoo":19,"rertyy":3,"-":107}},{"path":"src/main/java/seedu/address/storage/JsonAddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" private Path addressBookFilePath;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" //private Path filePath;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" * Constructs a {@code JsonAddressBookStorage} with the specified file paths.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" * @param addressBookFilePath The file path for the address book data.","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" public JsonAddressBookStorage(Path addressBookFilePath) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" return addressBookFilePath;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" return readAddressBook(addressBookFilePath);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":" saveAddressBook(addressBook, addressBookFilePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"kailinteoo":13,"-":75}},{"path":"src/main/java/seedu/address/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" * A class to access UserPrefs stored in the hard disk as a json file.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorage implements UserPrefsStorage {","lastModifiedDate":"2016-10-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public JsonUserPrefsStorage(Path filePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" * Similar to {@link #readUserPrefs()}.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(prefsFilePath, UserPrefs.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"rertyy":3,"-":45}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" * API of the Storage component.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"kailinteoo":1,"rertyy":1,"-":31}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" public static final String USERGUIDE_URL \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" \"https://ay2324s2-cs2103t-t09-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" * @throws IllegalStateException \u003cul\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"rertyy":5,"-":98}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" private OrderListPanel orderListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" private StackPane orderListPanelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" orderListPanel \u003d new OrderListPanel(logic.getFilteredOrderList());","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":" orderListPanelPlaceholder.getChildren().add(orderListPanel.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":177,"author":{"gitId":"kailinteoo"},"content":" public OrderListPanel getOrderListPanel() {","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"kailinteoo"},"content":" return orderListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"kailinteoo":11,"-":196}},{"path":"src/main/java/seedu/address/ui/OrderCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"public class OrderCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":" private static final String FXML \u003d \"OrderListCard.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" public final Order order;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" private Label name;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" private Label id;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" private Label clientName;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" @FXML","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" private Label orderId;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" private Label orderDate;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" private Label deadline;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" private Label price;","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" private Label remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" private Label status;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" private FlowPane tags;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" public OrderCard(Order order, int displayedIndex) {","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":" super(FXML);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" orderId.setText(\"OrderId: \" + order.getOrderId().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" clientName.setText(\"Client Name: \" + order.getPerson().getName().toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" orderDate.setText(\"Date: \" + order.getOrderDate().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" deadline.setText(\"Deadline: \" + order.getDeadline().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":" price.setText(\"Price: \" + order.getPrice().toString());","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" remark.setText(\"Description: \" + order.getRemark().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" status.setText(\"Status: \" + order.getStatus().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"kailinteoo":55,"rertyy":10}},{"path":"src/main/java/seedu/address/ui/OrderListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":" * Panel containing the list of orders.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"public class OrderListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" private static final String FXML \u003d \"OrderListPanel.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" private final Logger logger \u003d LogsCenter.getLogger(OrderListPanel.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" private ListView\u003cOrder\u003e orderListView;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" * Creates a {@code OrderListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" public OrderListPanel(ObservableList\u003cOrder\u003e orderList) {","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" super(FXML);","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" orderListView.setItems(orderList);","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" orderListView.setCellFactory(listView -\u003e new OrderListViewCell());","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Order} using a {@code OrderCard}.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" class OrderListViewCell extends ListCell\u003cOrder\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" protected void updateItem(Order order, boolean empty) {","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" super.updateItem(order, empty);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" if (empty || order \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" setText(null);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" setGraphic(new OrderCard(order, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"kailinteoo":44,"rertyy":6}},{"path":"src/main/java/seedu/address/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-09-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" * API of UI component.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public interface Ui {","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" * Starts the UI (and the App).","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" void start(Stage primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"rertyy":4,"-":11}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC;","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":" background-color: #E8E3DC; /* Used in the default.html file */","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":" -fx-text-fill: #4D3319; /* dark brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" -fx-text-fill: #4D3319; /* dark brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #F5F5DC; /* cream background for entering commands */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":" -fx-background-color: #E8E3DC;","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" -fx-border-color: lightgrey;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" -fx-border-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" -fx-background-color: #E8E3DC; /* light brown button */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" -fx-text-fill: #4D3319; /* text */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #8A9A5B; /* not quite sure where */","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" -fx-base: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" -fx-control-inner-background: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":".status-bar {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":".split-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"shavonneg"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":71,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":75,"author":{"gitId":"shavonneg"},"content":" -fx-border-color: #5D534A; /* earthy brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"shavonneg"},"content":".result-display {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #E8E3DC; /* light brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":88,"author":{"gitId":"shavonneg"},"content":" -fx-text-fill: #4D3319; /* dark brown */","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: transparent, #EDEDED, transparent, #EDEDED; /* grey white */","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":".section-title {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"shavonneg"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"shavonneg"},"content":" -fx-padding: 5px;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" -fx-background-color: #8A9A5B; /* green background for tags */","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":30,"Jaspertzx":2,"-":81}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" title\u003d\"BookKeeper\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\"/\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\"/\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" \u003c!-- SplitPane to hold both person list and order list --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" \u003cSplitPane VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" \u003c!-- Person List Section --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" \u003cLabel text\u003d\"My Clients\" styleClass\u003d\"section-title\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" \u003c!-- Order List Section --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":" \u003cLabel text\u003d\"My Orders\" styleClass\u003d\"section-title\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":" \u003cStackPane fx:id\u003d\"orderListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\"/\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":20,"-":49}},{"path":"src/main/resources/view/OrderListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"\u003cHBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"orderId\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" \u003cLabel fx:id\u003d\"clientName\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$clientName\"/\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"orderDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$orderDate\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"deadline\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$deadline\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"price\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$price\"/\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$status\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"kailinteoo":31,"rertyy":1}},{"path":"src/main/resources/view/OrderListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"\u003cVBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" \u003cListView fx:id\u003d\"orderListView\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"kailinteoo":6,"rertyy":1}},{"path":"src/test/java/seedu/address/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":" // Please uncomment this","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":" // @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":" // public void getImage_exitingImage() {","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":" // assertNotNull(AppUtil.getImage(\"/images/address_book_32.png\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":" // }","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"shavonneg":5,"-":30}},{"path":"src/test/java/seedu/address/commons/util/DateTimeUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"class DateTimeUtilTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":" void isValidDate() {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" void parseDateTime() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":14}},{"path":"src/test/java/seedu/address/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.testutil.SerializableTestClass;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * Tests JSON Read and Write.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path SERIALIZATION_FILE \u003d TestUtil.getFilePathInSandboxFolder(\"serialize.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void serializeObjectToJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d new SerializableTestClass();","lastModifiedDate":"2016-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" serializableTestClass.setTestValues();","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonUtil.serializeObjectToJsonFile(SERIALIZATION_FILE, serializableTestClass);","lastModifiedDate":"2016-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(FileUtil.readFromFile(SERIALIZATION_FILE), SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void deserializeObjectFromJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(SERIALIZATION_FILE, SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d JsonUtil","lastModifiedDate":"2016-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .deserializeObjectFromJsonFile(SERIALIZATION_FILE, SerializableTestClass.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getName(), SerializableTestClass.getNameTestValue());","lastModifiedDate":"2016-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getListOfLocalDateTimes(), SerializableTestClass.getListTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getMapOfIntegerToString(), SerializableTestClass.getHashMapTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_readJsonStringToObjectInstance_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_writeThenReadObjectToJson_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":1,"-":44}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":" public void getFilteredOrderList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredOrderList().remove(0));","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":" * Executes the command and confirms that:","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" * - the internal model manager state is the same as that in {@code expectedModel}. \u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"rertyy"},"content":" * - the internal model manager state is the same as that in {@code expectedModel}. \u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":169,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"kailinteoo":4,"shavonneg":6,"rertyy":4,"Jaspertzx":1,"-":170}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.OrderNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" * - the {@code actualModel} matches {@code expectedModel}.","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"rertyy"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged.","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" * Updates {@code model}\u0027s filtered orders list to show only the order at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" public static void showOrderAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"shavonneg"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"shavonneg"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":" model.updateFilteredOrderList(new OrderNameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" assertEquals(1, model.getFilteredOrderList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"shavonneg":14,"rertyy":4,"Jaspertzx":1,"-":126}},{"path":"src/test/java/seedu/address/logic/commands/clients/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"shavonneg":1,"-":47}},{"path":"src/test/java/seedu/address/logic/commands/clients/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" assertEquals(addAliceCommand, addAliceCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" assertEquals(addAliceCommand, addAliceCommandCopy);","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" assertNotEquals(1, addAliceCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, addAliceCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":" assertNotEquals(addAliceCommand, addBobCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"rertyy"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"kailinteoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":166,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":179,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":221,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"kailinteoo":2,"shavonneg":22,"rertyy":12,"-":194}},{"path":"src/test/java/seedu/address/logic/commands/clients/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"shavonneg":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/clients/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"shavonneg":1,"-":119}},{"path":"src/test/java/seedu/address/logic/commands/clients/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"rertyy"},"content":" * but smaller than size of address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"shavonneg":1,"rertyy":1,"Jaspertzx":1,"-":181}},{"path":"src/test/java/seedu/address/logic/commands/clients/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"Jaspertzx"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", orders\u003d\"","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":" + editPersonDescriptor.getOrders().orElse(null) + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"shavonneg":1,"Jaspertzx":3,"-":68}},{"path":"src/test/java/seedu/address/logic/commands/clients/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.commands.clients.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"shavonneg":2,"Jaspertzx":1,"-":18}},{"path":"src/test/java/seedu/address/logic/commands/clients/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"shavonneg":1,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/clients/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.commands.clients.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"shavonneg":2,"Jaspertzx":1,"-":18}},{"path":"src/test/java/seedu/address/logic/commands/clients/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.clients;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"shavonneg":1,"-":38}},{"path":"src/test/java/seedu/address/logic/commands/orders/AddOrderCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":"public class AddOrderCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":" public void execute_orderAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d builder.build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":" ModelStubAcceptingOrderAdded modelStub \u003d new ModelStubAcceptingOrderAdded(order, person);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" CommandResult commandResult \u003d new AddOrderCommand(targetIndex, order).execute(modelStub);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" assertEquals(1, modelStub.getFilteredOrderList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" public void execute_orderAcceptedByModel_indexError() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d builder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jaspertzx"},"content":" ModelStubAcceptingOrderAdded modelStub \u003d new ModelStubAcceptingOrderAdded(order, person);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" assertThrows(CommandException.class, () -\u003e new AddOrderCommand(targetIndex, order).execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Jaspertzx"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Jaspertzx"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Jaspertzx"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Jaspertzx"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Jaspertzx"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jaspertzx"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-29"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"Jaspertzx"},"content":" * A Model stub that always accepts the order being added.","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"Jaspertzx"},"content":" private class ModelStubAcceptingOrderAdded extends AddOrderCommandTest.ModelStub {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"Jaspertzx"},"content":" private Order order;","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"Jaspertzx"},"content":" private Person person;","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"Jaspertzx"},"content":" ModelStubAcceptingOrderAdded(Order order, Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"Jaspertzx"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"Jaspertzx"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jaspertzx"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jaspertzx"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jaspertzx"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"kailinteoo"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"kailinteoo"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"Jaspertzx"},"content":" List\u003cPerson\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"Jaspertzx"},"content":" sampleList.add(this.person);","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"Jaspertzx"},"content":" ObservableList\u003cPerson\u003e personList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"Jaspertzx"},"content":" return personList;","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"rertyy"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"Jaspertzx"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(this.person.getOrders());","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"Jaspertzx"},"content":" return orderList;","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"rertyy"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"rertyy"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":9,"shavonneg":20,"rertyy":15,"Jaspertzx":159}},{"path":"src/test/java/seedu/address/logic/commands/orders/DeleteOrderCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Jaspertzx"},"content":"public class DeleteOrderCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":" public void execute_deleteOrderByModel_deleteSuccessful() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d builder.build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":" ModelStubDeletingOrder modelStub \u003d new ModelStubDeletingOrder(order, person);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" CommandResult commandResult \u003d new AddOrderCommand(INDEX_FIRST_ORDER, order).execute(modelStub);","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" commandResult \u003d new DeleteOrderCommand(INDEX_FIRST_ORDER).execute(modelStub);","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" assertEquals(0, modelStub.getOrderList().size());","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" public void execute_deleteOrderByModel_deleteUnsuccessful() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d builder.build();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jaspertzx"},"content":" ModelStubDeletingOrder modelStub \u003d new ModelStubDeletingOrder(order, person);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" assertThrows(CommandException.class, () -\u003e new DeleteOrderCommand(INDEX_FIRST_ORDER).execute(modelStub));","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Jaspertzx"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Jaspertzx"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Jaspertzx"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Jaspertzx"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Jaspertzx"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"Jaspertzx"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"Jaspertzx"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"Jaspertzx"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"Jaspertzx"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"Jaspertzx"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"rertyy"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":131,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-29"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":135,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"Jaspertzx"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"Jaspertzx"},"content":" * A Model stub that always accepts the order being added.","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"Jaspertzx"},"content":" private class ModelStubDeletingOrder extends ModelStub {","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"Jaspertzx"},"content":" private Order order;","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"Jaspertzx"},"content":" private Person person;","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"Jaspertzx"},"content":" ModelStubDeletingOrder(Order order, Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"Jaspertzx"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"Jaspertzx"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"Jaspertzx"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jaspertzx"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jaspertzx"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jaspertzx"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"kailinteoo"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"rertyy"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"kailinteoo"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"kailinteoo"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"rertyy"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"rertyy"},"content":" requireAllNonNull(target, editedPerson, order);","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"rertyy"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"Jaspertzx"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"Jaspertzx"},"content":" List\u003cPerson\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"Jaspertzx"},"content":" sampleList.add(this.person);","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"Jaspertzx"},"content":" ObservableList\u003cPerson\u003e personList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"Jaspertzx"},"content":" return personList;","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"rertyy"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"rertyy"},"content":" List\u003cOrder\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"rertyy"},"content":" sampleList.add(this.order);","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"rertyy"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"rertyy"},"content":" return orderList;","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"rertyy"},"content":" private ObservableList\u003cOrder\u003e getOrderList() {","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"Jaspertzx"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(this.person.getOrders());","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"Jaspertzx"},"content":" return orderList;","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"Jaspertzx"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"Jaspertzx"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"Jaspertzx"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"Jaspertzx"},"content":" addressBook.addPerson(this.person);","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"Jaspertzx"},"content":" return addressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"rertyy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"rertyy"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"rertyy"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"kailinteoo":9,"shavonneg":20,"rertyy":36,"Jaspertzx":156}},{"path":"src/test/java/seedu/address/logic/commands/orders/EditOrderCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.logic.commands.orders;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_ORDER;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":"public class EditOrderCommandTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" // TODO: implement tests for successful editing of orders","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":" // @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":" // public void execute_editOrderByModel_editSuccessful() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":" // PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" // Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" // OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" // Order originalOrder \u003d orderBuilder.build();","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" // ModelStubEditingOrder modelStub \u003d new ModelStubEditingOrder(originalOrder, person);","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" // Order editedOrder \u003d orderBuilder.withStatus(\"completed\").build();","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand.EditOrderDescriptor descriptor \u003d new EditOrderDescriptorBuilder(editedOrder).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand editOrderCommand \u003d new EditOrderCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" // String expectedMessage \u003d String.format(EditOrderCommand.MESSAGE_EDIT_ORDER_SUCCESS, editedOrder);","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" // assertCommandSuccess(editOrderCommand, modelStub, expectedMessage, modelStub);","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" // }","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" // TODO: implement tests for successful indexing and correct description","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" // @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":" // public void execute_validIndexAndDescriptor_success() {","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":" // Order editedOrder \u003d new OrderBuilder().withStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand.EditOrderDescriptor descriptor \u003d new EditOrderDescriptorBuilder(editedOrder).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand editOrderCommand \u003d new EditOrderCommand(INDEX_FIRST_ORDER, descriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" // String expectedMessage \u003d String.format(MESSAGE_EDIT_ORDER_SUCCESS, editedOrder);","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" // assertCommandSuccess(editOrderCommand, model, expectedMessage, model);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" // }","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":" // TODO: implement test for createEditedOrder","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" // @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":" // public void testExecute_createEditedOrder() throws Exception {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"shavonneg"},"content":" // PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"shavonneg"},"content":" // Person person \u003d personBuilder.build();","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":" // // Create an original order","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"shavonneg"},"content":" // Order originalOrder \u003d new Order(new OrderId(), new OrderDate(\"01-02-2024 10:09\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"shavonneg"},"content":" // new Deadline(\"22-02-2024 23:59\"), new Price(\"100.00\"), new Remark(\"Original remark\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"shavonneg"},"content":" // new Status(\"PENDING\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"shavonneg"},"content":" // // Set up edit descriptor with new values","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand.EditOrderDescriptor editDescriptor \u003d new EditOrderCommand.EditOrderDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setOrderDate(new OrderDate(\"01-02-2024 10:09\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setDeadline(new Deadline(\"01-03-2024 23:59\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setPrice(new Price(\"150.00\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setRemark(new Remark(\"Updated remark\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"shavonneg"},"content":" // editDescriptor.setStatus(new Status(\"COMPLETED\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"shavonneg"},"content":" // // Create EditOrderCommand with target index and edit descriptor","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"shavonneg"},"content":" // EditOrderCommand editOrderCommand \u003d new EditOrderCommand(Index.fromZeroBased(0), editDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"shavonneg"},"content":" // // Create a model with the original order and associated person","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"shavonneg"},"content":" // Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"shavonneg"},"content":" // model.addPerson(person); // Add the person to the model","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"shavonneg"},"content":" // model.setPersonAndAddOrder(person, person, originalOrder); // Pass same person for target and editedPerson","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"shavonneg"},"content":" // // Execute the edit command","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"shavonneg"},"content":" // editOrderCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"shavonneg"},"content":" // // Retrieve the edited order from the model","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"shavonneg"},"content":" // Order editedOrder \u003d model.getFilteredOrderList().get(0);","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"shavonneg"},"content":" //","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"shavonneg"},"content":" // // Verify that the edited order details match the expected values","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"shavonneg"},"content":" // assertNotNull(editedOrder);","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new OrderDate(\"01-02-2024 10:09\"), editedOrder.getOrderDate());","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new Deadline(\"01-03-2024 23:59\"), editedOrder.getDeadline());","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new Price(\"150.00\"), editedOrder.getPrice());","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new Remark(\"Updated remark\"), editedOrder.getRemark());","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" // assertEquals(new Status(\"COMPLETED\"), editedOrder.getStatus());","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" // }","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":106,"author":{"gitId":"shavonneg"},"content":" public void execute_orderAcceptedByModel_indexError() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":107,"author":{"gitId":"shavonneg"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"shavonneg"},"content":" Order order \u003d orderBuilder.build();","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"shavonneg"},"content":" ModelStubEditingOrder modelStub \u003d new ModelStubEditingOrder(order, person);","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" Index targetIndex \u003d INDEX_SECOND_ORDER;","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" EditOrderCommand editOrderCommand \u003d new EditOrderCommand(targetIndex,","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" new EditOrderCommand.EditOrderDescriptor());","lastModifiedDate":"2024-03-29"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" assertThrows(CommandException.class, () -\u003e editOrderCommand.execute(modelStub));","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"shavonneg"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":121,"author":{"gitId":"shavonneg"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-29"},{"lineNumber":124,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":125,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":126,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":127,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":128,"author":{"gitId":"shavonneg"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-29"},{"lineNumber":129,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":130,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":131,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":132,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":133,"author":{"gitId":"shavonneg"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-29"},{"lineNumber":134,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":135,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":136,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"shavonneg"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-29"},{"lineNumber":139,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":140,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":142,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":143,"author":{"gitId":"shavonneg"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-29"},{"lineNumber":144,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":145,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":146,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":147,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":148,"author":{"gitId":"shavonneg"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-29"},{"lineNumber":149,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":150,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":151,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":152,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"shavonneg"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":155,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"shavonneg"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":166,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"shavonneg"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"shavonneg"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":178,"author":{"gitId":"shavonneg"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":180,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":183,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":184,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":187,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":188,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":189,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":190,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":192,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":193,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndEditOrder(Person target, Person editedPerson, Order order, Order editedOrder) {","lastModifiedDate":"2024-03-29"},{"lineNumber":194,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":195,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":196,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":197,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":198,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":200,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":201,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":202,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":203,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":204,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":205,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":206,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":207,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":208,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":209,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":210,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":211,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":212,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":213,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":214,"author":{"gitId":"shavonneg"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":215,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":216,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":217,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":218,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":219,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":220,"author":{"gitId":"shavonneg"},"content":" * A Model stub that always accepts the order being added.","lastModifiedDate":"2024-03-29"},{"lineNumber":221,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":222,"author":{"gitId":"shavonneg"},"content":" private class ModelStubEditingOrder extends seedu.address.logic.commands.orders.EditOrderCommandTest.ModelStub {","lastModifiedDate":"2024-03-29"},{"lineNumber":223,"author":{"gitId":"shavonneg"},"content":" private Order order;","lastModifiedDate":"2024-03-29"},{"lineNumber":224,"author":{"gitId":"shavonneg"},"content":" private Person person;","lastModifiedDate":"2024-03-29"},{"lineNumber":225,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":226,"author":{"gitId":"shavonneg"},"content":" ModelStubEditingOrder(Order order, Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":227,"author":{"gitId":"shavonneg"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-29"},{"lineNumber":228,"author":{"gitId":"shavonneg"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-29"},{"lineNumber":229,"author":{"gitId":"shavonneg"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-29"},{"lineNumber":230,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":231,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":232,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":233,"author":{"gitId":"shavonneg"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-29"},{"lineNumber":234,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":235,"author":{"gitId":"shavonneg"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-29"},{"lineNumber":236,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":237,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":238,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":239,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndAddOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":240,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":241,"author":{"gitId":"shavonneg"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-29"},{"lineNumber":242,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":243,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":244,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":245,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndDeleteOrder(Person target, Person editedPerson, Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":246,"author":{"gitId":"shavonneg"},"content":" requireAllNonNull(target, editedPerson, order);","lastModifiedDate":"2024-03-29"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":" this.person \u003d editedPerson;","lastModifiedDate":"2024-03-29"},{"lineNumber":248,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":249,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":250,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":251,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":252,"author":{"gitId":"shavonneg"},"content":" List\u003cPerson\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":253,"author":{"gitId":"shavonneg"},"content":" sampleList.add(this.person);","lastModifiedDate":"2024-03-29"},{"lineNumber":254,"author":{"gitId":"shavonneg"},"content":" ObservableList\u003cPerson\u003e personList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-29"},{"lineNumber":255,"author":{"gitId":"shavonneg"},"content":" return personList;","lastModifiedDate":"2024-03-29"},{"lineNumber":256,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"shavonneg"},"content":" public ObservableList\u003cOrder\u003e getFilteredOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":260,"author":{"gitId":"shavonneg"},"content":" List\u003cOrder\u003e sampleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":261,"author":{"gitId":"shavonneg"},"content":" sampleList.add(this.order);","lastModifiedDate":"2024-03-29"},{"lineNumber":262,"author":{"gitId":"shavonneg"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(sampleList);","lastModifiedDate":"2024-03-29"},{"lineNumber":263,"author":{"gitId":"shavonneg"},"content":" return orderList;","lastModifiedDate":"2024-03-29"},{"lineNumber":264,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":265,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":266,"author":{"gitId":"shavonneg"},"content":" private ObservableList\u003cOrder\u003e getOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":267,"author":{"gitId":"shavonneg"},"content":" ObservableList\u003cOrder\u003e orderList \u003d FXCollections.observableArrayList(this.person.getOrders());","lastModifiedDate":"2024-03-29"},{"lineNumber":268,"author":{"gitId":"shavonneg"},"content":" return orderList;","lastModifiedDate":"2024-03-29"},{"lineNumber":269,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":270,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":272,"author":{"gitId":"shavonneg"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-29"},{"lineNumber":273,"author":{"gitId":"shavonneg"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-29"},{"lineNumber":274,"author":{"gitId":"shavonneg"},"content":" addressBook.addPerson(this.person);","lastModifiedDate":"2024-03-29"},{"lineNumber":275,"author":{"gitId":"shavonneg"},"content":" return addressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":276,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":277,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":278,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":279,"author":{"gitId":"shavonneg"},"content":" public void updateFilteredOrderList(Predicate\u003cOrder\u003e predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":280,"author":{"gitId":"shavonneg"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":281,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":282,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":283,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"shavonneg":283}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Jaspertzx":1,"-":195}},{"path":"src/test/java/seedu/address/logic/parser/AddOrderCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"import seedu.address.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"public class AddOrderCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":" private AddOrderCommandParser parser \u003d new AddOrderCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":" public void parse_missingPrefix_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":" final String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddOrderCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":" assertParseFailure(parser, \"1\", expectedMessage);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":" assertParseFailure(parser, \"abc\", expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Jaspertzx"},"content":" public void check_sameCurrentTime_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" DateTimeUtil.getCurrentTime();","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertEquals(DateTimeUtil.getCurrentTime(), now.format(formatter));","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"rertyy":3,"Jaspertzx":32}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.AddOrderCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.orders.EditOrderCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Jaspertzx"},"content":" public void parseCommand_createOrder() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"Jaspertzx"},"content":" String remarks \u003d \" d/1xRoses\";","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" String cost \u003d \" c/100\";","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"Jaspertzx"},"content":" String date \u003d \" by/10-10-2024 00:00\";","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"Jaspertzx"},"content":" assertTrue(parser.parseCommand(AddOrderCommand.COMMAND_WORD + \" 1\"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":" + remarks + cost + date) instanceof AddOrderCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Jaspertzx"},"content":" public void parseCommand_deleteOrder() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"rertyy"},"content":" // OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"rertyy"},"content":" // OrderId orderId \u003d builder.build().getOrderId();","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"rertyy"},"content":" assertTrue(","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"rertyy"},"content":" parser.parseCommand(DeleteOrderCommand.COMMAND_WORD + \" 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"rertyy"},"content":" instanceof DeleteOrderCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":113,"author":{"gitId":"shavonneg"},"content":" public void parseCommand_editOrder() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":114,"author":{"gitId":"shavonneg"},"content":" String remarks \u003d \" d/ 1xRoses\";","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"shavonneg"},"content":" String price \u003d \" c/ 40\";","lastModifiedDate":"2024-03-30"},{"lineNumber":116,"author":{"gitId":"shavonneg"},"content":" String deadline \u003d \" by/ 23-07-2024 10:10\";","lastModifiedDate":"2024-03-30"},{"lineNumber":117,"author":{"gitId":"shavonneg"},"content":" String status \u003d \" s/ PENDING\";","lastModifiedDate":"2024-03-30"},{"lineNumber":118,"author":{"gitId":"shavonneg"},"content":" assertTrue(parser.parseCommand(EditOrderCommand.COMMAND_WORD + \" 1\"","lastModifiedDate":"2024-03-30"},{"lineNumber":119,"author":{"gitId":"shavonneg"},"content":" + deadline + price + remarks + status) instanceof EditOrderCommand);","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":121,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"shavonneg":11,"rertyy":5,"Jaspertzx":24,"-":92}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"Jaspertzx":1,"-":31}},{"path":"src/test/java/seedu/address/logic/parser/DeleteOrderCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jaspertzx"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Jaspertzx"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.orders.DeleteOrderCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Jaspertzx"},"content":" * Contains unit tests for {@code DeleteOrderCommandParser}.","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"public class DeleteOrderCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":" private DeleteOrderCommandParser parser \u003d new DeleteOrderCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertParseSuccess(parser, \"1\", new DeleteOrderCommand(INDEX_FIRST_ORDER));","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Jaspertzx"},"content":" public void parse_emptyIdValue_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Jaspertzx"},"content":" final String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteOrderCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" assertParseFailure(parser, \"\", expectedMessage);","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Jaspertzx"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"rertyy":5,"Jaspertzx":24}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Jaspertzx":2,"-":206}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"Jaspertzx":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"Jaspertzx"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":" private static final String INVALID_DEADLINE \u003d \"123456\";","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" private static final String INVALID_PRICE \u003d \"ab\";","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" private static final String INVALID_REMARK \u003d \" \";","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" private static final String INVALID_STATUS \u003d \"ALMOST\";","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" private static final String VALID_DEADLINE \u003d \"23-07-2024 10:23\";","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" private static final String VALID_PRICE \u003d \"40\";","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" private static final String VALID_REMARK \u003d \"1xRoses\";","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" private static final String VALID_STATUS \u003d \"PENDING\";","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":204,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"Jaspertzx"},"content":" public void parseOrderId_invalidId_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"Jaspertzx"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseOrderId((String) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"Jaspertzx"},"content":" public void testParseNullOrderId() {","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"Jaspertzx"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseOrderId(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"Jaspertzx"},"content":" public void testParseOrderIdWithWhitespaces() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder builder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"Jaspertzx"},"content":" String input \u003d \" \" + builder.build().getOrderId().toString() + \" \";","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"Jaspertzx"},"content":" OrderId result \u003d ParserUtil.parseOrderId(input);","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"Jaspertzx"},"content":" assertNotNull(result);","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"Jaspertzx"},"content":" public void testParseInvalidOrderId() {","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"Jaspertzx"},"content":" String input \u003d \"123\";","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"kailinteoo"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseOrderId(input));","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":230,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":231,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":235,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":236,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":237,"author":{"gitId":"shavonneg"},"content":" public void parseDeadline_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":238,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDeadline((String) null));","lastModifiedDate":"2024-03-30"},{"lineNumber":239,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":240,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":241,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":242,"author":{"gitId":"shavonneg"},"content":" public void parseDeadline_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":243,"author":{"gitId":"shavonneg"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDeadline(INVALID_DEADLINE));","lastModifiedDate":"2024-03-30"},{"lineNumber":244,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":245,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":246,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":" public void parseDeadline_validValueWithoutWhitespace_returnsDeadline() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":248,"author":{"gitId":"shavonneg"},"content":" Deadline expectedDeadline \u003d new Deadline(VALID_DEADLINE);","lastModifiedDate":"2024-03-30"},{"lineNumber":249,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedDeadline, ParserUtil.parseDeadline(VALID_DEADLINE));","lastModifiedDate":"2024-03-30"},{"lineNumber":250,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":251,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":252,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":253,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":254,"author":{"gitId":"shavonneg"},"content":" public void parsePrice_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":255,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePrice((String) null));","lastModifiedDate":"2024-03-30"},{"lineNumber":256,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":259,"author":{"gitId":"shavonneg"},"content":" public void parsePrice_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":260,"author":{"gitId":"shavonneg"},"content":" assertThrows(NumberFormatException.class, () -\u003e ParserUtil.parsePrice(INVALID_PRICE));","lastModifiedDate":"2024-03-30"},{"lineNumber":261,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":262,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":263,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":264,"author":{"gitId":"shavonneg"},"content":" public void parsePrice_validValueWithoutWhitespace_returnsPrice() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":265,"author":{"gitId":"shavonneg"},"content":" Price expectedPrice \u003d new Price(VALID_PRICE);","lastModifiedDate":"2024-03-30"},{"lineNumber":266,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedPrice, ParserUtil.parsePrice(VALID_PRICE));","lastModifiedDate":"2024-03-30"},{"lineNumber":267,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":268,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":269,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":270,"author":{"gitId":"shavonneg"},"content":" public void parsePrice_validValueWithWhitespace_returnsTrimmedPrice() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":271,"author":{"gitId":"shavonneg"},"content":" String priceWithWhitespace \u003d WHITESPACE + VALID_PRICE + WHITESPACE;","lastModifiedDate":"2024-03-30"},{"lineNumber":272,"author":{"gitId":"shavonneg"},"content":" Price expectedPrice \u003d new Price(VALID_PRICE);","lastModifiedDate":"2024-03-30"},{"lineNumber":273,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedPrice, ParserUtil.parsePrice(priceWithWhitespace));","lastModifiedDate":"2024-03-30"},{"lineNumber":274,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":275,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":276,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":277,"author":{"gitId":"shavonneg"},"content":" public void parseRemark_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":278,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRemark((String) null));","lastModifiedDate":"2024-03-30"},{"lineNumber":279,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":280,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":281,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":282,"author":{"gitId":"shavonneg"},"content":" public void parseRemark_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":283,"author":{"gitId":"shavonneg"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRemark(INVALID_REMARK));","lastModifiedDate":"2024-03-30"},{"lineNumber":284,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":285,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":286,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":287,"author":{"gitId":"shavonneg"},"content":" public void parseRemark_validValueWithoutWhitespace_returnsRemark() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":288,"author":{"gitId":"shavonneg"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK);","lastModifiedDate":"2024-03-30"},{"lineNumber":289,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(VALID_REMARK));","lastModifiedDate":"2024-03-30"},{"lineNumber":290,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":291,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":292,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":293,"author":{"gitId":"shavonneg"},"content":" public void parseStatus_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":294,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseStatus((String) null));","lastModifiedDate":"2024-03-30"},{"lineNumber":295,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":296,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":297,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":298,"author":{"gitId":"shavonneg"},"content":" public void parseStatus_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":299,"author":{"gitId":"shavonneg"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseStatus(INVALID_STATUS));","lastModifiedDate":"2024-03-30"},{"lineNumber":300,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":301,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":302,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":303,"author":{"gitId":"shavonneg"},"content":" public void parseStatus_validValueWithoutWhitespace_returnsStatus() throws Exception {","lastModifiedDate":"2024-03-30"},{"lineNumber":304,"author":{"gitId":"shavonneg"},"content":" Status expectedStatus \u003d new Status(VALID_STATUS);","lastModifiedDate":"2024-03-30"},{"lineNumber":305,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedStatus, ParserUtil.parseStatus(VALID_STATUS));","lastModifiedDate":"2024-03-30"},{"lineNumber":306,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":307,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"kailinteoo":2,"shavonneg":84,"Jaspertzx":25,"-":196}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"shavonneg"},"content":" private final ObservableList\u003cOrder\u003e orders \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"shavonneg"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"rertyy"},"content":" public ObservableList\u003cOrder\u003e getOrderList() {","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"rertyy"},"content":" return orders;","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"shavonneg":5,"rertyy":3,"-":108}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" public void getOrderList_anyOrder_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" assertEquals(0, modelManager.getFilteredOrderList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"shavonneg"},"content":" public void getFilteredOrderList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"rertyy"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredOrderList().remove(0));","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"shavonneg":4,"rertyy":2,"Jaspertzx":4,"-":132}},{"path":"src/test/java/seedu/address/model/order/DeadlineTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"class DeadlineTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Deadline(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public void constructor_invalidDeadline_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" String invalidDeadline \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Deadline(invalidDeadline));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" public void isValidDeadline() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" // null deadline","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e Deadline.isValidDeadline(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" // invalid deadlines","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\"11-15-2024 21:51\")); // invalid date format","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\"41-15-2024 21:51\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" assertFalse(Deadline.isValidDeadline(\"15-41-2024 21:51\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" // valid deadlines","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" assertTrue(Deadline.isValidDeadline(\"15-12-3024 21:51\")); // long deadline","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" assertTrue(Deadline.isValidDeadline(\"11-05-2024 21:51\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" assertTrue(Deadline.isValidDeadline(\"01-05-2024 01:01\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" public void compareDeadline() {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" Deadline deadline \u003d new Deadline(\"01-01-2024 00:00\");","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" // smaller values -\u003e returns 1","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(1, deadline.compareTo(new Deadline(\"01-01-2023 00:00\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"Jaspertzx"},"content":" // bigger values -\u003e returns -1","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(-1, deadline.compareTo(new Deadline(\"01-01-2024 01:00\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"Jaspertzx"},"content":" // same values -\u003e returns 0","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(0, deadline.compareTo(new Deadline(\"01-01-2024 00:00\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" Deadline deadline \u003d new Deadline(\"11-05-2024 21:51\");","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" assertEquals(deadline, new Deadline(\"11-05-2024 21:51\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" assertEquals(deadline, deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" assertNotEquals(deadline, 0.0);","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" assertNotEquals(deadline, new Deadline(\"11-05-2024 21:52\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":62,"Jaspertzx":14}},{"path":"src/test/java/seedu/address/model/order/OrderDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"class OrderDateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e new OrderDate(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public void constructor_invalidOrderDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" String invalidOrderDate \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new OrderDate(invalidOrderDate));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" public void isValidOrderDate() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" // null OrderDate","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e OrderDate.isValidOrderDate(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" // invalid OrderDates","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\"11-15-2024 21:51\")); // invalid date format","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\"41-15-2024 21:51\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" assertFalse(OrderDate.isValidOrderDate(\"15-41-2024 21:51\")); // invalid date","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" // valid OrderDates","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" assertTrue(OrderDate.isValidOrderDate(\"15-12-3024 21:51\")); // long OrderDate","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" assertTrue(OrderDate.isValidOrderDate(\"11-05-2024 21:51\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" assertTrue(OrderDate.isValidOrderDate(\"01-05-2024 01:01\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" OrderDate orderDate \u003d new OrderDate(\"11-05-2024 21:51\");","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" assertEquals(orderDate, new OrderDate(\"11-05-2024 21:51\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" assertEquals(orderDate, orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" assertNotEquals(orderDate, 0.0);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" assertNotEquals(orderDate, new OrderDate(\"11-05-2024 21:52\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":62}},{"path":"src/test/java/seedu/address/model/order/OrderIdTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.OrderBuilder.DEFAULT_ORDER_ID;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"class OrderIdTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" void constructor_invalidOrderId_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" String invalidOrderId \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new OrderId(invalidOrderId));","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" void testEquals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" OrderId orderId \u003d new OrderId();","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" // different object -\u003e negligible chance to be equals","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" assertNotEquals(orderId, new OrderId());","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" OrderId fixedOrderId1 \u003d new OrderId(DEFAULT_ORDER_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" OrderId fixedOrderId2 \u003d new OrderId(DEFAULT_ORDER_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" assertEquals(fixedOrderId1, fixedOrderId2);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertEquals(orderId, orderId);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" // same object representation -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" assertEquals(orderId, orderId.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" assertNotEquals(orderId, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":42}},{"path":"src/test/java/seedu/address/model/order/OrderNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import static seedu.address.testutil.TypicalOrders.ROSES;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":"public class OrderNameContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate firstPredicate \u003d new","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate secondPredicate \u003d new","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate firstPredicateCopy \u003d new","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" assertEquals(firstPredicate, firstPredicateCopy);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":" assertNotEquals(1, firstPredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" // Zero keywords","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate predicate \u003d new OrderNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" assertFalse(predicate.test(new OrderBuilder(ROSES).withPrice(\"200\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" OrderNameContainsKeywordsPredicate predicate \u003d new OrderNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" String expected \u003d OrderNameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"kailinteoo":1,"shavonneg":61}},{"path":"src/test/java/seedu/address/model/order/OrderTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.TypicalOrders.LILIES;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.TypicalOrders.ROSES;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"class OrderTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" Order rosesCopy \u003d new OrderBuilder(ROSES).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" assertEquals(ROSES, rosesCopy);","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" assertEquals(ROSES, ROSES);","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, 5);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" // different order -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, LILIES);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" // EditedRoses","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" Order editedRoses;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" Order nullRoses;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":" // different price -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" editedRoses \u003d new OrderBuilder(ROSES).withPrice(\"200\").build();","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" // different deadline -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" .withDeadline(\"11-05-2024 21:51\")","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" // different order date -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" .withOrderDate(\"11-05-2024 21:51\")","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" .withRemark(\"Different remark\")","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" // different status -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":" .withStatus(\"PENDING\")","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" // different orderId -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" .withOrderId(\"434d72c4-f045-448c-84a7-6d70704e9730\")","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" editedRoses \u003d new OrderBuilder(ROSES)","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" .withPerson(TypicalPersons.CARL)","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" assertNotEquals(ROSES, editedRoses);","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"rertyy"},"content":" String expected \u003d Order.class.getCanonicalName()","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"rertyy"},"content":" + \"{orderId\u003d\" + ROSES.getOrderId()","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" + \", orderDate\u003d\" + ROSES.getOrderDate()","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":" + \", deadline\u003d\" + ROSES.getDeadline()","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":" + \", price\u003d\" + ROSES.getPrice()","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"rertyy"},"content":" + \", remark\u003d\" + ROSES.getRemark()","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":" + \", status\u003d\" + ROSES.getStatus()","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"rertyy"},"content":" + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"rertyy"},"content":" assertEquals(expected, ROSES.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":3,"rertyy":90}},{"path":"src/test/java/seedu/address/model/order/PriceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"class PriceTest {","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":" void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NullPointerException.class, () -\u003e new Price(null));","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" void constructor_invalidPriceEmpty_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" String invalidPrice \u003d \"\";","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Price(invalidPrice));","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" void constructor_invalidPriceNegative_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" String invalidPrice \u003d \"-1\";","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Price(invalidPrice));","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" void constructor_invalidPriceZero_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" String invalidPrice \u003d \"0\";","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Price(invalidPrice));","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" void isValidPrice() {","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NullPointerException.class, () -\u003e Price.isValidPrice(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NumberFormatException.class, () -\u003e Price.isValidPrice(\"\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" assertFalse(Price.isValidPrice(\"-1\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NumberFormatException.class, () -\u003e Price.isValidPrice(\" \"));","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" assertFalse(Price.isValidPrice(\"0\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"1\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"100\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"1.5\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"1.55\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" assertTrue(Price.isValidPrice(\"1.500\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":" void testEquals() {","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":" Price price \u003d new Price(\"1\");","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":" assertEquals(price, new Price(\"1\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":" assertEquals(price, price);","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" assertNotEquals(null, price);","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" assertNotEquals(price, 0.0);","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":" assertNotEquals(price, new Price(\"2\"));","lastModifiedDate":"2024-03-28"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"kailinteoo":75}},{"path":"src/test/java/seedu/address/model/order/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"class RemarkTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public void constructor_invalidRemark_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" String invalidRemark \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Remark(invalidRemark));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" public void isValidRemark() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" // null remark","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e Remark.isValidRemark(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" // invalid remarks","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" assertFalse(Remark.isValidRemark(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" assertFalse(Remark.isValidRemark(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" // valid remarks","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" assertTrue(Remark.isValidRemark(\"A valid remark.\")); // Non-empty remark","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" assertTrue(Remark.isValidRemark(\"12345\")); // Numbers only","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" assertTrue(Remark.isValidRemark(\"Remark with spaces\")); // Contains spaces","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" assertTrue(Remark.isValidRemark(\"Remark-with-dashes\")); // Contains dashes","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" Remark remark \u003d new Remark(\"A valid remark.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" assertEquals(remark, new Remark(\"A valid remark.\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" assertEquals(remark, remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" assertNotEquals(remark, 0.0);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" assertNotEquals(remark, new Remark(\"Another remark\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"rertyy":60}},{"path":"src/test/java/seedu/address/model/order/StatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.model.order;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"class StatusTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e new Status(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public void constructor_invalidStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" String invalidStatus \u003d \"invalid\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Status(invalidStatus));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":" public void getStatus_returnsCorrectStatus() {","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" Status.StatusEnum expectedStatus \u003d Status.StatusEnum.valueOf(\"PENDING\");","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":" Status status \u003d new Status(\"PENDING\");","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" Status.StatusEnum actualStatus \u003d status.getStatusEnum();","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":" assertEquals(expectedStatus, actualStatus, \"getStatus should return the correct status.\");","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":" public void isValidStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":" // null status","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" assertThrows(NullPointerException.class, () -\u003e Status.isValidStatus(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" // invalid statuses","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" assertFalse(Status.isValidStatus(\"invalid\")); // Not matching any status enum","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" assertFalse(Status.isValidStatus(\"\")); // Not matching any status enum","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" assertFalse(Status.isValidStatus(\" \")); // Empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"rertyy"},"content":" // valid statuses","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"pending\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"completed\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"canceled\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"PENDING\")); // Case insensitivity","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"COMPLETED\")); // Case insensitivity","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" assertTrue(Status.isValidStatus(\"CANCELED\")); // Case insensitivity","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" Status status \u003d new Status(\"pending\");","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"rertyy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" assertEquals(status, new Status(\"pending\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" assertEquals(status, status);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" assertNotEquals(null, status);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" assertNotEquals(status, 5.0);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":" assertNotEquals(status, new Status(\"completed\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"shavonneg":8,"rertyy":63}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"Jaspertzx"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Jaspertzx"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getOrders().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Jaspertzx"},"content":" public void isSameTestWithOrder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Jaspertzx"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder();","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d personBuilder.build();","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Jaspertzx"},"content":" OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d orderBuilder.build();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Jaspertzx"},"content":" Set\u003cOrder\u003e setOfOrders \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Jaspertzx"},"content":" setOfOrders.add(order);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Jaspertzx"},"content":" Person editedAlice \u003d new Person(person.getName(), person.getPhone(),","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"Jaspertzx"},"content":" person.getEmail(), person.getAddress(), person.getTags(), setOfOrders);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"Jaspertzx"},"content":" assertTrue(person.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":" + \", orders\u003d\" + ALICE.getOrders() + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"kailinteoo":4,"Jaspertzx":19,"-":98}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":"import seedu.address.testutil.OrderBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"Jaspertzx"},"content":" public void addOrder_existingPerson_addOrder() {","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d new OrderBuilder().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.add(person);","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"Jaspertzx"},"content":" Person editedPerson \u003d person.addOrder(order);","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.setPersonAndAddOrder(person, editedPerson, order);","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(1, uniquePersonList.asUnmodifiableObservableListOrders().size());","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"Jaspertzx"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"Jaspertzx"},"content":" public void removeOrder_existingPersonAndOrder_removeOrder() {","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"Jaspertzx"},"content":" Order order \u003d new OrderBuilder().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"Jaspertzx"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.add(person);","lastModifiedDate":"2024-04-03"},{"lineNumber":148,"author":{"gitId":"Jaspertzx"},"content":" Person editedPerson \u003d person.addOrder(order);","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.setPersonAndAddOrder(person, editedPerson, order);","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList.setPersonAndDeleteOrder(editedPerson, person, order);","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"Jaspertzx"},"content":" assertEquals(0, uniquePersonList.asUnmodifiableObservableListOrders().size());","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":199,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":200,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":201,"author":{"gitId":"shavonneg"},"content":" public void setPersonsAndAddOrder_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":202,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersonAndAddOrder(ALICE, null,","lastModifiedDate":"2024-03-30"},{"lineNumber":203,"author":{"gitId":"shavonneg"},"content":" null));","lastModifiedDate":"2024-03-30"},{"lineNumber":204,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":205,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":206,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":207,"author":{"gitId":"shavonneg"},"content":" public void setPersonsAndAddOrder_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":208,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersonAndAddOrder(null,","lastModifiedDate":"2024-03-30"},{"lineNumber":209,"author":{"gitId":"shavonneg"},"content":" null, null));","lastModifiedDate":"2024-03-30"},{"lineNumber":210,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":211,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":212,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":213,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndAddOrder_validPersonAndOrder_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":214,"author":{"gitId":"shavonneg"},"content":" UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":215,"author":{"gitId":"shavonneg"},"content":" Person originalPerson \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":216,"author":{"gitId":"shavonneg"},"content":" Person editedPerson \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"shavonneg"},"content":" OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":218,"author":{"gitId":"shavonneg"},"content":" Order newOrder \u003d orderBuilder.build();","lastModifiedDate":"2024-04-04"},{"lineNumber":219,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":220,"author":{"gitId":"shavonneg"},"content":" uniquePersonList.add(originalPerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"shavonneg"},"content":" assertDoesNotThrow(() -\u003e uniquePersonList.setPersonAndAddOrder(originalPerson, editedPerson, newOrder));","lastModifiedDate":"2024-04-04"},{"lineNumber":222,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"shavonneg"},"content":" assertTrue(uniquePersonList.contains(editedPerson));","lastModifiedDate":"2024-04-04"},{"lineNumber":224,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":227,"author":{"gitId":"shavonneg"},"content":" public void setPersonsAndDeleteOrder_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":228,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersonAndDeleteOrder(BOB, null,","lastModifiedDate":"2024-03-30"},{"lineNumber":229,"author":{"gitId":"shavonneg"},"content":" null));","lastModifiedDate":"2024-03-30"},{"lineNumber":230,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":231,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":232,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":233,"author":{"gitId":"shavonneg"},"content":" public void setPersonsAndDeleteOrder_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-30"},{"lineNumber":234,"author":{"gitId":"shavonneg"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersonAndDeleteOrder(null,","lastModifiedDate":"2024-03-30"},{"lineNumber":235,"author":{"gitId":"shavonneg"},"content":" null, null));","lastModifiedDate":"2024-03-30"},{"lineNumber":236,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":237,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":238,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":239,"author":{"gitId":"shavonneg"},"content":" public void setPersonAndDeleteOrder_orderDoesNotExist_personUnchanged() {","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"shavonneg"},"content":" UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"shavonneg"},"content":" Person originalPerson \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"shavonneg"},"content":" Person editedPerson \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"shavonneg"},"content":" OrderBuilder orderBuilder \u003d new OrderBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":244,"author":{"gitId":"shavonneg"},"content":" Order newOrder \u003d orderBuilder.build();","lastModifiedDate":"2024-04-04"},{"lineNumber":245,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":246,"author":{"gitId":"shavonneg"},"content":" uniquePersonList.add(originalPerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"shavonneg"},"content":" assertDoesNotThrow(() -\u003e uniquePersonList.setPersonAndDeleteOrder(originalPerson, editedPerson, newOrder));","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"shavonneg"},"content":" public void testEquals_sameInput() {","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"shavonneg"},"content":" UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"shavonneg"},"content":" assertEquals(uniquePersonList, uniquePersonList);","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"shavonneg"},"content":" public void testEquals_sameOutput() {","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"shavonneg"},"content":" UniquePersonList list1 \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"shavonneg"},"content":" UniquePersonList list2 \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"shavonneg"},"content":" list1.add(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"shavonneg"},"content":" list2.add(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"shavonneg"},"content":" assertEquals(list1.equals(list2), list2.equals(list1));","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"shavonneg"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":267,"author":{"gitId":"shavonneg"},"content":" public void testHashCode() {","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"shavonneg"},"content":" UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"shavonneg"},"content":" int initialHashCode \u003d uniquePersonList.hashCode();","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"shavonneg"},"content":" for (int i \u003d 0; i \u003c 10; i++) {","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"shavonneg"},"content":" assertEquals(initialHashCode, uniquePersonList.hashCode());","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"Jaspertzx"},"content":" public void equals() {","lastModifiedDate":"2024-04-03"},{"lineNumber":276,"author":{"gitId":"Jaspertzx"},"content":" assertTrue(uniquePersonList.equals(uniquePersonList));","lastModifiedDate":"2024-04-03"},{"lineNumber":277,"author":{"gitId":"Jaspertzx"},"content":" UniquePersonList uniquePersonList2 \u003d new UniquePersonList();","lastModifiedDate":"2024-04-03"},{"lineNumber":278,"author":{"gitId":"Jaspertzx"},"content":" uniquePersonList2.add(new PersonBuilder().build());","lastModifiedDate":"2024-04-03"},{"lineNumber":279,"author":{"gitId":"Jaspertzx"},"content":" assertFalse(uniquePersonList.equals(uniquePersonList2));","lastModifiedDate":"2024-04-03"},{"lineNumber":280,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":281,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"shavonneg":79,"Jaspertzx":27,"-":175}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedOrderTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"kailinteoo"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"kailinteoo"},"content":"import static seedu.address.storage.JsonAdaptedOrder.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"kailinteoo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"kailinteoo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"kailinteoo"},"content":"public class JsonAdaptedOrderTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_ORDERID \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_ORDERDATE \u003d \"41-15-2024 21:51\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_DEADLINE \u003d \"41-15-2024 21:51\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_PRICE \u003d \"0\";","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_REMARK \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_STATUS \u003d \"invalid\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_ORDERID \u003d \"69c25c8d-9e34-4d9d-8bad-e378f203ae73\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_ORDERDATE \u003d \"01-03-2024 23:59\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_DEADLINE \u003d \"01-04-2024 23:59\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_PRICE \u003d \"50\";","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_REMARK \u003d \"No remark\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" private static final String VALID_STATUS \u003d \"CANCELED\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" /*@Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_validOrderDetails_returnsOrder() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d new JsonAdaptedOrder(ROSES);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"kailinteoo"},"content":" assertEquals(ROSES, order.toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"kailinteoo"},"content":" }*/","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidOrderId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(INVALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d OrderId.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullOrderId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(null, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, OrderId.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidOrderDate_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, INVALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d OrderDate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullOrderDate_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, null, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, OrderDate.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidDeadline_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, INVALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d Deadline.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullDeadline_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, null, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Deadline.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidPrice_throwsIllegalValueException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, INVALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d Price.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NumberFormatException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullPrice_throwsIllegalValueException() {","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, null,","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Price.class.getSimpleName());","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"kailinteoo"},"content":" assertThrows(NumberFormatException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidRemark_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":113,"author":{"gitId":"kailinteoo"},"content":" INVALID_REMARK, VALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d Remark.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullRemark_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":" null, VALID_STATUS);","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":131,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, INVALID_STATUS);","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d Status.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_nullStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedOrder order \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedOrder(VALID_ORDERID, VALID_ORDERDATE, VALID_DEADLINE, VALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":140,"author":{"gitId":"kailinteoo"},"content":" VALID_REMARK, null);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"kailinteoo"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Status.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, expectedMessage, order::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"kailinteoo"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"kailinteoo":145}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_ORDERID \u003d \"#FXXXXXXXX\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_ORDERDATE \u003d \"24/D/23\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_DEADLINE \u003d \"24/D/23\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_PRICE \u003d \"@6.7\";","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_REMARK \u003d \"%HOME\";","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"kailinteoo"},"content":" private static final String INVALID_STATUS \u003d \"#NOW\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"kailinteoo"},"content":" private static final List\u003cJsonAdaptedOrder\u003e VALID_ORDERS \u003d BENSON.getOrders().stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"kailinteoo"},"content":" .map(JsonAdaptedOrder::new)","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"kailinteoo"},"content":" VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"kailinteoo"},"content":" VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"kailinteoo"},"content":" VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"kailinteoo"},"content":" VALID_TAGS, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags, VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"kailinteoo"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"kailinteoo"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"kailinteoo"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"kailinteoo"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"kailinteoo"},"content":" public void toModelType_invalidOrders_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"kailinteoo"},"content":" List\u003cJsonAdaptedOrder\u003e invalidOrders \u003d new ArrayList\u003c\u003e(VALID_ORDERS);","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"kailinteoo"},"content":" invalidOrders.add(new JsonAdaptedOrder(INVALID_ORDERID, INVALID_ORDERDATE, INVALID_DEADLINE, INVALID_PRICE,","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"kailinteoo"},"content":" INVALID_REMARK, INVALID_STATUS));","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"kailinteoo"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"kailinteoo"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, invalidOrders);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"kailinteoo":32,"-":101}},{"path":"src/test/java/seedu/address/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-07-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2019-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2019-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A set of assertion methods useful for writing tests.","lastModifiedDate":"2017-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Assert {","lastModifiedDate":"2017-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception.","lastModifiedDate":"2019-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This is a wrapper method that invokes {@link Assertions#assertThrows(Class, Executable)}, to maintain consistency","lastModifiedDate":"2019-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * with our custom {@link #assertThrows(Class, String, Executable)} method.","lastModifiedDate":"2019-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * To standardize API calls in this project, users should use this method instead of","lastModifiedDate":"2019-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * {@link Assertions#assertThrows(Class, Executable)}.","lastModifiedDate":"2019-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception with the {@code expectedMessage}.","lastModifiedDate":"2019-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * If there\u0027s no need for the verification of the exception\u0027s error message, call","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@link #assertThrows(Class, Executable)} instead.","lastModifiedDate":"2019-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see #assertThrows(Class, Executable)","lastModifiedDate":"2019-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-02-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, String expectedMessage,","lastModifiedDate":"2019-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"Jaspertzx"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Jaspertzx"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Jaspertzx"},"content":" * Asserts that executing the {@code executable} throws an exception of the {@code expectedType}.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Jaspertzx"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Jaspertzx"},"content":" * @param expectedType The class of the Exception expected to be thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Jaspertzx"},"content":" * @param executable The executable code block that is expected to throw the exception.","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Jaspertzx"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" public static void assertThrowsExactly(Class\u003c? extends Throwable\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Jaspertzx"},"content":" expectedType, Executable executable, String expectedMessage) {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Jaspertzx"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Jaspertzx"},"content":" Assertions.assertTrue(expectedType.isInstance(thrownException),","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"Jaspertzx"},"content":" \"Expected thrown exception to be exactly of type \"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"Jaspertzx"},"content":" + expectedType.getSimpleName()","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Jaspertzx"},"content":" + \" but was \" + thrownException.getClass().getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Jaspertzx"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"Jaspertzx":15,"-":34}},{"path":"src/test/java/seedu/address/testutil/EditOrderDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"shavonneg"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"shavonneg"},"content":"import seedu.address.logic.commands.orders.EditOrderCommand.EditOrderDescriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"shavonneg"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"shavonneg"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":" * A utility class to help with building EditOrderDescriptor objects.","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"public class EditOrderDescriptorBuilder {","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"shavonneg"},"content":" private EditOrderDescriptor descriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder() {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"shavonneg"},"content":" descriptor \u003d new EditOrderDescriptor();","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder(EditOrderDescriptor descriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"shavonneg"},"content":" this.descriptor \u003d new EditOrderDescriptor(descriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"shavonneg"},"content":" * Returns an {@code EditOrderDescriptor} with fields containing {@code order}\u0027s details.","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder(Order order) {","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"shavonneg"},"content":" descriptor \u003d new EditOrderDescriptor();","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"shavonneg"},"content":" descriptor.setOrderDate(order.getOrderDate());","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"shavonneg"},"content":" descriptor.setDeadline(order.getDeadline());","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"shavonneg"},"content":" descriptor.setPrice(order.getPrice());","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"shavonneg"},"content":" descriptor.setRemark(order.getRemark());","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"shavonneg"},"content":" descriptor.setStatus(order.getStatus());","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code OrderDate} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withOrderDate(String orderDate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"shavonneg"},"content":" descriptor.setOrderDate(new OrderDate(orderDate));","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code Deadline} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withDeadline(String deadline) {","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"shavonneg"},"content":" descriptor.setDeadline(new Deadline(deadline));","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code Price} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withPrice(String price) {","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"shavonneg"},"content":" descriptor.setPrice(new Price(price));","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code Remark} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"shavonneg"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"shavonneg"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"shavonneg"},"content":" * Sets the {@code Status} of the {@code EditOrderDescriptor} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"shavonneg"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptorBuilder withStatus(String status) {","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"shavonneg"},"content":" descriptor.setStatus(new Status(status));","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"shavonneg"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"shavonneg"},"content":" public EditOrderDescriptor build() {","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"shavonneg"},"content":" return descriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"shavonneg"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"shavonneg"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"shavonneg":81}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"rertyy":1,"Jaspertzx":1,"-":85}},{"path":"src/test/java/seedu/address/testutil/OrderBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.OrderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.OrderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"kailinteoo"},"content":"import seedu.address.model.order.Price;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Status;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" * A utility class to help with building Order objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":"public class OrderBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" // Solution below adapted from https://stackoverflow.com/a/29059595","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_ORDER_ID \u003d \"58b76419-f9ff-4aa1-8e70-604993fc1a20\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_ORDER_DATE \u003d \"10-10-2024 00:00\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_DEADLINE \u003d \"11-10-2024 23:59\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" public static final String DEFAULT_PRICE \u003d \"100\";","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_REMARK \u003d \"No remark\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" public static final String DEFAULT_STATUS \u003d \"PENDING\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" private OrderId orderId;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":" private OrderDate orderDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" private Deadline deadline;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"kailinteoo"},"content":" private Price price;","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":" private Remark remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"rertyy"},"content":" private Status status;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"rertyy"},"content":" private Person person;","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"rertyy"},"content":" * Creates a {@code OrderBuilder} with the default details.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"rertyy"},"content":" public OrderBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"rertyy"},"content":" orderId \u003d new OrderId(DEFAULT_ORDER_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"rertyy"},"content":" orderDate \u003d new OrderDate(DEFAULT_ORDER_DATE);","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"rertyy"},"content":" deadline \u003d new Deadline(DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"kailinteoo"},"content":" price \u003d new Price(DEFAULT_PRICE);","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"rertyy"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"rertyy"},"content":" status \u003d new Status(DEFAULT_STATUS);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"rertyy"},"content":" person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"rertyy"},"content":" * Initializes the OrderBuilder with the data of {@code orderToCopy}.","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"rertyy"},"content":" public OrderBuilder(Order orderToCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"rertyy"},"content":" orderId \u003d orderToCopy.getOrderId();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"rertyy"},"content":" orderDate \u003d orderToCopy.getOrderDate();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"rertyy"},"content":" deadline \u003d orderToCopy.getDeadline();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"kailinteoo"},"content":" price \u003d orderToCopy.getPrice();","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"rertyy"},"content":" remark \u003d orderToCopy.getRemark();","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"rertyy"},"content":" status \u003d orderToCopy.getStatus();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"rertyy"},"content":" person \u003d orderToCopy.getPerson();","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"rertyy"},"content":" * Sets the {@code OrderId} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withOrderId(String orderId) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"rertyy"},"content":" this.orderId \u003d new OrderId(orderId);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"rertyy"},"content":" * Sets the {@code OrderDate} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withOrderDate(String orderDate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"rertyy"},"content":" this.orderDate \u003d new OrderDate(orderDate);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"rertyy"},"content":" * Sets the {@code Deadline} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withDeadline(String deadline) {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"rertyy"},"content":" this.deadline \u003d new Deadline(deadline);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"kailinteoo"},"content":" * Sets the {@code Price} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-28"},{"lineNumber":87,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"kailinteoo"},"content":" public OrderBuilder withPrice(String price) {","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"kailinteoo"},"content":" this.price \u003d new Price(price);","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"rertyy"},"content":" * Sets the {@code Remark} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"rertyy"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"rertyy"},"content":" * Sets the {@code Status} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withStatus(String status) {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"rertyy"},"content":" this.status \u003d new Status(status);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"rertyy"},"content":" * Sets the {@code Person} of the {@code Order} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"rertyy"},"content":" public OrderBuilder withPerson(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"rertyy"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"rertyy"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":115,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"rertyy"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"rertyy"},"content":" * Builds the Order object.","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":121,"author":{"gitId":"rertyy"},"content":" public Order build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"rertyy"},"content":" return new Order(orderId, orderDate, deadline, price, remark, status, person);","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"rertyy"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":8,"rertyy":117}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"Jaspertzx"},"content":" private Set\u003cOrder\u003e orders;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"Jaspertzx"},"content":" orders \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"Jaspertzx"},"content":" orders \u003d new HashSet\u003c\u003e(personToCopy.getOrders());","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":97,"author":{"gitId":"Jaspertzx"},"content":" return new Person(name, phone, email, address, tags, orders);","lastModifiedDate":"2024-03-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Jaspertzx":5,"-":95}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Jaspertzx"},"content":"import seedu.address.logic.commands.clients.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Jaspertzx":2,"-":60}},{"path":"src/test/java/seedu/address/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" * A class used to test serialization and deserialization.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class SerializableTestClass {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String JSON_STRING_REPRESENTATION \u003d String.format(\"{%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \" \\\"name\\\" : \\\"This is a test class\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \" \\\"listOfLocalDateTimes\\\" : \"","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"[ \\\"-999999999-01-01T00:00:00\\\", \\\"+999999999-12-31T23:59:59.999999999\\\", \"","lastModifiedDate":"2016-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"\\\"0001-01-01T01:01:00\\\" ],%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \" \\\"mapOfIntegerToString\\\" : {%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \" \\\"1\\\" : \\\"One\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \" \\\"2\\\" : \\\"Two\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" \\\"3\\\" : \\\"Three\\\"%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" }%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"}\");","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String NAME_TEST_VALUE \u003d \"This is a test class\";","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private String name;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private List\u003cLocalDateTime\u003e listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private HashMap\u003cInteger, String\u003e mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getNameTestValue() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return NAME_TEST_VALUE;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static List\u003cLocalDateTime\u003e getListTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" List\u003cLocalDateTime\u003e listOfLocalDateTimes \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MIN);","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MAX);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.of(1, 1, 1, 1, 1));","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static HashMap\u003cInteger, String\u003e getHashMapTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" HashMap\u003cInteger, String\u003e mapOfIntegerToString \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(1, \"One\");","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(2, \"Two\");","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(3, \"Three\");","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d getNameTestValue();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" listOfLocalDateTimes \u003d getListTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" mapOfIntegerToString \u003d getHashMapTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getName() {","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public List\u003cLocalDateTime\u003e getListOfLocalDateTimes() {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public HashMap\u003cInteger, String\u003e getMapOfIntegerToString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"rertyy":1,"-":71}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"shavonneg"},"content":" public static final Index INDEX_FIRST_ORDER \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"shavonneg"},"content":" public static final Index INDEX_SECOND_ORDER \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"shavonneg"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"shavonneg":3,"-":12}},{"path":"src/test/java/seedu/address/testutil/TypicalOrders.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rertyy"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"rertyy"},"content":"import seedu.address.model.order.Order;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"rertyy"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"rertyy"},"content":" * A utility class containing a list of {@code Order} objects to be used in tests.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"rertyy"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"rertyy"},"content":"public class TypicalOrders {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"rertyy"},"content":" public static final Order ROSES \u003d new OrderBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"rertyy"},"content":" .withOrderId(\"69c25c8d-9e34-4d9d-8bad-e378f203ae73\")","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"rertyy"},"content":" .withOrderDate(\"01-03-2024 23:59\")","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"rertyy"},"content":" .withDeadline(\"01-04-2024 23:59\")","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"kailinteoo"},"content":" .withPrice(\"10\")","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"rertyy"},"content":" .withRemark(\"No remark\")","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"rertyy"},"content":" .withStatus(\"CANCELED\")","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"rertyy"},"content":" .withPerson(TypicalPersons.ALICE)","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"rertyy"},"content":" public static final Order LILIES \u003d new OrderBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"rertyy"},"content":" .withOrderId(\"69c25c8d-9e34-4d9d-8bad-e378f203ae74\")","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"rertyy"},"content":" .withOrderDate(\"23-03-2024 11:59\")","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"rertyy"},"content":" .withDeadline(\"05-12-2024 20:57\")","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"kailinteoo"},"content":" .withPrice(\"10\")","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"rertyy"},"content":" .withRemark(\"Important\")","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"rertyy"},"content":" .withStatus(\"PENDING\")","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"rertyy"},"content":" .withPerson(TypicalPersons.BOB)","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"rertyy"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"rertyy"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"rertyy"},"content":" private TypicalOrders() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"rertyy"},"content":" } // prevents instantiation","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"rertyy"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"kailinteoo":2,"rertyy":28}}] diff --git a/AY2324S2-CS2103T-T09-2_tp_master/commits.json b/AY2324S2-CS2103T-T09-2_tp_master/commits.json index d2fa8076..d0cd437a 100644 --- a/AY2324S2-CS2103T-T09-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-T09-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"kailinteoo":[{"date":"2024-03-06","commitResults":[{"hash":"a744f151cd8a507f50a1383abe87b7df1385297e","isMergeCommit":false,"messageTitle":"Update AboutUs and README pages, add UI mockup and build status badge","messageBody":"AboutUs Page:\n- Updated team member details and roles\n- Added profile photos for each member\n- Followed specified format for photo filenames\n\nREADME Page:\n- Updated project details and content to match project\n- Added UI mockup image as docs/images/Ui.png\n\nBuild Status Badge:\n- Updated GitHub Actions build status badge link to reflect team repo\u0027s build status\n\nAcknowledgement:\n- Acknowledged original source of code\n\nThis commit reflects updates made to various pages in the project repository to match our project details and specifications.\n","fileTypesAndContributionMap":{"docs":{"insertions":299,"deletions":51}}},{"hash":"abe2e20ffcfe3f81accf49fd79952588492bda9c","isMergeCommit":false,"messageTitle":"Update README with project details","messageBody":"This commit reflects changes made to the README\nto update project details and information.\nThe README now accurately reflects our project and\nits specifications.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"fb026213c29c5b2af1b3f556987bc19caa3747c0","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Jaspertzx/master","messageBody":"Update User Stories","fileTypesAndContributionMap":{}},{"hash":"8437a8090717b851aeabf17070fefa95c15e07ab","isMergeCommit":false,"messageTitle":"Edit AboutUs.md to fix src image name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"f50ba2526224ae911f7dfa106770112f3b4bf9b0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md and docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"aba87293ce836ef1d1b948649856252c0bf58bc9","isMergeCommit":false,"messageTitle":"Edit AboutUs.md and Docs for img","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9718e9c917dbd6b7ce7a4b6ac6b7a1bc6bc8cb0a","isMergeCommit":true,"messageTitle":"Merge pull request #39 from shavonneg/update-developer-guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"ca44e9112929688b8a84728570666efdb5a6f5de","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Jaspertzx/add-User-Story","messageBody":"Update DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"395234a009982dad28c6095ee4e51c851b591a29","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Jaspertzx/fix_userguide","messageBody":"Update User Guide","fileTypesAndContributionMap":{}},{"hash":"d1d23a9e4e9ccb1bb0c07694ce6311dfb15b637a","isMergeCommit":false,"messageTitle":"Resolve DG.md product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":7}}}]},{"date":"2024-03-14","commitResults":[{"hash":"7e67977855d5dced47d1d662c394d07121362f24","isMergeCommit":false,"messageTitle":"Update README to reflect change from crochet to floral industry","messageBody":"This commit updates the README to replace references to the\ncrochet industry with the floral industry.\nThe README now accurately reflects our project\u0027s focus on the\nfloral industry.\n","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"d77a38aa7341f53f1aed9b7ef406be93c7427d28","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Jaspertzx/update_Product_Scope","messageBody":"Update DeveloperGuide","fileTypesAndContributionMap":{}},{"hash":"c3ec5e4b07ff102e3aec9f7e1f6aa13340d12b83","isMergeCommit":true,"messageTitle":"Merge pull request #63 from rertyy/update-aboutus","messageBody":"Update AboutUs.md for change in target audience","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"deaafafd5257249bbe8e93aa9ebc1196c7431fbe","isMergeCommit":false,"messageTitle":"Update storage to store Order class","messageBody":"All classes and interfaces under the storage folder have\nbeen updated to support storing the Order class, similar\nto how the code previously handled the Person class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":354,"deletions":7}}}]},{"date":"2024-03-18","commitResults":[{"hash":"b8eaae0ea13a93c0ca02cb20491ed70042608e48","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Storage_Order","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3abbed0bae3b3c0820bb7b1d4dbf8b97e2ed3647","isMergeCommit":false,"messageTitle":"Update storage to accommodate Order class","messageBody":"After pulling the Order class from GitHub, multiple changes were made\nto the storage files to integrate this new class and resolve associated issues.\n\nChanges include:\n- Added support for storing Order objects in storage interfaces\nand implementations.\n- Updated Storage interface to include methods for reading and\nwriting Order objects to files.\n- Adjusted tests to reflect changes in storage functionality and\nensure proper handling of Order objects.\n\nAdditionally, several other adjustments were made across the\ncodebase to ensure consistency and maintainability.\n\nThis commit addresses the integration of the Order class into the\nstorage system, resolving related issues.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":256,"deletions":84}}},{"hash":"9c0a9061456070b1921c6d3d49cb7a04607465b8","isMergeCommit":false,"messageTitle":"Update Order class parameter visibility to private","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"ec9978d75c5dbbf5c703d32509d0675778723862","isMergeCommit":false,"messageTitle":"Refactor storage to nest Order information under Person","messageBody":"Modified the storage class to organize Order information\nunder the Person class, similar to how tags are handled.\nThis restructuring enhances the organization of data and\nsimplifies access to related information within the storage system.\n\nThis commit ensures that Order data is logically grouped with corresponding\nPerson records, improving data management and maintainability.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":384},"test-code":{"insertions":31,"deletions":10}}},{"hash":"fdebef7e7c49819cea47041de40daf45af3c9a2d","isMergeCommit":true,"messageTitle":"Merge pull request #72 from Jaspertzx/branch-Add-Order-Commands","messageBody":"Add Order \"C\" and \"D\" of CRUD.","fileTypesAndContributionMap":{}},{"hash":"fb86fe9bc2cea99b7ebc2436c1164c4457439a6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Storage_Order","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ac418499e60ac909aeb46c77592e3999767f8592","isMergeCommit":true,"messageTitle":"Merge pull request #78 from Jaspertzx/branch-Edit-Person","messageBody":"Edit Person Class to include Orders","fileTypesAndContributionMap":{}},{"hash":"12658e6c886b4dc861953cc9382613d98b60de9b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Storage_Order","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Person.java\n","fileTypesAndContributionMap":{}},{"hash":"944b6ba1685ebb5603bfde11621e646a7995bf84","isMergeCommit":false,"messageTitle":"update storage class after merging","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":8},"test-code":{"insertions":10,"deletions":5}}},{"hash":"1d7b8b1db98326f66556616c245813a82f4ef4c4","isMergeCommit":true,"messageTitle":"Merge pull request #69 from shavonneg/branch-update-v1.2","messageBody":"Add ViewOrdersCommand for displaying a list of orders","fileTypesAndContributionMap":{}},{"hash":"eb37b8d040f5dc8b70161b3541cc2ff46026f2e2","isMergeCommit":false,"messageTitle":"Solving the testing issue in Storage test class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":5},"test-code":{"insertions":3,"deletions":2}}},{"hash":"31e9aa15fed609775c70264ae3d5a69d8134a680","isMergeCommit":false,"messageTitle":"Solving the JsonAdaptedOrderTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":3},"test-code":{"insertions":102,"deletions":0}}},{"hash":"dbe540670b99b9f777f3d9c6a021f85b3fd5fd34","isMergeCommit":false,"messageTitle":"Solving JsonAdpatedOrder date issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":18}}},{"hash":"c5266957593bdc3b57e9e13ea03d0503d41bad5b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Storage_Order","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"1755fb6848b938dce51bec72ebeae8d830efd9a9","isMergeCommit":false,"messageTitle":"Adding more testcase for JsonAdaptedOrderTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":58,"deletions":1}}},{"hash":"76c5dba4b3c9b978df704bfdc2f50d22c90621e2","isMergeCommit":false,"messageTitle":"Update Testcase for JsonAdaptedOrderTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":10,"deletions":12}}},{"hash":"303c6820671a680d06146b3d7ab459c40dff9a9b","isMergeCommit":true,"messageTitle":"Merge pull request #67 from kailinteoo/v1.2_Storage_Order","messageBody":"Update Storage to store Order class","fileTypesAndContributionMap":{}},{"hash":"2aa2f8d4b9a4bee2ac000027249d67afa5ec3023","isMergeCommit":true,"messageTitle":"Merge pull request #82 from rertyy/javadoc-checkstyle","messageBody":"Fix Javadoc checkstyle","fileTypesAndContributionMap":{}},{"hash":"c6c0fd964000063f768d9f41fa81850abc95c26a","isMergeCommit":true,"messageTitle":"Merge pull request #81 from shavonneg/branch-update-ui","messageBody":"Update DarkTheme.css, MainWindow.fxml to refine UI appearance","fileTypesAndContributionMap":{}},{"hash":"52c9b95cf129f65e806db891ac6a8055ba5c5694","isMergeCommit":false,"messageTitle":"Update UI classes to show Order List alongside Client List","messageBody":"Modified the UI classes to incorporate the Order List view\nalongside the existing Client List view. This enhancement\nprovides users with a convenient way to access and manage\norders alongside client information within the application interface.\n\nThis commit improves the usability of the application by presenting\nrelated data together and streamlining navigation and interaction.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":176,"deletions":3}}},{"hash":"2ebeb0478fd4f9bf3bd80703a809da85edd046e3","isMergeCommit":false,"messageTitle":"Add Testcase for LogicManager.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"30e499e4d6229f056eca0fc4acd3668f7c5a38a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Ui","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cac67da6595431dccd6ca46f6cadb50f321ad051","isMergeCommit":false,"messageTitle":"Updating SampleDataUtil file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":19}}},{"hash":"ccdeb2e73024fe005d9946658bb136b66d47a0f1","isMergeCommit":false,"messageTitle":"Update AddressBook.Json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"267b2054d16df35e80454e15dba156d04613b5fe","isMergeCommit":false,"messageTitle":"updating puml and storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"docs":{"insertions":3,"deletions":1}}},{"hash":"7ee778bb3ce170ea1054fe5dfa188595dd9a7888","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Ui","messageBody":"# Conflicts:\n#\tdocs/diagrams/StorageClassDiagram.puml\n","fileTypesAndContributionMap":{}},{"hash":"1357f84cb3e591fc06591d83e547530f27a8ad3b","isMergeCommit":false,"messageTitle":"Update testcase and ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":4},"test-code":{"insertions":29,"deletions":2}}},{"hash":"4912104e9c55dde85925c12011656f692c5b295d","isMergeCommit":false,"messageTitle":"update ui.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"af0d902afde31d0aaa8f8f47d1d82074d4c5baaa","isMergeCommit":true,"messageTitle":"Merge pull request #96 from rertyy/oopify-add-order","messageBody":"Oop-ify AddOrder by extracting AddOrder","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"4db175e5db9181bb9c8b1905469b32cbe3219d42","isMergeCommit":false,"messageTitle":"Update the Storage component in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":7}}},{"hash":"757d876e64e43343a1334f1eb18fc99bedf50ea8","isMergeCommit":true,"messageTitle":"Merge pull request #113 from Jaspertzx/branch-Update-DG","messageBody":"Update the DeveloperGuide for Logic","fileTypesAndContributionMap":{}},{"hash":"30b17bb0ff4a85b96e193b10a8264df4c01c1739","isMergeCommit":false,"messageTitle":"Fix grammar issue in DG.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-28","commitResults":[{"hash":"a96001f02f1cb959faeb5fa729f23aa9f5ab424e","isMergeCommit":false,"messageTitle":"Change Amount from Integer to Double","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"841b5eafeac3c6c9f89ac2239f3287a70238dbb5","isMergeCommit":false,"messageTitle":"Fixing the AmountTest issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"41cc31cc0e959d14399981c73572cbea8f1f73f2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.3_Amount_(Integer_to_Double)","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"967e3213ba093ff6bd1f070b04588f238192b19a","isMergeCommit":false,"messageTitle":"Rename all \"Amount\" to \"Price\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":32},"other":{"insertions":15,"deletions":15},"test-code":{"insertions":109,"deletions":109}}}]},{"date":"2024-03-29","commitResults":[{"hash":"f33ba9453b2f00f094ce3a3f7911b0fd1566c40d","isMergeCommit":false,"messageTitle":"Ensure that the price entered cannot be more than 2 decimal places","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"6c656bde2e3c8f804eb8e6754c1ff4318b1d442d","isMergeCommit":true,"messageTitle":"Merge pull request #127 from kailinteoo/v1.3_Rename_Amount_to_Price","messageBody":"Rename all \"Amount\" to \"Price\"","fileTypesAndContributionMap":{}},{"hash":"21da2bd9112a8cde4396711f2618bdc4b5311a85","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.3_Price_(Integer_to_Double)","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/order/Price.java\n#\tsrc/test/java/seedu/address/model/order/AmountTest.java\n","fileTypesAndContributionMap":{}},{"hash":"a5b3c0e3d5c7da23cba597d54d703e18949932ae","isMergeCommit":false,"messageTitle":"Remove AmountTest class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":74}}},{"hash":"2401d73c1ce6453b264aa96a7b327605279bc88e","isMergeCommit":false,"messageTitle":"Change Price from Integer to Double and only can accept up to 2 decimal places","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":3},"test-code":{"insertions":3,"deletions":3}}},{"hash":"9de072e01c8460f40ed4c7aeb4a65b40b95fe8cd","isMergeCommit":false,"messageTitle":"Update PriceTest to include testing for 3 decimal places","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-04-02","commitResults":[{"hash":"5ea14d54a2be0347cdc9ab70dc66e973676cfd68","isMergeCommit":false,"messageTitle":"Updating UG.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":189,"deletions":46}}},{"hash":"be1def4099089badade9a9583b9a29b60b0629b6","isMergeCommit":true,"messageTitle":"Merge pull request #135 from rertyy/update-userguide","messageBody":"Add deleteOrder command to UG","fileTypesAndContributionMap":{}},{"hash":"72c43296627246c96399085525e8a32536d83d80","isMergeCommit":true,"messageTitle":"Merge pull request #131 from rertyy/modify-page-links","messageBody":"Modify links to point to repo","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"b86b871f72d09949f2490f843dad4bd9ba43c28c","isMergeCommit":true,"messageTitle":"Merge pull request #136 from kailinteoo/v1.3_UG","messageBody":"Updating UG.md","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"c4fce2dfe97fbdc6d9c48055bd2dda51220f8727","isMergeCommit":true,"messageTitle":"Merge pull request #140 from Jaspertzx/branch-Fix-Missing-Background-Color","messageBody":"Add Background Color when empty","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"c48a5ae69cd93da202699e1902c8382f35857c49","isMergeCommit":true,"messageTitle":"Merge pull request #148 from shavonneg/branch-editcommand","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]}],"shavonneg":[{"date":"2024-03-05","commitResults":[{"hash":"6e3d411176696a3a0eda9c4a150912ce44958fc0","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}}]},{"date":"2024-03-14","commitResults":[{"hash":"fc75ae5eb312d6cb5b233e1715c8540a3c7d6379","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":28}}},{"hash":"f9e9af434e269ee9dc27a0c4211b592e52b3028d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"3942deb043418786d582bda2f59ec16d2540402e","isMergeCommit":false,"messageTitle":"Update user story","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":28}}}]},{"date":"2024-03-17","commitResults":[{"hash":"c85fb8776d86c9b54ca1e42f73bb577de7dd83fa","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Jaspertzx/branch-Refractor-Client-Commands","messageBody":"Refactor Client Commands into it\u0027s package.","fileTypesAndContributionMap":{}},{"hash":"82542a7b54c75879966dc77e49ae056f75bf0df8","isMergeCommit":false,"messageTitle":"Add ViewOrdersCommand for displaying a list of orders","messageBody":"This commit introduces the ViewOrdersCommand class, which represents a\ncommand to display a list of orders. The allows users to view all\norders stored in the application.\n\nThe command provides functionality for retrieving and displaying all\norders in the system. It helps users quickly access and review the list\nof orders without needing to specify any filtering criteria.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":5},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":7}}},{"hash":"1e4f69ed09ad03e9774cff5375a4bbf2294dfaa1","isMergeCommit":false,"messageTitle":"Add tests for ViewOrdersCommand functionality","messageBody":"This commit adds ViewOrdersCommandTest to ensure the\nViewOrdersCommand properly displays all user orders as expected.\nIt verifies the correct handling and filtering of order data,\nenhancing the reliability of the ViewOrdersCommand feature.\n","fileTypesAndContributionMap":{"other":{"insertions":13,"deletions":19},"test-code":{"insertions":57,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"09cc6167c0678b8f7f11f9621586087c3b71fcd2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into branch-update-v1.2","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/order/Order.java\n","fileTypesAndContributionMap":{}},{"hash":"2bcd58ad6b8b27ac1584b39f7f60db3f465be848","isMergeCommit":false,"messageTitle":"Refactor classes to ensure proper viewing of orders","messageBody":"This commit includes modifications to several classes to ensure that\norders are properly managed within the application. Changes include\nupdates to the AddressBook class to handle the retrieval of orders.\nAdditionally, adjustments have been made to other relevant classes\nto integrate all changes.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":2}}},{"hash":"2b070b869ea5430fb54328038c4c3679734ca4c6","isMergeCommit":false,"messageTitle":"Update ViewOrdersCommand.java to use \\n instead of \\r\\n","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":32},"test-code":{"insertions":40,"deletions":40}}}]},{"date":"2024-03-19","commitResults":[{"hash":"8d94598fa7b5d58a83a00dcf14d844522bac05fb","isMergeCommit":false,"messageTitle":"Add NameContainsKeywordsPredicate.java to complete command functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":11},"test-code":{"insertions":37,"deletions":22}}},{"hash":"4c9e093d2daff7c3561612fc8c407b840c5335a3","isMergeCommit":false,"messageTitle":"Refine test cases to build the application","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}},{"hash":"be142c08b43f13b0c57bc08c17b8bbbd14b4ef32","isMergeCommit":false,"messageTitle":"Edit ViewOrdersCommandTest.java for Codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":9},"test-code":{"insertions":20,"deletions":7}}},{"hash":"35e8309cc6fafa45341eafe364e9e09cb75cf0d1","isMergeCommit":false,"messageTitle":"Add test for AddressBookParser.java and ModelManager.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":1}}},{"hash":"45e0729b750de9069229a48560202e02ab7e8cda","isMergeCommit":false,"messageTitle":"Add OrderNameContainsKeywordsPredicateTest.java to test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":79,"deletions":9}}},{"hash":"2898c587332daffc2ec00feda973ed252bcf993c","isMergeCommit":false,"messageTitle":"Edit OrderNameContainsKeywordsPredicateTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":20}}},{"hash":"06d10fb6e8cb6528a4a60275f1e7b3f3f7ca8103","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-v1.2","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/AddressBookParser.java\n#\tsrc/main/java/seedu/address/model/Model.java\n#\tsrc/main/java/seedu/address/model/ModelManager.java\n#\tsrc/test/java/seedu/address/logic/commands/clients/AddCommandTest.java\n#\tsrc/test/java/seedu/address/logic/commands/clients/ExitCommandTest.java\n#\tsrc/test/java/seedu/address/logic/commands/clients/HelpCommandTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddressBookParserTest.java\n#\tsrc/test/java/seedu/address/model/ModelManagerTest.java\n","fileTypesAndContributionMap":{}},{"hash":"c3d7ccaa2adc10ff68ced38d254eee2903ae0629","isMergeCommit":false,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":11}}},{"hash":"7808f93f8b621eb38fdf1c70f9bf4eff80648734","isMergeCommit":false,"messageTitle":"Clean up OrderNameContainsKeywordsPredicateTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":9}}},{"hash":"5bfa07a9c11a2701f89b605c053c647dbbf74656","isMergeCommit":false,"messageTitle":"Edit OrderNameContainsKeywordsPredicateTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"7b6a98e6652ab40ac417c0eba4fbae12ebce31cb","isMergeCommit":false,"messageTitle":"Update DarkTheme.css, MainWindow.fxml to refine UI appearance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":338}}},{"hash":"65180a0a4695d66145e674c2647da5e0d696d128","isMergeCommit":false,"messageTitle":"Update Ui for Clients and Orders","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":19},"test-code":{"insertions":1,"deletions":0}}},{"hash":"69cb6bbfcbfd47617d6f0d08108ad071da52c60e","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":19}}},{"hash":"3018311975806244cb7f23dc5e09fce230250a5e","isMergeCommit":false,"messageTitle":"Update PUML for Logic","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":4}}},{"hash":"e3c9f3f8220cf6d85100d021c24599182baa6149","isMergeCommit":true,"messageTitle":"Merge pull request #93 from shavonneg/branch-update-puml-again","messageBody":"Update PUML for Logic","fileTypesAndContributionMap":{}},{"hash":"998fbe90df24fd9f5abc0f51b4d1dcb9d66640a6","isMergeCommit":true,"messageTitle":"Merge pull request #94 from kailinteoo/v1.2_puml","messageBody":"V1.2 puml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"02c54710b52c5ec38d16c025d0a96892cf51cf08","isMergeCommit":true,"messageTitle":"Merge pull request #97 from Jaspertzx/branch-Edit-Jar-Name","messageBody":"Update the gradlew jar name","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"743db6ee3bba78a33c2f79c00196dd3edd86617e","isMergeCommit":false,"messageTitle":"Update tags for UI in DarkTheme.css","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"aa7d0cdb036d0a55bbd4433818a52853c1308c99","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include ViewOrdersCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":0}}},{"hash":"c5e1f0964dd35465b9241231ac93e536f11dd7d7","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-28","commitResults":[{"hash":"64d08482c4dc7be31ee84484ca305a0496fea702","isMergeCommit":false,"messageTitle":"Implement EditOrderCommand","messageBody":"Add EditOrderCommand.java by utilising remove and\nadd functions.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":442,"deletions":8}}}]},{"date":"2024-03-29","commitResults":[{"hash":"d827f1e527526c1a721dc595f8414c675727aae3","isMergeCommit":false,"messageTitle":"Update indexing of orders when edited","messageBody":"Order is now edited in place instead of being added to the end of the\nOrderList\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"a39ab2e5b16d39d0fea8f091156e89eada664b6b","isMergeCommit":false,"messageTitle":"Edit status update functionality","messageBody":"Status can now be updated from PENDING to COMPLETED\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":17}}},{"hash":"7e515ee91a1af3030148caad98b7c7267bc04683","isMergeCommit":false,"messageTitle":"Add EditOrderCommandTest.java","messageBody":"Add tests for EditOrderCommand\n","fileTypesAndContributionMap":{"test-code":{"insertions":324,"deletions":0}}},{"hash":"3dd87ad309bb16dca1e829db0c98415f269e3fe2","isMergeCommit":false,"messageTitle":"Fix checkstyle in UniquePersonList.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"75dba7984799a144c7d2ccb7a36842008e17321f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"342f493767c0ebbd9cf0c7d80c0b57dd668c2af9","isMergeCommit":false,"messageTitle":"Update Amount.java to Price.java for EditOrderCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":23},"test-code":{"insertions":5,"deletions":5}}},{"hash":"2dd45fa70acc84e4ca6b5356e82ae397dfe433d3","isMergeCommit":false,"messageTitle":"Fix EditOrderCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":34,"deletions":23}}},{"hash":"14e9f4c5371fd4e970f2d7d94da688fef3ef1aed","isMergeCommit":false,"messageTitle":"Fix EditOrderCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":9},"test-code":{"insertions":6,"deletions":5}}},{"hash":"e3ce4c0722520c4da7f00abb4915279ef76e5e4d","isMergeCommit":false,"messageTitle":"Update checkstyle for EditOrderCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":2,"deletions":1}}},{"hash":"b3e7d5e429805e9f00341b7a2aaf1f73070b064b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"b7e420daff0581475402fc69429ff05d93df0f29","isMergeCommit":false,"messageTitle":"Add test cases for ParserUtilTest.java","messageBody":"Missing tests for newly added methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":84,"deletions":0}}},{"hash":"3cc02897026b9b2b7d184bbb57efc9d667437992","isMergeCommit":false,"messageTitle":"Update UniquePersonListTest.java","messageBody":"Include more tests for setPersonsAndAddOrder and\nsetPersonsAndDeleteOrder.\n","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":0}}},{"hash":"76ddbcbf3fecc5bc38c666b6ee34cdb49df5ccb2","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest.java","messageBody":"Include test case for EditOrderCommand.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"8007b70abc598c860bce4ab5a3ef1a02c0d601a7","isMergeCommit":false,"messageTitle":"Update StatusTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-04-02","commitResults":[{"hash":"9f8cc535b1c6df52021af749ab6219256361d2fd","isMergeCommit":false,"messageTitle":"Edit test case for for EditOrderCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":0}}},{"hash":"e1ea0dfeb9d0ade04aaf2d7e4855423df8af6085","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":29}}}]},{"date":"2024-04-03","commitResults":[{"hash":"5eab3bdfed91089ceef283a4c3e77e15143004b1","isMergeCommit":true,"messageTitle":"Merge pull request #137 from Jaspertzx/branch-Update-Command-UG","messageBody":"Update the UserGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"98f3141eaba55efb81a7646aaa83968402d335f4","isMergeCommit":false,"messageTitle":"Update UniquePersonListTest.java","messageBody":"Add missing tests for UniquePersonList.\n","fileTypesAndContributionMap":{"test-code":{"insertions":53,"deletions":0}}},{"hash":"a84551f3ee91c380b04c6358e7c8a18c4750ad42","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f45d2ce70563ed14c14ade4c29667c19ba6d3b96","isMergeCommit":false,"messageTitle":"Fix UniquePersonList.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"566485b9376d16fb6c8253ede9bd89fb1db48e33","isMergeCommit":true,"messageTitle":"Merge pull request #128 from shavonneg/branch-editcommand","messageBody":"Implement EditOrderCommand","fileTypesAndContributionMap":{}},{"hash":"893c675d03b05a3c6f7cbb98b9d13a741037f37c","isMergeCommit":true,"messageTitle":"Merge pull request #143 from Jaspertzx/branch-Fix-EditCommand","messageBody":"Fix EditCommand from null error","fileTypesAndContributionMap":{}},{"hash":"113290d05db413093436ce19156c70b3e40f4430","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Previously there was no information on viewOrders.\n\nInclude information on the missing features.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":38,"deletions":10}}},{"hash":"b8baf4b7bc9a0c5b44b8c59d7cf067037b8fd5c6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/UniquePersonList.java\n","fileTypesAndContributionMap":{}},{"hash":"949acc1c7cf2bf16333d164931bd10b5dd02c27e","isMergeCommit":false,"messageTitle":"Fix UniquePersonList.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"a6480a93056f6adbc78736425b8757790d1f4b91","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Include Table of Contents and update some feature descriptions.\n","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":4}}},{"hash":"e044a5f5efcd6ae6fe92b57f3971ccbc16f5997e","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Provide example for editOrder in the UG.\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"8dcd2b413eb199dcb215f4981f75fa07335080e7","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":19}}}]},{"date":"2024-04-05","commitResults":[{"hash":"08f0421785fb89a1f8c9aea4fdb10df88b1e1ab9","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Remove 7.2 ferom appendix and update 7.3 to 7.2 for formatting.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}},{"hash":"9d04d7296aa7f18765841b80ec1791658a9e552d","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Remove 7.2 from appendix and update 7.3 to 7.2 for formatting.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}},{"hash":"a9263a64065a3662f531412f41ce2f32ade8125c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"866644e077c14cc1064560e7aa8cad4c005073ef","isMergeCommit":true,"messageTitle":"Merge pull request #147 from shavonneg/branch-editcommand","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"05cf0945b1fefc668fe46eba0b488596f4e8a93f","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Update table of contents to match formatting.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]}],"rertyy":[{"date":"2024-03-02","commitResults":[{"hash":"7f84ac622f18004b140984fa1771492c72d3d1d6","isMergeCommit":false,"messageTitle":"Add use cases for base entries and export","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":227,"deletions":73}}}]},{"date":"2024-03-06","commitResults":[{"hash":"cfbcd5756f0b6da60db0dc6d821a4866b53e3a3c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-use-cases-to-dg","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"b944847798b8c94092a99e26958b3327ef5bb88f","isMergeCommit":false,"messageTitle":"Add remaining use cases for new features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":185,"deletions":51}}},{"hash":"c4f2d2bc199eab99289d62934b01da79d549d9d2","isMergeCommit":false,"messageTitle":"Add pre-commit hook","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":45,"deletions":0}}}]},{"date":"2024-03-14","commitResults":[{"hash":"390ef7bb35faaf251e91a3b46558f2e85cdfcd12","isMergeCommit":false,"messageTitle":"Update AboutUs.md for change in target audience","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":22}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a02c782f9edaf3731dc393ea67ff69b236e8fcfc","isMergeCommit":false,"messageTitle":"Add Order class and its fields","messageBody":"Fields added:\nAmount, Deadline, Discount, Order,\nOrderDate, OrderId, Remark, Status\n\nAdded DateTimeUtil.java for shared LocalDateTime helper functions.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":586,"deletions":0}}},{"hash":"d1d228b9180a1dff80f9a4442246c644d589ba20","isMergeCommit":false,"messageTitle":"Add OrderList","messageBody":"Note that OrderList does not require Orders to be unique\nbecause there can be multiple orders with the exact same content.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":117,"deletions":0}}},{"hash":"7552a52e08ef37d11e88b595772f02e50f4fd04c","isMergeCommit":false,"messageTitle":"Add UUID.fromString constructor for OrderId.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"0095c58924edbfe9873f45385e3a4de16e69a2e9","isMergeCommit":false,"messageTitle":"Add OrderBuilder, OrderTest classes for tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":212,"deletions":0}}},{"hash":"aae38faa81919e6185b4d2abdf2951fdfd1cfbe2","isMergeCommit":false,"messageTitle":"Add missing OrderNotFoundException dependency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"aab9ae5e1bb5dca7e001f0888d49bc5d423d3403","isMergeCommit":false,"messageTitle":"Add TypicalOrders template","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":0}}},{"hash":"35a44853176a9dcde814c63ef41b942e700a8b0b","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"f12b3a6eab0d35f24341206201735be0d9f330af","isMergeCommit":false,"messageTitle":"Fix tests failing due to wrong type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":8,"deletions":8}}},{"hash":"11523a74b713117ef645df5f870ba40ffa61858a","isMergeCommit":false,"messageTitle":"Fix tests failing due to wrong type","messageBody":"Discount and Amount have to be int\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":10,"deletions":10}}},{"hash":"3999a4ac2e518067b253b671dd57639933d2bf83","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/Add-order-class\u0027 into Add-order-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d08dfc3d1b1bd9bfd9268adf239679ae1d3c90a","isMergeCommit":false,"messageTitle":"Add tests for Order and its fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":18},"test-code":{"insertions":378,"deletions":21}}},{"hash":"aff4883e2c5ad592f63a979c956b56e139a5d47a","isMergeCommit":false,"messageTitle":"Fix checkstyle warning","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"46be4fff200414e860f842843b1822b1e3b4ff37","isMergeCommit":false,"messageTitle":"Remove discount class (redundant)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":71}}},{"hash":"40863ff4d4c6b36826874c3268419ef43f23aa19","isMergeCommit":false,"messageTitle":"Add test suite for OrderListTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":124,"deletions":0}}},{"hash":"0a377f4e0ca014fb793da785ace957197d7da2fd","isMergeCommit":false,"messageTitle":"Increase test coverage for Status","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"39152b49d3d16439f46d1b86ea7d06c77c8fce8d","isMergeCommit":false,"messageTitle":"Add testEquals for OrderListTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"81357893bc55fcdc7e44ef68cd395a61baf94f33","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram.puml for Order","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":1}}},{"hash":"1054ee49cf362122e5ae19f4e84bc37471aa953a","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":55,"deletions":45}}}]},{"date":"2024-03-20","commitResults":[{"hash":"9a91217c682f858fd0e001c51f99e0dd73828e52","isMergeCommit":false,"messageTitle":"Fix checkstyle Javadoc errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":117,"deletions":94},"test-code":{"insertions":9,"deletions":9}}},{"hash":"938252b8f329dfc158c0aeca493039090a6bbbd3","isMergeCommit":false,"messageTitle":"Add checkstyle Javadoc","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":0}}},{"hash":"042d76199fe485ca5f2e66cd56f417115a6d5952","isMergeCommit":true,"messageTitle":"Merge pull request #90 from Jaspertzx/branch-Update-Storage-PUML","messageBody":"Update Storage PUML diagram","fileTypesAndContributionMap":{}},{"hash":"d863c1ab10b3243ef417a11b019012c0b418452c","isMergeCommit":false,"messageTitle":"Fix datetime toString","messageBody":"Override toString methods of classes which use LocalDateTime.\nChanged from ISO time to dd-MM-YYYY HH:MM\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"83fa89329ab91fe83f8cde10784254d64353c5b2","isMergeCommit":true,"messageTitle":"Merge pull request #95 from Jaspertzx/branch-Update-Comments","messageBody":"Update AddOrderCommand and DeleteOrderCommand msg","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"aec50280bbf163a682c72916625e592639ded660","isMergeCommit":false,"messageTitle":"Oopify AddOrder by extracting AddOrder","messageBody":"Bug:\nWhen adding a person in the application,\n8 orders are added instead of just 1.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6},"test-code":{"insertions":2,"deletions":2}}},{"hash":"f11253b285de6e58c9a5b282bc9aa8d95e62165e","isMergeCommit":false,"messageTitle":"Remove separate storage of Orders","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"fcc90220fdb7f95a527ee6a67750e78d0621d680","isMergeCommit":false,"messageTitle":"Fix immutability of OrderList","messageBody":"Use FilteredList(unmodifiableObservableList) to view Orders in GUI.\n\nMake calls more OOP by following same convention as UniquePersonList.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":10}}},{"hash":"b6f4dce9c0f23d8475075533e27e8cbe297b1a84","isMergeCommit":false,"messageTitle":"Remove unnecessary getOrderList method","messageBody":"Model::getOrderList is a duplicate of Model::getFilteredOrderList.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6},"test-code":{"insertions":2,"deletions":17}}},{"hash":"fd65016a4aec2fdecf6364a526234dd1ae45e0b0","isMergeCommit":false,"messageTitle":"Fix failing tests","messageBody":"Tests require updateFilteredOrderList to be overriden in\nModelStubAcceptingOrder*\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":14,"deletions":3}}}]},{"date":"2024-03-23","commitResults":[{"hash":"eeae9cee3a4e3014637bbc5c7aaeab83c45716bb","isMergeCommit":false,"messageTitle":"Fix deeply nested code","messageBody":"Extracted methods from code with weak SLAP:\n DateTimeUtil::getCurrentTime() and\n DeleteOrderCommand::getOrderFromPerson\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":19},"test-code":{"insertions":3,"deletions":2}}},{"hash":"654587703cf560ba12d7cc7b49122c4ff05c231b","isMergeCommit":false,"messageTitle":"Add newlines between code chunks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"e99d22e4b578da65ceb5a991272b06b46951e316","isMergeCommit":false,"messageTitle":"Add non null requirement for Order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"24a6adfa5054cf05b6c2ae5a00eb32b451232c80","isMergeCommit":false,"messageTitle":"Add delete by index","messageBody":"Bugs:\nDoes not update UI\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":66},"test-code":{"insertions":8,"deletions":5}}},{"hash":"92471d83033568ca4a025c74204b2c9ad6fb9091","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-delete-order","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3b595ce8234f4b47134c967333ed544c1473e8f8","isMergeCommit":false,"messageTitle":"Fix DeleteOrderCommand","messageBody":"Orders are now indexed via number rather than UUID.\nGUI now displays Order deletion correctly.\n\nTodo:\nFix failing tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":69},"test-code":{"insertions":48,"deletions":25}}},{"hash":"31d430df07c683992dc6b6cb63d4c664ce3a8c02","isMergeCommit":false,"messageTitle":"Remove OrderList class (unused)","messageBody":"Orders are stored inside UniquePersonsList as part of each Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":117},"test-code":{"insertions":0,"deletions":140}}}]},{"date":"2024-03-24","commitResults":[{"hash":"1680ab7763b60bd5a320c18a4d68071b85353d1b","isMergeCommit":false,"messageTitle":"Add display text for OrderPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-25","commitResults":[{"hash":"787a4a3b18c98e82d8f54fc8cd72d21c1c93d52a","isMergeCommit":false,"messageTitle":"Fix failing test from setPersonDelete","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-26","commitResults":[{"hash":"9196f67bac082ff44b1d0f44700fe92786c955bc","isMergeCommit":false,"messageTitle":"Fix remaining failing tests","messageBody":"DeleteOrderCommand was missing an equals method causing equals to check\nhashcode rather than deleteOrder index.\n\nDeleteOrderCommandParser had a typo causing messages to call\nDeleteOrder\n rather than DeleteOrderCommand\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2},"test-code":{"insertions":3,"deletions":7}}},{"hash":"cab59e44d731c4faf390afc9816e542126ca893e","isMergeCommit":false,"messageTitle":"Enable assertions in build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"cc001e51c97356a98373aa94f983621eacdaad54","isMergeCommit":true,"messageTitle":"Merge pull request #114 from kailinteoo/v1.3_DG","messageBody":"Update the Storage component in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"1e933d8803e799c9aa0ec432e2cedb9e226bea07","isMergeCommit":true,"messageTitle":"Merge pull request #115 from shavonneg/branch-update-DG","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"89bfe6fb61761dbd44455381eb77445223d670df","isMergeCommit":false,"messageTitle":"Update DG for EditorderCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":22}}},{"hash":"28a8b1d28dcef147b4d38a612ea260ac7451d3c7","isMergeCommit":false,"messageTitle":"Rename methods for clarity","messageBody":"These methods are used to replace the Person instance (due to immutable\nguarantee) in the AddressBook, and modify the internalOrderList in\nUniquePersonList.\n\nsetPersonAdd -\u003e setPersonAndAddOrder\nsetPersonDelete -\u003e setPersonAndDeleteOrder\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":14},"test-code":{"insertions":9,"deletions":9}}}]},{"date":"2024-03-27","commitResults":[{"hash":"5aefcc43ded338a505e11db00da0aef8e24a232f","isMergeCommit":false,"messageTitle":"Fix rawtype warning","messageBody":"new HashSet() -\u003e new HashSet\u003c\u003e()\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"02027ca2c6cd3758d9ea8172dc7bde08531d96c8","isMergeCommit":true,"messageTitle":"Merge pull request #118 from rertyy/fix-rawtype","messageBody":"Fix rawtype warning","fileTypesAndContributionMap":{}},{"hash":"bcd36f419a2887f04dc6843770d491ecb67f54cf","isMergeCommit":false,"messageTitle":"Add more Persons in SampleDataUtil","messageBody":"Allows easier testing without needing to\nmanually adding new persons\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":15}}},{"hash":"75f3134e95b2c1a4afa2926a89db6a9e59137a5c","isMergeCommit":false,"messageTitle":"Fix OrderPanel display bug from deleting Persons","messageBody":"Currently, the OrderPanel in the GUI does not update when persons are\ndeleted.\n\nThis commit fixes it such that the orders belonging to deleted persons\nwill be deleted as well and updated in the GUI.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-28","commitResults":[{"hash":"34a565a5feb6c02fb811e81530a38c17ec052e15","isMergeCommit":true,"messageTitle":"Merge pull request #119 from rertyy/update-GUI-updating-when-person-is-deleted","messageBody":"Update GUI updating when person is deleted","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"3930db71ea06a78ef414f70520cb341a0e991c2a","isMergeCommit":true,"messageTitle":"Merge pull request #130 from Jaspertzx/branch-Change-Display-List","messageBody":"Update ObservableList to Pair class","fileTypesAndContributionMap":{}},{"hash":"ac67b26ff7704dd691fd2b5049b59e60877bb266","isMergeCommit":false,"messageTitle":"Modify links to point to repo","messageBody":"Website header and HelpWindow point to se-edu base repo rather than our\nrepository. Links have been changed accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":16}}},{"hash":"023413c19f9827e014f0b71d015428bde55f99a2","isMergeCommit":false,"messageTitle":"Fix typo in USERGUIDE_URL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1a83eef8747a4c50c71d9c0ef92d2e7c42cc02be","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #130 from Jaspertzx/branch-Change-Display-List\"","messageBody":"This reverts commit 3930db71ea06a78ef414f70520cb341a0e991c2a, reversing\nchanges made to 8eca76e65b558967bd43dab28a7c3b3f8f0d4cf7.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":63},"test-code":{"insertions":26,"deletions":102}}},{"hash":"a67326cba5de5770dc814f0aa37a4b58830355f2","isMergeCommit":false,"messageTitle":"Add PersonReference to Order","messageBody":"Instead of using Pair\u003c\u003cPerson, Order\u003e\u003e everywhere, use\ncircular references. Person -\u003e Order -\u003e Person -\u003e ...\nThis allows for simpler code logic.\n\nTODO:\nCheck if circular references are a problem. From preliminary testing,\nadd and delete do not appear to have problems.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":9}}},{"hash":"8d21476f5858aca36727e81dbe6e7dcdb4fa3e60","isMergeCommit":false,"messageTitle":"Add tests for Order with Person reference","messageBody":"Now that Order has a reference to Person, new tests are required to test\n that the Person reference functions as expected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3},"test-code":{"insertions":33,"deletions":13}}},{"hash":"e27e08b504d45e186fec5509ae9c541af59029c9","isMergeCommit":true,"messageTitle":"Merge pull request #132 from rertyy/use-person-reference-in-order","messageBody":"Use Person reference in Order","tags":["v1.3.trial"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"515ceba959115b5d7dcfd207181e27ccc38e05e6","isMergeCommit":true,"messageTitle":"Merge pull request #134 from shavonneg/branch-update-UG","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"37c1a939837b32f9092e98be26ae0723f1a32782","isMergeCommit":false,"messageTitle":"Add deleteOrder command to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"cdd9bf0843e00ef7ce90ebd84be46f4adb65550c","isMergeCommit":true,"messageTitle":"Merge pull request #142 from Jaspertzx/branch-Update-UG-Main-Features","messageBody":"Update the UserGuide Main Features","fileTypesAndContributionMap":{}},{"hash":"bf7907900864611af52c0561378d447190943bd6","isMergeCommit":true,"messageTitle":"Merge pull request #146 from Jaspertzx/branch-Remove-ViewOrderCommand","messageBody":"Remove ViewOrderCommand","fileTypesAndContributionMap":{}}]}],"Jaspertzx":[{"date":"2024-03-05","commitResults":[{"hash":"8756614a0c823f135b58cce0c52e4973404ef1d2","isMergeCommit":false,"messageTitle":"Update User Stories","messageBody":"The user stories does not align with our overall\nobjective of creating a mini-CRM system.\n\nThis may make the overall project very confusing\nif other developers were to see the developer\nguide and not see the updated user stories.\n\nUpdate the user stories to match what my group\nis trying to attain.\n\nThis will be more accurate to what we would like\nto achieve the next few weeks, and also to meet\nthe requirements of this module.\n\nNo other reference.\n","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":8}}}]},{"date":"2024-03-06","commitResults":[{"hash":"63d17a7aafc0ec241a136fdda3d6821a45985120","isMergeCommit":true,"messageTitle":"Merge pull request #1","messageBody":"Update User Stories","fileTypesAndContributionMap":{}},{"hash":"1c8ad53b94ee17d57487e8d421ba4eb8acc86d77","isMergeCommit":true,"messageTitle":"Merge pull request #32 from kailinteoo/website-adapted","messageBody":"Update AboutUs and README pages","fileTypesAndContributionMap":{}},{"hash":"e942a25746e0bc8e4d58a683fd7ada68e4a2ee68","isMergeCommit":true,"messageTitle":"Merge pull request #38 from kailinteoo/website-adapted","messageBody":"Edit AboutUs.md to fix src image name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"29330376b0c04158a86a5581e52934eca30d502c","isMergeCommit":true,"messageTitle":"Merge pull request #40 from kailinteoo/website-adapted","messageBody":"Website adapted","fileTypesAndContributionMap":{}},{"hash":"7dc666abc2df1777c63757cde229aa43a779d8d3","isMergeCommit":false,"messageTitle":"Update DeveloperGuide","messageBody":"Fix the wrong tabs on the bottom of the user stories.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"9f75204cf745ab8543ee75a65fd127382016191c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-use-cases-to-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bc8bae5d0307567fae49d476e36b16877e1b403a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from rertyy/add-use-cases-to-dg","messageBody":"Add use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"d3de404326b4d81655a3dc9d2698519fb7fd3ac6","isMergeCommit":true,"messageTitle":"Merge pull request #42 from rertyy/add-precommit","messageBody":"Add pre-commit hook","fileTypesAndContributionMap":{}},{"hash":"b0ffda7ac662359202e55165dac221d3146b5ec9","isMergeCommit":true,"messageTitle":"Merge pull request #41 from rertyy/update-editorconfig","messageBody":"Remove unused filetypes for .editorconfig","fileTypesAndContributionMap":{}},{"hash":"8f83d2c774190f987ccd2e7c70de50a8a96cfc1a","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"46dfec926dddec9c15fb43e4ffca510a0dcca028","isMergeCommit":true,"messageTitle":"Merge pull request #47 from kailinteoo/resolve_dg","messageBody":"Resolve DG.md product scope","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"fda3cd61966c96eaeffdc4f16b7aa1685c6c04e6","isMergeCommit":false,"messageTitle":"Update DeveloperGuide","messageBody":"Current DeveloperGuide is out of date.\n\nThis could make developers confused on the direction\nof the project.\n\nUpdate the DeveloperGuide to keep it relevant\nto our project.\n\nMakes the DeveloperGuide more relevant and accurate.\n","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"3aac70ecd3be6f60d3ca5c60902956d32f065ffc","isMergeCommit":true,"messageTitle":"Merge pull request #60 from kailinteoo/update_readme","messageBody":"Update README ","fileTypesAndContributionMap":{}},{"hash":"3b01d00dbb5d77a58abdd1f942589765a2bff9e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6b260d2da329cd0921e3f0424e3d0066488362bb","isMergeCommit":true,"messageTitle":"Merge pull request #62 from shavonneg/v1.2","messageBody":"Update DeveloperGuide.md User Story","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"1c60afa145d189a14cc0ad9a894f617e41a50ad0","isMergeCommit":false,"messageTitle":"Refactor Client Commands into it\u0027s package.","messageBody":"The client commands are not in a package, but rather\nin the vague directory of commands.\n\nAs we are adding more commands, this could mix up\nwith the other classes, causing fellow developers\nconfusion.\n\nMoved the client commands into it\u0027s own package, and\nedited the references according of different files\nthat depend on the client commands.\n\nThis will ensure that the directory is up to date\nand as specific as possible for OOP reasons.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":17},"other":{"insertions":17,"deletions":9},"test-code":{"insertions":41,"deletions":24}}}]},{"date":"2024-03-17","commitResults":[{"hash":"7a369ee9e4ca63f475719d0dc84b6c88b424947c","isMergeCommit":false,"messageTitle":"Add Order \"C\" and \"D\" of CRUD.","messageBody":"Currently, there are no methods or classes to\ncreate the Order object.\n\nThis prevent the User from doing the interacting\nwith the order objects.\n\nImplement the read and delete of Order object.\n\nThis will allow the user to interact with the\ncreated objects.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":5},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":131,"deletions":7}}},{"hash":"90a84f1b89298771bdd8bf7b8bd7a76ddce16734","isMergeCommit":true,"messageTitle":"Merge pull request #70 from rertyy/Add-order-class","messageBody":"Add Order class and its fields","fileTypesAndContributionMap":{}},{"hash":"f28ba8550127c66e154e54a06592c754df98b209","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into branch-Add-Order-Commands","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"21c392ff054fa2085ddf9cc982745d0b9295faa3","isMergeCommit":false,"messageTitle":"Integrate Order parser to Order classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":45},"test-code":{"insertions":28,"deletions":22}}},{"hash":"fb662aa4ae042f425ec9f9f949aea0eebfce1953","isMergeCommit":false,"messageTitle":"Update Delete Order logic and parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":8},"test-code":{"insertions":168,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"4948de7f7039331d127d629173ea580523b50460","isMergeCommit":false,"messageTitle":"Add JUnit test for DeleteOrderCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":3},"test-code":{"insertions":29,"deletions":0}}},{"hash":"dbe295b3c7501fb4dcbd089b401568b05817ac5c","isMergeCommit":false,"messageTitle":"Add JUnit test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"1500ba831dcb3747fa5280c8d32d9fee0c24eab1","isMergeCommit":false,"messageTitle":"Add JUnit test for AddOrderCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":37,"deletions":0}}},{"hash":"a38b1a1d29cc215bfb0c3392664789317ea94d5e","isMergeCommit":false,"messageTitle":"Add JUnit test for ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":22,"deletions":0}}},{"hash":"07eac9cfd6372df73521d44312a15f0a006d4157","isMergeCommit":false,"messageTitle":"Add JUnit for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7},"test-code":{"insertions":21,"deletions":0}}},{"hash":"c5532825f063d05abc3f341ada69efd81ccfc40f","isMergeCommit":false,"messageTitle":"Edit Person class to integrate Order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}},{"hash":"c966c52c51e61be5d6e34fcb4964b35dd6e24972","isMergeCommit":false,"messageTitle":"Add JUnit test for new Persons Constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":0}}},{"hash":"13552010a0875bf4ab45aba6d77c55864b75cf93","isMergeCommit":true,"messageTitle":"Merge pull request #77 from rertyy/update-ModelClassDiagram","messageBody":"Update model class diagram for Order","fileTypesAndContributionMap":{}},{"hash":"b7a41ab8b9e31a91e0e5e5dbc7ff8ad7fcd4a275","isMergeCommit":true,"messageTitle":"Merge pull request #71 from rertyy/add-precommit","messageBody":"Remove ./gradlew test from pre-commit setup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"702d9cd3327236bd08eee2b24df050b2808ac2b2","isMergeCommit":false,"messageTitle":"Implement ModelManager to store Orders","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":73},"test-code":{"insertions":8,"deletions":87}}},{"hash":"9bc2d532393af0f7da7bfe4d0ca48b1dbe70d722","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Implement-ModelManager","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/orders/DeleteOrderCommand.java\n#\tsrc/main/java/seedu/address/model/Model.java\n#\tsrc/main/java/seedu/address/model/ModelManager.java\n","fileTypesAndContributionMap":{}},{"hash":"77d8c724e4d5f2431b673761e6a7ec8a9681b1d1","isMergeCommit":false,"messageTitle":"Merged master into branch for PR","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"c6d63cbeaa4840bc47fce0d90e218dc4975273d3","isMergeCommit":false,"messageTitle":"Add JUnit test for updated commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":93,"deletions":19}}},{"hash":"5fcc88b4409caae9af312ad4735106fe6b41212a","isMergeCommit":false,"messageTitle":"Update JUnit to cover more AddOrderCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5},"test-code":{"insertions":15,"deletions":0}}},{"hash":"8311e074a476b533538d9d79b18d57b70ef15b9e","isMergeCommit":false,"messageTitle":"Add JUnit test for AddOrderCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5},"test-code":{"insertions":5,"deletions":4}}},{"hash":"c29383407c726c4d4afe4242ab6b70e5ea672c12","isMergeCommit":false,"messageTitle":"Fix error in AddOrderCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"36d72a3df45d05b376c779a5f0e1a356c792afb7","isMergeCommit":false,"messageTitle":"Fix JUnit test for DeleteOrderCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"5fab0896dae44183d408d8701ab2040c90e6988a","isMergeCommit":true,"messageTitle":"Merge pull request #88 from Jaspertzx/branch-Implement-ModelManager","messageBody":"Implement View, Create and Delete Order commands to ModelManager","fileTypesAndContributionMap":{}},{"hash":"93a10c78c3fdcf4ac885c04fcc1fcf4a923824e9","isMergeCommit":false,"messageTitle":"Update Storage PUML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"b86d7bd331d2496bff382b8de425a6b985daa816","isMergeCommit":true,"messageTitle":"Merge pull request #91 from rertyy/update-datetime-tostring","messageBody":"Fix datetime toString","fileTypesAndContributionMap":{}},{"hash":"67dff876103a5b18a411d59be33c324e9373f35e","isMergeCommit":false,"messageTitle":"Update AddOrderCommand and DeleteOrderCommand msg","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":7}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dd2d7b86c154e205b0a9419341c050dda30fffb3","isMergeCommit":false,"messageTitle":"Update the gradlew jar name","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"fcc1410cbe57482507c92c657a220533419497b8","isMergeCommit":true,"messageTitle":"Merge pull request #100 from rertyy/fix-nested-and-unecessary-code","messageBody":"Fix nested and unecessary code","fileTypesAndContributionMap":{}},{"hash":"0f2e5a24098cf4270cb3670702e5887fe4606821","isMergeCommit":true,"messageTitle":"Merge pull request #101","messageBody":"Add non null requirement for Order","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"63af0839cd622009e08af677c298987763ee394d","isMergeCommit":false,"messageTitle":"Update the DeveloperGuide for Logic","messageBody":"The DeveloperGuide is not up to date with our\nimplementations.\n\nThis may be confusing to other developers or\nreaders that are viewing it.\n\nUpdate the DeveloperGuide to our implementation\nlogic and methods.\n\nThis will allow our DeveloperGuide to be up to\ndate with our changes and easier to understand\noverall, allowing for easier further\nimplementations.\n","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":12}}},{"hash":"1c162c84ca1d0da4b137d91b6d06f6ed58f9a60a","isMergeCommit":true,"messageTitle":"Merge pull request #111 from shavonneg/update-v1.3","messageBody":"Update tags for UI in DarkTheme.css","fileTypesAndContributionMap":{}},{"hash":"fe50273941c91db61c8b2b5ca9f3054981cbebc9","isMergeCommit":true,"messageTitle":"Merge pull request #112 from rertyy/gradle-enable-assertions","messageBody":"Enable assertions in build.gradle","fileTypesAndContributionMap":{}},{"hash":"3cfbb6e6ad8d3fdacd198f3fe2169c8f0d9beb58","isMergeCommit":false,"messageTitle":"Updated the DeveloperGuide to fix error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"1a4aec44960b11d5f95fc8dd2bcbb8b5a0171d98","isMergeCommit":true,"messageTitle":"Merge pull request #116 from rertyy/update-DG-for-edit-order","messageBody":"Update DG for EditOrderCommand","fileTypesAndContributionMap":{}},{"hash":"74def40db3fbc4df53d8dbc41c027f46da8de18f","isMergeCommit":true,"messageTitle":"Merge pull request #104 from rertyy/fix-delete-order","messageBody":"Add delete by index","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"d577e67f77e0a1a0806e1d33184e1b773be42126","isMergeCommit":false,"messageTitle":"Remove extra Constructor in Person Class","messageBody":"There is an extra constructor in the person class.\nThis is confusing to developers on which to use.\n\nThis could cause null pointer errors when the\nwrong constructor is used, as the order field is\nnot initialized.\n\nRemove the extra constructor and fixed codes that\ncall on it.\n\nThis adjustment will enable us to adhere to a\nsingle constructor, facilitating a more\nstreamlined implementation.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":47},"test-code":{"insertions":5,"deletions":1}}},{"hash":"01b9e822dde5c4bd7f4f6c285290c4ba84765ae2","isMergeCommit":false,"messageTitle":"Update classes for Person Constructor","messageBody":"Classes are still using the old constrcutor, but\npoorly by passing in null.\n\nThis may cause null exceptions in the future.\n\nFixed these methods and made it not use null for\nthe order parameter.\n\nReduces the null exceptions possible.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":4},"test-code":{"insertions":2,"deletions":1}}},{"hash":"2b713ef9b05449b01dda609dbff108d91bd3557a","isMergeCommit":true,"messageTitle":"Merge pull request #117 from Jaspertzx/branch-Fix-Person-Constructor","messageBody":"Remove extra constructor in Person class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"565d5e96a2231037f3924d021b0afdd1ecf4be3d","isMergeCommit":false,"messageTitle":"Update ObservableList to Pair class","messageBody":"Currently, the ObservableList for Orders only\ncontains Orders.\n\nThis will not allow any names to show up for\norders, which may make the user confused who\u0027s\norder is this.\n\nUpdate the ObservableList to hold a Pair class.\n\nThis will allow us to display both Person and\nOrder details.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":43},"test-code":{"insertions":34,"deletions":22}}},{"hash":"c12bc96493fc29c0d4fd8b7bcc20cc0e0e51d538","isMergeCommit":false,"messageTitle":"Fix DeleteOrderCommand and test cases","messageBody":"There are some test cases that are not kept up\nwith the changes implemented. Additionally,\nthe DeleteOrderCommand was not up to date.\n\nThis may cause some unexpected behaviour when\nrunning the application or JUnit test.\n\nFix the command and test cases to accomodate for\nthe Pair change.\n\nThis will allow the application to run as\nexpected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":9},"test-code":{"insertions":59,"deletions":4}}},{"hash":"8eca76e65b558967bd43dab28a7c3b3f8f0d4cf7","isMergeCommit":true,"messageTitle":"Merge pull request #129 from kailinteoo/v1.3_Price_(Integer_to_Double)","messageBody":"Change Price from Integer to Double (allow up to 2dp)","fileTypesAndContributionMap":{}},{"hash":"5bf789f9736b97442542a1cdca75fefac6a77b60","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Change-Display-List","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"35369dec1a05285e06374f320f4674993f7f3c6b","isMergeCommit":false,"messageTitle":"Add Test Case for AddressBook","messageBody":"The AddressBook class\u0027s equal methods are not\ntested.\n\nThis could result in unexpected behaviour when\ncomparing AddressBook objects.\n\nAdd test cases for AddressBook class.\n\nThis will ensure that we will catch any potential\nerrors with comapring AddressBook objects.\n","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"58fa58ecb28e81cdc809c9e9580b5f9e0237688b","isMergeCommit":false,"messageTitle":"Update FXML variable name","messageBody":"The current FXML tag is wrong.\n\nThis could confuse future developers with its\nwrong naming convention.\n\nRename the FXML variable name.\n\nThis will allow the FXML to adhere to the file\nconventions we have created.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-04-03","commitResults":[{"hash":"0c6fde79052d1e622fbffaf3bcbe66b49cedd0b9","isMergeCommit":false,"messageTitle":"Update the UserGuide","messageBody":"The UserGuide is not up to date with our latest implementations.\n\nThis may confuse the user when going through the UserGuide.\n\nUpdate the UserGuide with our new features.\n\nThis will ensure the User will have the knowledge to use these\nrespective commands.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"8436ec1f5c04c7d0310a25b6e82e8952a70ac93d","isMergeCommit":false,"messageTitle":"Sort Orders as they are added","messageBody":"The orders are not sorted chronologically.\n\nThis may confuse users or make the application hard for them to check\nfor deadline.\n\nAdd sort command whenever an Order is added.\n\nThis will ensure the entire Order list stays sorted.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"e190a3f655354363260273557de6e0f9ac956c26","isMergeCommit":false,"messageTitle":"Add test case and fix OOP.","messageBody":"The test case was insufficient and the codes do not adhere to SLAP.\n\nThis may cause future development to be poor due to lacking essential\ntest cases or inaccurate performing methods.\n\nFix the weak SLAP and add test case.\n\nThis will aid in future development by being creating a strong\ncode foundation.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":17},"test-code":{"insertions":45,"deletions":0}}},{"hash":"b031b949ea420aae864afefb41fd25920ae5f6f9","isMergeCommit":false,"messageTitle":"Add Background Color when empty list","messageBody":"When the list is empty, the background color will reset to white, the\ndefault color.\n\nThis is ugly and not the intended outcome of our application.\n\nAdd a default color for background when the list is empty.\n\nThis is more pleasant to the user\u0027s eyes, and will allow our\napplication to look better.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"30b3ac5d04d6772a4b3c7cc8a8fbc94509ca3511","isMergeCommit":false,"messageTitle":"Update the UserGuide Main Features","messageBody":"The main feature is out of date.\n\nUsers may not understand how to use the application.\n\nUpdate the UserGuide with the new order features.\n\nThis will ensure that users can use the application with the latest\nupdates to reference.\n","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":16}}},{"hash":"fa4d6b481befbba5ce103ec1d1a260999b3e0b7a","isMergeCommit":false,"messageTitle":"Fix EditCommand from null error","messageBody":"The EditCommand is throwing a null pointer exeception.\n\nThis may cause the User to be unable to editOrders.\n\nUpdate the Order constructor used in the EditCommand to the newer\nversion.\n\nThis will allow the Person object in the Order object to be set, and thus\nthe User can use the command without errors.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}},{"hash":"8399c1960f003b8083c97186ce3ca85df61c8268","isMergeCommit":false,"messageTitle":"Edit the UserGuide","messageBody":"The UserGuide is out of date.\n\nThe users might not be able to correctly execute certain commands.\n\nEdit the UserGuide.\n\nThe users will have a more accurate guide to follow.\n","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"94efaef01f27d5dd433926463bc6b0247c49290c","isMergeCommit":true,"messageTitle":"Merge pull request #144 from shavonneg/branch-editcommand","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"a28bb6b254ad8050fb69c1b4532c21a305cb486f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Edit-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"86242ab731b31fd09ae7eee65fbde547a42713ce","isMergeCommit":true,"messageTitle":"Merge pull request #145 from Jaspertzx/branch-Edit-UG","messageBody":"Edit the UserGuide","tags":["V1.3"],"fileTypesAndContributionMap":{}},{"hash":"01cd5fc5f45e178e7468be1a9378dc56c9e8b5fb","isMergeCommit":false,"messageTitle":"Remove ViewOrderCommand","messageBody":"The command is not used at all, but it\u0027s code is still in the code base.\n\nThis may confuse users and developers on the actual purpose of this\ncode.\n\nRemove the ViewOrderCommand and its relevant test files.\n\nThis will be less confusing for everyone.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":36},"other":{"insertions":0,"deletions":0},"test-code":{"insertions":0,"deletions":51}}}]}]},"authorFileTypeContributionMap":{"kailinteoo":{"docs":506,"functional-code":433,"test-code":296},"shavonneg":{"docs":171,"functional-code":583,"test-code":717},"rertyy":{"docs":421,"functional-code":862,"test-code":631,"other":52},"Jaspertzx":{"docs":77,"functional-code":402,"test-code":520,"other":1}},"authorContributionVariance":{"kailinteoo":23142.686,"shavonneg":20146.256,"rertyy":77026.984,"Jaspertzx":14209.129},"authorDisplayNameMap":{"kailinteoo":"CS2103T-T09-2 KAIL.. TEO","shavonneg":"CS2103T-T09-2 GOH ..ONNE","rertyy":"CS2103T-T09-2 TUNG.. IAN","Jaspertzx":"CS2103T-T09-2 JASP..IANG"}} +{"authorDailyContributionsMap":{"kailinteoo":[{"date":"2024-03-06","commitResults":[{"hash":"a744f151cd8a507f50a1383abe87b7df1385297e","isMergeCommit":false,"messageTitle":"Update AboutUs and README pages, add UI mockup and build status badge","messageBody":"AboutUs Page:\n- Updated team member details and roles\n- Added profile photos for each member\n- Followed specified format for photo filenames\n\nREADME Page:\n- Updated project details and content to match project\n- Added UI mockup image as docs/images/Ui.png\n\nBuild Status Badge:\n- Updated GitHub Actions build status badge link to reflect team repo\u0027s build status\n\nAcknowledgement:\n- Acknowledged original source of code\n\nThis commit reflects updates made to various pages in the project repository to match our project details and specifications.\n","fileTypesAndContributionMap":{"docs":{"insertions":299,"deletions":51}}},{"hash":"abe2e20ffcfe3f81accf49fd79952588492bda9c","isMergeCommit":false,"messageTitle":"Update README with project details","messageBody":"This commit reflects changes made to the README\nto update project details and information.\nThe README now accurately reflects our project and\nits specifications.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"fb026213c29c5b2af1b3f556987bc19caa3747c0","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Jaspertzx/master","messageBody":"Update User Stories","fileTypesAndContributionMap":{}},{"hash":"8437a8090717b851aeabf17070fefa95c15e07ab","isMergeCommit":false,"messageTitle":"Edit AboutUs.md to fix src image name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"f50ba2526224ae911f7dfa106770112f3b4bf9b0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md and docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"aba87293ce836ef1d1b948649856252c0bf58bc9","isMergeCommit":false,"messageTitle":"Edit AboutUs.md and Docs for img","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9718e9c917dbd6b7ce7a4b6ac6b7a1bc6bc8cb0a","isMergeCommit":true,"messageTitle":"Merge pull request #39 from shavonneg/update-developer-guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"ca44e9112929688b8a84728570666efdb5a6f5de","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Jaspertzx/add-User-Story","messageBody":"Update DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"395234a009982dad28c6095ee4e51c851b591a29","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Jaspertzx/fix_userguide","messageBody":"Update User Guide","fileTypesAndContributionMap":{}},{"hash":"d1d23a9e4e9ccb1bb0c07694ce6311dfb15b637a","isMergeCommit":false,"messageTitle":"Resolve DG.md product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":7}}}]},{"date":"2024-03-14","commitResults":[{"hash":"7e67977855d5dced47d1d662c394d07121362f24","isMergeCommit":false,"messageTitle":"Update README to reflect change from crochet to floral industry","messageBody":"This commit updates the README to replace references to the\ncrochet industry with the floral industry.\nThe README now accurately reflects our project\u0027s focus on the\nfloral industry.\n","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"d77a38aa7341f53f1aed9b7ef406be93c7427d28","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Jaspertzx/update_Product_Scope","messageBody":"Update DeveloperGuide","fileTypesAndContributionMap":{}},{"hash":"c3ec5e4b07ff102e3aec9f7e1f6aa13340d12b83","isMergeCommit":true,"messageTitle":"Merge pull request #63 from rertyy/update-aboutus","messageBody":"Update AboutUs.md for change in target audience","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"deaafafd5257249bbe8e93aa9ebc1196c7431fbe","isMergeCommit":false,"messageTitle":"Update storage to store Order class","messageBody":"All classes and interfaces under the storage folder have\nbeen updated to support storing the Order class, similar\nto how the code previously handled the Person class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":354,"deletions":7}}}]},{"date":"2024-03-18","commitResults":[{"hash":"b8eaae0ea13a93c0ca02cb20491ed70042608e48","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Storage_Order","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3abbed0bae3b3c0820bb7b1d4dbf8b97e2ed3647","isMergeCommit":false,"messageTitle":"Update storage to accommodate Order class","messageBody":"After pulling the Order class from GitHub, multiple changes were made\nto the storage files to integrate this new class and resolve associated issues.\n\nChanges include:\n- Added support for storing Order objects in storage interfaces\nand implementations.\n- Updated Storage interface to include methods for reading and\nwriting Order objects to files.\n- Adjusted tests to reflect changes in storage functionality and\nensure proper handling of Order objects.\n\nAdditionally, several other adjustments were made across the\ncodebase to ensure consistency and maintainability.\n\nThis commit addresses the integration of the Order class into the\nstorage system, resolving related issues.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":256,"deletions":84}}},{"hash":"9c0a9061456070b1921c6d3d49cb7a04607465b8","isMergeCommit":false,"messageTitle":"Update Order class parameter visibility to private","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"ec9978d75c5dbbf5c703d32509d0675778723862","isMergeCommit":false,"messageTitle":"Refactor storage to nest Order information under Person","messageBody":"Modified the storage class to organize Order information\nunder the Person class, similar to how tags are handled.\nThis restructuring enhances the organization of data and\nsimplifies access to related information within the storage system.\n\nThis commit ensures that Order data is logically grouped with corresponding\nPerson records, improving data management and maintainability.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":384},"test-code":{"insertions":31,"deletions":10}}},{"hash":"fdebef7e7c49819cea47041de40daf45af3c9a2d","isMergeCommit":true,"messageTitle":"Merge pull request #72 from Jaspertzx/branch-Add-Order-Commands","messageBody":"Add Order \"C\" and \"D\" of CRUD.","fileTypesAndContributionMap":{}},{"hash":"fb86fe9bc2cea99b7ebc2436c1164c4457439a6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Storage_Order","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ac418499e60ac909aeb46c77592e3999767f8592","isMergeCommit":true,"messageTitle":"Merge pull request #78 from Jaspertzx/branch-Edit-Person","messageBody":"Edit Person Class to include Orders","fileTypesAndContributionMap":{}},{"hash":"12658e6c886b4dc861953cc9382613d98b60de9b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Storage_Order","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Person.java\n","fileTypesAndContributionMap":{}},{"hash":"944b6ba1685ebb5603bfde11621e646a7995bf84","isMergeCommit":false,"messageTitle":"update storage class after merging","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":8},"test-code":{"insertions":10,"deletions":5}}},{"hash":"1d7b8b1db98326f66556616c245813a82f4ef4c4","isMergeCommit":true,"messageTitle":"Merge pull request #69 from shavonneg/branch-update-v1.2","messageBody":"Add ViewOrdersCommand for displaying a list of orders","fileTypesAndContributionMap":{}},{"hash":"eb37b8d040f5dc8b70161b3541cc2ff46026f2e2","isMergeCommit":false,"messageTitle":"Solving the testing issue in Storage test class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":5},"test-code":{"insertions":3,"deletions":2}}},{"hash":"31e9aa15fed609775c70264ae3d5a69d8134a680","isMergeCommit":false,"messageTitle":"Solving the JsonAdaptedOrderTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":3},"test-code":{"insertions":102,"deletions":0}}},{"hash":"dbe540670b99b9f777f3d9c6a021f85b3fd5fd34","isMergeCommit":false,"messageTitle":"Solving JsonAdpatedOrder date issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":18}}},{"hash":"c5266957593bdc3b57e9e13ea03d0503d41bad5b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Storage_Order","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"1755fb6848b938dce51bec72ebeae8d830efd9a9","isMergeCommit":false,"messageTitle":"Adding more testcase for JsonAdaptedOrderTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":58,"deletions":1}}},{"hash":"76c5dba4b3c9b978df704bfdc2f50d22c90621e2","isMergeCommit":false,"messageTitle":"Update Testcase for JsonAdaptedOrderTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":10,"deletions":12}}},{"hash":"303c6820671a680d06146b3d7ab459c40dff9a9b","isMergeCommit":true,"messageTitle":"Merge pull request #67 from kailinteoo/v1.2_Storage_Order","messageBody":"Update Storage to store Order class","fileTypesAndContributionMap":{}},{"hash":"2aa2f8d4b9a4bee2ac000027249d67afa5ec3023","isMergeCommit":true,"messageTitle":"Merge pull request #82 from rertyy/javadoc-checkstyle","messageBody":"Fix Javadoc checkstyle","fileTypesAndContributionMap":{}},{"hash":"c6c0fd964000063f768d9f41fa81850abc95c26a","isMergeCommit":true,"messageTitle":"Merge pull request #81 from shavonneg/branch-update-ui","messageBody":"Update DarkTheme.css, MainWindow.fxml to refine UI appearance","fileTypesAndContributionMap":{}},{"hash":"52c9b95cf129f65e806db891ac6a8055ba5c5694","isMergeCommit":false,"messageTitle":"Update UI classes to show Order List alongside Client List","messageBody":"Modified the UI classes to incorporate the Order List view\nalongside the existing Client List view. This enhancement\nprovides users with a convenient way to access and manage\norders alongside client information within the application interface.\n\nThis commit improves the usability of the application by presenting\nrelated data together and streamlining navigation and interaction.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":176,"deletions":3}}},{"hash":"2ebeb0478fd4f9bf3bd80703a809da85edd046e3","isMergeCommit":false,"messageTitle":"Add Testcase for LogicManager.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"30e499e4d6229f056eca0fc4acd3668f7c5a38a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Ui","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cac67da6595431dccd6ca46f6cadb50f321ad051","isMergeCommit":false,"messageTitle":"Updating SampleDataUtil file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":19}}},{"hash":"ccdeb2e73024fe005d9946658bb136b66d47a0f1","isMergeCommit":false,"messageTitle":"Update AddressBook.Json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"267b2054d16df35e80454e15dba156d04613b5fe","isMergeCommit":false,"messageTitle":"updating puml and storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"docs":{"insertions":3,"deletions":1}}},{"hash":"7ee778bb3ce170ea1054fe5dfa188595dd9a7888","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2_Ui","messageBody":"# Conflicts:\n#\tdocs/diagrams/StorageClassDiagram.puml\n","fileTypesAndContributionMap":{}},{"hash":"1357f84cb3e591fc06591d83e547530f27a8ad3b","isMergeCommit":false,"messageTitle":"Update testcase and ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":4},"test-code":{"insertions":29,"deletions":2}}},{"hash":"4912104e9c55dde85925c12011656f692c5b295d","isMergeCommit":false,"messageTitle":"update ui.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"af0d902afde31d0aaa8f8f47d1d82074d4c5baaa","isMergeCommit":true,"messageTitle":"Merge pull request #96 from rertyy/oopify-add-order","messageBody":"Oop-ify AddOrder by extracting AddOrder","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"4db175e5db9181bb9c8b1905469b32cbe3219d42","isMergeCommit":false,"messageTitle":"Update the Storage component in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":7}}},{"hash":"757d876e64e43343a1334f1eb18fc99bedf50ea8","isMergeCommit":true,"messageTitle":"Merge pull request #113 from Jaspertzx/branch-Update-DG","messageBody":"Update the DeveloperGuide for Logic","fileTypesAndContributionMap":{}},{"hash":"30b17bb0ff4a85b96e193b10a8264df4c01c1739","isMergeCommit":false,"messageTitle":"Fix grammar issue in DG.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-28","commitResults":[{"hash":"a96001f02f1cb959faeb5fa729f23aa9f5ab424e","isMergeCommit":false,"messageTitle":"Change Amount from Integer to Double","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"841b5eafeac3c6c9f89ac2239f3287a70238dbb5","isMergeCommit":false,"messageTitle":"Fixing the AmountTest issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"41cc31cc0e959d14399981c73572cbea8f1f73f2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.3_Amount_(Integer_to_Double)","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"967e3213ba093ff6bd1f070b04588f238192b19a","isMergeCommit":false,"messageTitle":"Rename all \"Amount\" to \"Price\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":32},"other":{"insertions":15,"deletions":15},"test-code":{"insertions":109,"deletions":109}}}]},{"date":"2024-03-29","commitResults":[{"hash":"f33ba9453b2f00f094ce3a3f7911b0fd1566c40d","isMergeCommit":false,"messageTitle":"Ensure that the price entered cannot be more than 2 decimal places","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"6c656bde2e3c8f804eb8e6754c1ff4318b1d442d","isMergeCommit":true,"messageTitle":"Merge pull request #127 from kailinteoo/v1.3_Rename_Amount_to_Price","messageBody":"Rename all \"Amount\" to \"Price\"","fileTypesAndContributionMap":{}},{"hash":"21da2bd9112a8cde4396711f2618bdc4b5311a85","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.3_Price_(Integer_to_Double)","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/order/Price.java\n#\tsrc/test/java/seedu/address/model/order/AmountTest.java\n","fileTypesAndContributionMap":{}},{"hash":"a5b3c0e3d5c7da23cba597d54d703e18949932ae","isMergeCommit":false,"messageTitle":"Remove AmountTest class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":74}}},{"hash":"2401d73c1ce6453b264aa96a7b327605279bc88e","isMergeCommit":false,"messageTitle":"Change Price from Integer to Double and only can accept up to 2 decimal places","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":3},"test-code":{"insertions":3,"deletions":3}}},{"hash":"9de072e01c8460f40ed4c7aeb4a65b40b95fe8cd","isMergeCommit":false,"messageTitle":"Update PriceTest to include testing for 3 decimal places","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-04-02","commitResults":[{"hash":"5ea14d54a2be0347cdc9ab70dc66e973676cfd68","isMergeCommit":false,"messageTitle":"Updating UG.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":189,"deletions":46}}},{"hash":"be1def4099089badade9a9583b9a29b60b0629b6","isMergeCommit":true,"messageTitle":"Merge pull request #135 from rertyy/update-userguide","messageBody":"Add deleteOrder command to UG","fileTypesAndContributionMap":{}},{"hash":"72c43296627246c96399085525e8a32536d83d80","isMergeCommit":true,"messageTitle":"Merge pull request #131 from rertyy/modify-page-links","messageBody":"Modify links to point to repo","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"b86b871f72d09949f2490f843dad4bd9ba43c28c","isMergeCommit":true,"messageTitle":"Merge pull request #136 from kailinteoo/v1.3_UG","messageBody":"Updating UG.md","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"c4fce2dfe97fbdc6d9c48055bd2dda51220f8727","isMergeCommit":true,"messageTitle":"Merge pull request #140 from Jaspertzx/branch-Fix-Missing-Background-Color","messageBody":"Add Background Color when empty","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"c48a5ae69cd93da202699e1902c8382f35857c49","isMergeCommit":true,"messageTitle":"Merge pull request #148 from shavonneg/branch-editcommand","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]}],"shavonneg":[{"date":"2024-03-05","commitResults":[{"hash":"6e3d411176696a3a0eda9c4a150912ce44958fc0","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}}]},{"date":"2024-03-14","commitResults":[{"hash":"fc75ae5eb312d6cb5b233e1715c8540a3c7d6379","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":28}}},{"hash":"f9e9af434e269ee9dc27a0c4211b592e52b3028d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"3942deb043418786d582bda2f59ec16d2540402e","isMergeCommit":false,"messageTitle":"Update user story","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":28}}}]},{"date":"2024-03-17","commitResults":[{"hash":"c85fb8776d86c9b54ca1e42f73bb577de7dd83fa","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Jaspertzx/branch-Refractor-Client-Commands","messageBody":"Refactor Client Commands into it\u0027s package.","fileTypesAndContributionMap":{}},{"hash":"82542a7b54c75879966dc77e49ae056f75bf0df8","isMergeCommit":false,"messageTitle":"Add ViewOrdersCommand for displaying a list of orders","messageBody":"This commit introduces the ViewOrdersCommand class, which represents a\ncommand to display a list of orders. The allows users to view all\norders stored in the application.\n\nThe command provides functionality for retrieving and displaying all\norders in the system. It helps users quickly access and review the list\nof orders without needing to specify any filtering criteria.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":5},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":7}}},{"hash":"1e4f69ed09ad03e9774cff5375a4bbf2294dfaa1","isMergeCommit":false,"messageTitle":"Add tests for ViewOrdersCommand functionality","messageBody":"This commit adds ViewOrdersCommandTest to ensure the\nViewOrdersCommand properly displays all user orders as expected.\nIt verifies the correct handling and filtering of order data,\nenhancing the reliability of the ViewOrdersCommand feature.\n","fileTypesAndContributionMap":{"other":{"insertions":13,"deletions":19},"test-code":{"insertions":57,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"09cc6167c0678b8f7f11f9621586087c3b71fcd2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into branch-update-v1.2","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/order/Order.java\n","fileTypesAndContributionMap":{}},{"hash":"2bcd58ad6b8b27ac1584b39f7f60db3f465be848","isMergeCommit":false,"messageTitle":"Refactor classes to ensure proper viewing of orders","messageBody":"This commit includes modifications to several classes to ensure that\norders are properly managed within the application. Changes include\nupdates to the AddressBook class to handle the retrieval of orders.\nAdditionally, adjustments have been made to other relevant classes\nto integrate all changes.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":2}}},{"hash":"2b070b869ea5430fb54328038c4c3679734ca4c6","isMergeCommit":false,"messageTitle":"Update ViewOrdersCommand.java to use \\n instead of \\r\\n","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":32},"test-code":{"insertions":40,"deletions":40}}}]},{"date":"2024-03-19","commitResults":[{"hash":"8d94598fa7b5d58a83a00dcf14d844522bac05fb","isMergeCommit":false,"messageTitle":"Add NameContainsKeywordsPredicate.java to complete command functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":11},"test-code":{"insertions":37,"deletions":22}}},{"hash":"4c9e093d2daff7c3561612fc8c407b840c5335a3","isMergeCommit":false,"messageTitle":"Refine test cases to build the application","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}},{"hash":"be142c08b43f13b0c57bc08c17b8bbbd14b4ef32","isMergeCommit":false,"messageTitle":"Edit ViewOrdersCommandTest.java for Codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":9},"test-code":{"insertions":20,"deletions":7}}},{"hash":"35e8309cc6fafa45341eafe364e9e09cb75cf0d1","isMergeCommit":false,"messageTitle":"Add test for AddressBookParser.java and ModelManager.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":1}}},{"hash":"45e0729b750de9069229a48560202e02ab7e8cda","isMergeCommit":false,"messageTitle":"Add OrderNameContainsKeywordsPredicateTest.java to test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":79,"deletions":9}}},{"hash":"2898c587332daffc2ec00feda973ed252bcf993c","isMergeCommit":false,"messageTitle":"Edit OrderNameContainsKeywordsPredicateTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":20}}},{"hash":"06d10fb6e8cb6528a4a60275f1e7b3f3f7ca8103","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-v1.2","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/AddressBookParser.java\n#\tsrc/main/java/seedu/address/model/Model.java\n#\tsrc/main/java/seedu/address/model/ModelManager.java\n#\tsrc/test/java/seedu/address/logic/commands/clients/AddCommandTest.java\n#\tsrc/test/java/seedu/address/logic/commands/clients/ExitCommandTest.java\n#\tsrc/test/java/seedu/address/logic/commands/clients/HelpCommandTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddressBookParserTest.java\n#\tsrc/test/java/seedu/address/model/ModelManagerTest.java\n","fileTypesAndContributionMap":{}},{"hash":"c3d7ccaa2adc10ff68ced38d254eee2903ae0629","isMergeCommit":false,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":11}}},{"hash":"7808f93f8b621eb38fdf1c70f9bf4eff80648734","isMergeCommit":false,"messageTitle":"Clean up OrderNameContainsKeywordsPredicateTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":9}}},{"hash":"5bfa07a9c11a2701f89b605c053c647dbbf74656","isMergeCommit":false,"messageTitle":"Edit OrderNameContainsKeywordsPredicateTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"7b6a98e6652ab40ac417c0eba4fbae12ebce31cb","isMergeCommit":false,"messageTitle":"Update DarkTheme.css, MainWindow.fxml to refine UI appearance","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":338}}},{"hash":"65180a0a4695d66145e674c2647da5e0d696d128","isMergeCommit":false,"messageTitle":"Update Ui for Clients and Orders","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":19},"test-code":{"insertions":1,"deletions":0}}},{"hash":"69cb6bbfcbfd47617d6f0d08108ad071da52c60e","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":19}}},{"hash":"3018311975806244cb7f23dc5e09fce230250a5e","isMergeCommit":false,"messageTitle":"Update PUML for Logic","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":4}}},{"hash":"e3c9f3f8220cf6d85100d021c24599182baa6149","isMergeCommit":true,"messageTitle":"Merge pull request #93 from shavonneg/branch-update-puml-again","messageBody":"Update PUML for Logic","fileTypesAndContributionMap":{}},{"hash":"998fbe90df24fd9f5abc0f51b4d1dcb9d66640a6","isMergeCommit":true,"messageTitle":"Merge pull request #94 from kailinteoo/v1.2_puml","messageBody":"V1.2 puml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"02c54710b52c5ec38d16c025d0a96892cf51cf08","isMergeCommit":true,"messageTitle":"Merge pull request #97 from Jaspertzx/branch-Edit-Jar-Name","messageBody":"Update the gradlew jar name","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"743db6ee3bba78a33c2f79c00196dd3edd86617e","isMergeCommit":false,"messageTitle":"Update tags for UI in DarkTheme.css","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"aa7d0cdb036d0a55bbd4433818a52853c1308c99","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md to include ViewOrdersCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":0}}},{"hash":"c5e1f0964dd35465b9241231ac93e536f11dd7d7","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-28","commitResults":[{"hash":"64d08482c4dc7be31ee84484ca305a0496fea702","isMergeCommit":false,"messageTitle":"Implement EditOrderCommand","messageBody":"Add EditOrderCommand.java by utilising remove and\nadd functions.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":442,"deletions":8}}}]},{"date":"2024-03-29","commitResults":[{"hash":"d827f1e527526c1a721dc595f8414c675727aae3","isMergeCommit":false,"messageTitle":"Update indexing of orders when edited","messageBody":"Order is now edited in place instead of being added to the end of the\nOrderList\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"a39ab2e5b16d39d0fea8f091156e89eada664b6b","isMergeCommit":false,"messageTitle":"Edit status update functionality","messageBody":"Status can now be updated from PENDING to COMPLETED\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":17}}},{"hash":"7e515ee91a1af3030148caad98b7c7267bc04683","isMergeCommit":false,"messageTitle":"Add EditOrderCommandTest.java","messageBody":"Add tests for EditOrderCommand\n","fileTypesAndContributionMap":{"test-code":{"insertions":324,"deletions":0}}},{"hash":"3dd87ad309bb16dca1e829db0c98415f269e3fe2","isMergeCommit":false,"messageTitle":"Fix checkstyle in UniquePersonList.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"75dba7984799a144c7d2ccb7a36842008e17321f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"342f493767c0ebbd9cf0c7d80c0b57dd668c2af9","isMergeCommit":false,"messageTitle":"Update Amount.java to Price.java for EditOrderCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":23},"test-code":{"insertions":5,"deletions":5}}},{"hash":"2dd45fa70acc84e4ca6b5356e82ae397dfe433d3","isMergeCommit":false,"messageTitle":"Fix EditOrderCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":34,"deletions":23}}},{"hash":"14e9f4c5371fd4e970f2d7d94da688fef3ef1aed","isMergeCommit":false,"messageTitle":"Fix EditOrderCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":9},"test-code":{"insertions":6,"deletions":5}}},{"hash":"e3ce4c0722520c4da7f00abb4915279ef76e5e4d","isMergeCommit":false,"messageTitle":"Update checkstyle for EditOrderCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":2,"deletions":1}}},{"hash":"b3e7d5e429805e9f00341b7a2aaf1f73070b064b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"b7e420daff0581475402fc69429ff05d93df0f29","isMergeCommit":false,"messageTitle":"Add test cases for ParserUtilTest.java","messageBody":"Missing tests for newly added methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":84,"deletions":0}}},{"hash":"3cc02897026b9b2b7d184bbb57efc9d667437992","isMergeCommit":false,"messageTitle":"Update UniquePersonListTest.java","messageBody":"Include more tests for setPersonsAndAddOrder and\nsetPersonsAndDeleteOrder.\n","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":0}}},{"hash":"76ddbcbf3fecc5bc38c666b6ee34cdb49df5ccb2","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest.java","messageBody":"Include test case for EditOrderCommand.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"8007b70abc598c860bce4ab5a3ef1a02c0d601a7","isMergeCommit":false,"messageTitle":"Update StatusTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-04-02","commitResults":[{"hash":"9f8cc535b1c6df52021af749ab6219256361d2fd","isMergeCommit":false,"messageTitle":"Edit test case for for EditOrderCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":0}}},{"hash":"e1ea0dfeb9d0ade04aaf2d7e4855423df8af6085","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":29}}}]},{"date":"2024-04-03","commitResults":[{"hash":"5eab3bdfed91089ceef283a4c3e77e15143004b1","isMergeCommit":true,"messageTitle":"Merge pull request #137 from Jaspertzx/branch-Update-Command-UG","messageBody":"Update the UserGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"98f3141eaba55efb81a7646aaa83968402d335f4","isMergeCommit":false,"messageTitle":"Update UniquePersonListTest.java","messageBody":"Add missing tests for UniquePersonList.\n","fileTypesAndContributionMap":{"test-code":{"insertions":53,"deletions":0}}},{"hash":"a84551f3ee91c380b04c6358e7c8a18c4750ad42","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f45d2ce70563ed14c14ade4c29667c19ba6d3b96","isMergeCommit":false,"messageTitle":"Fix UniquePersonList.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"566485b9376d16fb6c8253ede9bd89fb1db48e33","isMergeCommit":true,"messageTitle":"Merge pull request #128 from shavonneg/branch-editcommand","messageBody":"Implement EditOrderCommand","fileTypesAndContributionMap":{}},{"hash":"893c675d03b05a3c6f7cbb98b9d13a741037f37c","isMergeCommit":true,"messageTitle":"Merge pull request #143 from Jaspertzx/branch-Fix-EditCommand","messageBody":"Fix EditCommand from null error","fileTypesAndContributionMap":{}},{"hash":"113290d05db413093436ce19156c70b3e40f4430","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Previously there was no information on viewOrders.\n\nInclude information on the missing features.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":38,"deletions":10}}},{"hash":"b8baf4b7bc9a0c5b44b8c59d7cf067037b8fd5c6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/UniquePersonList.java\n","fileTypesAndContributionMap":{}},{"hash":"949acc1c7cf2bf16333d164931bd10b5dd02c27e","isMergeCommit":false,"messageTitle":"Fix UniquePersonList.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"a6480a93056f6adbc78736425b8757790d1f4b91","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Include Table of Contents and update some feature descriptions.\n","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":4}}},{"hash":"e044a5f5efcd6ae6fe92b57f3971ccbc16f5997e","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Provide example for editOrder in the UG.\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"8dcd2b413eb199dcb215f4981f75fa07335080e7","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":19}}}]},{"date":"2024-04-05","commitResults":[{"hash":"08f0421785fb89a1f8c9aea4fdb10df88b1e1ab9","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Remove 7.2 ferom appendix and update 7.3 to 7.2 for formatting.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}},{"hash":"9d04d7296aa7f18765841b80ec1791658a9e552d","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Remove 7.2 from appendix and update 7.3 to 7.2 for formatting.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}},{"hash":"a9263a64065a3662f531412f41ce2f32ade8125c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"866644e077c14cc1064560e7aa8cad4c005073ef","isMergeCommit":true,"messageTitle":"Merge pull request #147 from shavonneg/branch-editcommand","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"05cf0945b1fefc668fe46eba0b488596f4e8a93f","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Update table of contents to match formatting.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]}],"rertyy":[{"date":"2024-03-02","commitResults":[{"hash":"7f84ac622f18004b140984fa1771492c72d3d1d6","isMergeCommit":false,"messageTitle":"Add use cases for base entries and export","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":227,"deletions":73}}}]},{"date":"2024-03-06","commitResults":[{"hash":"cfbcd5756f0b6da60db0dc6d821a4866b53e3a3c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-use-cases-to-dg","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"b944847798b8c94092a99e26958b3327ef5bb88f","isMergeCommit":false,"messageTitle":"Add remaining use cases for new features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":185,"deletions":51}}},{"hash":"c4f2d2bc199eab99289d62934b01da79d549d9d2","isMergeCommit":false,"messageTitle":"Add pre-commit hook","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":45,"deletions":0}}}]},{"date":"2024-03-14","commitResults":[{"hash":"390ef7bb35faaf251e91a3b46558f2e85cdfcd12","isMergeCommit":false,"messageTitle":"Update AboutUs.md for change in target audience","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":22}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a02c782f9edaf3731dc393ea67ff69b236e8fcfc","isMergeCommit":false,"messageTitle":"Add Order class and its fields","messageBody":"Fields added:\nAmount, Deadline, Discount, Order,\nOrderDate, OrderId, Remark, Status\n\nAdded DateTimeUtil.java for shared LocalDateTime helper functions.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":586,"deletions":0}}},{"hash":"d1d228b9180a1dff80f9a4442246c644d589ba20","isMergeCommit":false,"messageTitle":"Add OrderList","messageBody":"Note that OrderList does not require Orders to be unique\nbecause there can be multiple orders with the exact same content.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":117,"deletions":0}}},{"hash":"7552a52e08ef37d11e88b595772f02e50f4fd04c","isMergeCommit":false,"messageTitle":"Add UUID.fromString constructor for OrderId.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"0095c58924edbfe9873f45385e3a4de16e69a2e9","isMergeCommit":false,"messageTitle":"Add OrderBuilder, OrderTest classes for tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":212,"deletions":0}}},{"hash":"aae38faa81919e6185b4d2abdf2951fdfd1cfbe2","isMergeCommit":false,"messageTitle":"Add missing OrderNotFoundException dependency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"aab9ae5e1bb5dca7e001f0888d49bc5d423d3403","isMergeCommit":false,"messageTitle":"Add TypicalOrders template","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":0}}},{"hash":"35a44853176a9dcde814c63ef41b942e700a8b0b","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"f12b3a6eab0d35f24341206201735be0d9f330af","isMergeCommit":false,"messageTitle":"Fix tests failing due to wrong type","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":8,"deletions":8}}},{"hash":"11523a74b713117ef645df5f870ba40ffa61858a","isMergeCommit":false,"messageTitle":"Fix tests failing due to wrong type","messageBody":"Discount and Amount have to be int\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":10,"deletions":10}}},{"hash":"3999a4ac2e518067b253b671dd57639933d2bf83","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/Add-order-class\u0027 into Add-order-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d08dfc3d1b1bd9bfd9268adf239679ae1d3c90a","isMergeCommit":false,"messageTitle":"Add tests for Order and its fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":18},"test-code":{"insertions":378,"deletions":21}}},{"hash":"aff4883e2c5ad592f63a979c956b56e139a5d47a","isMergeCommit":false,"messageTitle":"Fix checkstyle warning","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"46be4fff200414e860f842843b1822b1e3b4ff37","isMergeCommit":false,"messageTitle":"Remove discount class (redundant)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":71}}},{"hash":"40863ff4d4c6b36826874c3268419ef43f23aa19","isMergeCommit":false,"messageTitle":"Add test suite for OrderListTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":124,"deletions":0}}},{"hash":"0a377f4e0ca014fb793da785ace957197d7da2fd","isMergeCommit":false,"messageTitle":"Increase test coverage for Status","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"39152b49d3d16439f46d1b86ea7d06c77c8fce8d","isMergeCommit":false,"messageTitle":"Add testEquals for OrderListTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"81357893bc55fcdc7e44ef68cd395a61baf94f33","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram.puml for Order","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":1}}},{"hash":"1054ee49cf362122e5ae19f4e84bc37471aa953a","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":55,"deletions":45}}}]},{"date":"2024-03-20","commitResults":[{"hash":"9a91217c682f858fd0e001c51f99e0dd73828e52","isMergeCommit":false,"messageTitle":"Fix checkstyle Javadoc errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":117,"deletions":94},"test-code":{"insertions":9,"deletions":9}}},{"hash":"938252b8f329dfc158c0aeca493039090a6bbbd3","isMergeCommit":false,"messageTitle":"Add checkstyle Javadoc","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":0}}},{"hash":"042d76199fe485ca5f2e66cd56f417115a6d5952","isMergeCommit":true,"messageTitle":"Merge pull request #90 from Jaspertzx/branch-Update-Storage-PUML","messageBody":"Update Storage PUML diagram","fileTypesAndContributionMap":{}},{"hash":"d863c1ab10b3243ef417a11b019012c0b418452c","isMergeCommit":false,"messageTitle":"Fix datetime toString","messageBody":"Override toString methods of classes which use LocalDateTime.\nChanged from ISO time to dd-MM-YYYY HH:MM\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"83fa89329ab91fe83f8cde10784254d64353c5b2","isMergeCommit":true,"messageTitle":"Merge pull request #95 from Jaspertzx/branch-Update-Comments","messageBody":"Update AddOrderCommand and DeleteOrderCommand msg","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"aec50280bbf163a682c72916625e592639ded660","isMergeCommit":false,"messageTitle":"Oopify AddOrder by extracting AddOrder","messageBody":"Bug:\nWhen adding a person in the application,\n8 orders are added instead of just 1.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6},"test-code":{"insertions":2,"deletions":2}}},{"hash":"f11253b285de6e58c9a5b282bc9aa8d95e62165e","isMergeCommit":false,"messageTitle":"Remove separate storage of Orders","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"fcc90220fdb7f95a527ee6a67750e78d0621d680","isMergeCommit":false,"messageTitle":"Fix immutability of OrderList","messageBody":"Use FilteredList(unmodifiableObservableList) to view Orders in GUI.\n\nMake calls more OOP by following same convention as UniquePersonList.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":10}}},{"hash":"b6f4dce9c0f23d8475075533e27e8cbe297b1a84","isMergeCommit":false,"messageTitle":"Remove unnecessary getOrderList method","messageBody":"Model::getOrderList is a duplicate of Model::getFilteredOrderList.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6},"test-code":{"insertions":2,"deletions":17}}},{"hash":"fd65016a4aec2fdecf6364a526234dd1ae45e0b0","isMergeCommit":false,"messageTitle":"Fix failing tests","messageBody":"Tests require updateFilteredOrderList to be overriden in\nModelStubAcceptingOrder*\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":14,"deletions":3}}}]},{"date":"2024-03-23","commitResults":[{"hash":"eeae9cee3a4e3014637bbc5c7aaeab83c45716bb","isMergeCommit":false,"messageTitle":"Fix deeply nested code","messageBody":"Extracted methods from code with weak SLAP:\n DateTimeUtil::getCurrentTime() and\n DeleteOrderCommand::getOrderFromPerson\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":19},"test-code":{"insertions":3,"deletions":2}}},{"hash":"654587703cf560ba12d7cc7b49122c4ff05c231b","isMergeCommit":false,"messageTitle":"Add newlines between code chunks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"e99d22e4b578da65ceb5a991272b06b46951e316","isMergeCommit":false,"messageTitle":"Add non null requirement for Order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"24a6adfa5054cf05b6c2ae5a00eb32b451232c80","isMergeCommit":false,"messageTitle":"Add delete by index","messageBody":"Bugs:\nDoes not update UI\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":66},"test-code":{"insertions":8,"deletions":5}}},{"hash":"92471d83033568ca4a025c74204b2c9ad6fb9091","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-delete-order","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3b595ce8234f4b47134c967333ed544c1473e8f8","isMergeCommit":false,"messageTitle":"Fix DeleteOrderCommand","messageBody":"Orders are now indexed via number rather than UUID.\nGUI now displays Order deletion correctly.\n\nTodo:\nFix failing tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":69},"test-code":{"insertions":48,"deletions":25}}},{"hash":"31d430df07c683992dc6b6cb63d4c664ce3a8c02","isMergeCommit":false,"messageTitle":"Remove OrderList class (unused)","messageBody":"Orders are stored inside UniquePersonsList as part of each Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":117},"test-code":{"insertions":0,"deletions":140}}}]},{"date":"2024-03-24","commitResults":[{"hash":"1680ab7763b60bd5a320c18a4d68071b85353d1b","isMergeCommit":false,"messageTitle":"Add display text for OrderPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-25","commitResults":[{"hash":"787a4a3b18c98e82d8f54fc8cd72d21c1c93d52a","isMergeCommit":false,"messageTitle":"Fix failing test from setPersonDelete","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-26","commitResults":[{"hash":"9196f67bac082ff44b1d0f44700fe92786c955bc","isMergeCommit":false,"messageTitle":"Fix remaining failing tests","messageBody":"DeleteOrderCommand was missing an equals method causing equals to check\nhashcode rather than deleteOrder index.\n\nDeleteOrderCommandParser had a typo causing messages to call\nDeleteOrder\n rather than DeleteOrderCommand\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2},"test-code":{"insertions":3,"deletions":7}}},{"hash":"cab59e44d731c4faf390afc9816e542126ca893e","isMergeCommit":false,"messageTitle":"Enable assertions in build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"cc001e51c97356a98373aa94f983621eacdaad54","isMergeCommit":true,"messageTitle":"Merge pull request #114 from kailinteoo/v1.3_DG","messageBody":"Update the Storage component in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"1e933d8803e799c9aa0ec432e2cedb9e226bea07","isMergeCommit":true,"messageTitle":"Merge pull request #115 from shavonneg/branch-update-DG","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"89bfe6fb61761dbd44455381eb77445223d670df","isMergeCommit":false,"messageTitle":"Update DG for EditorderCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":22}}},{"hash":"28a8b1d28dcef147b4d38a612ea260ac7451d3c7","isMergeCommit":false,"messageTitle":"Rename methods for clarity","messageBody":"These methods are used to replace the Person instance (due to immutable\nguarantee) in the AddressBook, and modify the internalOrderList in\nUniquePersonList.\n\nsetPersonAdd -\u003e setPersonAndAddOrder\nsetPersonDelete -\u003e setPersonAndDeleteOrder\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":14},"test-code":{"insertions":9,"deletions":9}}}]},{"date":"2024-03-27","commitResults":[{"hash":"5aefcc43ded338a505e11db00da0aef8e24a232f","isMergeCommit":false,"messageTitle":"Fix rawtype warning","messageBody":"new HashSet() -\u003e new HashSet\u003c\u003e()\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"02027ca2c6cd3758d9ea8172dc7bde08531d96c8","isMergeCommit":true,"messageTitle":"Merge pull request #118 from rertyy/fix-rawtype","messageBody":"Fix rawtype warning","fileTypesAndContributionMap":{}},{"hash":"bcd36f419a2887f04dc6843770d491ecb67f54cf","isMergeCommit":false,"messageTitle":"Add more Persons in SampleDataUtil","messageBody":"Allows easier testing without needing to\nmanually adding new persons\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":15}}},{"hash":"75f3134e95b2c1a4afa2926a89db6a9e59137a5c","isMergeCommit":false,"messageTitle":"Fix OrderPanel display bug from deleting Persons","messageBody":"Currently, the OrderPanel in the GUI does not update when persons are\ndeleted.\n\nThis commit fixes it such that the orders belonging to deleted persons\nwill be deleted as well and updated in the GUI.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-28","commitResults":[{"hash":"34a565a5feb6c02fb811e81530a38c17ec052e15","isMergeCommit":true,"messageTitle":"Merge pull request #119 from rertyy/update-GUI-updating-when-person-is-deleted","messageBody":"Update GUI updating when person is deleted","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"3930db71ea06a78ef414f70520cb341a0e991c2a","isMergeCommit":true,"messageTitle":"Merge pull request #130 from Jaspertzx/branch-Change-Display-List","messageBody":"Update ObservableList to Pair class","fileTypesAndContributionMap":{}},{"hash":"ac67b26ff7704dd691fd2b5049b59e60877bb266","isMergeCommit":false,"messageTitle":"Modify links to point to repo","messageBody":"Website header and HelpWindow point to se-edu base repo rather than our\nrepository. Links have been changed accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":16}}},{"hash":"023413c19f9827e014f0b71d015428bde55f99a2","isMergeCommit":false,"messageTitle":"Fix typo in USERGUIDE_URL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1a83eef8747a4c50c71d9c0ef92d2e7c42cc02be","isMergeCommit":false,"messageTitle":"Revert \"Merge pull request #130 from Jaspertzx/branch-Change-Display-List\"","messageBody":"This reverts commit 3930db71ea06a78ef414f70520cb341a0e991c2a, reversing\nchanges made to 8eca76e65b558967bd43dab28a7c3b3f8f0d4cf7.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":63},"test-code":{"insertions":26,"deletions":102}}},{"hash":"a67326cba5de5770dc814f0aa37a4b58830355f2","isMergeCommit":false,"messageTitle":"Add PersonReference to Order","messageBody":"Instead of using Pair\u003c\u003cPerson, Order\u003e\u003e everywhere, use\ncircular references. Person -\u003e Order -\u003e Person -\u003e ...\nThis allows for simpler code logic.\n\nTODO:\nCheck if circular references are a problem. From preliminary testing,\nadd and delete do not appear to have problems.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":9}}},{"hash":"8d21476f5858aca36727e81dbe6e7dcdb4fa3e60","isMergeCommit":false,"messageTitle":"Add tests for Order with Person reference","messageBody":"Now that Order has a reference to Person, new tests are required to test\n that the Person reference functions as expected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3},"test-code":{"insertions":33,"deletions":13}}},{"hash":"e27e08b504d45e186fec5509ae9c541af59029c9","isMergeCommit":true,"messageTitle":"Merge pull request #132 from rertyy/use-person-reference-in-order","messageBody":"Use Person reference in Order","tags":["v1.3.trial"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"515ceba959115b5d7dcfd207181e27ccc38e05e6","isMergeCommit":true,"messageTitle":"Merge pull request #134 from shavonneg/branch-update-UG","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"37c1a939837b32f9092e98be26ae0723f1a32782","isMergeCommit":false,"messageTitle":"Add deleteOrder command to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"cdd9bf0843e00ef7ce90ebd84be46f4adb65550c","isMergeCommit":true,"messageTitle":"Merge pull request #142 from Jaspertzx/branch-Update-UG-Main-Features","messageBody":"Update the UserGuide Main Features","fileTypesAndContributionMap":{}},{"hash":"bf7907900864611af52c0561378d447190943bd6","isMergeCommit":true,"messageTitle":"Merge pull request #146 from Jaspertzx/branch-Remove-ViewOrderCommand","messageBody":"Remove ViewOrderCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"6a49735ca312e16dd7fc461d3a4fcfb56eadf1ce","isMergeCommit":false,"messageTitle":"Update index.md and README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":65,"deletions":11}}}]}],"Jaspertzx":[{"date":"2024-03-05","commitResults":[{"hash":"8756614a0c823f135b58cce0c52e4973404ef1d2","isMergeCommit":false,"messageTitle":"Update User Stories","messageBody":"The user stories does not align with our overall\nobjective of creating a mini-CRM system.\n\nThis may make the overall project very confusing\nif other developers were to see the developer\nguide and not see the updated user stories.\n\nUpdate the user stories to match what my group\nis trying to attain.\n\nThis will be more accurate to what we would like\nto achieve the next few weeks, and also to meet\nthe requirements of this module.\n\nNo other reference.\n","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":8}}}]},{"date":"2024-03-06","commitResults":[{"hash":"63d17a7aafc0ec241a136fdda3d6821a45985120","isMergeCommit":true,"messageTitle":"Merge pull request #1","messageBody":"Update User Stories","fileTypesAndContributionMap":{}},{"hash":"1c8ad53b94ee17d57487e8d421ba4eb8acc86d77","isMergeCommit":true,"messageTitle":"Merge pull request #32 from kailinteoo/website-adapted","messageBody":"Update AboutUs and README pages","fileTypesAndContributionMap":{}},{"hash":"e942a25746e0bc8e4d58a683fd7ada68e4a2ee68","isMergeCommit":true,"messageTitle":"Merge pull request #38 from kailinteoo/website-adapted","messageBody":"Edit AboutUs.md to fix src image name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"29330376b0c04158a86a5581e52934eca30d502c","isMergeCommit":true,"messageTitle":"Merge pull request #40 from kailinteoo/website-adapted","messageBody":"Website adapted","fileTypesAndContributionMap":{}},{"hash":"7dc666abc2df1777c63757cde229aa43a779d8d3","isMergeCommit":false,"messageTitle":"Update DeveloperGuide","messageBody":"Fix the wrong tabs on the bottom of the user stories.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"9f75204cf745ab8543ee75a65fd127382016191c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-use-cases-to-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bc8bae5d0307567fae49d476e36b16877e1b403a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from rertyy/add-use-cases-to-dg","messageBody":"Add use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"d3de404326b4d81655a3dc9d2698519fb7fd3ac6","isMergeCommit":true,"messageTitle":"Merge pull request #42 from rertyy/add-precommit","messageBody":"Add pre-commit hook","fileTypesAndContributionMap":{}},{"hash":"b0ffda7ac662359202e55165dac221d3146b5ec9","isMergeCommit":true,"messageTitle":"Merge pull request #41 from rertyy/update-editorconfig","messageBody":"Remove unused filetypes for .editorconfig","fileTypesAndContributionMap":{}},{"hash":"8f83d2c774190f987ccd2e7c70de50a8a96cfc1a","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"46dfec926dddec9c15fb43e4ffca510a0dcca028","isMergeCommit":true,"messageTitle":"Merge pull request #47 from kailinteoo/resolve_dg","messageBody":"Resolve DG.md product scope","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"fda3cd61966c96eaeffdc4f16b7aa1685c6c04e6","isMergeCommit":false,"messageTitle":"Update DeveloperGuide","messageBody":"Current DeveloperGuide is out of date.\n\nThis could make developers confused on the direction\nof the project.\n\nUpdate the DeveloperGuide to keep it relevant\nto our project.\n\nMakes the DeveloperGuide more relevant and accurate.\n","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"3aac70ecd3be6f60d3ca5c60902956d32f065ffc","isMergeCommit":true,"messageTitle":"Merge pull request #60 from kailinteoo/update_readme","messageBody":"Update README ","fileTypesAndContributionMap":{}},{"hash":"3b01d00dbb5d77a58abdd1f942589765a2bff9e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6b260d2da329cd0921e3f0424e3d0066488362bb","isMergeCommit":true,"messageTitle":"Merge pull request #62 from shavonneg/v1.2","messageBody":"Update DeveloperGuide.md User Story","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"1c60afa145d189a14cc0ad9a894f617e41a50ad0","isMergeCommit":false,"messageTitle":"Refactor Client Commands into it\u0027s package.","messageBody":"The client commands are not in a package, but rather\nin the vague directory of commands.\n\nAs we are adding more commands, this could mix up\nwith the other classes, causing fellow developers\nconfusion.\n\nMoved the client commands into it\u0027s own package, and\nedited the references according of different files\nthat depend on the client commands.\n\nThis will ensure that the directory is up to date\nand as specific as possible for OOP reasons.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":17},"other":{"insertions":17,"deletions":9},"test-code":{"insertions":41,"deletions":24}}}]},{"date":"2024-03-17","commitResults":[{"hash":"7a369ee9e4ca63f475719d0dc84b6c88b424947c","isMergeCommit":false,"messageTitle":"Add Order \"C\" and \"D\" of CRUD.","messageBody":"Currently, there are no methods or classes to\ncreate the Order object.\n\nThis prevent the User from doing the interacting\nwith the order objects.\n\nImplement the read and delete of Order object.\n\nThis will allow the user to interact with the\ncreated objects.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":5},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":131,"deletions":7}}},{"hash":"90a84f1b89298771bdd8bf7b8bd7a76ddce16734","isMergeCommit":true,"messageTitle":"Merge pull request #70 from rertyy/Add-order-class","messageBody":"Add Order class and its fields","fileTypesAndContributionMap":{}},{"hash":"f28ba8550127c66e154e54a06592c754df98b209","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into branch-Add-Order-Commands","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"21c392ff054fa2085ddf9cc982745d0b9295faa3","isMergeCommit":false,"messageTitle":"Integrate Order parser to Order classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":45},"test-code":{"insertions":28,"deletions":22}}},{"hash":"fb662aa4ae042f425ec9f9f949aea0eebfce1953","isMergeCommit":false,"messageTitle":"Update Delete Order logic and parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":8},"test-code":{"insertions":168,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"4948de7f7039331d127d629173ea580523b50460","isMergeCommit":false,"messageTitle":"Add JUnit test for DeleteOrderCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":3},"test-code":{"insertions":29,"deletions":0}}},{"hash":"dbe295b3c7501fb4dcbd089b401568b05817ac5c","isMergeCommit":false,"messageTitle":"Add JUnit test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"1500ba831dcb3747fa5280c8d32d9fee0c24eab1","isMergeCommit":false,"messageTitle":"Add JUnit test for AddOrderCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":37,"deletions":0}}},{"hash":"a38b1a1d29cc215bfb0c3392664789317ea94d5e","isMergeCommit":false,"messageTitle":"Add JUnit test for ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":22,"deletions":0}}},{"hash":"07eac9cfd6372df73521d44312a15f0a006d4157","isMergeCommit":false,"messageTitle":"Add JUnit for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7},"test-code":{"insertions":21,"deletions":0}}},{"hash":"c5532825f063d05abc3f341ada69efd81ccfc40f","isMergeCommit":false,"messageTitle":"Edit Person class to integrate Order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}},{"hash":"c966c52c51e61be5d6e34fcb4964b35dd6e24972","isMergeCommit":false,"messageTitle":"Add JUnit test for new Persons Constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":0}}},{"hash":"13552010a0875bf4ab45aba6d77c55864b75cf93","isMergeCommit":true,"messageTitle":"Merge pull request #77 from rertyy/update-ModelClassDiagram","messageBody":"Update model class diagram for Order","fileTypesAndContributionMap":{}},{"hash":"b7a41ab8b9e31a91e0e5e5dbc7ff8ad7fcd4a275","isMergeCommit":true,"messageTitle":"Merge pull request #71 from rertyy/add-precommit","messageBody":"Remove ./gradlew test from pre-commit setup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"702d9cd3327236bd08eee2b24df050b2808ac2b2","isMergeCommit":false,"messageTitle":"Implement ModelManager to store Orders","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":73},"test-code":{"insertions":8,"deletions":87}}},{"hash":"9bc2d532393af0f7da7bfe4d0ca48b1dbe70d722","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Implement-ModelManager","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/orders/DeleteOrderCommand.java\n#\tsrc/main/java/seedu/address/model/Model.java\n#\tsrc/main/java/seedu/address/model/ModelManager.java\n","fileTypesAndContributionMap":{}},{"hash":"77d8c724e4d5f2431b673761e6a7ec8a9681b1d1","isMergeCommit":false,"messageTitle":"Merged master into branch for PR","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"c6d63cbeaa4840bc47fce0d90e218dc4975273d3","isMergeCommit":false,"messageTitle":"Add JUnit test for updated commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":93,"deletions":19}}},{"hash":"5fcc88b4409caae9af312ad4735106fe6b41212a","isMergeCommit":false,"messageTitle":"Update JUnit to cover more AddOrderCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5},"test-code":{"insertions":15,"deletions":0}}},{"hash":"8311e074a476b533538d9d79b18d57b70ef15b9e","isMergeCommit":false,"messageTitle":"Add JUnit test for AddOrderCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":5},"test-code":{"insertions":5,"deletions":4}}},{"hash":"c29383407c726c4d4afe4242ab6b70e5ea672c12","isMergeCommit":false,"messageTitle":"Fix error in AddOrderCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"36d72a3df45d05b376c779a5f0e1a356c792afb7","isMergeCommit":false,"messageTitle":"Fix JUnit test for DeleteOrderCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"5fab0896dae44183d408d8701ab2040c90e6988a","isMergeCommit":true,"messageTitle":"Merge pull request #88 from Jaspertzx/branch-Implement-ModelManager","messageBody":"Implement View, Create and Delete Order commands to ModelManager","fileTypesAndContributionMap":{}},{"hash":"93a10c78c3fdcf4ac885c04fcc1fcf4a923824e9","isMergeCommit":false,"messageTitle":"Update Storage PUML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"b86d7bd331d2496bff382b8de425a6b985daa816","isMergeCommit":true,"messageTitle":"Merge pull request #91 from rertyy/update-datetime-tostring","messageBody":"Fix datetime toString","fileTypesAndContributionMap":{}},{"hash":"67dff876103a5b18a411d59be33c324e9373f35e","isMergeCommit":false,"messageTitle":"Update AddOrderCommand and DeleteOrderCommand msg","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":7}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dd2d7b86c154e205b0a9419341c050dda30fffb3","isMergeCommit":false,"messageTitle":"Update the gradlew jar name","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"fcc1410cbe57482507c92c657a220533419497b8","isMergeCommit":true,"messageTitle":"Merge pull request #100 from rertyy/fix-nested-and-unecessary-code","messageBody":"Fix nested and unecessary code","fileTypesAndContributionMap":{}},{"hash":"0f2e5a24098cf4270cb3670702e5887fe4606821","isMergeCommit":true,"messageTitle":"Merge pull request #101","messageBody":"Add non null requirement for Order","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"63af0839cd622009e08af677c298987763ee394d","isMergeCommit":false,"messageTitle":"Update the DeveloperGuide for Logic","messageBody":"The DeveloperGuide is not up to date with our\nimplementations.\n\nThis may be confusing to other developers or\nreaders that are viewing it.\n\nUpdate the DeveloperGuide to our implementation\nlogic and methods.\n\nThis will allow our DeveloperGuide to be up to\ndate with our changes and easier to understand\noverall, allowing for easier further\nimplementations.\n","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":12}}},{"hash":"1c162c84ca1d0da4b137d91b6d06f6ed58f9a60a","isMergeCommit":true,"messageTitle":"Merge pull request #111 from shavonneg/update-v1.3","messageBody":"Update tags for UI in DarkTheme.css","fileTypesAndContributionMap":{}},{"hash":"fe50273941c91db61c8b2b5ca9f3054981cbebc9","isMergeCommit":true,"messageTitle":"Merge pull request #112 from rertyy/gradle-enable-assertions","messageBody":"Enable assertions in build.gradle","fileTypesAndContributionMap":{}},{"hash":"3cfbb6e6ad8d3fdacd198f3fe2169c8f0d9beb58","isMergeCommit":false,"messageTitle":"Updated the DeveloperGuide to fix error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"1a4aec44960b11d5f95fc8dd2bcbb8b5a0171d98","isMergeCommit":true,"messageTitle":"Merge pull request #116 from rertyy/update-DG-for-edit-order","messageBody":"Update DG for EditOrderCommand","fileTypesAndContributionMap":{}},{"hash":"74def40db3fbc4df53d8dbc41c027f46da8de18f","isMergeCommit":true,"messageTitle":"Merge pull request #104 from rertyy/fix-delete-order","messageBody":"Add delete by index","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"d577e67f77e0a1a0806e1d33184e1b773be42126","isMergeCommit":false,"messageTitle":"Remove extra Constructor in Person Class","messageBody":"There is an extra constructor in the person class.\nThis is confusing to developers on which to use.\n\nThis could cause null pointer errors when the\nwrong constructor is used, as the order field is\nnot initialized.\n\nRemove the extra constructor and fixed codes that\ncall on it.\n\nThis adjustment will enable us to adhere to a\nsingle constructor, facilitating a more\nstreamlined implementation.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":47},"test-code":{"insertions":5,"deletions":1}}},{"hash":"01b9e822dde5c4bd7f4f6c285290c4ba84765ae2","isMergeCommit":false,"messageTitle":"Update classes for Person Constructor","messageBody":"Classes are still using the old constrcutor, but\npoorly by passing in null.\n\nThis may cause null exceptions in the future.\n\nFixed these methods and made it not use null for\nthe order parameter.\n\nReduces the null exceptions possible.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":4},"test-code":{"insertions":2,"deletions":1}}},{"hash":"2b713ef9b05449b01dda609dbff108d91bd3557a","isMergeCommit":true,"messageTitle":"Merge pull request #117 from Jaspertzx/branch-Fix-Person-Constructor","messageBody":"Remove extra constructor in Person class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"565d5e96a2231037f3924d021b0afdd1ecf4be3d","isMergeCommit":false,"messageTitle":"Update ObservableList to Pair class","messageBody":"Currently, the ObservableList for Orders only\ncontains Orders.\n\nThis will not allow any names to show up for\norders, which may make the user confused who\u0027s\norder is this.\n\nUpdate the ObservableList to hold a Pair class.\n\nThis will allow us to display both Person and\nOrder details.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":43},"test-code":{"insertions":34,"deletions":22}}},{"hash":"c12bc96493fc29c0d4fd8b7bcc20cc0e0e51d538","isMergeCommit":false,"messageTitle":"Fix DeleteOrderCommand and test cases","messageBody":"There are some test cases that are not kept up\nwith the changes implemented. Additionally,\nthe DeleteOrderCommand was not up to date.\n\nThis may cause some unexpected behaviour when\nrunning the application or JUnit test.\n\nFix the command and test cases to accomodate for\nthe Pair change.\n\nThis will allow the application to run as\nexpected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":9},"test-code":{"insertions":59,"deletions":4}}},{"hash":"8eca76e65b558967bd43dab28a7c3b3f8f0d4cf7","isMergeCommit":true,"messageTitle":"Merge pull request #129 from kailinteoo/v1.3_Price_(Integer_to_Double)","messageBody":"Change Price from Integer to Double (allow up to 2dp)","fileTypesAndContributionMap":{}},{"hash":"5bf789f9736b97442542a1cdca75fefac6a77b60","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Change-Display-List","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"35369dec1a05285e06374f320f4674993f7f3c6b","isMergeCommit":false,"messageTitle":"Add Test Case for AddressBook","messageBody":"The AddressBook class\u0027s equal methods are not\ntested.\n\nThis could result in unexpected behaviour when\ncomparing AddressBook objects.\n\nAdd test cases for AddressBook class.\n\nThis will ensure that we will catch any potential\nerrors with comapring AddressBook objects.\n","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"58fa58ecb28e81cdc809c9e9580b5f9e0237688b","isMergeCommit":false,"messageTitle":"Update FXML variable name","messageBody":"The current FXML tag is wrong.\n\nThis could confuse future developers with its\nwrong naming convention.\n\nRename the FXML variable name.\n\nThis will allow the FXML to adhere to the file\nconventions we have created.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-04-03","commitResults":[{"hash":"0c6fde79052d1e622fbffaf3bcbe66b49cedd0b9","isMergeCommit":false,"messageTitle":"Update the UserGuide","messageBody":"The UserGuide is not up to date with our latest implementations.\n\nThis may confuse the user when going through the UserGuide.\n\nUpdate the UserGuide with our new features.\n\nThis will ensure the User will have the knowledge to use these\nrespective commands.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"8436ec1f5c04c7d0310a25b6e82e8952a70ac93d","isMergeCommit":false,"messageTitle":"Sort Orders as they are added","messageBody":"The orders are not sorted chronologically.\n\nThis may confuse users or make the application hard for them to check\nfor deadline.\n\nAdd sort command whenever an Order is added.\n\nThis will ensure the entire Order list stays sorted.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"e190a3f655354363260273557de6e0f9ac956c26","isMergeCommit":false,"messageTitle":"Add test case and fix OOP.","messageBody":"The test case was insufficient and the codes do not adhere to SLAP.\n\nThis may cause future development to be poor due to lacking essential\ntest cases or inaccurate performing methods.\n\nFix the weak SLAP and add test case.\n\nThis will aid in future development by being creating a strong\ncode foundation.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":17},"test-code":{"insertions":45,"deletions":0}}},{"hash":"b031b949ea420aae864afefb41fd25920ae5f6f9","isMergeCommit":false,"messageTitle":"Add Background Color when empty list","messageBody":"When the list is empty, the background color will reset to white, the\ndefault color.\n\nThis is ugly and not the intended outcome of our application.\n\nAdd a default color for background when the list is empty.\n\nThis is more pleasant to the user\u0027s eyes, and will allow our\napplication to look better.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"30b3ac5d04d6772a4b3c7cc8a8fbc94509ca3511","isMergeCommit":false,"messageTitle":"Update the UserGuide Main Features","messageBody":"The main feature is out of date.\n\nUsers may not understand how to use the application.\n\nUpdate the UserGuide with the new order features.\n\nThis will ensure that users can use the application with the latest\nupdates to reference.\n","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":16}}},{"hash":"fa4d6b481befbba5ce103ec1d1a260999b3e0b7a","isMergeCommit":false,"messageTitle":"Fix EditCommand from null error","messageBody":"The EditCommand is throwing a null pointer exeception.\n\nThis may cause the User to be unable to editOrders.\n\nUpdate the Order constructor used in the EditCommand to the newer\nversion.\n\nThis will allow the Person object in the Order object to be set, and thus\nthe User can use the command without errors.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}},{"hash":"8399c1960f003b8083c97186ce3ca85df61c8268","isMergeCommit":false,"messageTitle":"Edit the UserGuide","messageBody":"The UserGuide is out of date.\n\nThe users might not be able to correctly execute certain commands.\n\nEdit the UserGuide.\n\nThe users will have a more accurate guide to follow.\n","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"94efaef01f27d5dd433926463bc6b0247c49290c","isMergeCommit":true,"messageTitle":"Merge pull request #144 from shavonneg/branch-editcommand","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"a28bb6b254ad8050fb69c1b4532c21a305cb486f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Edit-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"86242ab731b31fd09ae7eee65fbde547a42713ce","isMergeCommit":true,"messageTitle":"Merge pull request #145 from Jaspertzx/branch-Edit-UG","messageBody":"Edit the UserGuide","tags":["V1.3"],"fileTypesAndContributionMap":{}},{"hash":"01cd5fc5f45e178e7468be1a9378dc56c9e8b5fb","isMergeCommit":false,"messageTitle":"Remove ViewOrderCommand","messageBody":"The command is not used at all, but it\u0027s code is still in the code base.\n\nThis may confuse users and developers on the actual purpose of this\ncode.\n\nRemove the ViewOrderCommand and its relevant test files.\n\nThis will be less confusing for everyone.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":36},"other":{"insertions":0,"deletions":0},"test-code":{"insertions":0,"deletions":51}}}]},{"date":"2024-04-05","commitResults":[{"hash":"5b75b8fde7b03173ce87e6196b4128313a8e93d0","isMergeCommit":true,"messageTitle":"Merge pull request #149 from rertyy/update-docs-for-v1.3","messageBody":"Update index.md and README.md","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"kailinteoo":{"docs":504,"functional-code":433,"test-code":296},"shavonneg":{"docs":171,"functional-code":583,"test-code":717},"rertyy":{"docs":483,"functional-code":862,"test-code":631,"other":52},"Jaspertzx":{"docs":77,"functional-code":402,"test-code":520,"other":1}},"authorContributionVariance":{"kailinteoo":23142.686,"shavonneg":20146.256,"rertyy":76821.8,"Jaspertzx":14209.129},"authorDisplayNameMap":{"kailinteoo":"CS2103T-T09-2 KAIL.. TEO","shavonneg":"CS2103T-T09-2 GOH ..ONNE","rertyy":"CS2103T-T09-2 TUNG.. IAN","Jaspertzx":"CS2103T-T09-2 JASP..IANG"}} diff --git a/AY2324S2-CS2103T-T11-3_tp_master/authorship.json b/AY2324S2-CS2103T-T11-3_tp_master/authorship.json index b7a70d86..67b24760 100644 --- a/AY2324S2-CS2103T-T11-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T11-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) [![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T11-3/tp/graph/badge.svg?token\u003dBLAYKG2PXC)](https://codecov.io/gh/AY2324S2-CS2103T-T11-3/tp)","lastModifiedDate":"2024-02-25"},{"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":"peterXGD"},"content":"# EventBook","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"As a student leader overseeing various events, it can be challenging to stay organized with numerous contacts across different events. EventBook is designed to simplify the management of contacts across various events. With EventBook, you can effortlessly organize and access contact details of individuals in different events, streamlining the process of communication and coordination.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"## Documentation","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"For the detailed documentation of this project, see the **[EventBook Product Website](https://ay2324s2-cs2103t-t11-3.github.io/tp/index.html)**.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"### Acknowledgement","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":8,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":"run {","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"cleowenxuan"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" archiveFileName \u003d \u0027EventBook.jar\u0027","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"cleowenxuan":4,"jonpwk":1,"-":71}},{"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":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"### Owen","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/owenong1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"[[github](https://github.com/owenong1)]","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":"### Yifei","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/peterxgd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"[[github](http://github.com/peterXGD)]","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":"### Cleo","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/cleowenxuan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":"[[github](http://github.com/cleowenxuan)]","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":"### Jonathan","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/jonpwk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":"[[github](http://github.com/jonpwk)]","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":"### Pei En","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/peienlim.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":"[[github](http://github.com/peienlim)]","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"peienlim":17,"-":28}},{"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":"owenong1"},"content":" title: \"Developer Guide :)\"","lastModifiedDate":"2024-03-05"},{"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":"cleowenxuan"},"content":"# EventBook Developer Guide","lastModifiedDate":"2024-03-29"},{"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":"peienlim"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object) and all `Tag` objects (which are contained in a `UniqueTagList` object).","lastModifiedDate":"2024-03-28"},{"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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"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":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"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":140,"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":141,"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":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"jonpwk"},"content":"### \\[Proposed\\] Creating and Deleting Tag Objects","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":155,"author":{"gitId":"jonpwk"},"content":"As part of the functionality of EventBook, a myriad of tag objects might be required to facilitate organisation of","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"jonpwk"},"content":"contacts within the program. EventBook aims to support this capability by providing the ability to create or delete","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"jonpwk"},"content":"standalone tags separate from people.","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"jonpwk"},"content":"The proposed mechanism is as follows:","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"jonpwk"},"content":"* `ctag`: Creates a Tag object that will be stored in a global Tag array within the `ModelManager` class.","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"jonpwk"},"content":"* `dtag`: Deletes a Tag object that is currently stored in the global Tag array within the `ModelManager` class. This","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"jonpwk"},"content":"will also delete all instances of the Tag object within the program.","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"jonpwk"},"content":"Each Tag object that exists in the program must exist within this global Tag array. Existing functions such as","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"jonpwk"},"content":"`add` will support the creation of Tag objects to be added to this global Tag array.","lastModifiedDate":"2024-03-29"},{"lineNumber":166,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"jonpwk"},"content":"An example usage scenario illustrates how the `ctag` feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"jonpwk"},"content":"1. The user launches the application. The application will be in its initial state showing the full list","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"jonpwk"},"content":"of contacts in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"jonpwk"},"content":"2. The user executes `ctag Friend`, creating a new Tag object named `Friend`.","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"jonpwk"},"content":"3. The user can then tag people in the program with the new `Friend` tag.","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"jonpwk"},"content":"An example usage scenario illustrates how the `dtag` feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"jonpwk"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"jonpwk"},"content":"contacts in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"jonpwk"},"content":"2. The user executes `dtag Friend`, deleting the Tag object named `Friend`.","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"jonpwk"},"content":"3. All instances of `Friend` will be deleted from the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":178,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"owenong1"},"content":"### \\[Proposed\\] Importing and Exporting as .csv file","lastModifiedDate":"2024-03-29"},{"lineNumber":180,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"owenong1"},"content":"As student leaders, a common and easily accessible file format type for event contacts would be .csv. Eventbook","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"owenong1"},"content":"aims to support the ability to import and export contacts using .csv files to facilitate fast and effective contact","lastModifiedDate":"2024-03-29"},{"lineNumber":183,"author":{"gitId":"owenong1"},"content":"upload and sharing.","lastModifiedDate":"2024-03-29"},{"lineNumber":184,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"owenong1"},"content":"The proposed mechanism is as follows:","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"owenong1"},"content":"* Import: Facilitated by the `import` command that takes a path parameter. The file named `import.csv` at the given","lastModifiedDate":"2024-03-29"},{"lineNumber":187,"author":{"gitId":"owenong1"},"content":"path will be read in a set format. The contact details in the csv will then be imported into the address book following","lastModifiedDate":"2024-03-29"},{"lineNumber":188,"author":{"gitId":"owenong1"},"content":"the format of the add command (Implication being that each field in the .csv should be compatible with the current","lastModifiedDate":"2024-03-29"},{"lineNumber":189,"author":{"gitId":"owenong1"},"content":"implementation of the address book, and follow all conventions of the add command like formatting and non-duplicates)","lastModifiedDate":"2024-03-29"},{"lineNumber":190,"author":{"gitId":"owenong1"},"content":"* Export: Facilitated by the `export` command that takes no parameters. The command will access the `UniquePersonList`","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"owenong1"},"content":"found in the `1AddressBook` of the `Model` and parse through the relevant data, formatting it into the relevant fields.","lastModifiedDate":"2024-03-29"},{"lineNumber":192,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":193,"author":{"gitId":"owenong1"},"content":"The .csv should be formatted with the first row having the non-case sensitive headers (separate cells marked with `|`):","lastModifiedDate":"2024-03-29"},{"lineNumber":194,"author":{"gitId":"owenong1"},"content":"* `Name | Number | Email | Address | Tag`","lastModifiedDate":"2024-03-29"},{"lineNumber":195,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":196,"author":{"gitId":"owenong1"},"content":"An example usage scenario illustrates how the import feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":197,"author":{"gitId":"owenong1"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of contacts","lastModifiedDate":"2024-03-29"},{"lineNumber":198,"author":{"gitId":"owenong1"},"content":"in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"owenong1"},"content":"2. The user executes `import ./import/import.csv` , with import.csv having 2 rows:","lastModifiedDate":"2024-03-29"},{"lineNumber":200,"author":{"gitId":"owenong1"},"content":" 1. `Name | Number | Email | Address | Tag`","lastModifiedDate":"2024-03-29"},{"lineNumber":201,"author":{"gitId":"owenong1"},"content":" 2. `John | 94756383 | john@mail.com | NUS UTown | BestFriend`","lastModifiedDate":"2024-03-29"},{"lineNumber":202,"author":{"gitId":"owenong1"},"content":"3. The contact `John` is imported into the address book, with parameters as above.","lastModifiedDate":"2024-03-29"},{"lineNumber":203,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":204,"author":{"gitId":"owenong1"},"content":"An example usage scenario illustrates how the export feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":205,"author":{"gitId":"owenong1"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of contacts","lastModifiedDate":"2024-03-29"},{"lineNumber":206,"author":{"gitId":"owenong1"},"content":" in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":207,"author":{"gitId":"owenong1"},"content":"2. The user executes `export` to export all contacts","lastModifiedDate":"2024-03-29"},{"lineNumber":208,"author":{"gitId":"owenong1"},"content":"3. All contacts in the address book will be exported to ./export/export.csv according to the format","lastModifiedDate":"2024-03-29"},{"lineNumber":209,"author":{"gitId":"owenong1"},"content":"`Name | Number | Email | Address | Tag`","lastModifiedDate":"2024-03-29"},{"lineNumber":210,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":211,"author":{"gitId":"peienlim"},"content":"### \\[Proposed\\] Event switching feature","lastModifiedDate":"2024-03-28"},{"lineNumber":212,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":213,"author":{"gitId":"peienlim"},"content":"As our target audience are student leaders, and they may be in-charge of multiple events throughout their course in NUS, we are proposing to implement a event-switching feature which allows them to switch between events and view contacts specific to each event.","lastModifiedDate":"2024-03-28"},{"lineNumber":214,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":215,"author":{"gitId":"peienlim"},"content":"The proposed event switching feature introduces the concept of event-specific filtering to the existing EventBook. The key operations and components of the proposed implementation include:","lastModifiedDate":"2024-03-28"},{"lineNumber":216,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":217,"author":{"gitId":"peienlim"},"content":"* Filtering Mechanism: filters contacts in the EventBook based on event tag, allowing for selective display of contacts based on event tag.","lastModifiedDate":"2024-03-28"},{"lineNumber":218,"author":{"gitId":"peienlim"},"content":"* UI enhancements: allow users to see each event as a tab and after navigating to a particular tab, they will be able to view contacts of members under that event.","lastModifiedDate":"2024-03-28"},{"lineNumber":219,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":220,"author":{"gitId":"peienlim"},"content":"An example usage scenario illustrates how the event switching feature operates:","lastModifiedDate":"2024-03-28"},{"lineNumber":221,"author":{"gitId":"peienlim"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of contacts in the EventBook.","lastModifiedDate":"2024-03-28"},{"lineNumber":222,"author":{"gitId":"peienlim"},"content":"2. The user switches tabs to a particular event by executing `switch eventTagName`. The `filteredPersons` list in `Model` class will be updated and user will be able to see all contacts of members under this event.","lastModifiedDate":"2024-03-28"},{"lineNumber":223,"author":{"gitId":"peienlim"},"content":"3. User can further filter contacts by executing `search tagName`. This displays users in this event with the specified tag.","lastModifiedDate":"2024-03-28"},{"lineNumber":224,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":225,"author":{"gitId":"peienlim"},"content":"Alternative 1 (Proposed Choice): Extend the existing Tag class to accommodate event-specific tags, allowing for flexible filtering based on events.","lastModifiedDate":"2024-03-28"},{"lineNumber":226,"author":{"gitId":"peienlim"},"content":"Pros: Utilizes existing data structure without introducing additional complexity, easier to implement.","lastModifiedDate":"2024-03-28"},{"lineNumber":227,"author":{"gitId":"peienlim"},"content":"Cons: Requires modifications to the tagging system to support event-specific tags, less OOP","lastModifiedDate":"2024-03-28"},{"lineNumber":228,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":229,"author":{"gitId":"peienlim"},"content":"Alternative 2: Introduce separate address books for each event, providing a clear separation of contacts by events.","lastModifiedDate":"2024-03-28"},{"lineNumber":230,"author":{"gitId":"peienlim"},"content":"Pros: Offers a straightforward organization of data by events.","lastModifiedDate":"2024-03-28"},{"lineNumber":231,"author":{"gitId":"peienlim"},"content":"Cons: Increases complexity by managing multiple address books, harder to implement.","lastModifiedDate":"2024-03-28"},{"lineNumber":232,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":233,"author":{"gitId":"cleowenxuan"},"content":"### \\[Proposed\\] Deleting by Name and Index feature","lastModifiedDate":"2024-03-29"},{"lineNumber":234,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":235,"author":{"gitId":"cleowenxuan"},"content":"As our student leaders will be in-charge of multiple events, they will tend to encounter a large amount of contacts saved in the EventBook. As such, we are proposing to implement delete by name or index feature which allows them to delete the contacts by names. This saves their time of scrolling through the large amount of contacts before deleting them by index.","lastModifiedDate":"2024-03-29"},{"lineNumber":236,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":237,"author":{"gitId":"cleowenxuan"},"content":"This proposed delete name and index feature introduces the concept of deleting the contacts by either name or index.","lastModifiedDate":"2024-03-29"},{"lineNumber":238,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":239,"author":{"gitId":"cleowenxuan"},"content":"Given below is an example usage scenario and how delete mechanism behaves at each step.","lastModifiedDate":"2024-03-29"},{"lineNumber":240,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":241,"author":{"gitId":"cleowenxuan"},"content":"Step 1: The user launches the application. The application will be in its initial state showing the full list of contacts in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":242,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":243,"author":{"gitId":"cleowenxuan"},"content":"Step 2: The user executes `delete John Doe` command to delete the person named John Doe in the EventBook. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete John Doe` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-29"},{"lineNumber":244,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":245,"author":{"gitId":"cleowenxuan"},"content":"**Note:** If the command fails the execution, it means that the person does not exist and an error indicating that the person is not found will be shown.","lastModifiedDate":"2024-03-29"},{"lineNumber":246,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":247,"author":{"gitId":"cleowenxuan"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-03-29"},{"lineNumber":248,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":249,"author":{"gitId":"cleowenxuan"},"content":"\u003cpuml src\u003d\"diagrams/DeleteActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":250,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":251,"author":{"gitId":"cleowenxuan"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-29"},{"lineNumber":252,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":253,"author":{"gitId":"cleowenxuan"},"content":"**Aspect: How delete executes:**","lastModifiedDate":"2024-03-29"},{"lineNumber":254,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":255,"author":{"gitId":"cleowenxuan"},"content":"* **Alternative 1 (Proposed Choice):** Delete the name from the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":256,"author":{"gitId":"cleowenxuan"},"content":" * Pros: Easy to search for the person by typing their full exact name.","lastModifiedDate":"2024-03-29"},{"lineNumber":257,"author":{"gitId":"cleowenxuan"},"content":" * Cons: May have some issues with typing the full exact name if the person\u0027s full name that you want to delete is unknown to you.","lastModifiedDate":"2024-03-29"},{"lineNumber":258,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"cleowenxuan"},"content":"* **Alternative 2:** Search for the name of the person and delete the index from the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":260,"author":{"gitId":"cleowenxuan"},"content":" * Pros: Able to see which name you want to delete by searching for their name.","lastModifiedDate":"2024-03-29"},{"lineNumber":261,"author":{"gitId":"cleowenxuan"},"content":" * Cons: Having to search and delete is slower than simply deleting the person by name.","lastModifiedDate":"2024-03-29"},{"lineNumber":262,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"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":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"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":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"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":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"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":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"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":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"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":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"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":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"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":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"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":303,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"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":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":315,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":319,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":321,"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":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":325,"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":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"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":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"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":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"peterXGD"},"content":"### \\[Proposed\\] Grouping Students by an EventTag.","lastModifiedDate":"2024-03-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":356,"author":{"gitId":"peterXGD"},"content":"As our student leaders will be in-charge of multiple events, they will need to know which student is involved in which event. As such, we are propose an EventTag feature pack which allows you to have easy access to the event features students are tagged with.","lastModifiedDate":"2024-03-29"},{"lineNumber":357,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":358,"author":{"gitId":"peterXGD"},"content":"This proposed event tag feature introduces a new class EventTag, which allows students leaders to tag students involved in an event with its respective EventTag, which also contains the event description, such as start and end dates, event details, etc.","lastModifiedDate":"2024-03-29"},{"lineNumber":359,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":360,"author":{"gitId":"peterXGD"},"content":"The key operations and components of the proposed implementation include:","lastModifiedDate":"2024-03-29"},{"lineNumber":361,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":362,"author":{"gitId":"peterXGD"},"content":"* **Creates an EventTag** with starting date, ending date and event description.","lastModifiedDate":"2024-03-29"},{"lineNumber":363,"author":{"gitId":"peterXGD"},"content":"* **Filter students** based on the event they are tagged to.","lastModifiedDate":"2024-03-29"},{"lineNumber":364,"author":{"gitId":"peterXGD"},"content":"* The ability for to **see the event description and time easily.**","lastModifiedDate":"2024-03-29"},{"lineNumber":365,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":366,"author":{"gitId":"peterXGD"},"content":"An example usage scenario illustrates how the EventTag feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":367,"author":{"gitId":"peterXGD"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of contacts in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":368,"author":{"gitId":"peterXGD"},"content":"2. The user sees the description of an EventTag a person is tagged with by either using CLI or by clicking a button.","lastModifiedDate":"2024-03-29"},{"lineNumber":369,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":370,"author":{"gitId":"peterXGD"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-03-29"},{"lineNumber":371,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":372,"author":{"gitId":"peterXGD"},"content":"\u003cpuml src\u003d\"diagrams/EventTagActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":373,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":374,"author":{"gitId":"peterXGD"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"peterXGD"},"content":"**Aspect: How EventTag works:**","lastModifiedDate":"2024-03-29"},{"lineNumber":377,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":378,"author":{"gitId":"peterXGD"},"content":"* **Alternative 1 (Proposed Choice):** You can group students by EventTag using the search function that shows people with a common tag.","lastModifiedDate":"2024-03-29"},{"lineNumber":379,"author":{"gitId":"peterXGD"},"content":" * Pros: Easy to search for the different event Tags and displays them easily.","lastModifiedDate":"2024-03-29"},{"lineNumber":380,"author":{"gitId":"peterXGD"},"content":" * Cons: You have to type the name of the event Tag every time you need to see who is in which group, which can be annoying.","lastModifiedDate":"2024-03-29"},{"lineNumber":381,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":382,"author":{"gitId":"peterXGD"},"content":"* **Alternative 2:** Have a GUI feature which allows you to display people currently in group \"X\" by clicking a tab in the EventBook called \"X\".","lastModifiedDate":"2024-03-29"},{"lineNumber":383,"author":{"gitId":"peterXGD"},"content":" * Pros: Easy to navigate between different groups.","lastModifiedDate":"2024-03-29"},{"lineNumber":384,"author":{"gitId":"peterXGD"},"content":" * Cons: If you have too many groups to manage it will take a while for you to find an EventTag group every time you switch the group you are looking at.","lastModifiedDate":"2024-03-29"},{"lineNumber":385,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":386,"author":{"gitId":"peterXGD"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2024-03-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":397,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":398,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":399,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":400,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":414,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"jonpwk"},"content":"* student leaders planning school events","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"jonpwk"},"content":"**Value proposition**: Easy way to share _project hierarchy_ / Manage project details and personnel / Quick onboarding of new team members","lastModifiedDate":"2024-03-07"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"jonpwk"},"content":"| Priority | As a(n) …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-07"},{"lineNumber":425,"author":{"gitId":"peterXGD"},"content":"|----------|------------------------|------------------------------------------------------|-------------------------------------------------------------|","lastModifiedDate":"2024-03-29"},{"lineNumber":426,"author":{"gitId":"jonpwk"},"content":"| `* * *` | user | include tags when adding people | tag people based on their roles |","lastModifiedDate":"2024-03-07"},{"lineNumber":427,"author":{"gitId":"jonpwk"},"content":"| `* * *` | user | search by tags | find groups of people |","lastModifiedDate":"2024-03-07"},{"lineNumber":428,"author":{"gitId":"jonpwk"},"content":"| `* * *` | user | have different tagging options | keep my contacts organised and search effectively |","lastModifiedDate":"2024-03-07"},{"lineNumber":429,"author":{"gitId":"jonpwk"},"content":"| `* *` | user | delete by name OR index | manage my contacts easier |","lastModifiedDate":"2024-03-07"},{"lineNumber":430,"author":{"gitId":"jonpwk"},"content":"| `* *` | user | add contacts with partial information | keep my contacts as up to date as possible |","lastModifiedDate":"2024-03-07"},{"lineNumber":431,"author":{"gitId":"peterXGD"},"content":"| `* * *` | user | have knowledge on what event a person is involved in | keep my contacts easily |","lastModifiedDate":"2024-03-29"},{"lineNumber":432,"author":{"gitId":"peterXGD"},"content":"| `* *` | user | know details about an event, such as its time, etc | keep a clear mind on who is doing what and not get confused |","lastModifiedDate":"2024-03-29"},{"lineNumber":433,"author":{"gitId":"jonpwk"},"content":"| `*` | user | sort my tags based on event (and subsequently role) | visualise my contacts in a neat way |","lastModifiedDate":"2024-03-07"},{"lineNumber":434,"author":{"gitId":"jonpwk"},"content":"| `* *` | user | have a space to write notes for each contact | note my thoughts in an organised way |","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"jonpwk"},"content":"| `* *` | user proficient in CLI | have short form commands | use the programe faster |","lastModifiedDate":"2024-03-07"},{"lineNumber":436,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"jonpwk"},"content":"### Use cases (UC)","lastModifiedDate":"2024-03-07"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"jonpwk"},"content":"(For all use cases below, the **System** is the `EventBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"jonpwk"},"content":"**\u003cu\u003eUse case 1: Delete a person\u003c/u\u003e**","lastModifiedDate":"2024-03-07"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"jonpwk"},"content":"2. EventBook shows a list of persons","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"jonpwk"},"content":"4. EventBook deletes the person","lastModifiedDate":"2024-03-07"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"jonpwk"},"content":" * 3a1. EventBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"jonpwk"},"content":"**\u003cu\u003eUse case 2: Add a person\u003c/u\u003e**","lastModifiedDate":"2024-03-07"},{"lineNumber":468,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":469,"author":{"gitId":"jonpwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":470,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":471,"author":{"gitId":"jonpwk"},"content":"1. User adds person to EventBook","lastModifiedDate":"2024-03-07"},{"lineNumber":472,"author":{"gitId":"jonpwk"},"content":"2. EventBook shows a list of persons with added person","lastModifiedDate":"2024-03-07"},{"lineNumber":473,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":474,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":475,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":476,"author":{"gitId":"jonpwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":477,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":478,"author":{"gitId":"jonpwk"},"content":"* 1a. The given parameters for the person is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":479,"author":{"gitId":"jonpwk"},"content":" * 1a1. EventBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":480,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":481,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":482,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":483,"author":{"gitId":"jonpwk"},"content":"**\u003cu\u003eUse case 3: Search by tag\u003c/u\u003e**","lastModifiedDate":"2024-03-07"},{"lineNumber":484,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":485,"author":{"gitId":"jonpwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":486,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":487,"author":{"gitId":"jonpwk"},"content":"1. User requests a search based on tag options","lastModifiedDate":"2024-03-07"},{"lineNumber":488,"author":{"gitId":"jonpwk"},"content":"2. EventBook shows a list of persons with given tag options","lastModifiedDate":"2024-03-07"},{"lineNumber":489,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":490,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":491,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":492,"author":{"gitId":"jonpwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":493,"author":{"gitId":"jonpwk"},"content":"* 1a. The given tag options are invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":494,"author":{"gitId":"jonpwk"},"content":" * 1a1. EventBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":495,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":496,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":497,"author":{"gitId":"jonpwk"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":498,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":499,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":500,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":501,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"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":506,"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":507,"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":508,"author":{"gitId":"jonpwk"},"content":"4. The system should work on both 32-bit and 64-bit systems.","lastModifiedDate":"2024-03-11"},{"lineNumber":509,"author":{"gitId":"jonpwk"},"content":"5. The system should respond within 2 seconds.","lastModifiedDate":"2024-03-11"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":516,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"jonpwk"},"content":"* **Project hierarchy**: The structure of a project team, including team members and organisational structure","lastModifiedDate":"2024-03-07"},{"lineNumber":518,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":526,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":527,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"jonpwk"},"content":" 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2024-03-11"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"jonpwk"},"content":"2. Saving window preferences","lastModifiedDate":"2024-03-11"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"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":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"jonpwk"},"content":" 2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":544,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"jonpwk"},"content":"3. _{ more test cases …​ }_","lastModifiedDate":"2024-03-11"},{"lineNumber":547,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"jonpwk"},"content":" 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":555,"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":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"jonpwk"},"content":" 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":558,"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":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"jonpwk"},"content":" 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":561,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"jonpwk"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-03-11"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"jonpwk"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"cleowenxuan":31,"owenong1":33,"peterXGD":34,"jonpwk":90,"peienlim":23,"-":360}},{"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":"cleowenxuan"},"content":"# EventBook User Guide","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":"EventBook is a **desktop app for Student Leaders to manage the contacts from different events, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, EventBook can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":"1. Download the latest `EventBook.jar` from [here](https://github.com/AY2324S2-CS2103T-T11-3/tp/releases).","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"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":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar EventBook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"author":{"gitId":"cleowenxuan"},"content":" * `assign 1 t/E-event1` : Assigns the 1st contact shown in the current list with the event tag named `event1`.","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":" * `assign John t/tag1` : Assigns the contact named John in the current list with the tag named `tag1`.","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"cleowenxuan"},"content":" * `ctag Friend` : Creates a tag name `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":" * `ctag t/E-orientation dc/Orientation! sd/2024-04-04 02:02:02 ed/2024-04-05 02:02:02` : Creates an event tag.","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"cleowenxuan"},"content":" * `dtag Friend` : Deletes a tag named `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" * `devent fire` : Deletes an event tag called fire","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"cleowenxuan"},"content":" * `delete John Doe` : Deletes the contact named John Doe shown in the current list.","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" * `import` : Imports contacts from `.\\import\\import.csv`.","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"jonpwk"},"content":" * `search Friend` : Displays all contacts with the tag \u0027Friend\u0027.","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"peienlim"},"content":" * `switch Flag` : Switches to \u0027Flag\u0027 event tab to show contacts.","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"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":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"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":71,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":73,"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":74,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":"Format: `edit (NAME or INDEX) [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":"* Edits the person at the specified `INDEX` or `NAME`.","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"cleowenxuan"},"content":"* The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"cleowenxuan"},"content":"* The name refers to the name shown in the displayed person list. The name must be **exactly** what is shown in the displayed person list.","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"cleowenxuan"},"content":"* For example, `edit John Doe t/friends` instead of `edit John t/friends`.","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"cleowenxuan"},"content":"* `edit Ben n/Betsy Crower t/` Edits the person named Ben to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"jonpwk"},"content":"### Creating a tag : `ctag`","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"peterXGD"},"content":"Creates a tag in the address book or an event tag.","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"peterXGD"},"content":"Format 1: `ctag TAGNAME`","lastModifiedDate":"2024-04-05"},{"lineNumber":132,"author":{"gitId":"jonpwk"},"content":"* The provided name has to be a unique tag name that does not already exist in the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":133,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":134,"author":{"gitId":"jonpwk"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":135,"author":{"gitId":"cleowenxuan"},"content":"* `ctag Friend` Creates a tag named `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":137,"author":{"gitId":"peterXGD"},"content":"Format 2: `ctag t/E- eventName dc/ Description sd/yyyy-MM-dd HH:mm:ss ed/yyyy-MM-dd HH:mm:ss`","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"peterXGD"},"content":"* The provided name has to be a unique tag name that does not already exist in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"peterXGD"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"peterXGD"},"content":"* `ctag t/E-orientation dc/Orientation! sd/2024-04-04 02:02:02 ed/2024-04-05 02:02:02`","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"peterXGD"},"content":"* Creates an EventTag called orientation that starts from 2024-04-04 02:02:02 to 2024-04-05 02:02:02.","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"jonpwk"},"content":"### Delete a tag : `dtag`","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"jonpwk"},"content":"Deletes a tag in the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":147,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":148,"author":{"gitId":"jonpwk"},"content":"Format: `dtag TAGNAME`","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"jonpwk"},"content":"* The provided name has to be a unique tag name that does not already exist in the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"jonpwk"},"content":"* The provided tag has to exist in the EventBook.","lastModifiedDate":"2024-03-25"},{"lineNumber":152,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"jonpwk"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":154,"author":{"gitId":"cleowenxuan"},"content":"* `dtag Friend` Deletes a tag named `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":156,"author":{"gitId":"peterXGD"},"content":"### Delete an EventTag : `devent`","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"peterXGD"},"content":"Deletes an event tag in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"peterXGD"},"content":"Format: `devent EVENTTAGNAME`","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"peterXGD"},"content":"* The provided name has to be a unique event tag name that already exist in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"peterXGD"},"content":"Examples:","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"peterXGD"},"content":"* `devent bonfire` Deletes an EventTag named `bonfire`.","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"jonpwk"},"content":"### Assigning a tag : `assign`","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"jonpwk"},"content":"Assigns a tag in the address book to a specified person.","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"cleowenxuan"},"content":"Format: `assign (NAME or INDEX) t/TAG…​` or `assign (NAME or INDEX) t/E-EVENTTAG…​`","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"cleowenxuan"},"content":"* Assign the person at the specified `INDEX` or `NAME` with the tag `TAG` or with the event tag `EVENTTAG`.","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"cleowenxuan"},"content":"* The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"cleowenxuan"},"content":"* The name refers to the name shown in the displayed person list. The name must be **exactly** what is shown in the displayed person list.","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"cleowenxuan"},"content":"* For example, `assign John Doe t/friends` instead of `assign John t/friends`.","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"cleowenxuan"},"content":"* The provided tag(s) and event tag(s) have to exist in the EventBook.","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"jonpwk"},"content":"Examples:","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"cleowenxuan"},"content":"* `assign 1 t/friends` Assigns the first person in the list to a tag named `Friends`.","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"cleowenxuan"},"content":"* `assign John Doe t/E-event1` Assigns the person named John Doe in the list to an Event Tag named `event1`.","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"jonpwk"},"content":"### Searching by tag : `search`","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":184,"author":{"gitId":"jonpwk"},"content":"Displays all the people that are tagged with TAGNAME.","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"jonpwk"},"content":"Format: `search TAGNAME`","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"jonpwk"},"content":"* The search is case-sensitive.","lastModifiedDate":"2024-03-25"},{"lineNumber":189,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":190,"author":{"gitId":"jonpwk"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":191,"author":{"gitId":"cleowenxuan"},"content":"* `search Friend` Displays all people tagged as `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":193,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":"### Switching between events : `switch`","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":"Format: `switch EVENTTAGNAME`","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"peienlim"},"content":"Switches to tab with EVENTTAGNAME.","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":"* The search is case-sensitive.","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"peienlim"},"content":"* The default tab is the `All` tab with full list of contacts displayed.","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"peienlim"},"content":"* `search Flag` Switches to \u0027Flag\u0027 event tab and shows all members tagged with \u0027Flag\u0027 event tag.","lastModifiedDate":"2024-04-04"},{"lineNumber":205,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"cleowenxuan"},"content":"Format: `delete (NAME or INDEX)`","lastModifiedDate":"2024-04-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"jonpwk"},"content":"* Deletes the person at the specified `INDEX` or `NAME`.","lastModifiedDate":"2024-03-25"},{"lineNumber":231,"author":{"gitId":"cleowenxuan"},"content":"* The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"cleowenxuan"},"content":"* The name refers to the name shown in the displayed person list. The name must be **exactly** what is shown in the displayed person list.","lastModifiedDate":"2024-04-04"},{"lineNumber":233,"author":{"gitId":"cleowenxuan"},"content":"* For example, `delete John Doe` instead of `delete John`.","lastModifiedDate":"2024-04-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"cleowenxuan"},"content":"* `list` followed by `delete John Doe` deletes the 2nd person in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"jonpwk"},"content":"### Importing contacts from .csv : `import`","lastModifiedDate":"2024-03-25"},{"lineNumber":246,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":247,"author":{"gitId":"owenong1"},"content":"Imports all contacts from given file path (default ./import/import.csv)","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"owenong1"},"content":"Format: `import f/PATH`","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"owenong1"},"content":"* Requires a valid file to be given in the PATH variable","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"owenong1"},"content":"* If PATH is left empty (i.e. `import f/`) the default file referenced is ./import/import.csv","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"jonpwk"},"content":"* The format of the first line of the csv should be:","lastModifiedDate":"2024-03-25"},{"lineNumber":254,"author":{"gitId":"owenong1"},"content":" `NAME | NUMBER | EMAIL | ADDRESS | EVENTS | TAGS`","lastModifiedDate":"2024-04-05"},{"lineNumber":255,"author":{"gitId":"owenong1"},"content":" Here the `|` character specifies a new cell.","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"owenong1"},"content":"* There should be no trailing empty characters (\u0027 \u0027) in any cell.","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"owenong1"},"content":"* The titles are non-caps sensitive (`Name` pr `NaME` would also be valid)","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"owenong1"},"content":"* The format of each parameter should follow the appropriate add command format.","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"jonpwk"},"content":"* There should be no blank lines, and no conflicts with contacts in the existing address book","lastModifiedDate":"2024-03-25"},{"lineNumber":260,"author":{"gitId":"owenong1"},"content":"* The `EVENTS` portion must have satisfy some format requirements:","lastModifiedDate":"2024-04-05"},{"lineNumber":261,"author":{"gitId":"owenong1"},"content":" * `N/A` if the contact is not in any events, else a field error will occur","lastModifiedDate":"2024-04-05"},{"lineNumber":262,"author":{"gitId":"owenong1"},"content":" * The first instance of each unique event must follow the arguments of the cTag command:","lastModifiedDate":"2024-04-05"},{"lineNumber":263,"author":{"gitId":"owenong1"},"content":" `t/E-eventName dc/Description sd/yyyy-MM-dd HH:mm:ss ed/yyyy-MM-dd HH:mm:ss`","lastModifiedDate":"2024-04-05"},{"lineNumber":264,"author":{"gitId":"owenong1"},"content":" * Further instances of the same event may simply use the event name portion `t/E-eventName`","lastModifiedDate":"2024-04-05"},{"lineNumber":265,"author":{"gitId":"owenong1"},"content":" * e.g. If the first contact has `t/E-orientation dc/Orientation! sd/2024-04-04 02:02:02 ed/2024-04-05 02:02:02`,","lastModifiedDate":"2024-04-05"},{"lineNumber":266,"author":{"gitId":"owenong1"},"content":" then further contacts may simply have `t/E-orientation` under the `EVENTS` fields","lastModifiedDate":"2024-04-05"},{"lineNumber":267,"author":{"gitId":"owenong1"},"content":"* The `TAGS` and `EVENTS` portion accept multiple tags delimited by the `|` character (e.g. Friend|Colleague)","lastModifiedDate":"2024-04-05"},{"lineNumber":268,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"owenong1"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"owenong1"},"content":"* `import f/./import/import.csv` imports the contacts from the specified file","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"owenong1"},"content":"### Exporting contacts from address book : `export`","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"owenong1"},"content":"Exports all contacts to ./export/export.csv","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":276,"author":{"gitId":"owenong1"},"content":"Format: `export`","lastModifiedDate":"2024-04-04"},{"lineNumber":277,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":278,"author":{"gitId":"owenong1"},"content":"* If a file export.csv is already present at ./export, it will be overwritten with the","lastModifiedDate":"2024-04-04"},{"lineNumber":279,"author":{"gitId":"owenong1"},"content":" current address book data","lastModifiedDate":"2024-04-04"},{"lineNumber":280,"author":{"gitId":"owenong1"},"content":"* The export file format is the same as the output format given in `import`","lastModifiedDate":"2024-04-04"},{"lineNumber":281,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":282,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":283,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":295,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook 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-02-09"},{"lineNumber":301,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook 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":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"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":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":319,"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":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":327,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"cleowenxuan"},"content":"**Assign** | `assign (NAME or INDEX) [t/TAG]…​` or `assign (NAME or INDEX) [t/E-TAG]…​` \u003cbr\u003e e.g.,`assign 2 t/tag1` or `assign John Doe t/E-event1`","lastModifiedDate":"2024-04-04"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"cleowenxuan"},"content":"**Delete** | `delete (NAME or INDEX)` \u003cbr\u003e e.g., `delete 3` or `delete John Doe`","lastModifiedDate":"2024-04-04"},{"lineNumber":331,"author":{"gitId":"cleowenxuan"},"content":"**Edit** | `edit (NAME or INDEX) [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` \u003cbr\u003e e.g., `edit 2 n/James Lee e/jameslee@example.com` or`edit John Doe n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-04-04"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"jonpwk"},"content":"**Create Tag** | `ctag TAGNAME` \u003cbr\u003e e.g., `ctag Friend`","lastModifiedDate":"2024-03-25"},{"lineNumber":336,"author":{"gitId":"peterXGD"},"content":"**Create EventTag** | `ctag t/E- eventName dc/ Description sd/yyyy-MM-dd HH:mm:ss ed/yyyy-MM-dd HH:mm:ss` \u003cbr\u003e e.g., `ctag t/E-orientation dc/Orientation! sd/2024-04-04 02:02:02 ed/2024-04-05 02:02:02`","lastModifiedDate":"2024-04-05"},{"lineNumber":337,"author":{"gitId":"jonpwk"},"content":"**Delete Tag** | `dtag TAGNAME` \u003cbr\u003e e.g., `dtag Friend`","lastModifiedDate":"2024-03-25"},{"lineNumber":338,"author":{"gitId":"peterXGD"},"content":"**Delete Event** | `devent EVENTTAGNAME` \u003cbr\u003e e.g., `devent fire`","lastModifiedDate":"2024-04-05"},{"lineNumber":339,"author":{"gitId":"owenong1"},"content":"**Import** | `import f/PATH` \u003cbr\u003e e.g., `import f/./import/import.csv`","lastModifiedDate":"2024-04-05"},{"lineNumber":340,"author":{"gitId":"owenong1"},"content":"**Export** | `export`","lastModifiedDate":"2024-04-05"},{"lineNumber":341,"author":{"gitId":"jonpwk"},"content":"**Search Tag** | `search TAGNAME` \u003cbr\u003e e.g., `search Friend`","lastModifiedDate":"2024-03-25"},{"lineNumber":342,"author":{"gitId":"peienlim"},"content":"**Switch** | `switch EVENTTAGNAME` \u003cbr\u003e e.g. `switch Flag`","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"cleowenxuan":37,"peterXGD":24,"owenong1":35,"jonpwk":47,"peienlim":12,"-":187}},{"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":"cleowenxuan"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eEventBook\u003c/a\u003e","lastModifiedDate":"2024-02-25"},{"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":{"cleowenxuan":1,"-":66}},{"path":"docs/diagrams/DeleteActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"cleowenxuan"},"content":"skin rose","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"cleowenxuan"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"cleowenxuan"},"content":"start","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":":User provides name or index to delete;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":"if (Is name provided?) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":" :Find person by name;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":" if (Person found?) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"cleowenxuan"},"content":" :Delete person;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":" :Display success message;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"cleowenxuan"},"content":" else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"cleowenxuan"},"content":" :Display error message;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"cleowenxuan"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"cleowenxuan"},"content":"else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":" :Find person by index;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"cleowenxuan"},"content":" if (Person found?) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"cleowenxuan"},"content":" :Delete person;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"cleowenxuan"},"content":" :Display success message;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":" else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"cleowenxuan"},"content":" :Display error message;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"cleowenxuan"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":"endif","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":"stop","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"cleowenxuan":25}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"cleowenxuan"},"content":"[-\u003e LogicManager : execute(\"delete John Doe\")","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete John Doe\")","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"John Doe\")","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"cleowenxuan"},"content":"DeleteCommand -\u003e Model : deletePerson(\"John Doe\")","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"cleowenxuan":4,"-":66}},{"path":"docs/diagrams/EventTagActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"!include style.puml","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"skinparam monochrome black","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"start","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":":Launch the address book;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"if (Search person associated with a tag) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":" :Tag found;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":" if (Is EventTag) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" :Displays EventTag description and date;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" :Displays error message;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" :Displays error message;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":"endif","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":"stop","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"peterXGD":19}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"Class UniqueTagList","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":"AddressBook *--\u003e \"1\" UniqueTagList","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":"UniqueTagList --\u003e \"~*\" Tag","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":"Person --\u003e \"*\" Tag","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"peienlim":6,"-":53}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"peienlim":2,"-":43}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":" public static final Version VERSION \u003d new Version(1, 3, 1, true);","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"owenong1":1,"-":185}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" ObservableSet\u003cEventTag\u003e getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"peienlim":4,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-01"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" return model.getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":80,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"peienlim":7,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_INVALID_TAG \u003d \"The tag provided does not exist\";","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The person name provided is invalid\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" builder.append(\"; EventTags: \");","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"cleowenxuan"},"content":" if (!person.getEventTags().isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"cleowenxuan"},"content":" builder.append(\"[\");","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"cleowenxuan"},"content":" person.getEventTags().forEach(eventTag -\u003e builder.append(eventTag.tagName).append(\", \"));","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"cleowenxuan"},"content":" builder.delete(builder.length() - 2, builder.length());","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"cleowenxuan"},"content":" builder.append(\"]\");","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"cleowenxuan"},"content":" builder.append(\"[]\");","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cleowenxuan":12,"jonpwk":1,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AssignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"import java.util.List;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" * Assigns a person from the address book with the given tags.","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":"public class AssignCommand extends Command {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" + \": Assigns the person identified by the index number or full name used in the displayed person list with\"","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":" + \" the given tags.\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" + \"Parameters: INDEX (must be a positive integer) or NAME (must be the exact full name), TAGS (t/TAGNAME)\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" + \"Examples: \" + COMMAND_WORD + \" 1\" + \"t/friends\"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" + \" or\" + COMMAND_WORD + \" John Doe\" + \"t/friends\"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" + \" or\" + COMMAND_WORD + \" 1\" + \"t/E-eventName\";","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_ASSIGN_PERSON_MISSING \u003d \"Please provide either a name or index to delete.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_ASSIGN_TAG_MISSING \u003d \"Please ensure that all tag(s) provided exist.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_ASSIGN_PERSON_SUCCESS \u003d \"Assigned Person: %1$s\";","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"jonpwk"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"jonpwk"},"content":" private final String targetName;","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"jonpwk"},"content":" private final Set\u003cTag\u003e targetTagList;","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" private final Set\u003cTag\u003e targetEventTagList;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"jonpwk"},"content":" * Constructs an AssignCommand with the specified target index, target name and target tag list.","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"jonpwk"},"content":" * @param targetIndex The index of the person to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" * @param targetName The name of the person to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"jonpwk"},"content":" * @param targetTagList The set of tags to be added to the person.","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"cleowenxuan"},"content":" public AssignCommand(Index targetIndex, String targetName, Set\u003cTag\u003e targetTagList, Set\u003cTag\u003e targetEventTagList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" this.targetTagList \u003d targetTagList;","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" this.targetEventTagList \u003d targetEventTagList;","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"jonpwk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"jonpwk"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"jonpwk"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"jonpwk"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"jonpwk"},"content":" for (Tag t : targetTagList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"jonpwk"},"content":" if (!model.hasTag(t)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(MESSAGE_ASSIGN_TAG_MISSING);","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" for (Tag t : targetEventTagList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"cleowenxuan"},"content":" if (!model.hasEventTag(t.tagName)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_ASSIGN_TAG_MISSING);","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"jonpwk"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"jonpwk"},"content":" Person personToAssign \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"cleowenxuan"},"content":" model.assign(personToAssign, targetTagList, targetEventTagList);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"jonpwk"},"content":" return new CommandResult(String.format(MESSAGE_ASSIGN_PERSON_SUCCESS, Messages.format(personToAssign)));","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"jonpwk"},"content":" } else if (targetName !\u003d dummyName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"jonpwk"},"content":" Optional\u003cPerson\u003e personToFind \u003d lastShownList.stream().filter(person -\u003e person.getName()","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"jonpwk"},"content":" .toString().equals(targetName)).findFirst();","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"jonpwk"},"content":" if (personToFind.isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"jonpwk"},"content":" Person personToAssign \u003d personToFind.get();","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"cleowenxuan"},"content":" model.assign(personToAssign, targetTagList, targetEventTagList);","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"jonpwk"},"content":" return new CommandResult(String.format(MESSAGE_ASSIGN_PERSON_SUCCESS, Messages.format(personToAssign)));","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"jonpwk"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"jonpwk"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(MESSAGE_ASSIGN_PERSON_MISSING);","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"jonpwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"jonpwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"jonpwk"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":" if (!(other instanceof AssignCommand)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"jonpwk"},"content":" AssignCommand otherAssignCommand \u003d (AssignCommand) other;","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"jonpwk"},"content":" return (targetIndex.equals(otherAssignCommand.targetIndex)","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"jonpwk"},"content":" \u0026\u0026 targetTagList.equals(otherAssignCommand.targetTagList)","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"cleowenxuan"},"content":" \u0026\u0026 targetEventTagList.equals(otherAssignCommand.targetEventTagList)","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"jonpwk"},"content":" \u0026\u0026 targetName.equals((otherAssignCommand.targetName)));","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"jonpwk"},"content":" public String toString() {","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"jonpwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"jonpwk"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"jonpwk"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"jonpwk"},"content":" .add(\"targetTagList\", targetTagList)","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"cleowenxuan"},"content":" .add(\"targetTagList\", targetEventTagList)","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"jonpwk"},"content":" .toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"cleowenxuan":15,"jonpwk":107}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" private final Optional\u003cEventTag\u003e eventTag;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, EventTag eventTag) {","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" this.eventTag \u003d Optional.ofNullable(eventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" * Constructs a {@code CommandResult} with the specified fields, with eventTag set to null.","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" this(feedbackToUser, showHelp, exit, null);","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" this(feedbackToUser, false, false, null);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser} and {@code eventTag},","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" public CommandResult(String feedbackToUser, EventTag eventTag) {","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" this(feedbackToUser, false, false, eventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" public Optional\u003cEventTag\u003e getEventTag() {","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" return eventTag;","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"peienlim":26,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/CtagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":" * Adds a tag to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":"public class CtagCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" public static final String COMMAND_WORD \u003d \"ctag\";","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a tag or event tag to the address book. \"","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" + \"tagName\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" + \"FRIEND\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" + \"or \" + COMMAND_WORD + \" \" + PREFIX_EVENT_TAG + \" eventName\" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" + PREFIX_DESCRIPTION + \" Description\" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" + PREFIX_START_DATE + \"yyyy-MM-dd HH:mm:ss\" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" + PREFIX_END_DATE + \"yyyy-MM-dd HH:mm:ss\" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" + \"Example: \" + COMMAND_WORD + \" \";","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_SUCCESS_TAG \u003d \"New tag added: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_SUCCESS_EVENT_TAG \u003d \"New event tag added: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_DUPLICATE_TAG \u003d \"This tag already exists in the address book\";","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_DUPLICATE_EVENT_TAG \u003d \"This EventTag already exists in the address book\";","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_FAILED \u003d \"Failed to add any tag or event tag.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":" private final Tag toAdd;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" private final EventTag toAddEvent;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jonpwk"},"content":" * Creates an CtagCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":" public CtagCommand(Tag toAdd, EventTag toAddEvent) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" this.toAdd \u003d toAdd;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" this.toAddEvent \u003d toAddEvent;","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jonpwk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":" boolean isEventTag \u003d toAddEvent !\u003d null;","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" boolean isTag \u003d toAdd !\u003d null;","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":" if (isTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"jonpwk"},"content":" if (model.hasTag(toAdd)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TAG);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jonpwk"},"content":" model.addTag(toAdd);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_TAG, toAdd));","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"peterXGD"},"content":" if (isEventTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"peterXGD"},"content":" if (model.hasEventTag(toAddEvent.tagName)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"peterXGD"},"content":" throw new CommandException(MESSAGE_DUPLICATE_EVENT_TAG);","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"peterXGD"},"content":" model.addEventTag(toAddEvent);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_EVENT_TAG, toAddEvent));","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(MESSAGE_FAILED);","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jonpwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jonpwk"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jonpwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jonpwk"},"content":" if (!(other instanceof CtagCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"jonpwk"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jonpwk"},"content":" CtagCommand e \u003d (CtagCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"peterXGD"},"content":" return toAdd.equals(e.toAdd) \u0026\u0026 toAddEvent.equals(e.toAddEvent);","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jonpwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jonpwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jonpwk"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"peterXGD"},"content":" .add(\"toAddEventTag\", toAddEvent)","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"jonpwk"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"peterXGD":39,"jonpwk":58}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":" * Deletes a person identified using it\u0027s displayed index or displayed name from the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":" + \": Deletes the person identified by the index number or full name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":" + \"Parameters: INDEX (must be a positive integer) or NAME (must be the exact full name)\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\" + \"or\" + COMMAND_WORD + \" John Doe\";","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_DELETE_PERSON_ERROR \u003d \"Please provide either a name or index to delete.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" private final String targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":" * Constructs a DeleteCommand with the specified target index and target name.","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"cleowenxuan"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":" * @param targetIndex The index of the person to be deleted.","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"cleowenxuan"},"content":" * @param targetName The name of the person to be deleted.","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" public DeleteCommand(Index targetIndex, String targetName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"cleowenxuan"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"cleowenxuan"},"content":" } else if (targetName !\u003d dummyName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"cleowenxuan"},"content":" Optional\u003cPerson\u003e personToFind \u003d lastShownList.stream().filter(person -\u003e person.getName()","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" .toString().equals(targetName)).findFirst();","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"cleowenxuan"},"content":" if (personToFind.isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"cleowenxuan"},"content":" Person personToDelete \u003d personToFind.get();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"cleowenxuan"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_DELETE_PERSON_ERROR);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"cleowenxuan"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex) \u0026\u0026 targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"cleowenxuan"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cleowenxuan":32,"-":62}},{"path":"src/main/java/seedu/address/logic/commands/DeventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" * Format devent command for EventBook that deletes a tag.","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":"public class DeventCommand extends Command {","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public static final String COMMAND_WORD \u003d \"devent\";","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": delete an event tag from the list\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" + \"EventTag name\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" + \"FRIEND\\n\";","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_SUCCESS_DELETE \u003d \"Deleted event tag %1$s\";","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_NO_EVENT_TAG \u003d \"This EventTag does not exists in the address book\";","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_FAILED \u003d \"Failed to remove event tag.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" private final String tagName;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" * Creates an CtagCommand to add the specified {@code Person}","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" public DeventCommand(String tagName) {","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"peterXGD"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"peterXGD"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"peterXGD"},"content":" if (!model.hasEventTag(tagName)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" throw new CommandException(MESSAGE_NO_EVENT_TAG);","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"peterXGD"},"content":" //get event tag to be used for checking","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"peterXGD"},"content":" EventTag et \u003d model.getEventTag(tagName);","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"peterXGD"},"content":" model.clearCurrentEventTag();","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":" model.updateTagPersonList(et);","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"peterXGD"},"content":" model.deleteEventTag(et);","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_DELETE, et));","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"peterXGD"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":" return true;","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"peterXGD"},"content":" if (!(other instanceof seedu.address.logic.commands.DeventCommand)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":" return false;","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" seedu.address.logic.commands.DeventCommand e \u003d (seedu.address.logic.commands.DeventCommand) other;","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":" return this.tagName \u003d\u003d ((DeventCommand) other).tagName;","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"peterXGD"},"content":" public String toString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"peterXGD"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"peterXGD"},"content":" .add(\"tagName\", tagName)","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"peterXGD"},"content":" .toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"peterXGD":73}},{"path":"src/main/java/seedu/address/logic/commands/DtagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-01"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":" * Deletes a tag from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"public class DtagCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" public static final String COMMAND_WORD \u003d \"dtag\";","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" + \": Deletes the tag identified by the name used in the displayed tag list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" + \"Parameters: TAGNAME\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" + \"Example: \" + COMMAND_WORD + \" FRIEND\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_DELETE_TAG_SUCCESS \u003d \"Deleted Tag: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" private final String tagName;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":" public DtagCommand(String tagName) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jonpwk"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jonpwk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jonpwk"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jonpwk"},"content":" Tag dummyTag \u003d new Tag(tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"jonpwk"},"content":" if (!model.hasTag(dummyTag)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TAG);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jonpwk"},"content":" model.deleteTag(dummyTag);","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"jonpwk"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TAG_SUCCESS, tagName));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jonpwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jonpwk"},"content":" if (!(other instanceof DtagCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jonpwk"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jonpwk"},"content":" DtagCommand otherDeleteCommand \u003d (DtagCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jonpwk"},"content":" return tagName.equals(otherDeleteCommand.tagName);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jonpwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jonpwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jonpwk"},"content":" .add(\"tagName\", tagName)","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jonpwk"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jonpwk":67}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" + \"by the index number or the name used in the displayed person list. \"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"cleowenxuan"},"content":" + \"Parameters: INDEX (must be a positive integer) or NAME (must be the exact name saved)\"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_EDIT_PERSON_ERROR \u003d \"Please provide either a valid name or index to edit.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"cleowenxuan"},"content":" private final String name;","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" * @param name of the person in the filtered person list to edit","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" public EditCommand(Index index, String name, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":" this.name \u003d name;","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"cleowenxuan"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"cleowenxuan"},"content":" } else if (name !\u003d dummyName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"cleowenxuan"},"content":" Optional\u003cPerson\u003e personToFind \u003d lastShownList.stream().filter(person -\u003e person.getName()","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"cleowenxuan"},"content":" .toString().equals(name)).findFirst();","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"cleowenxuan"},"content":" if (personToFind.isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"cleowenxuan"},"content":" Person personToEdit \u003d personToFind.get();","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"cleowenxuan"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"cleowenxuan"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"cleowenxuan"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"cleowenxuan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"cleowenxuan"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_EDIT_PERSON_ERROR);","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" Set\u003cEventTag\u003e updatedEventTags \u003d editPersonDescriptor.getEventTags().orElse(personToEdit.getEventTags());","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedEventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"cleowenxuan"},"content":" return index.equals(otherEditCommand.index) \u0026\u0026 name.equals(otherEditCommand.name)","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"cleowenxuan"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":169,"author":{"gitId":"peienlim"},"content":" private Set\u003cEventTag\u003e eventTags;","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":183,"author":{"gitId":"peienlim"},"content":" setEventTags(toCopy.eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":243,"author":{"gitId":"peienlim"},"content":" * Sets {@code eventTags} to this object\u0027s {@code eventTags}.","lastModifiedDate":"2024-04-02"},{"lineNumber":244,"author":{"gitId":"peienlim"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-04-02"},{"lineNumber":245,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"peienlim"},"content":" public void setEventTags(Set\u003cEventTag\u003e eventTag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":247,"author":{"gitId":"peienlim"},"content":" this.eventTags \u003d (eventTag !\u003d null) ? new HashSet\u003c\u003e(eventTag) : null;","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":249,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":250,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":251,"author":{"gitId":"peienlim"},"content":" * Returns an unmodifiable event tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-04-02"},{"lineNumber":252,"author":{"gitId":"peienlim"},"content":" * if modification is attempted.","lastModifiedDate":"2024-04-02"},{"lineNumber":253,"author":{"gitId":"peienlim"},"content":" * Returns {@code Optional#empty()} if {@code eventTag} is null.","lastModifiedDate":"2024-04-02"},{"lineNumber":254,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":255,"author":{"gitId":"peienlim"},"content":" public Optional\u003cSet\u003cEventTag\u003e\u003e getEventTags() {","lastModifiedDate":"2024-04-02"},{"lineNumber":256,"author":{"gitId":"peienlim"},"content":" return (eventTags !\u003d null) ? Optional.of(Collections.unmodifiableSet(eventTags)) : Optional.empty();","lastModifiedDate":"2024-04-02"},{"lineNumber":257,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":258,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":262,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":272,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"cleowenxuan":31,"peienlim":22,"-":236}},{"path":"src/main/java/seedu/address/logic/commands/ExportCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.FIELDS;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.NUMBER_OF_FIELDS;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":"import java.io.File;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"import java.io.IOException;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" * Exports contacts from address book","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":"public class ExportCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"owenong1"},"content":" public static final String COMMAND_WORD \u003d \"export\";","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contacts from address book have been exported!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_FAILURE \u003d \"Something went wrong! Make sure export.csv is not open!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"owenong1"},"content":" public static final String EXPORT_PATH \u003d \"./export/export.csv\";","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"owenong1"},"content":" private Set\u003cEventTag\u003e exported \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"owenong1"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"owenong1"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":" exportFile(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"owenong1"},"content":" * Reads the current address book and exports to ./export/export.csv","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"owenong1"},"content":" * @param model as in execute()","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"owenong1"},"content":" * @throws CommandException in the case that the file cannot be written to","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"owenong1"},"content":" private void exportFile(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"owenong1"},"content":" ObservableList\u003cPerson\u003e list \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"owenong1"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"owenong1"},"content":" File exportFile \u003d new File(EXPORT_PATH);","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"owenong1"},"content":" FileWriter fw \u003d new FileWriter(exportFile);","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"owenong1"},"content":" for (int i \u003d 0; i \u003c NUMBER_OF_FIELDS; i++) {","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"owenong1"},"content":" fw.write(FIELDS.get(i));","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"owenong1"},"content":" if (i + 1 !\u003d NUMBER_OF_FIELDS) {","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"owenong1"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"owenong1"},"content":" for (Person person : list) {","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"owenong1"},"content":" fw.write(person.getName().toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"owenong1"},"content":" fw.write(person.getPhone().toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"owenong1"},"content":" fw.write(person.getEmail().toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"owenong1"},"content":" fw.write(person.getAddress().toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"owenong1"},"content":" Set\u003cEventTag\u003e eTags \u003d person.getEventTags();","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"owenong1"},"content":" StringBuilder eTagsString \u003d new StringBuilder();","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"owenong1"},"content":" for (EventTag eTag : eTags) {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"owenong1"},"content":" if (exported.contains(eTag)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"owenong1"},"content":" eTagsString.append(eTag.tagName).append(\"|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"owenong1"},"content":" } else {","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"owenong1"},"content":" exported.add(eTag);","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"owenong1"},"content":" eTagsString.append(eTag.getCodeFormat()).append(\"|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"owenong1"},"content":" eTagsString.deleteCharAt(eTagsString.length() - 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"owenong1"},"content":" fw.write(eTagsString.toString());","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"owenong1"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"owenong1"},"content":" StringBuilder tagsString \u003d new StringBuilder();","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"owenong1"},"content":" for (Tag tag : tags) {","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"owenong1"},"content":" tagsString.append(tag.tagName).append(\"|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"owenong1"},"content":" tagsString.deleteCharAt(tagsString.length() - 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"owenong1"},"content":" fw.write(tagsString.toString());","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"owenong1"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"owenong1"},"content":" fw.close();","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"owenong1"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"owenong1":100}},{"path":"src/main/java/seedu/address/logic/commands/ImportCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.FIELDS;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.NUMBER_OF_FIELDS;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.PREFIX_MAP;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"import java.io.File;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":" * Imports contacts from csv","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":"public class ImportCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"owenong1"},"content":" public static final String COMMAND_WORD \u003d \"import\";","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contacts from csv have been added!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_FILE_NOT_FOUND \u003d \"File could not be found! Check import.csv exists at ./import\";","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_FIELDS_FORMAT_ERROR \u003d \"An error occurred while parsing the csv! \"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"owenong1"},"content":" + \"Check the field values!\";","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_VALUES_FORMAT_ERROR \u003d \"An error occurred while adding persons to the csv!\\n \"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"owenong1"},"content":" + \"The values in the csv are converted to add command format\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"owenong1"},"content":" + \"Make sure the values match the correct format for the add command!\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"owenong1"},"content":" + \"The error with the add command occurred as follows:\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_EVENTS_FORMAT_ERROR \u003d \"An error occurred while parsing the EVENTS/TAGS portion! \"","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":" + \"Make sure the first occurrence values match the correct format for the add command!\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" + \"(See UG for more details)\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" + \"The error with the command occurred as follows:\\n\";","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":" public static final String DEFAULT_PATH \u003d \"./import/import.csv\";","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"owenong1"},"content":" + \": Updates the Address book with contacts from the \"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"owenong1"},"content":" + \"csv file found at given path.\"","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"owenong1"},"content":" + \"If path not specified, default path is: \" + DEFAULT_PATH + \"\\n\"","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"owenong1"},"content":" + \"Parameters: path to file (prefixed with /f)\\n\"","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"owenong1"},"content":" + \"Example: \" + COMMAND_WORD + \" f/\" + DEFAULT_PATH + \"\\n\"","lastModifiedDate":"2024-04-01"},{"lineNumber":46,"author":{"gitId":"owenong1"},"content":" + \"Example: \" + COMMAND_WORD + \" f/\";","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"owenong1"},"content":" private final String path;","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"owenong1"},"content":" private final List\u003cString\u003e personsToAdd \u003d new ArrayList\u003c\u003e(); // To hold the person data from the csv","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"owenong1"},"content":" private final List\u003cCommand\u003e commands \u003d new ArrayList\u003c\u003e(); // Holds commands to assign and generate eventTags;","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":52,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":53,"author":{"gitId":"owenong1"},"content":" * @param path of the import.csv file containing contacts to import","lastModifiedDate":"2024-04-01"},{"lineNumber":54,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":55,"author":{"gitId":"owenong1"},"content":" public ImportCommand(String path) {","lastModifiedDate":"2024-04-01"},{"lineNumber":56,"author":{"gitId":"owenong1"},"content":" requireAllNonNull(path);","lastModifiedDate":"2024-04-01"},{"lineNumber":57,"author":{"gitId":"owenong1"},"content":" this.path \u003d (path.isEmpty()) ? DEFAULT_PATH : path;","lastModifiedDate":"2024-04-01"},{"lineNumber":58,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":59,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"owenong1"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"owenong1"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"owenong1"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"owenong1"},"content":" try { // parse the csv file at the path w scanner","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"owenong1"},"content":" parse(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"owenong1"},"content":" checkFields(personsToAdd.get(0));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"owenong1"},"content":" personsToAdd.remove(0); // remove the fields","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"owenong1"},"content":" addPersons(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"owenong1"},"content":" loadEventTags(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"owenong1"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_FILE_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"owenong1"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_FIELDS_FORMAT_ERROR);","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"owenong1"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"owenong1"},"content":" * Parses the data in the csv into the given list","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"owenong1"},"content":" * Takes all the values and formats them into add command format","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"owenong1"},"content":" * e.g. John -\u003e n/John","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"owenong1"},"content":" private void parse(Model model) throws FileNotFoundException, IndexOutOfBoundsException, CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"owenong1"},"content":" StringBuilder currRow \u003d new StringBuilder(); // To hold the current row data","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"owenong1"},"content":" Scanner sc \u003d new Scanner(new File(path));","lastModifiedDate":"2024-04-01"},{"lineNumber":89,"author":{"gitId":"owenong1"},"content":" sc.useDelimiter(\",|\\r?\\n\");","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"owenong1"},"content":" int count \u003d 0; // holds an idx to keep track of the current field","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"owenong1"},"content":" String personName \u003d \"\";","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"owenong1"},"content":" Boolean fieldsParsed \u003d false;","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"owenong1"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"owenong1"},"content":" String next \u003d sc.next();","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"owenong1"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"owenong1"},"content":" personName \u003d next;","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"owenong1"},"content":" if (!next.isEmpty()) { // append the field in the correct format if present","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"owenong1"},"content":" String formatted \u003d formatFieldValue(next, FIELDS.get(count), personName, fieldsParsed);","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"owenong1"},"content":" currRow.append(formatted);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"owenong1"},"content":" count +\u003d 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"owenong1"},"content":" if (count \u003d\u003d NUMBER_OF_FIELDS) { // add the person data to the list once parsed","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"owenong1"},"content":" currRow.deleteCharAt(currRow.length() - 1); // remove trailing \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"owenong1"},"content":" personsToAdd.add(currRow.toString());","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"owenong1"},"content":" currRow \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"owenong1"},"content":" count \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"owenong1"},"content":" fieldsParsed \u003d true;","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"owenong1"},"content":" sc.close();","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"owenong1"},"content":" * Formats the given data field into proper command format","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"owenong1"},"content":" * e.g. John -\u003e n/John","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"owenong1"},"content":" * @param fieldValue the value to be formatted","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"owenong1"},"content":" * @param field the field the value belongs to","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"owenong1"},"content":" * @param personName holds the current persons name","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"owenong1"},"content":" * @param fieldsParsed checks for whether fields are being parsed or not","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"owenong1"},"content":" * @return the given field value formatted into command format","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"owenong1"},"content":" private String formatFieldValue(String fieldValue, String field, String personName, Boolean fieldsParsed)","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"owenong1"},"content":" throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"owenong1"},"content":" final String rmvChar \u003d \"\\uFEFF\";","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"owenong1"},"content":" if (fieldValue.startsWith(rmvChar)) { // to remove extra potential characters added due to csv format","lastModifiedDate":"2024-04-05"},{"lineNumber":132,"author":{"gitId":"owenong1"},"content":" fieldValue \u003d fieldValue.substring(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"owenong1"},"content":" if (field.equalsIgnoreCase(\"EVENTS\") \u0026\u0026 fieldsParsed) {","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"owenong1"},"content":" String[] eTags \u003d fieldValue.split(\"\\\\|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"owenong1"},"content":" for (String eTag : eTags) {","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"owenong1"},"content":" handleEventTag(eTag, personName);","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"owenong1"},"content":" return \"\";","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"owenong1"},"content":" String prefix \u003d PREFIX_MAP.get(field);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"owenong1"},"content":" if (field.equalsIgnoreCase(\"TAGS\") \u0026\u0026 fieldsParsed) { // handle case of multiple tags in field","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"owenong1"},"content":" String[] tags \u003d fieldValue.split(\"\\\\|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"owenong1"},"content":" StringBuilder tagString \u003d new StringBuilder();","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"owenong1"},"content":" for (String tag : tags) {","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"owenong1"},"content":" tagString.append(prefix).append(tag).append(\" \");","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"owenong1"},"content":" return tagString.toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"owenong1"},"content":" return prefix + fieldValue + \" \";","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"owenong1"},"content":" * Manages the eventTags to create and assign","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"owenong1"},"content":" * @param details holds the eventTag details","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"owenong1"},"content":" private void handleEventTag(String details, String personName) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"owenong1"},"content":" if (!details.equals(\"N/A\") \u0026\u0026 !details.equalsIgnoreCase(\"EVENTS\")) {","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"owenong1"},"content":" try {","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"owenong1"},"content":" AddressBookParser addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"owenong1"},"content":" if (details.trim().split(\" \").length !\u003d 1) { // case where event is defined","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"owenong1"},"content":" commands.add(addressBookParser.parseCommand(\"ctag \" + details));","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"owenong1"},"content":" String eventName \u003d details.trim().split(\" \")[0].substring(2);","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"owenong1"},"content":" commands.add(addressBookParser.parseCommand(\"assign \" + personName + \"t/\" + eventName));","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"owenong1"},"content":" } else { // case where only event name is given","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"owenong1"},"content":" commands.add(addressBookParser.parseCommand(\"assign \" + personName + \"t/E-\" + details));","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"owenong1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-04-05"},{"lineNumber":173,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_EVENTS_FORMAT_ERROR + e.getMessage());","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"owenong1"},"content":" private void loadEventTags(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"owenong1"},"content":" try {","lastModifiedDate":"2024-04-05"},{"lineNumber":180,"author":{"gitId":"owenong1"},"content":" AddressBookParser addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"owenong1"},"content":" // access model and add/assign events into address book","lastModifiedDate":"2024-04-05"},{"lineNumber":182,"author":{"gitId":"owenong1"},"content":" for (Command command : commands) {","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"owenong1"},"content":" command.execute(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":185,"author":{"gitId":"owenong1"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_EVENTS_FORMAT_ERROR + e.getMessage());","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"owenong1"},"content":" * Returns True if given String matches the number and order of fields specified in FIELDS","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"owenong1"},"content":" * @param fieldString String parsed from the first row of the csv file","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"owenong1"},"content":" private void checkFields(String fieldString) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"owenong1"},"content":" StringBuilder fields \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"owenong1"},"content":" for (String field: FIELDS) {","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"owenong1"},"content":" fields.append(PREFIX_MAP.get(field));","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"owenong1"},"content":" fields.append(field).append(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"owenong1"},"content":" fields.deleteCharAt(fields.length() - 1); // adjust for extra \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"owenong1"},"content":" if (!fieldString.equalsIgnoreCase(fields.toString())) {","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_FIELDS_FORMAT_ERROR);","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"owenong1"},"content":" * Adds the person data from the list to the addressbook","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"owenong1"},"content":" * Simulates the work of AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"owenong1"},"content":" * @param model reference to the model to add the data into","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"owenong1"},"content":" private void addPersons(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":214,"author":{"gitId":"owenong1"},"content":" try {","lastModifiedDate":"2024-04-05"},{"lineNumber":215,"author":{"gitId":"owenong1"},"content":" AddressBookParser addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"owenong1"},"content":" // access model and add people into address book","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"owenong1"},"content":" for (String person : personsToAdd) {","lastModifiedDate":"2024-04-05"},{"lineNumber":218,"author":{"gitId":"owenong1"},"content":" String commandText \u003d \"add \" + person;","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"owenong1"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"owenong1"},"content":" command.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"owenong1"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2024-04-05"},{"lineNumber":223,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_VALUES_FORMAT_ERROR);","lastModifiedDate":"2024-04-05"},{"lineNumber":224,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":225,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"owenong1":226}},{"path":"src/main/java/seedu/address/logic/commands/ImportExportSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"import java.util.Map;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"public class ImportExportSyntax {","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":" public static final List\u003cString\u003e FIELDS \u003d List.of(","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":" \"NAME\", \"NUMBER\", \"EMAIL\", \"ADDRESS\", \"EVENTS\", \"TAGS\"","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":" ); // TO hold the fields present in the csv","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":" public static final int NUMBER_OF_FIELDS \u003d FIELDS.size();","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":" public static final Map\u003cString, String\u003e PREFIX_MAP \u003d Map.of(","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":" \"NAME\", \"n/\",","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":" \"NUMBER\", \"p/\",","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":" \"EMAIL\", \"e/\",","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":" \"ADDRESS\", \"a/\",","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":" \"TAGS\", \"t/\",","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":" \"EVENTS\", \"\"","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" ); // To format the data in the csv to command format","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"owenong1":23}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import static seedu.address.model.AddressBook.DEFAULT_EVENT_TAG;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" model.clearCurrentEventTag();","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":" return new CommandResult(MESSAGE_SUCCESS, DEFAULT_EVENT_TAG);","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"peienlim":3,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/SearchTagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" * Format search instructions for every command for display.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":"public class SearchTagCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" public static final String COMMAND_WORD \u003d \"search\";","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_SUCCESS \u003d \"found all person with the tag\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_NO_TAG \u003d \"no person with this tag is found\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" + \": Search people who are associated with this tag \"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" + \"by listing the person that it is associated with.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" + \"Parameters: TAG (must be an existing tag) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" + \"[TAG]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" + \"Example: \" + COMMAND_WORD + \" school\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" private final Tag tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" * The constructor for SearchCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" * @param tag the tag that you want to search the list for","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"cleowenxuan"},"content":" public SearchTagCommand(Tag tag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"peterXGD"},"content":" requireAllNonNull(tag);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"peterXGD"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"peterXGD"},"content":" if (!model.hasTag(tag)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"peterXGD"},"content":" throw new CommandException(MESSAGE_NO_TAG);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":" model.updateTagPersonList(tag);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"peterXGD"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"peterXGD"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"peterXGD"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":" if (!(other instanceof SearchTagCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"peterXGD"},"content":" SearchTagCommand e \u003d (SearchTagCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"peterXGD"},"content":" return tag.equals(e.tag);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":61,"peienlim":1}},{"path":"src/main/java/seedu/address/logic/commands/SwitchCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"cleowenxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"cleowenxuan"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"cleowenxuan"},"content":" * Switch command to toggle between different events.","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":"public class SwitchCommand extends Command {","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"cleowenxuan"},"content":" public static final String COMMAND_WORD \u003d \"switch\";","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Found all persons with the tag.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_SUCCESS_EVENT_TAG \u003d \"Displaying all persons in the event: \";","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_NO_EVENT_TAG \u003d \"No such event found.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" + \": Finds people who are associated with this tag \"","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":" + \"by listing the person that it is associated with.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"cleowenxuan"},"content":" + \"Parameters: TAG (must be an existing tag) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" + \"[TAG]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" + \"Example: \" + COMMAND_WORD + \" school\";","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"cleowenxuan"},"content":" private final Tag tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":" * The constructor for SwitchCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"cleowenxuan"},"content":" * @param tag the tag that you want to search the list for","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" public SwitchCommand(Tag tag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"cleowenxuan"},"content":" requireAllNonNull(tag);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"cleowenxuan"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"cleowenxuan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"cleowenxuan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"cleowenxuan"},"content":" if (!model.hasEventTag(tag.tagName)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_NO_EVENT_TAG);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"cleowenxuan"},"content":" EventTag eventTag \u003d model.getEventTag(tag.tagName);","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"cleowenxuan"},"content":" model.updateEventTagPersonList(eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" return new CommandResult(getEventTagDescription(eventTag), eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"cleowenxuan"},"content":" private String getEventTagDescription(EventTag eventTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"cleowenxuan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d, yyyy HH:mm a\");","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"cleowenxuan"},"content":" return MESSAGE_SUCCESS_EVENT_TAG + eventTag.tagName + \"\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"cleowenxuan"},"content":" + \"Description: \" + eventTag.description + \"\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"cleowenxuan"},"content":" + \"Start Date: \" + eventTag.startDate.format(formatter) + \"\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" + \"End Date: \" + eventTag.endDate.format(formatter) + \"\\n\";","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"cleowenxuan"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"cleowenxuan"},"content":" return true;","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"cleowenxuan"},"content":" if (!(other instanceof SwitchCommand)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":" return false;","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"cleowenxuan"},"content":" SwitchCommand e \u003d (SwitchCommand) other;","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"cleowenxuan"},"content":" return tag.equals(e.tag);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"cleowenxuan"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"cleowenxuan":76}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, new HashSet\u003c\u003e());","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"peienlim":2,"-":60}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.CtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.DeventCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.DtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.ImportCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.SearchTagCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.SwitchCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"jonpwk"},"content":" case CtagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" return new CtagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jonpwk"},"content":" case DtagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jonpwk"},"content":" return new DtagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"owenong1"},"content":" case ImportCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"owenong1"},"content":" return new ImportCommandParser().parse(arguments);","lastModifiedDate":"2024-04-01"},{"lineNumber":96,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"owenong1"},"content":" case ExportCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"owenong1"},"content":" return new ExportCommand();","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"peterXGD"},"content":" case SearchTagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"peterXGD"},"content":" return new SearchCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" case AssignCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" return new AssignCommandParser().parse(arguments);","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"cleowenxuan"},"content":" case SwitchCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"cleowenxuan"},"content":" return new SwitchCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"peterXGD"},"content":" case DeventCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"peterXGD"},"content":" return new DeventCommandParser().parse(arguments);","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cleowenxuan":4,"peterXGD":8,"owenong1":8,"jonpwk":12,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"peterXGD"},"content":" public static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"peterXGD":1,"-":147}},{"path":"src/main/java/seedu/address/logic/parser/AssignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" * Parses input arguments and creates a new AssignCommand object","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":"public class AssignCommandParser implements Parser\u003cAssignCommand\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" public AssignCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" String[] args \u003d userInput.trim().split(\"t/\");","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" String nameOrIndex \u003d args[0];","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" String tags \u003d \" t/\" + String.join(\" t/\", Arrays.copyOfRange(args, 1, args.length));","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(tags, PREFIX_TAG);","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_TAG)","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":" || userInput.equals(\"\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":" Set\u003cTag\u003e tagList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"cleowenxuan"},"content":" Set\u003cTag\u003e eventTagList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"cleowenxuan"},"content":" for (String tagValue : argMultimap.getAllValues(PREFIX_TAG)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"cleowenxuan"},"content":" if (tagValue.startsWith(\"E-\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" Tag eventTag \u003d ParserUtil.parseEventTag(tagValue.substring(2));","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"cleowenxuan"},"content":" eventTagList.add(eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"cleowenxuan"},"content":" Tag normalTag \u003d ParserUtil.parseTag(tagValue);","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"cleowenxuan"},"content":" tagList.add(normalTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" try {","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"jonpwk"},"content":" Object parsedObject \u003d ParserUtil.parseNameIndex(nameOrIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" if (parsedObject instanceof Index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" Index index \u003d (Index) parsedObject;","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" return new AssignCommand(index, dummyName, tagList, eventTagList);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":" } else if (parsedObject instanceof Name) {","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"jonpwk"},"content":" Name name \u003d (Name) parsedObject;","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"jonpwk"},"content":" String nameString \u003d name.toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"cleowenxuan"},"content":" return new AssignCommand(null, nameString, tagList, eventTagList);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"jonpwk"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"jonpwk"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"jonpwk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"jonpwk"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"jonpwk"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"cleowenxuan":16,"jonpwk":53}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":" public static final Prefix PREFIX_FILE \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-04-01"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" public static final Prefix PREFIX_EVENT_TAG \u003d new Prefix(\"t/E-\");","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public static final Prefix PREFIX_START_DATE \u003d new Prefix(\"sd/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" public static final Prefix PREFIX_END_DATE \u003d new Prefix(\"ed/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public static final Prefix PREFIX_DESCRIPTION \u003d new Prefix(\"dc/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"owenong1":1,"peterXGD":4,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/CtagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.CtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" * Parses input arguments and creates a new CtagCommand object.","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":"public class CtagCommandParser implements Parser\u003cCtagCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" * Parses the given {@code String} of arguments in the context of the CtagCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" * and returns a CtagCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" public CtagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jonpwk"},"content":" String tagName \u003d args.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" CtagCommand cmd \u003d new CtagCommand(null, null);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":" if (tagName.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jonpwk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"peterXGD"},"content":" boolean isEventTag \u003d ArgumentTokenizer.findPrefixPosition(args, PREFIX_EVENT_TAG.getPrefix(), 0) !\u003d -1;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":" boolean isTag \u003d tagName.split(\" \").length \u003d\u003d 1;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"peterXGD"},"content":" //check type of tag: e-tag or normal tag","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" if (isTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" //if we have a tag string","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" Tag tag \u003d ParserUtil.parseTag(tagName);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"peterXGD"},"content":" cmd \u003d new CtagCommand(tag, null);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"peterXGD"},"content":" } else if (isEventTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":" //if we have an event tag","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"peterXGD"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" PREFIX_EVENT_TAG, PREFIX_DESCRIPTION, PREFIX_START_DATE, PREFIX_END_DATE);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"peterXGD"},"content":" if (!containsAllPrefix(argMultimap,","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"peterXGD"},"content":" PREFIX_EVENT_TAG, PREFIX_DESCRIPTION, PREFIX_START_DATE, PREFIX_END_DATE)","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"peterXGD"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":" PREFIX_EVENT_TAG, PREFIX_DESCRIPTION, PREFIX_START_DATE, PREFIX_END_DATE);","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" String name \u003d argMultimap.getValue(PREFIX_EVENT_TAG).get();","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":" LocalDateTime sd \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_START_DATE).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":" LocalDateTime ed \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_END_DATE).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"peterXGD"},"content":" String description \u003d argMultimap.getValue(PREFIX_DESCRIPTION).get();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":" EventTag eventTag \u003d new EventTag(name, description, sd, ed);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"peterXGD"},"content":" cmd \u003d new CtagCommand(null, eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" return cmd;","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"peterXGD"},"content":" * Check if all prefixes have input, returns true if so","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"peterXGD"},"content":" * and returns a CtagCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"peterXGD"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"peterXGD"},"content":" public boolean containsAllPrefix(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"peterXGD"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"peterXGD":43,"jonpwk":30}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"cleowenxuan"},"content":" Object parsedObject \u003d ParserUtil.parseNameIndex(args);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":" if (parsedObject instanceof Index) {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":" Index index \u003d (Index) parsedObject;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" return new DeleteCommand(index, dummyName);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":" } else if (parsedObject instanceof Name) {","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"cleowenxuan"},"content":" Name name \u003d (Name) parsedObject;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" String nameString \u003d name.toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" return new DeleteCommand(null, nameString);","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"cleowenxuan":13,"-":26}},{"path":"src/main/java/seedu/address/logic/parser/DeventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.DeventCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":" * Parser for the devent command.","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"public class DeventCommandParser {","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" * Parses the given {@code String} of arguments in the context of the DeventCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" * and returns a DeventCommand object for execution.","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public DeventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\" \");","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" if (nameKeywords.length !\u003d 1) {","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" String tagName \u003d nameKeywords[0];","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" return new DeventCommand(tagName);","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"peterXGD":30}},{"path":"src/main/java/seedu/address/logic/parser/DtagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.DtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":" * Parses input arguments and creates a new DtagCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"public class DtagCommandParser implements Parser\u003cDtagCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":" * Parses the given {@code String} of arguments in the context of the DtagCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":" * and returns a DtagCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" public DtagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" String tagName \u003d args.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" if (tagName.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" return new DtagCommand(tagName);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jonpwk":29}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" Index index \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"cleowenxuan"},"content":" Name name \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"cleowenxuan"},"content":" Object parsedObject \u003d ParserUtil.parseNameIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"cleowenxuan"},"content":" if (parsedObject instanceof Index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"cleowenxuan"},"content":" index \u003d (Index) parsedObject;","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"cleowenxuan"},"content":" } else if (parsedObject instanceof Name) {","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"cleowenxuan"},"content":" name \u003d (Name) parsedObject;","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"cleowenxuan"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"cleowenxuan"},"content":" return new EditCommand(index, dummyName, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"cleowenxuan"},"content":" } else if (name !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"cleowenxuan"},"content":" return new EditCommand(null, name.toString(), editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"cleowenxuan":19,"-":81}},{"path":"src/main/java/seedu/address/logic/parser/ImportCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-01"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FILE;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-01"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.ImportCommand;","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-01"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-04-01"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":" * Parses input arguments and creates a new ImportCommand object","lastModifiedDate":"2024-04-01"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":"public class ImportCommandParser implements Parser\u003cImportCommand\u003e {","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":" * Parses the given {@code String} of arguments in the context of the ImportCommand","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":" * and returns an ImportCommand object for execution.","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" public ImportCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"owenong1"},"content":" PREFIX_FILE);","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":27,"author":{"gitId":"owenong1"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_FILE)","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"owenong1"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"owenong1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ImportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"owenong1"},"content":" String path \u003d argMultimap.getValue(PREFIX_FILE).orElse(\"\");","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"owenong1"},"content":" return new ImportCommand(path);","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"owenong1"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"owenong1"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-04-01"}],"authorContributionMap":{"owenong1":43}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.CtagCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_INVALID_NAME \u003d \"Name is not a valid name in the contacts.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_INVALID_INDEX_OR_NAME \u003d \"Index or Name is invalid.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_INVALID_TIME_FORMAT \u003d \"Format of time is must be of YYYY-MM-DD HH:mm:ss\";","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":62,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" * Parses a {@code String} into an {@code Index} or {@code Name} object based on its content.","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"cleowenxuan"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" * @param input The string to parse, which can be either an index or a name.","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"cleowenxuan"},"content":" * @return Either an {@code Index} or a {@code Name} object based on the input.","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":" * @throws ParseException if the input is neither a valid index nor a valid name.","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":" public static Object parseNameIndex(String input) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"cleowenxuan"},"content":" String trimmedInput \u003d input.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"cleowenxuan"},"content":" if (trimmedInput.equals(\"0\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"cleowenxuan"},"content":" } else if (StringUtil.isNonZeroUnsignedInteger(trimmedInput)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"cleowenxuan"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedInput));","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"cleowenxuan"},"content":" } else if (Name.isValidName(trimmedInput)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"cleowenxuan"},"content":" return new Name(trimmedInput);","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"cleowenxuan"},"content":" * Parses a {@code String tag} into a {@code EventTag}.","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"cleowenxuan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"cleowenxuan"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"cleowenxuan"},"content":" * @param tag The string representing the event tag.","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"cleowenxuan"},"content":" * @return The parsed EventTag object.","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"cleowenxuan"},"content":" * @throws ParseException If the tag string is invalid.","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"cleowenxuan"},"content":" public static Tag parseEventTag(String tag) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"cleowenxuan"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"cleowenxuan"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"cleowenxuan"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"cleowenxuan"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":171,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"peterXGD"},"content":" * Parses a {@code String date} into a {@code LocalDateTime}.","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"peterXGD"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"peterXGD"},"content":" * The String formatted should be of the pattern \"yyyy-MM-dd HH:mm:ss\" by default.","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"peterXGD"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"peterXGD"},"content":" * @throws DateTimeParseException if the given {@code tag} is invalid.","lastModifiedDate":"2024-03-29"},{"lineNumber":178,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"peterXGD"},"content":" public static LocalDateTime parseDateTime(String dateTime) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"peterXGD"},"content":" requireNonNull(dateTime);","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"peterXGD"},"content":" String trimmedTime \u003d dateTime.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"peterXGD"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2024-03-29"},{"lineNumber":183,"author":{"gitId":"peterXGD"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"peterXGD"},"content":" LocalDateTime time \u003d LocalDateTime.parse(trimmedTime, formatter);","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"peterXGD"},"content":" return time;","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"peterXGD"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"cleowenxuan":42,"peterXGD":24,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/SearchCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.SearchTagCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":" * Parser for the search command.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"public class SearchCommandParser implements Parser\u003cSearchTagCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" * Parses the given {@code String} of arguments in the context of the SearchCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" * and returns a SearchCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public SearchTagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\" \");","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" if (nameKeywords.length !\u003d 1) {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" Tag tag \u003d ParserUtil.parseTag(nameKeywords[0]);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" return new SearchTagCommand(tag);","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"peterXGD":30,"peienlim":2}},{"path":"src/main/java/seedu/address/logic/parser/SwitchCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.SearchTagCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.SwitchCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"cleowenxuan"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":" * Parser for the switch command.","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"cleowenxuan"},"content":"public class SwitchCommandParser implements Parser\u003cSwitchCommand\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"cleowenxuan"},"content":" * Parses the given {@code String} of arguments in the context of the SwitchCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":" * and returns a SwitchCommand object for execution.","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"cleowenxuan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"cleowenxuan"},"content":" public SwitchCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"cleowenxuan"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" if (nameKeywords.length !\u003d 1) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"cleowenxuan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" return new SwitchCommand(new Tag(nameKeywords[0]));","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"cleowenxuan":33}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.UniqueTagList;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" public static final EventTag DEFAULT_EVENT_TAG \u003d new EventTag(\"All\", \"All contacts in EventBook\",","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" LocalDateTime.parse(\"2024-04-05T14:00:00\"), LocalDateTime.parse(\"2024-04-05T14:00:00\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" private final UniqueTagList\u003cTag\u003e tagList;","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" private final UniqueTagList\u003cEventTag\u003e eventTagList;","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" tagList \u003d new UniqueTagList\u003cTag\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" eventTagList \u003d new UniqueTagList\u003cEventTag\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" public void setTagList(Set\u003cTag\u003e tagList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" this.tagList.setTags(tagList);","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" public void setEventTagList(Set\u003cEventTag\u003e eventTagList) {","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" this.eventTagList.setTags(eventTagList);","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" setTagList(newData.getTagList());","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" setEventTagList(newData.getEventTagList());","lastModifiedDate":"2024-04-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" //// person-level and tag-level operations","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" * Returns true if a tag {@code tag} exists in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"peienlim"},"content":" public boolean hasTag(Tag tag) {","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"peienlim"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"peienlim"},"content":" return tagList.contains(tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" * Assigns the given tags {@code tags} to {@code targetPerson}.","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":" * {@code tags} must exist in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"jonpwk"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"cleowenxuan"},"content":" public void assign(Person targetPerson, Set\u003cTag\u003e tags, Set\u003cTag\u003e eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"jonpwk"},"content":" targetPerson.addTags(tags);","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":" Set\u003cEventTag\u003e eventsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"cleowenxuan"},"content":" for (Tag t : eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":" EventTag eventTag \u003d getEventTag(t.tagName);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"cleowenxuan"},"content":" eventsToAdd.add(eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"cleowenxuan"},"content":" targetPerson.addEventTags(eventsToAdd);","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":" * Returns true if an event tag {@code tag} exists in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(EventTag eventTag) {","lastModifiedDate":"2024-04-01"},{"lineNumber":122,"author":{"gitId":"peienlim"},"content":" requireNonNull(eventTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":" return eventTagList.contains(eventTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"peienlim"},"content":" * Returns true if an event tag with name {@code eventTagName} exists in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(String eventTagName) {","lastModifiedDate":"2024-03-31"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" requireNonNull(eventTagName);","lastModifiedDate":"2024-03-31"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" return eventTagList.contains(eventTagName);","lastModifiedDate":"2024-03-31"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":140,"author":{"gitId":"jonpwk"},"content":" for (Tag tag:p.getTags()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"jonpwk"},"content":" if (!hasTag(tag)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"jonpwk"},"content":" addTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"jonpwk"},"content":" for (EventTag eventTag:p.getEventTags()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"jonpwk"},"content":" if (!hasEventTag(eventTag)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"jonpwk"},"content":" addEventTag(eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"peienlim"},"content":" * Adds a tag to the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"peienlim"},"content":" * The tag must not already exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"peienlim"},"content":" public void addTag(Tag t) {","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"peienlim"},"content":" tagList.add(t);","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":161,"author":{"gitId":"peienlim"},"content":" * Adds an event tag to the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":162,"author":{"gitId":"peienlim"},"content":" * The event tag must not already exist in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":163,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":164,"author":{"gitId":"peienlim"},"content":" public void addEventTag(EventTag t) {","lastModifiedDate":"2024-04-01"},{"lineNumber":165,"author":{"gitId":"peienlim"},"content":" eventTagList.add(t);","lastModifiedDate":"2024-03-31"},{"lineNumber":166,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":167,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":168,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"peterXGD"},"content":" * Gets an event tag to the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"peienlim"},"content":" * The event tag must not already exist in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"peienlim"},"content":" public EventTag getEventTag(String t) {","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"peienlim"},"content":" return eventTagList.getEventTag(t);","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":182,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":187,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"peienlim"},"content":" * Replaces the given tag {@code target} in the list with {@code editedTag}.","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"peienlim"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"peienlim"},"content":" * The {@code editedTag} must not be the same as another tag in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"peienlim"},"content":" public void setTags(Tag target, Tag editedTag) {","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" requireNonNull(editedTag);","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":" tagList.replace(target, editedTag);","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":199,"author":{"gitId":"peienlim"},"content":" * Replaces the given event tag {@code target} in the list with {@code editedTag}.","lastModifiedDate":"2024-03-31"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":201,"author":{"gitId":"peienlim"},"content":" * The {@code editedTag} must not be the same as another event tag in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":202,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":" public void setEventTags(EventTag target, EventTag editedTag) {","lastModifiedDate":"2024-04-01"},{"lineNumber":204,"author":{"gitId":"peienlim"},"content":" requireNonNull(editedTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":205,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":206,"author":{"gitId":"peienlim"},"content":" eventTagList.replace(target, editedTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":207,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":208,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"peienlim"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2024-03-13"},{"lineNumber":219,"author":{"gitId":"peienlim"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"peienlim"},"content":" public void removeTag(Tag key) {","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"jonpwk"},"content":" for (Person p:persons) {","lastModifiedDate":"2024-04-01"},{"lineNumber":223,"author":{"gitId":"jonpwk"},"content":" p.removeTag(key);","lastModifiedDate":"2024-04-01"},{"lineNumber":224,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"jonpwk"},"content":" tagList.remove(key);","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":228,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":229,"author":{"gitId":"peterXGD"},"content":" * Removes {@code key} event tag from this {@code AddressBook}.","lastModifiedDate":"2024-04-05"},{"lineNumber":230,"author":{"gitId":"peterXGD"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":231,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":232,"author":{"gitId":"peienlim"},"content":" public void removeEventTag(EventTag key) {","lastModifiedDate":"2024-04-01"},{"lineNumber":233,"author":{"gitId":"peterXGD"},"content":" for (Person p:persons) {","lastModifiedDate":"2024-04-05"},{"lineNumber":234,"author":{"gitId":"peterXGD"},"content":" p.removeEventTag(key);","lastModifiedDate":"2024-04-05"},{"lineNumber":235,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":236,"author":{"gitId":"peienlim"},"content":" eventTagList.remove(key);","lastModifiedDate":"2024-03-31"},{"lineNumber":237,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":238,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":239,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":245,"author":{"gitId":"peienlim"},"content":" .add(\"tags\", tagList)","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"peienlim"},"content":" .add(\"event tags\", eventTagList)","lastModifiedDate":"2024-03-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":255,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":256,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cTag\u003e getTagList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":257,"author":{"gitId":"peienlim"},"content":" return tagList.asUnmodifiableObservableSet();","lastModifiedDate":"2024-03-13"},{"lineNumber":258,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":259,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":260,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":261,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-01"},{"lineNumber":262,"author":{"gitId":"peienlim"},"content":" return eventTagList.asUnmodifiableObservableSet();","lastModifiedDate":"2024-03-31"},{"lineNumber":263,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":264,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":266,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":267,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":268,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":271,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":272,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":273,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":277,"author":{"gitId":"peienlim"},"content":" return persons.equals(otherAddressBook.persons)","lastModifiedDate":"2024-03-13"},{"lineNumber":278,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 tagList.equals(otherAddressBook.tagList)","lastModifiedDate":"2024-03-31"},{"lineNumber":279,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 eventTagList.equals(otherAddressBook.eventTagList);","lastModifiedDate":"2024-03-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":282,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":283,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":284,"author":{"gitId":"peienlim"},"content":" return Objects.hash(persons, tagList, eventTagList);","lastModifiedDate":"2024-03-31"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cleowenxuan":8,"peterXGD":7,"jonpwk":22,"peienlim":120,"-":129}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"peienlim"},"content":" * Returns the AddressBook","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jonpwk"},"content":" * Returns true if a tag with the same identity as {@code tag} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jonpwk"},"content":" boolean hasTag(Tag tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"jonpwk"},"content":" * Assigns the given tags {@code tags} to {@code targetPerson}.","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"jonpwk"},"content":" * {@code tags} must exist in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"jonpwk"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"cleowenxuan"},"content":" void assign(Person targetPerson, Set\u003cTag\u003e tags, Set\u003cTag\u003e eventTags);","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jonpwk"},"content":" * Deletes the given tag.","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" * The tag must exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" void deleteTag(Tag tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"jonpwk"},"content":" * Adds the given tag.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jonpwk"},"content":" * {@code tag} must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"jonpwk"},"content":" void addTag(Tag tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"peienlim"},"content":" boolean hasEventTag(EventTag tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"peienlim"},"content":" boolean hasEventTag(String tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"peienlim"},"content":" void deleteEventTag(EventTag tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" void addEventTag(EventTag tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" EventTag getEventTag(String tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":" * Returns an unmodifiable view of the filtered person list","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"peterXGD"},"content":" void updateTagPersonList(Tag t);","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":135,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"peienlim"},"content":" ObservableSet\u003cEventTag\u003e getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":137,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"peienlim"},"content":" void updateEventTagPersonList(EventTag t);","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"peienlim"},"content":" void setCurrentEventTag(EventTag tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"peienlim"},"content":" void clearCurrentEventTag();","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":3,"jonpwk":26,"peienlim":29,"-":84}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" private EventTag currentEventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" currentEventTag \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"jonpwk"},"content":" public boolean hasTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jonpwk"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jonpwk"},"content":" return addressBook.hasTag(tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"cleowenxuan"},"content":" public void assign(Person targetPerson, Set\u003cTag\u003e tags, Set\u003cTag\u003e eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"cleowenxuan"},"content":" requireAllNonNull(targetPerson, tags, eventTags);","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"cleowenxuan"},"content":" addressBook.assign(targetPerson, tags, eventTags);","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"jonpwk"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jonpwk"},"content":" public void deleteTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jonpwk"},"content":" addressBook.removeTag(tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jonpwk"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jonpwk"},"content":" public void addTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jonpwk"},"content":" addressBook.addTag(tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"jonpwk"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"peienlim"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"peienlim"},"content":" return addressBook.hasEventTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":149,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(String tagName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"peienlim"},"content":" requireNonNull(tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"peienlim"},"content":" return addressBook.hasEventTag(tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"peienlim"},"content":" public void deleteEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":159,"author":{"gitId":"peienlim"},"content":" addressBook.removeEventTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":160,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":161,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":162,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"peienlim"},"content":" public void addEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"peterXGD"},"content":" addressBook.addEventTag(tag);","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"peienlim"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"peienlim"},"content":" public EventTag getEventTag(String tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"peienlim"},"content":" return addressBook.getEventTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":186,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":187,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":190,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"peterXGD"},"content":" public void updateTagPersonList(Tag t) {","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"peterXGD"},"content":" requireNonNull(t);","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" if (currentEventTag !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":" Predicate\u003cPerson\u003e eventTagPredicate \u003d person -\u003e person.containsEventTag(currentEventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":" Predicate\u003cPerson\u003e normalTagPredicate \u003d person -\u003e person.containsTag(t);","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" filteredPersons.setPredicate(eventTagPredicate.and(normalTagPredicate));","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"peterXGD"},"content":" filteredPersons.setPredicate(person -\u003e person.containsTag(t));","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":201,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":202,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":" public void updateEventTagPersonList(EventTag t) {","lastModifiedDate":"2024-04-03"},{"lineNumber":204,"author":{"gitId":"peienlim"},"content":" requireNonNull(t);","lastModifiedDate":"2024-04-03"},{"lineNumber":205,"author":{"gitId":"peienlim"},"content":" setCurrentEventTag(t);","lastModifiedDate":"2024-04-03"},{"lineNumber":206,"author":{"gitId":"peienlim"},"content":" filteredPersons.setPredicate(person -\u003e person.containsEventTag(currentEventTag));","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":208,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":209,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":210,"author":{"gitId":"peienlim"},"content":" * Sets the current event tag to filter by.","lastModifiedDate":"2024-04-02"},{"lineNumber":211,"author":{"gitId":"peienlim"},"content":" * @param eventTag The event tag to filter by.","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"peienlim"},"content":" public void setCurrentEventTag(EventTag eventTag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"peienlim"},"content":" this.currentEventTag \u003d eventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"peienlim"},"content":" * Clears the current event tag.","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":220,"author":{"gitId":"peienlim"},"content":" public void clearCurrentEventTag() {","lastModifiedDate":"2024-04-02"},{"lineNumber":221,"author":{"gitId":"peienlim"},"content":" this.currentEventTag \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":223,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":231,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":241,"author":{"gitId":"peienlim"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Event List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-04-01"},{"lineNumber":242,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":243,"author":{"gitId":"peienlim"},"content":" * Returns an unmodifiable view of the list of {@code EventTag} backed by the internal list of","lastModifiedDate":"2024-04-01"},{"lineNumber":244,"author":{"gitId":"peienlim"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-04-01"},{"lineNumber":245,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":246,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-01"},{"lineNumber":247,"author":{"gitId":"peienlim"},"content":" return addressBook.getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":248,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":249,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cleowenxuan":3,"peterXGD":6,"jonpwk":24,"peienlim":69,"-":148}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" ObservableSet\u003cTag\u003e getTagList();","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" ObservableSet\u003cEventTag\u003e getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"peienlim":6,"-":17}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":" * Guarantees: details are present and not null, field values are validated.","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" private final Set\u003cEventTag\u003e eventTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Set\u003cEventTag\u003e eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" this.eventTags.addAll(eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" * Returns an immutable event tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" * if modification is attempted.","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" public Set\u003cEventTag\u003e getEventTags() {","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" return Collections.unmodifiableSet(eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"peterXGD"},"content":" * Returns true if a person contains a tag, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"peterXGD"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"peterXGD"},"content":" public boolean containsTag(Tag tag) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"peterXGD"},"content":" for (Tag t : tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"peterXGD"},"content":" if (t.isSameTag(tag)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"peterXGD"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"peterXGD"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"peienlim"},"content":" * Returns true if a person contains a tag, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"peienlim"},"content":" * if modification is attempted.","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"peienlim"},"content":" public boolean containsEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"peienlim"},"content":" for (EventTag t : eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"peienlim"},"content":" if (t.isSameTag(tag)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"peienlim"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"peienlim"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":" * Removes a tag from the Person if it exists in the tags for this Person.","lastModifiedDate":"2024-04-01"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" public void removeTag(Tag key) {","lastModifiedDate":"2024-04-01"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":" if (this.containsTag(key)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":106,"author":{"gitId":"jonpwk"},"content":" tags.remove(key);","lastModifiedDate":"2024-04-01"},{"lineNumber":107,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":108,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":109,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"cleowenxuan"},"content":" * Adds an event tag to the Person.","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"cleowenxuan"},"content":" * @param eventTags The event tags to be added.","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"cleowenxuan"},"content":" public void addEventTags(Set\u003cEventTag\u003e eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"cleowenxuan"},"content":" this.eventTags.addAll(eventTags);","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":119,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"jonpwk"},"content":" * Adds a tag to the Person.","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"jonpwk"},"content":" public void addTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"jonpwk"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"jonpwk"},"content":" * Removes a tag from the Person if it exists in the tags for this Person.","lastModifiedDate":"2024-04-03"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" public void removeEventTag(EventTag key) {","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" if (this.containsEventTag(key)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" eventTags.remove(key);","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 eventTags.equals(otherPerson.eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"peienlim"},"content":" .add(\"eventTags\", eventTags)","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cleowenxuan":9,"peterXGD":13,"jonpwk":19,"peienlim":35,"-":114}},{"path":"src/main/java/seedu/address/model/tag/EventTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":" * Represents an EventTag in the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":"public class EventTag extends Tag {","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" public final String description;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public final LocalDateTime startDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public final LocalDateTime endDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" * Constructs a {@code EventTag}.","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" * @param description A Description for the event.","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" public EventTag(String tagName, String description, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" super(tagName);","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" requireNonNull(tagName);","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":" public String getCodeFormat() {","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" return \"t/E-\" + tagName + \" dc/\" + description + \" sd/\" + startDate.format(formatter)","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" + \" ed/\" + endDate.format(formatter);","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"peterXGD"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"peterXGD"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"peterXGD"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" if (!(other instanceof EventTag)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"peterXGD"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"peterXGD"},"content":" EventTag otherTag \u003d (EventTag) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"peterXGD"},"content":" boolean nameEqual \u003d tagName.equals(otherTag.tagName) \u0026\u0026 description.equals(otherTag.description);","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":" boolean timeEqual \u003d startDate.isEqual(((EventTag) other).startDate)","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":" \u0026\u0026 endDate.equals(((EventTag) other).endDate);","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" return nameEqual \u0026\u0026 timeEqual;","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"peterXGD"},"content":" String startTime \u003d startDate.format(formatter);","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"peterXGD"},"content":" String endTime \u003d endDate.format(formatter);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"peterXGD"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027 + \" from \" + startTime + \" to \" + endTime + \".\\n\" + description;","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"peterXGD":62,"owenong1":6}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric and not contain spaces\";","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" * Returns true if both tags have the same name.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" public boolean isSameTag(Tag otherTag) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" if (otherTag \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" return otherTag !\u003d null","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 otherTag.tagName.equals(tagName);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"jonpwk"},"content":" * Returns true if this tag has the given name.","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" public boolean hasName(String tagName) {","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"jonpwk"},"content":" return this.tagName.equals(tagName);","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jonpwk":7,"peienlim":12,"-":61}},{"path":"src/main/java/seedu/address/model/tag/UniqueTagList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.DuplicateTagException;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.TagNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":" * Represents a list of unique tags.","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" * A UniqueTagList ensures that no duplicate tags are stored.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":"public class UniqueTagList\u003cT extends Tag\u003e implements Iterable\u003cT\u003e {","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" private final ObservableSet\u003cT\u003e internalSet \u003d FXCollections.observableSet();","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" * Constructs an empty UniqueTagList.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" public UniqueTagList() {}","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" * Constructs a UniqueTagList with the given tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" * @param tags A list of tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" public UniqueTagList(Set\u003cT\u003e tags) {","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" internalSet.addAll(tags);","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jonpwk"},"content":" * Returns true if the list contains an equivalent tag as the given argument of type Tag.","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" public boolean contains(T toCheck) {","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" return internalSet.stream().anyMatch(tag -\u003e tag.equals(toCheck));","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" * Returns true if the list contains an equivalent tag as the given argument of type String.","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" public boolean contains(String toCheck) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" return internalSet.stream().anyMatch(tag -\u003e tag.tagName.equals(toCheck));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" * Adds a tag to the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" * The tag must not already exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"peienlim"},"content":" public void add(T toAdd) {","lastModifiedDate":"2024-04-01"},{"lineNumber":58,"author":{"gitId":"peienlim"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"peienlim"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" throw new DuplicateTagException();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" internalSet.add(toAdd);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" * Replaces the specified tag in the list with the new tag.","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" * @param oldTag The tag to be replaced.","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" * @param newTag The new tag to replace the old tag.","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" public void replace(T oldTag, T newTag) {","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" requireAllNonNull(oldTag, newTag);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" if (!internalSet.contains(oldTag)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" if (!oldTag.isSameTag(newTag) \u0026\u0026 contains(newTag)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" throw new DuplicateTagException();","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" internalSet.remove(oldTag);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" internalSet.add(newTag);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"peienlim"},"content":" * Removes the equivalent tag from the list.","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"jonpwk"},"content":" * The argument of type Tag must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"peienlim"},"content":" public void remove(T toRemove) {","lastModifiedDate":"2024-04-01"},{"lineNumber":90,"author":{"gitId":"peienlim"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"peienlim"},"content":" if (!internalSet.remove(toRemove)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"peienlim"},"content":" throw new TagNotFoundException();","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jonpwk"},"content":" * Removes the equivalent tag from the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jonpwk"},"content":" * The argument of type String must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jonpwk"},"content":" public void remove(String toRemove) {","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":" if (!internalSet.removeIf(tag -\u003e tag.tagName.equals(toRemove))) {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" throw new TagNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"peienlim"},"content":" * Replaces all tags in this list with the tags from the replacement list.","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"peienlim"},"content":" * @param replacement The replacement UniqueTagList.","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"peienlim"},"content":" public void setTags(UniqueTagList\u003cT\u003e replacement) {","lastModifiedDate":"2024-04-01"},{"lineNumber":111,"author":{"gitId":"peienlim"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"peienlim"},"content":" internalSet.clear();","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"peienlim"},"content":" internalSet.addAll(replacement.internalSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":" * Replaces the tags in the list with the given set of tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" * @param tags The set of tags to replace the current tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" public void setTags(Set\u003cT\u003e tags) {","lastModifiedDate":"2024-04-01"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":" requireAllNonNull(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"peienlim"},"content":" internalSet.clear();","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":" internalSet.addAll(tags);","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"peienlim"},"content":" * Returns the event tag with the specified event tag name, if it exists in the list.","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":" * Returns null if no such event tag is found.","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" * @param eventTagName The name of the event tag to retrieve.","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" * @return The event tag with the specified event tag name, or null if not found.","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" public EventTag getEventTag(String eventTagName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":" requireNonNull(eventTagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"peienlim"},"content":" for (T tag : internalSet) {","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"peienlim"},"content":" if (tag instanceof EventTag \u0026\u0026 tag.tagName.equals(eventTagName)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"peienlim"},"content":" return (EventTag) tag;","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"peienlim"},"content":" return null;","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"peterXGD"},"content":" * Removes all the event tags given a specified event tag name, if it exists in the list.","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"peterXGD"},"content":" * Returns null if no such event tag is found.","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"peterXGD"},"content":" * @param eventTagName The name of the event tag to retrieve.","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"peterXGD"},"content":" * @return The event tag with the specified event tag name, or null if not found.","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"peterXGD"},"content":" public EventTag removeEvent(String eventTagName) {","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"peterXGD"},"content":" requireNonNull(eventTagName);","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"peterXGD"},"content":" for (T tag : internalSet) {","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"peterXGD"},"content":" if (tag instanceof EventTag \u0026\u0026 tag.tagName.equals(eventTagName)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"peterXGD"},"content":" return (EventTag) tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"peterXGD"},"content":" return null;","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"peienlim"},"content":" * Returns the backing set as an unmodifiable {@code ObservableSet}.","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cT\u003e asUnmodifiableObservableSet() {","lastModifiedDate":"2024-04-01"},{"lineNumber":162,"author":{"gitId":"peienlim"},"content":" return FXCollections.unmodifiableObservableSet(internalSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"peienlim"},"content":" public Iterator\u003cT\u003e iterator() {","lastModifiedDate":"2024-04-01"},{"lineNumber":167,"author":{"gitId":"peienlim"},"content":" return internalSet.iterator();","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"peienlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"peienlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"peienlim"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"peienlim"},"content":" // handle nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"peienlim"},"content":" if (!(other instanceof UniqueTagList\u003c?\u003e)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":178,"author":{"gitId":"peienlim"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003c?\u003e otherUniqueTagSet \u003d (UniqueTagList\u003c?\u003e) other;","lastModifiedDate":"2024-04-01"},{"lineNumber":182,"author":{"gitId":"peienlim"},"content":" return internalSet.equals(otherUniqueTagSet.internalSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"peienlim"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"peienlim"},"content":" return internalSet.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"peienlim"},"content":" * Returns true if {@code tags} contains only unique tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" private boolean tagsAreUnique(Set\u003cT\u003e tags) {","lastModifiedDate":"2024-04-01"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":" Set\u003cT\u003e uniqueTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":" for (T tag : tags) {","lastModifiedDate":"2024-04-01"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" if (!uniqueTags.add(tag)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":" return false; // Duplicate tag found","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":" return true; // No duplicate tags found","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"peterXGD":16,"jonpwk":21,"peienlim":166}},{"path":"src/main/java/seedu/address/model/tag/exceptions/DuplicateTagException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.model.tag.exceptions;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":" * Signals that the operation will result in duplicate Tags (Tags are considered duplicates if they have the same","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":" * name).","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"public class DuplicateTagException extends RuntimeException {","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":" public DuplicateTagException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":" super(\"Operation would result in duplicate tags\");","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"peienlim":12}},{"path":"src/main/java/seedu/address/model/tag/exceptions/TagNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.model.tag.exceptions;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":" * Signals that the operation is unable to find the specified tag.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"public class TagNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"peienlim":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"marketing|marketing dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"marketing|marketing dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"logistics|logistics dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"logistics|logistics dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"logistics|logistics dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"peienlim"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"VPD|vice project director|2024-04-01T09:00:00|2024-04-01T09:00:00\"))","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" * Returns a set of event tags containing the list of strings given.","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" public static Set\u003cEventTag\u003e getEventTagSet(String... strings) {","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" Set\u003cEventTag\u003e eventTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" for (String s : strings) {","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" // parse string to extract tag name, description, start date, and end date","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" // eg. \"tagName|description|startDate|endDate\"","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" String[] parts \u003d s.split(\"\\\\|\");","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" String tagName \u003d parts[0];","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":" String description \u003d parts[1];","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"peienlim"},"content":" LocalDateTime startDate \u003d LocalDateTime.parse(parts[2]);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" LocalDateTime endDate \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"peienlim"},"content":" eventTags.add(new EventTag(tagName, description, startDate, endDate));","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" return eventTags;","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"peienlim":34,"-":54}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedEventTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":" * Jackson-friendly version of {@link EventTag}.","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"class JsonAdaptedEventTag {","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":" private final String tagName;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" private final String description;","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" private final LocalDateTime startDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" private final LocalDateTime endDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":" * Constructs a {@code JsonAdaptedEventTag} with the given details.","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" @JsonCreator","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" public JsonAdaptedEventTag(@JsonProperty(\"tagName\") String tagName,","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"description\") String description,","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"startDate\") LocalDateTime startDate,","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"endDate\") LocalDateTime endDate) {","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" * Converts a given {@code EventTag} into this class for Jackson use.","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" public JsonAdaptedEventTag(EventTag source) {","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" tagName \u003d source.tagName;","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" description \u003d source.description;","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" startDate \u003d source.startDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" endDate \u003d source.endDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"tagName\")","lastModifiedDate":"2024-04-01"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" public String getTagName() {","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" return tagName;","lastModifiedDate":"2024-04-01"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" public String getDescription() {","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" return description;","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" public LocalDateTime getStartDate() {","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"peienlim"},"content":" return startDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" public LocalDateTime getEndDate() {","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" return endDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" * Converts this Jackson-friendly adapted event tag object into the model\u0027s {@code EventTag} object.","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" public EventTag toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" return new EventTag(tagName, description, startDate, endDate);","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"peienlim":76}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" private final List\u003cJsonAdaptedEventTag\u003e eventTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"eventTags\") List\u003cJsonAdaptedEventTag\u003e eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":" if (eventTags !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":" this.eventTags.addAll(eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" eventTags.addAll(source.getEventTags().stream()","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" .map(JsonAdaptedEventTag::new)","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" final List\u003cEventTag\u003e personEventTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"peienlim"},"content":" for (JsonAdaptedEventTag eventTag : eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"peienlim"},"content":" personEventTags.add(eventTag.toModelType());","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" final Set\u003cEventTag\u003e modelEventTags \u003d new HashSet\u003c\u003e(personEventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelEventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"peienlim":17,"-":107}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" public static final String MESSAGE_DUPLICATE_TAG \u003d \"Tags list contains duplicate tag(s).\";","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" public static final String MESSAGE_DUPLICATE_EVENT_TAG \u003d \"Events tag list contains duplicate event tag(s).\";","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" private final List\u003cJsonAdaptedTag\u003e tagList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" private final List\u003cJsonAdaptedEventTag\u003e eventTagList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"tagList\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"eventTagList\") List\u003cJsonAdaptedEventTag\u003e eventTags) {","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" this.tagList.addAll(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" this.eventTagList.addAll(eventTags);","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" tagList.addAll(source.getTagList().stream().map(JsonAdaptedTag::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" eventTagList.addAll(source.getEventTagList().stream()","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" .map(JsonAdaptedEventTag::new)","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" for (JsonAdaptedTag jsonAdaptedTag : tagList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" Tag tag \u003d jsonAdaptedTag.toModelType();","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" if (addressBook.hasTag(tag)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" for (JsonAdaptedEventTag jsonAdaptedEventTag : eventTagList) {","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" EventTag eventTag \u003d jsonAdaptedEventTag.toModelType();","lastModifiedDate":"2024-04-01"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" if (addressBook.hasEventTag(eventTag)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_EVENT_TAG);","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" addressBook.addEventTag(eventTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"peienlim":30,"-":59}},{"path":"src/main/java/seedu/address/ui/EventCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":" * An UI component that displays information of a {@code EventTag}.","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"public class EventCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":" private static final String FXML \u003d \"EventCard.fxml\";","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":" public final EventTag eventTag;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" private Label eventName;","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" * Creates a {@code EventCard} with the given {@code EventTag} to display.","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" public EventCard(EventTag eventTag) {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" super(FXML);","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" this.eventTag \u003d eventTag;","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" eventName.setText(eventTag.tagName);","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"peienlim":31}},{"path":"src/main/java/seedu/address/ui/EventListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static seedu.address.model.AddressBook.DEFAULT_EVENT_TAG;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import java.util.List;","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" * Panel containing the list of events.","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":"public class EventListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" private static final String FXML \u003d \"EventListPanel.fxml\";","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" private final Logger logger \u003d LogsCenter.getLogger(EventListPanel.class);","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" private ListView\u003cEventTag\u003e eventListView;","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" * Creates a {@code EventListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" public EventListPanel(ObservableSet\u003cEventTag\u003e eventSet) {","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" super(FXML);","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" eventListView.setCellFactory(listView -\u003e new EventListViewCell());","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" addDefaultEventCard();","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" addExistingTagEventCard(eventSet);","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" eventListView.getSelectionModel().select(DEFAULT_EVENT_TAG);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" private void addDefaultEventCard() {","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" eventListView.getItems().add(DEFAULT_EVENT_TAG);","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" private void addExistingTagEventCard(ObservableSet\u003cEventTag\u003e eventSet) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" List\u003cEventTag\u003e eventList \u003d new ArrayList\u003c\u003e(eventSet);","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"peienlim"},"content":" eventListView.getItems().addAll(eventList);","lastModifiedDate":"2024-04-01"},{"lineNumber":46,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //@@author {peienlim}-reused","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":" //Reused from https://github.com/AY2324S1-CS2103T-F08-3/tp","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":" //(src/main/java/seedu/address/ui/AnimalListPanel.java) Lines 45 to 51 with minor modifications","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void selectEvent(EventTag eventTag) {","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":" eventListView.getSelectionModel().select(eventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void clearEventSelection() {","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" eventListView.getSelectionModel().select(DEFAULT_EVENT_TAG);","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Event} using a {@code EventCard}.","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" class EventListViewCell extends ListCell\u003cEventTag\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" protected void updateItem(EventTag eventTag, boolean empty) {","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" super.updateItem(eventTag, empty);","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" if (empty || eventTag \u003d\u003d null) {","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" setText(null);","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" } else {","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" EventCard eventCard \u003d new EventCard(eventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" setGraphic(eventCard.getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"peienlim":68,"-":11}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static seedu.address.model.AddressBook.DEFAULT_EVENT_TAG;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" private EventListPanel eventListPanel;","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" private StackPane eventListPanelPlaceholder;","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" eventListPanel \u003d new EventListPanel(logic.getEventTagList());","lastModifiedDate":"2024-04-01"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":" eventListPanelPlaceholder.getChildren().add(eventListPanel.getRoot());","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" //@@author {peienlim}-reused","lastModifiedDate":"2024-04-03"},{"lineNumber":201,"author":{"gitId":"-"},"content":" //Reused from https://github.com/AY2324S1-CS2103T-F08-3/tp","lastModifiedDate":"2024-04-03"},{"lineNumber":202,"author":{"gitId":"-"},"content":" //(src/main/java/seedu/address/ui/MainWindow.java) Lines 196 to 202 with minor modifications","lastModifiedDate":"2024-04-03"},{"lineNumber":203,"author":{"gitId":"-"},"content":" Optional\u003cEventTag\u003e eventTag \u003d commandResult.getEventTag();","lastModifiedDate":"2024-04-03"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":205,"author":{"gitId":"-"},"content":" if (eventTag.isPresent()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":206,"author":{"gitId":"-"},"content":" if (eventTag.get().equals(DEFAULT_EVENT_TAG)) { // list command, change back to all contacts tab","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"-"},"content":" eventListPanel.clearEventSelection();","lastModifiedDate":"2024-04-03"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":209,"author":{"gitId":"-"},"content":" eventListPanel.selectEvent(eventTag.get());","lastModifiedDate":"2024-04-03"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":211,"author":{"gitId":"-"},"content":" //@@author {peienlim}","lastModifiedDate":"2024-04-03"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":213,"author":{"gitId":"-"},"content":" eventListPanel \u003d new EventListPanel(logic.getEventTagList());","lastModifiedDate":"2024-04-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" eventListPanelPlaceholder.getChildren().add(eventListPanel.getRoot());","lastModifiedDate":"2024-04-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"peienlim":11,"-":213}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" private FlowPane eventTags;","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" person.getEventTags().stream()","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" .sorted(Comparator.comparing(eventTag -\u003e eventTag.tagName))","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" .forEach(eventTag -\u003e eventTags.getChildren().add(new Label(eventTag.tagName)));","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"peienlim":5,"-":59}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"peienlim"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-04-03"},{"lineNumber":344,"author":{"gitId":"peienlim"},"content":" -fx-padding: 2 0 2 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":345,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":354,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":356,"author":{"gitId":"peienlim"},"content":"#eventTags {","lastModifiedDate":"2024-04-03"},{"lineNumber":357,"author":{"gitId":"peienlim"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-04-03"},{"lineNumber":358,"author":{"gitId":"peienlim"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-04-03"},{"lineNumber":359,"author":{"gitId":"peienlim"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-04-03"},{"lineNumber":360,"author":{"gitId":"peienlim"},"content":" -fx-padding: 2 0 2 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":361,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-04-03"},{"lineNumber":362,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":363,"author":{"gitId":"peienlim"},"content":"#eventTags .label {","lastModifiedDate":"2024-04-03"},{"lineNumber":364,"author":{"gitId":"peienlim"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-04-03"},{"lineNumber":365,"author":{"gitId":"peienlim"},"content":" -fx-background-color: #8e7ebd;","lastModifiedDate":"2024-04-03"},{"lineNumber":366,"author":{"gitId":"peienlim"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-04-03"},{"lineNumber":367,"author":{"gitId":"peienlim"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-04-03"},{"lineNumber":368,"author":{"gitId":"peienlim"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-04-03"},{"lineNumber":369,"author":{"gitId":"peienlim"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-04-03"},{"lineNumber":370,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"peienlim":18,"-":352}},{"path":"src/main/resources/view/EventCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"peienlim"},"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-30"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"50\" prefHeight\u003d\"50\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":" \u003cLabel fx:id\u003d\"eventName\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"peienlim":17}},{"path":"src/main/resources/view/EventListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":" \u003cListView fx:id\u003d\"eventListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"peienlim":9}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":" \u003cVBox fx:id\u003d\"eventList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"150\" prefWidth\u003d\"150\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" \u003cStackPane fx:id\u003d\"eventListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"peienlim"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"peienlim":11,"-":58}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" \u003cFlowPane fx:id\u003d\"eventTags\" /\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"peienlim":1,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"jonpwk"},"content":" public boolean hasTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"jonpwk"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"cleowenxuan"},"content":" public void assign(Person targetPerson, Set\u003cTag\u003e tags, Set\u003cTag\u003e eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":162,"author":{"gitId":"jonpwk"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"jonpwk"},"content":" public void deleteTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"jonpwk"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"jonpwk"},"content":" public void addTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"jonpwk"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(String tagName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"peienlim"},"content":" public void deleteEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":189,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":190,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"peienlim"},"content":" public void addEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":" public EventTag getEventTag(String tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"peienlim"},"content":" public void updateEventTagPersonList(EventTag t) {","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":219,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":220,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":221,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"peienlim"},"content":" public void setCurrentEventTag(EventTag tagName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":223,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":224,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":225,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":226,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":227,"author":{"gitId":"peienlim"},"content":" public void clearCurrentEventTag() {","lastModifiedDate":"2024-04-03"},{"lineNumber":228,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":229,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":230,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":231,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"peterXGD"},"content":" public void updateTagPersonList(Tag t) {","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"peterXGD"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":239,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":241,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":249,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":255,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":257,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":258,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":261,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":263,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":268,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":270,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":273,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":274,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":5,"jonpwk":22,"peienlim":47,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.testutil.TypicalNames.NAME_ALICE;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" public static final String DUMMY_NAME \u003d \" \";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"cleowenxuan"},"content":" String targetName \u003d NAME_ALICE.toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex, targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"cleowenxuan"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":" + \", targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"cleowenxuan":13,"-":111}},{"path":"src/test/java/seedu/address/logic/commands/DtagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"public class DtagCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jonpwk":4}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.testutil.TypicalNames.NAME_ALICE;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"cleowenxuan"},"content":" public static final String DUMMY_NAME \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, new EditPersonDescriptor());","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, DUMMY_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"cleowenxuan"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, DESC_AMY);","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"cleowenxuan"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, copyDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"cleowenxuan"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DUMMY_NAME, DESC_AMY)));","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"cleowenxuan"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, DESC_BOB)));","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"cleowenxuan"},"content":" String name \u003d NAME_ALICE.toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(index, name, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"cleowenxuan"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", name\u003d\"","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"cleowenxuan"},"content":" + name + \", editPersonDescriptor\u003d\" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"cleowenxuan":18,"-":167}},{"path":"src/test/java/seedu/address/logic/commands/ExportCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"public class ExportCommandTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":" //todo","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"owenong1":5}},{"path":"src/test/java/seedu/address/logic/commands/ImportCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-01"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-01"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ImportCommand.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":"public class ImportCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":" public void execute_invalidFilePath_failure() {","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":" assertCommandFailure(new ImportCommand(\"xxx\"), model, ImportCommand.MESSAGE_FILE_NOT_FOUND);","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":" public void execute_invalidFileValues_failure() {","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"owenong1"},"content":" assertCommandFailure(new ImportCommand(\"./src/test/data/ImportTest/invalidValueTest.csv\"),","lastModifiedDate":"2024-04-01"},{"lineNumber":27,"author":{"gitId":"owenong1"},"content":" model, ImportCommand.MESSAGE_VALUES_FORMAT_ERROR","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"owenong1"},"content":" + \"Tags names should be alphanumeric and not contain spaces\");","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"owenong1"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"owenong1"},"content":" public void execute_invalidFieldValues_failure() {","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"owenong1"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":" assertCommandFailure(new ImportCommand(\"./src/test/data/ImportTest/invalidFieldsTest.csv\"),","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" model, ImportCommand.MESSAGE_FIELDS_FORMAT_ERROR);","lastModifiedDate":"2024-04-01"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"owenong1":39}},{"path":"src/test/java/seedu/address/logic/commands/SearchTagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":"public class SearchTagCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" private Model model;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" @BeforeEach","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" public void setUp() {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" public void execute_friendTagSearch_showSuccess() throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" SearchTagCommand sc \u003d new SearchTagCommand(new Tag(\"friends\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" CommandResult result \u003d sc.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" assertEquals(SearchTagCommand.MESSAGE_SUCCESS, result.getFeedbackToUser());","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" public void execute_unknownTagSearch_throws() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":" SearchTagCommand sc \u003d new SearchTagCommand(new Tag(\"Uzuzuzuz\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"peterXGD"},"content":" assertThrows(CommandException.class, () -\u003e sc.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"cleowenxuan":2,"peterXGD":34}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"cleowenxuan"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON, dummyName), command);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, dummyName, descriptor), command);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"cleowenxuan":4,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON, dummyName));","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"cleowenxuan":3,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/DtagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.DtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"public class DtagCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":" private DtagCommandParser parser \u003d new DtagCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" public void parse_validArgs_returnsDtagCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" assertParseSuccess(parser, \"friends\", new DtagCommand(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jonpwk":27}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"cleowenxuan"},"content":" private static final String DUMMY_NAME \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"cleowenxuan"},"content":" // no field specified","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, VALID_NAME_AMY, EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, \"-5\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, \"0\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"cleowenxuan"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, \"tom i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"cleowenxuan"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"cleowenxuan"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"cleowenxuan"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"cleowenxuan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"cleowenxuan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"cleowenxuan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"cleowenxuan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"cleowenxuan"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"cleowenxuan"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"cleowenxuan":18,"-":190}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":197,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":198,"author":{"gitId":"peterXGD"},"content":" public void parseDateTime_stringWithInvalidTime_throwsException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"peterXGD"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDateTime(\"2020-2-3 15:03:03\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":200,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"peterXGD":5,"-":196}},{"path":"src/test/java/seedu/address/logic/parser/SearchTagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.SearchTagCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"public class SearchTagCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" private SearchCommandParser parser \u003d new SearchCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" public void parse_moreThanOneArg_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" assertParseFailure(parser, \"2222 3333 \",","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" public void parse_validArgs_returnsSearchCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" SearchTagCommand expectedFindCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" new SearchTagCommand(new Tag(\"friends\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" assertParseSuccess(parser, \"friends\", expectedFindCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":33}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import static seedu.address.testutil.TypicalTags.FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.DuplicateTagException;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.TagNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" assertEquals(Collections.emptySet(), addressBook.getTagList());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":" List\u003cTag\u003e newTags \u003d List.of();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" List\u003cEventTag\u003e newEventTags \u003d List.of();","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons, newTags, newEventTags);","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" public void hasTag_nullTag_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasTag((Tag) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"peienlim"},"content":" public void hasTag_tagNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"peienlim"},"content":" assertFalse(addressBook.hasTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":" public void hasTag_tagInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(FRIEND);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"peienlim"},"content":" assertTrue(addressBook.hasTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"peienlim"},"content":" public void hasTag_tagWithSameNameInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(FRIEND);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"peienlim"},"content":" Tag editedFriend \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"peienlim"},"content":" assertTrue(addressBook.hasTag(editedFriend));","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" public void addDuplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.addPerson(ALICE));","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" public void addDuplicateTag_throwsDuplicateTagException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(FRIEND);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":" assertThrows(DuplicateTagException.class, () -\u003e addressBook.addTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" public void setPerson_withDifferentIdentityFields_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"peienlim"},"content":" assertDoesNotThrow(() -\u003e addressBook.setPerson(ALICE, editedAlice));","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"peienlim"},"content":" public void setTags_withUniqueTags_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"peienlim"},"content":" Set\u003cTag\u003e uniqueTags \u003d new HashSet\u003c\u003e(Arrays.asList(FRIEND, new Tag(\"colleague\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"peienlim"},"content":" assertDoesNotThrow(() -\u003e addressBook.setTagList(uniqueTags));","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"peienlim"},"content":" public void removePerson_notExistingPerson_throwsPersonNotFoundException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"peienlim"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e addressBook.removePerson(ALICE));","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"peienlim"},"content":" public void removeTag_notExistingTag_throwsTagNotFoundException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"peienlim"},"content":" assertThrows(TagNotFoundException.class, () -\u003e addressBook.removeTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":154,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"peienlim"},"content":" public void removePerson_existingPerson_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"peienlim"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"peienlim"},"content":" assertDoesNotThrow(() -\u003e addressBook.removePerson(ALICE));","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"peienlim"},"content":" public void removeTag_existingTag_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(FRIEND);","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"peienlim"},"content":" assertDoesNotThrow(() -\u003e addressBook.removeTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"peienlim"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList()","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"jonpwk"},"content":" + \", tags\u003d\" + addressBook.getTagList() + \", event tags\u003d\" + addressBook.getEventTagList() + \"}\";","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"peienlim"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"peienlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"peienlim"},"content":" public void getTagList_modifySet_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"peienlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getTagList().remove(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":190,"author":{"gitId":"peienlim"},"content":" private final ObservableSet\u003cTag\u003e tags \u003d FXCollections.observableSet();","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"peienlim"},"content":" private final ObservableSet\u003cEventTag\u003e eventTags \u003d FXCollections.observableSet();","lastModifiedDate":"2024-04-01"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons, Collection\u003cTag\u003e tags, Collection\u003cEventTag\u003e eventTags) {","lastModifiedDate":"2024-03-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" this.eventTags.addAll(eventTags);","lastModifiedDate":"2024-03-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cTag\u003e getTagList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"peienlim"},"content":" return tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":209,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":210,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-01"},{"lineNumber":211,"author":{"gitId":"peienlim"},"content":" return eventTags;","lastModifiedDate":"2024-03-31"},{"lineNumber":212,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"jonpwk":5,"peienlim":106,"-":104}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":" + \", eventTags\u003d\" + ALICE.getEventTags() + \"}\";","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"peienlim":2,"-":98}},{"path":"src/test/java/seedu/address/model/tag/EventTagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"public class EventTagTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" assertThrows(NullPointerException.class, () -\u003e new EventTag(null, \"test\",","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" LocalDateTime.now(), LocalDateTime.now()));","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new EventTag(invalidTagName, \"test\",","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" LocalDateTime.now(), LocalDateTime.now()));","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"peterXGD":23}},{"path":"src/test/java/seedu/address/model/tag/UniqueTagListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.DuplicateTagException;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.TagNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"public class UniqueTagListTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" private final UniqueTagList\u003cTag\u003e uniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" public void contains_nullTag_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.contains((Tag) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" public void contains_nullTagString_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.contains((String) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" public void contains_tagNotInList_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" assertFalse(uniqueTagList.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jonpwk"},"content":" public void contains_tagNotInListString_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jonpwk"},"content":" assertFalse(uniqueTagList.contains(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" public void contains_tagInList_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" assertTrue(uniqueTagList.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" public void contains_tagInListString_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" assertTrue(uniqueTagList.contains(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" public void contains_tagWithSameNameInList_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" assertTrue(uniqueTagList.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" public void add_nullTag_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.add(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" public void add_duplicateTag_throwsDuplicateTagException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" assertThrows(DuplicateTagException.class, () -\u003e uniqueTagList.add(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" public void remove_nullTag_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.remove((Tag) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jonpwk"},"content":" public void remove_nullTagString_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.remove((String) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" public void remove_tagDoesNotExist_throwsTagNotFoundException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" assertThrows(TagNotFoundException.class, () -\u003e uniqueTagList.remove(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jonpwk"},"content":" public void remove_tagDoesNotExistString_throwsTagNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jonpwk"},"content":" assertThrows(TagNotFoundException.class, () -\u003e uniqueTagList.remove(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"peienlim"},"content":" public void remove_existingTag_removesTag() {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"peienlim"},"content":" uniqueTagList.remove(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003cTag\u003e expectedUniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":95,"author":{"gitId":"peienlim"},"content":" assertEquals(expectedUniqueTagList, uniqueTagList);","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jonpwk"},"content":" public void remove_existingTagString_removesTag() {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jonpwk"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" uniqueTagList.remove(\"friends\");","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003cTag\u003e expectedUniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" assertEquals(expectedUniqueTagList, uniqueTagList);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"peienlim"},"content":" public void setTags_nullUniqueTagList_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"peienlim"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.setTags((UniqueTagList\u003cTag\u003e) null));","lastModifiedDate":"2024-04-01"},{"lineNumber":108,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"peienlim"},"content":" public void setTags_uniqueTagList_replacesOwnListWithProvidedUniqueTagList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003cTag\u003e expectedUniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":114,"author":{"gitId":"peienlim"},"content":" expectedUniqueTagList.add(new Tag(\"colleagues\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"peienlim"},"content":" uniqueTagList.setTags(expectedUniqueTagList);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"peienlim"},"content":" assertEquals(expectedUniqueTagList, uniqueTagList);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" public void setTags_nullSet_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.setTags((Set\u003cTag\u003e) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":" public void setTags_set_replacesOwnListWithProvidedSet() {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"peienlim"},"content":" Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e(Arrays.asList(new Tag(\"colleagues\"), new Tag(\"family\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":" uniqueTagList.setTags(tagSet);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003cTag\u003e expectedUniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" expectedUniqueTagList.add(new Tag(\"colleagues\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" expectedUniqueTagList.add(new Tag(\"family\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" assertEquals(expectedUniqueTagList, uniqueTagList);","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"peienlim"},"content":" public void asUnmodifiableObservableSet_modifySet_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"peienlim"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"peienlim"},"content":" -\u003e uniqueTagList.asUnmodifiableObservableSet().remove(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"peienlim"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"peienlim"},"content":" assertEquals(uniqueTagList.asUnmodifiableObservableSet().toString(), uniqueTagList.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jonpwk":34,"peienlim":112}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" private static final List\u003cJsonAdaptedEventTag\u003e VALID_EVENT_TAGS \u003d BENSON.getEventTags().stream()","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":" .map(JsonAdaptedEventTag::new)","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"peienlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"peienlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags,","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"peienlim":21,"-":101}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" private static final Path DUPLICATE_TAG_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateTagAddressBook.json\");","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" public void toModelType_typicalPersonsAndTagsFile_success() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" public void toModelType_duplicateTags_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_TAG_FILE,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_TAG,","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"peienlim":10,"-":46}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" private Set\u003cEventTag\u003e eventTags;","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" eventTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" eventTags \u003d new HashSet\u003c\u003e(personToCopy.getEventTags());","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" * Parses the {@code eventTags} into a {@code Set\u003cEventTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" public PersonBuilder withEventTags(String... eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" this.eventTags \u003d SampleDataUtil.getEventTagSet(eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":105,"author":{"gitId":"peienlim"},"content":" return new Person(name, phone, email, address, tags, eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"peienlim":13,"-":95}},{"path":"src/test/java/seedu/address/testutil/TypicalEventTags.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import java.util.List;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":" * A utility class containing a list of {@code Tag} objects to be used in tests.","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"public class TypicalEventTags {","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":" public static final EventTag MEETING \u003d new EventTag(\"meeting\",","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":" \"Team meeting\",","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-01T09:00:00\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-01T10:00:00\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" public static final EventTag PRESENTATION \u003d new EventTag(\"presentation\",","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" \"Project presentation\",","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-05T14:00:00\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-05T16:00:00\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" public static final EventTag BIRTHDAY \u003d new EventTag(\"birthday\",","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" \"Birthday party\",","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-10T18:00:00\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-10T22:00:00\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" private TypicalEventTags() {}","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":" public static List\u003cEventTag\u003e getTypicalEventTags() {","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"jonpwk"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(MEETING, PRESENTATION, BIRTHDAY));","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"jonpwk":32}},{"path":"src/test/java/seedu/address/testutil/TypicalNames.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"cleowenxuan"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":" * A utility class containing a list of {@code Name} objects to be used in tests.","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":"public class TypicalNames {","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":" // Example names","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"cleowenxuan"},"content":" public static final Name NAME_ALICE \u003d new Name(\"Alice\");","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":" public static final Name NAME_BOB \u003d new Name(\"Bob\");","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"cleowenxuan"},"content":" public static final Name NAME_CAROL \u003d new Name(\"Carol\");","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"cleowenxuan"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"cleowenxuan":13}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.testutil.TypicalEventTags.getTypicalEventTags;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"import static seedu.address.testutil.TypicalTags.getTypicalTags;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"jonpwk"},"content":" for (Tag tag : getTypicalTags()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"jonpwk"},"content":" ab.addTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" for (EventTag eventTag : getTypicalEventTags()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"jonpwk"},"content":" ab.addEventTag(eventTag);","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"jonpwk":7,"peienlim":3,"-":76}},{"path":"src/test/java/seedu/address/testutil/TypicalTags.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":" * A utility class containing a list of {@code Tag} objects to be used in tests.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"public class TypicalTags {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":" public static final Tag FRIEND \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":" public static final Tag OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":" public static final Tag COLLEAGUE \u003d new Tag(\"colleagues\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":" private TypicalTags() {}","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" public static List\u003cTag\u003e getTypicalTags() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(FRIEND, OWES_MONEY, COLLEAGUE));","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"peienlim":23}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) [![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T11-3/tp/graph/badge.svg?token\u003dBLAYKG2PXC)](https://codecov.io/gh/AY2324S2-CS2103T-T11-3/tp)","lastModifiedDate":"2024-02-25"},{"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":"peterXGD"},"content":"# EventBook","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"As a student leader overseeing various events, it can be challenging to stay organized with numerous contacts across different events. EventBook is designed to simplify the management of contacts across various events. With EventBook, you can effortlessly organize and access contact details of individuals in different events, streamlining the process of communication and coordination.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"## Documentation","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"For the detailed documentation of this project, see the **[EventBook Product Website](https://ay2324s2-cs2103t-t11-3.github.io/tp/index.html)**.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"### Acknowledgement","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":8,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":"run {","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"cleowenxuan"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" archiveFileName \u003d \u0027EventBook.jar\u0027","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"cleowenxuan":4,"jonpwk":1,"-":71}},{"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":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"### Owen","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/owenong1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"[[github](https://github.com/owenong1)]","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":"### Yifei","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/peterxgd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"[[github](http://github.com/peterXGD)]","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":"### Cleo","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/cleowenxuan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":"[[github](http://github.com/cleowenxuan)]","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":"### Jonathan","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/jonpwk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":"[[github](http://github.com/jonpwk)]","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":"### Pei En","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":"\u003cimg src\u003d\"images/peienlim.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":"[[github](http://github.com/peienlim)]","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"peienlim":17,"-":28}},{"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":"owenong1"},"content":" title: \"Developer Guide :)\"","lastModifiedDate":"2024-03-05"},{"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":"cleowenxuan"},"content":"# EventBook Developer Guide","lastModifiedDate":"2024-03-29"},{"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":"peienlim"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object) and all `Tag` objects (which are contained in a `UniqueTagList` object).","lastModifiedDate":"2024-03-28"},{"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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"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":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"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":140,"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":141,"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":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"jonpwk"},"content":"### \\[Proposed\\] Creating and Deleting Tag Objects","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":155,"author":{"gitId":"jonpwk"},"content":"As part of the functionality of EventBook, a myriad of tag objects might be required to facilitate organisation of","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"jonpwk"},"content":"contacts within the program. EventBook aims to support this capability by providing the ability to create or delete","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"jonpwk"},"content":"standalone tags separate from people.","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"jonpwk"},"content":"The proposed mechanism is as follows:","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"jonpwk"},"content":"* `ctag`: Creates a Tag object that will be stored in a global Tag array within the `ModelManager` class.","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"jonpwk"},"content":"* `dtag`: Deletes a Tag object that is currently stored in the global Tag array within the `ModelManager` class. This","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"jonpwk"},"content":"will also delete all instances of the Tag object within the program.","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"jonpwk"},"content":"Each Tag object that exists in the program must exist within this global Tag array. Existing functions such as","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"jonpwk"},"content":"`add` will support the creation of Tag objects to be added to this global Tag array.","lastModifiedDate":"2024-03-29"},{"lineNumber":166,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"jonpwk"},"content":"An example usage scenario illustrates how the `ctag` feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"jonpwk"},"content":"1. The user launches the application. The application will be in its initial state showing the full list","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"jonpwk"},"content":"of contacts in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"jonpwk"},"content":"2. The user executes `ctag Friend`, creating a new Tag object named `Friend`.","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"jonpwk"},"content":"3. The user can then tag people in the program with the new `Friend` tag.","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"jonpwk"},"content":"An example usage scenario illustrates how the `dtag` feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"jonpwk"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"jonpwk"},"content":"contacts in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"jonpwk"},"content":"2. The user executes `dtag Friend`, deleting the Tag object named `Friend`.","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"jonpwk"},"content":"3. All instances of `Friend` will be deleted from the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":178,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"owenong1"},"content":"### \\[Proposed\\] Importing and Exporting as .csv file","lastModifiedDate":"2024-03-29"},{"lineNumber":180,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"owenong1"},"content":"As student leaders, a common and easily accessible file format type for event contacts would be .csv. Eventbook","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"owenong1"},"content":"aims to support the ability to import and export contacts using .csv files to facilitate fast and effective contact","lastModifiedDate":"2024-03-29"},{"lineNumber":183,"author":{"gitId":"owenong1"},"content":"upload and sharing.","lastModifiedDate":"2024-03-29"},{"lineNumber":184,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"owenong1"},"content":"The proposed mechanism is as follows:","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"owenong1"},"content":"* Import: Facilitated by the `import` command that takes a path parameter. The file named `import.csv` at the given","lastModifiedDate":"2024-03-29"},{"lineNumber":187,"author":{"gitId":"owenong1"},"content":"path will be read in a set format. The contact details in the csv will then be imported into the address book following","lastModifiedDate":"2024-03-29"},{"lineNumber":188,"author":{"gitId":"owenong1"},"content":"the format of the add command (Implication being that each field in the .csv should be compatible with the current","lastModifiedDate":"2024-03-29"},{"lineNumber":189,"author":{"gitId":"owenong1"},"content":"implementation of the address book, and follow all conventions of the add command like formatting and non-duplicates)","lastModifiedDate":"2024-03-29"},{"lineNumber":190,"author":{"gitId":"owenong1"},"content":"* Export: Facilitated by the `export` command that takes no parameters. The command will access the `UniquePersonList`","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"owenong1"},"content":"found in the `1AddressBook` of the `Model` and parse through the relevant data, formatting it into the relevant fields.","lastModifiedDate":"2024-03-29"},{"lineNumber":192,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":193,"author":{"gitId":"owenong1"},"content":"The .csv should be formatted with the first row having the non-case sensitive headers (separate cells marked with `|`):","lastModifiedDate":"2024-03-29"},{"lineNumber":194,"author":{"gitId":"owenong1"},"content":"* `Name | Number | Email | Address | Tag`","lastModifiedDate":"2024-03-29"},{"lineNumber":195,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":196,"author":{"gitId":"owenong1"},"content":"An example usage scenario illustrates how the import feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":197,"author":{"gitId":"owenong1"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of contacts","lastModifiedDate":"2024-03-29"},{"lineNumber":198,"author":{"gitId":"owenong1"},"content":"in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"owenong1"},"content":"2. The user executes `import ./import/import.csv` , with import.csv having 2 rows:","lastModifiedDate":"2024-03-29"},{"lineNumber":200,"author":{"gitId":"owenong1"},"content":" 1. `Name | Number | Email | Address | Tag`","lastModifiedDate":"2024-03-29"},{"lineNumber":201,"author":{"gitId":"owenong1"},"content":" 2. `John | 94756383 | john@mail.com | NUS UTown | BestFriend`","lastModifiedDate":"2024-03-29"},{"lineNumber":202,"author":{"gitId":"owenong1"},"content":"3. The contact `John` is imported into the address book, with parameters as above.","lastModifiedDate":"2024-03-29"},{"lineNumber":203,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":204,"author":{"gitId":"owenong1"},"content":"An example usage scenario illustrates how the export feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":205,"author":{"gitId":"owenong1"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of contacts","lastModifiedDate":"2024-03-29"},{"lineNumber":206,"author":{"gitId":"owenong1"},"content":" in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":207,"author":{"gitId":"owenong1"},"content":"2. The user executes `export` to export all contacts","lastModifiedDate":"2024-03-29"},{"lineNumber":208,"author":{"gitId":"owenong1"},"content":"3. All contacts in the address book will be exported to ./export/export.csv according to the format","lastModifiedDate":"2024-03-29"},{"lineNumber":209,"author":{"gitId":"owenong1"},"content":"`Name | Number | Email | Address | Tag`","lastModifiedDate":"2024-03-29"},{"lineNumber":210,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":211,"author":{"gitId":"peienlim"},"content":"### \\[Proposed\\] Event switching feature","lastModifiedDate":"2024-03-28"},{"lineNumber":212,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":213,"author":{"gitId":"peienlim"},"content":"As our target audience are student leaders, and they may be in-charge of multiple events throughout their course in NUS, we are proposing to implement a event-switching feature which allows them to switch between events and view contacts specific to each event.","lastModifiedDate":"2024-03-28"},{"lineNumber":214,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":215,"author":{"gitId":"peienlim"},"content":"The proposed event switching feature introduces the concept of event-specific filtering to the existing EventBook. The key operations and components of the proposed implementation include:","lastModifiedDate":"2024-03-28"},{"lineNumber":216,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":217,"author":{"gitId":"peienlim"},"content":"* Filtering Mechanism: filters contacts in the EventBook based on event tag, allowing for selective display of contacts based on event tag.","lastModifiedDate":"2024-03-28"},{"lineNumber":218,"author":{"gitId":"peienlim"},"content":"* UI enhancements: allow users to see each event as a tab and after navigating to a particular tab, they will be able to view contacts of members under that event.","lastModifiedDate":"2024-03-28"},{"lineNumber":219,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":220,"author":{"gitId":"peienlim"},"content":"An example usage scenario illustrates how the event switching feature operates:","lastModifiedDate":"2024-03-28"},{"lineNumber":221,"author":{"gitId":"peienlim"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of contacts in the EventBook.","lastModifiedDate":"2024-03-28"},{"lineNumber":222,"author":{"gitId":"peienlim"},"content":"2. The user switches tabs to a particular event by executing `switch eventTagName`. The `filteredPersons` list in `Model` class will be updated and user will be able to see all contacts of members under this event.","lastModifiedDate":"2024-03-28"},{"lineNumber":223,"author":{"gitId":"peienlim"},"content":"3. User can further filter contacts by executing `search tagName`. This displays users in this event with the specified tag.","lastModifiedDate":"2024-03-28"},{"lineNumber":224,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":225,"author":{"gitId":"peienlim"},"content":"Alternative 1 (Proposed Choice): Extend the existing Tag class to accommodate event-specific tags, allowing for flexible filtering based on events.","lastModifiedDate":"2024-03-28"},{"lineNumber":226,"author":{"gitId":"peienlim"},"content":"Pros: Utilizes existing data structure without introducing additional complexity, easier to implement.","lastModifiedDate":"2024-03-28"},{"lineNumber":227,"author":{"gitId":"peienlim"},"content":"Cons: Requires modifications to the tagging system to support event-specific tags, less OOP","lastModifiedDate":"2024-03-28"},{"lineNumber":228,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":229,"author":{"gitId":"peienlim"},"content":"Alternative 2: Introduce separate address books for each event, providing a clear separation of contacts by events.","lastModifiedDate":"2024-03-28"},{"lineNumber":230,"author":{"gitId":"peienlim"},"content":"Pros: Offers a straightforward organization of data by events.","lastModifiedDate":"2024-03-28"},{"lineNumber":231,"author":{"gitId":"peienlim"},"content":"Cons: Increases complexity by managing multiple address books, harder to implement.","lastModifiedDate":"2024-03-28"},{"lineNumber":232,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":233,"author":{"gitId":"cleowenxuan"},"content":"### \\[Proposed\\] Deleting by Name and Index feature","lastModifiedDate":"2024-03-29"},{"lineNumber":234,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":235,"author":{"gitId":"cleowenxuan"},"content":"As our student leaders will be in-charge of multiple events, they will tend to encounter a large amount of contacts saved in the EventBook. As such, we are proposing to implement delete by name or index feature which allows them to delete the contacts by names. This saves their time of scrolling through the large amount of contacts before deleting them by index.","lastModifiedDate":"2024-03-29"},{"lineNumber":236,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":237,"author":{"gitId":"cleowenxuan"},"content":"This proposed delete name and index feature introduces the concept of deleting the contacts by either name or index.","lastModifiedDate":"2024-03-29"},{"lineNumber":238,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":239,"author":{"gitId":"cleowenxuan"},"content":"Given below is an example usage scenario and how delete mechanism behaves at each step.","lastModifiedDate":"2024-03-29"},{"lineNumber":240,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":241,"author":{"gitId":"cleowenxuan"},"content":"Step 1: The user launches the application. The application will be in its initial state showing the full list of contacts in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":242,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":243,"author":{"gitId":"cleowenxuan"},"content":"Step 2: The user executes `delete John Doe` command to delete the person named John Doe in the EventBook. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete John Doe` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-29"},{"lineNumber":244,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":245,"author":{"gitId":"cleowenxuan"},"content":"**Note:** If the command fails the execution, it means that the person does not exist and an error indicating that the person is not found will be shown.","lastModifiedDate":"2024-03-29"},{"lineNumber":246,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":247,"author":{"gitId":"cleowenxuan"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-03-29"},{"lineNumber":248,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":249,"author":{"gitId":"cleowenxuan"},"content":"\u003cpuml src\u003d\"diagrams/DeleteActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":250,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":251,"author":{"gitId":"cleowenxuan"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-29"},{"lineNumber":252,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":253,"author":{"gitId":"cleowenxuan"},"content":"**Aspect: How delete executes:**","lastModifiedDate":"2024-03-29"},{"lineNumber":254,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":255,"author":{"gitId":"cleowenxuan"},"content":"* **Alternative 1 (Proposed Choice):** Delete the name from the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":256,"author":{"gitId":"cleowenxuan"},"content":" * Pros: Easy to search for the person by typing their full exact name.","lastModifiedDate":"2024-03-29"},{"lineNumber":257,"author":{"gitId":"cleowenxuan"},"content":" * Cons: May have some issues with typing the full exact name if the person\u0027s full name that you want to delete is unknown to you.","lastModifiedDate":"2024-03-29"},{"lineNumber":258,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"cleowenxuan"},"content":"* **Alternative 2:** Search for the name of the person and delete the index from the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":260,"author":{"gitId":"cleowenxuan"},"content":" * Pros: Able to see which name you want to delete by searching for their name.","lastModifiedDate":"2024-03-29"},{"lineNumber":261,"author":{"gitId":"cleowenxuan"},"content":" * Cons: Having to search and delete is slower than simply deleting the person by name.","lastModifiedDate":"2024-03-29"},{"lineNumber":262,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"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":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"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":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"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":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"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":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"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":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"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":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"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":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"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":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"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":303,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"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":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":315,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":319,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":321,"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":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":325,"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":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"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":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"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":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"peterXGD"},"content":"### \\[Proposed\\] Grouping Students by an EventTag.","lastModifiedDate":"2024-03-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":356,"author":{"gitId":"peterXGD"},"content":"As our student leaders will be in-charge of multiple events, they will need to know which student is involved in which event. As such, we are propose an EventTag feature pack which allows you to have easy access to the event features students are tagged with.","lastModifiedDate":"2024-03-29"},{"lineNumber":357,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":358,"author":{"gitId":"peterXGD"},"content":"This proposed event tag feature introduces a new class EventTag, which allows students leaders to tag students involved in an event with its respective EventTag, which also contains the event description, such as start and end dates, event details, etc.","lastModifiedDate":"2024-03-29"},{"lineNumber":359,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":360,"author":{"gitId":"peterXGD"},"content":"The key operations and components of the proposed implementation include:","lastModifiedDate":"2024-03-29"},{"lineNumber":361,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":362,"author":{"gitId":"peterXGD"},"content":"* **Creates an EventTag** with starting date, ending date and event description.","lastModifiedDate":"2024-03-29"},{"lineNumber":363,"author":{"gitId":"peterXGD"},"content":"* **Filter students** based on the event they are tagged to.","lastModifiedDate":"2024-03-29"},{"lineNumber":364,"author":{"gitId":"peterXGD"},"content":"* The ability for to **see the event description and time easily.**","lastModifiedDate":"2024-03-29"},{"lineNumber":365,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":366,"author":{"gitId":"peterXGD"},"content":"An example usage scenario illustrates how the EventTag feature operates:","lastModifiedDate":"2024-03-29"},{"lineNumber":367,"author":{"gitId":"peterXGD"},"content":"1. The user launches the application. The application will be in its initial state showing the full list of contacts in the EventBook.","lastModifiedDate":"2024-03-29"},{"lineNumber":368,"author":{"gitId":"peterXGD"},"content":"2. The user sees the description of an EventTag a person is tagged with by either using CLI or by clicking a button.","lastModifiedDate":"2024-03-29"},{"lineNumber":369,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":370,"author":{"gitId":"peterXGD"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-03-29"},{"lineNumber":371,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":372,"author":{"gitId":"peterXGD"},"content":"\u003cpuml src\u003d\"diagrams/EventTagActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":373,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":374,"author":{"gitId":"peterXGD"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"peterXGD"},"content":"**Aspect: How EventTag works:**","lastModifiedDate":"2024-03-29"},{"lineNumber":377,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":378,"author":{"gitId":"peterXGD"},"content":"* **Alternative 1 (Proposed Choice):** You can group students by EventTag using the search function that shows people with a common tag.","lastModifiedDate":"2024-03-29"},{"lineNumber":379,"author":{"gitId":"peterXGD"},"content":" * Pros: Easy to search for the different event Tags and displays them easily.","lastModifiedDate":"2024-03-29"},{"lineNumber":380,"author":{"gitId":"peterXGD"},"content":" * Cons: You have to type the name of the event Tag every time you need to see who is in which group, which can be annoying.","lastModifiedDate":"2024-03-29"},{"lineNumber":381,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":382,"author":{"gitId":"peterXGD"},"content":"* **Alternative 2:** Have a GUI feature which allows you to display people currently in group \"X\" by clicking a tab in the EventBook called \"X\".","lastModifiedDate":"2024-03-29"},{"lineNumber":383,"author":{"gitId":"peterXGD"},"content":" * Pros: Easy to navigate between different groups.","lastModifiedDate":"2024-03-29"},{"lineNumber":384,"author":{"gitId":"peterXGD"},"content":" * Cons: If you have too many groups to manage it will take a while for you to find an EventTag group every time you switch the group you are looking at.","lastModifiedDate":"2024-03-29"},{"lineNumber":385,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":386,"author":{"gitId":"peterXGD"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2024-03-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":397,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":398,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":399,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":400,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":414,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"jonpwk"},"content":"* student leaders planning school events","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"jonpwk"},"content":"**Value proposition**: Easy way to share _project hierarchy_ / Manage project details and personnel / Quick onboarding of new team members","lastModifiedDate":"2024-03-07"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"jonpwk"},"content":"| Priority | As a(n) …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-07"},{"lineNumber":425,"author":{"gitId":"peterXGD"},"content":"|----------|------------------------|------------------------------------------------------|-------------------------------------------------------------|","lastModifiedDate":"2024-03-29"},{"lineNumber":426,"author":{"gitId":"jonpwk"},"content":"| `* * *` | user | include tags when adding people | tag people based on their roles |","lastModifiedDate":"2024-03-07"},{"lineNumber":427,"author":{"gitId":"jonpwk"},"content":"| `* * *` | user | search by tags | find groups of people |","lastModifiedDate":"2024-03-07"},{"lineNumber":428,"author":{"gitId":"jonpwk"},"content":"| `* * *` | user | have different tagging options | keep my contacts organised and search effectively |","lastModifiedDate":"2024-03-07"},{"lineNumber":429,"author":{"gitId":"jonpwk"},"content":"| `* *` | user | delete by name OR index | manage my contacts easier |","lastModifiedDate":"2024-03-07"},{"lineNumber":430,"author":{"gitId":"jonpwk"},"content":"| `* *` | user | add contacts with partial information | keep my contacts as up to date as possible |","lastModifiedDate":"2024-03-07"},{"lineNumber":431,"author":{"gitId":"peterXGD"},"content":"| `* * *` | user | have knowledge on what event a person is involved in | keep my contacts easily |","lastModifiedDate":"2024-03-29"},{"lineNumber":432,"author":{"gitId":"peterXGD"},"content":"| `* *` | user | know details about an event, such as its time, etc | keep a clear mind on who is doing what and not get confused |","lastModifiedDate":"2024-03-29"},{"lineNumber":433,"author":{"gitId":"jonpwk"},"content":"| `*` | user | sort my tags based on event (and subsequently role) | visualise my contacts in a neat way |","lastModifiedDate":"2024-03-07"},{"lineNumber":434,"author":{"gitId":"jonpwk"},"content":"| `* *` | user | have a space to write notes for each contact | note my thoughts in an organised way |","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"jonpwk"},"content":"| `* *` | user proficient in CLI | have short form commands | use the programe faster |","lastModifiedDate":"2024-03-07"},{"lineNumber":436,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"jonpwk"},"content":"### Use cases (UC)","lastModifiedDate":"2024-03-07"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"jonpwk"},"content":"(For all use cases below, the **System** is the `EventBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"jonpwk"},"content":"**\u003cu\u003eUse case 1: Delete a person\u003c/u\u003e**","lastModifiedDate":"2024-03-07"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"jonpwk"},"content":"2. EventBook shows a list of persons","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"jonpwk"},"content":"4. EventBook deletes the person","lastModifiedDate":"2024-03-07"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"jonpwk"},"content":" * 3a1. EventBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"jonpwk"},"content":"**\u003cu\u003eUse case 2: Add a person\u003c/u\u003e**","lastModifiedDate":"2024-03-07"},{"lineNumber":468,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":469,"author":{"gitId":"jonpwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":470,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":471,"author":{"gitId":"jonpwk"},"content":"1. User adds person to EventBook","lastModifiedDate":"2024-03-07"},{"lineNumber":472,"author":{"gitId":"jonpwk"},"content":"2. EventBook shows a list of persons with added person","lastModifiedDate":"2024-03-07"},{"lineNumber":473,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":474,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":475,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":476,"author":{"gitId":"jonpwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":477,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":478,"author":{"gitId":"jonpwk"},"content":"* 1a. The given parameters for the person is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":479,"author":{"gitId":"jonpwk"},"content":" * 1a1. EventBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":480,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":481,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":482,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":483,"author":{"gitId":"jonpwk"},"content":"**\u003cu\u003eUse case 3: Search by tag\u003c/u\u003e**","lastModifiedDate":"2024-03-07"},{"lineNumber":484,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":485,"author":{"gitId":"jonpwk"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":486,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":487,"author":{"gitId":"jonpwk"},"content":"1. User requests a search based on tag options","lastModifiedDate":"2024-03-07"},{"lineNumber":488,"author":{"gitId":"jonpwk"},"content":"2. EventBook shows a list of persons with given tag options","lastModifiedDate":"2024-03-07"},{"lineNumber":489,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":490,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":491,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":492,"author":{"gitId":"jonpwk"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":493,"author":{"gitId":"jonpwk"},"content":"* 1a. The given tag options are invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":494,"author":{"gitId":"jonpwk"},"content":" * 1a1. EventBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":495,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":496,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":497,"author":{"gitId":"jonpwk"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":498,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":499,"author":{"gitId":"jonpwk"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":500,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":501,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"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":506,"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":507,"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":508,"author":{"gitId":"jonpwk"},"content":"4. The system should work on both 32-bit and 64-bit systems.","lastModifiedDate":"2024-03-11"},{"lineNumber":509,"author":{"gitId":"jonpwk"},"content":"5. The system should respond within 2 seconds.","lastModifiedDate":"2024-03-11"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":516,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"jonpwk"},"content":"* **Project hierarchy**: The structure of a project team, including team members and organisational structure","lastModifiedDate":"2024-03-07"},{"lineNumber":518,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":526,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":527,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"jonpwk"},"content":" 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2024-03-11"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"jonpwk"},"content":"2. Saving window preferences","lastModifiedDate":"2024-03-11"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"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":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"jonpwk"},"content":" 2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":544,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"jonpwk"},"content":"3. _{ more test cases …​ }_","lastModifiedDate":"2024-03-11"},{"lineNumber":547,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"jonpwk"},"content":" 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":555,"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":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"jonpwk"},"content":" 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":558,"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":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"jonpwk"},"content":" 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":561,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"jonpwk"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-03-11"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"jonpwk"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"cleowenxuan":31,"owenong1":33,"peterXGD":34,"jonpwk":90,"peienlim":23,"-":360}},{"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":"cleowenxuan"},"content":"# EventBook User Guide","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":"EventBook is a **desktop app for Student Leaders to manage the contacts from different events, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, EventBook can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":"1. Download the latest `EventBook.jar` from [here](https://github.com/AY2324S2-CS2103T-T11-3/tp/releases).","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"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":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar EventBook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"author":{"gitId":"cleowenxuan"},"content":" * `assign 1 t/E-event1` : Assigns the 1st contact shown in the current list with the event tag named `event1`.","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":" * `assign John t/tag1` : Assigns the contact named John in the current list with the tag named `tag1`.","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"cleowenxuan"},"content":" * `ctag Friend` : Creates a tag name `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":" * `ctag t/E-orientation dc/Orientation! sd/2024-04-04 02:02:02 ed/2024-04-05 02:02:02` : Creates an event tag.","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"cleowenxuan"},"content":" * `dtag Friend` : Deletes a tag named `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" * `devent fire` : Deletes an event tag called fire","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"cleowenxuan"},"content":" * `delete John Doe` : Deletes the contact named John Doe shown in the current list.","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" * `import` : Imports contacts from `.\\import\\import.csv`.","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"jonpwk"},"content":" * `search Friend` : Displays all contacts with the tag \u0027Friend\u0027.","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"peienlim"},"content":" * `switch Flag` : Switches to \u0027Flag\u0027 event tab to show contacts.","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"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":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"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":71,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":73,"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":74,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":"Format: `edit (NAME or INDEX) [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":"* Edits the person at the specified `INDEX` or `NAME`.","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"cleowenxuan"},"content":"* The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"cleowenxuan"},"content":"* The name refers to the name shown in the displayed person list. The name must be **exactly** what is shown in the displayed person list.","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"cleowenxuan"},"content":"* For example, `edit John Doe t/friends` instead of `edit John t/friends`.","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"cleowenxuan"},"content":"* `edit Ben n/Betsy Crower t/` Edits the person named Ben to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"jonpwk"},"content":"### Creating a tag : `ctag`","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"peterXGD"},"content":"Creates a tag in the address book or an event tag.","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"peterXGD"},"content":"Format 1: `ctag TAGNAME`","lastModifiedDate":"2024-04-05"},{"lineNumber":132,"author":{"gitId":"jonpwk"},"content":"* The provided name has to be a unique tag name that does not already exist in the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":133,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":134,"author":{"gitId":"jonpwk"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":135,"author":{"gitId":"cleowenxuan"},"content":"* `ctag Friend` Creates a tag named `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":137,"author":{"gitId":"peterXGD"},"content":"Format 2: `ctag t/E- eventName dc/ Description sd/yyyy-MM-dd HH:mm:ss ed/yyyy-MM-dd HH:mm:ss`","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"peterXGD"},"content":"* The provided name has to be a unique tag name that does not already exist in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"peterXGD"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"peterXGD"},"content":"* `ctag t/E-orientation dc/Orientation! sd/2024-04-04 02:02:02 ed/2024-04-05 02:02:02`","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"peterXGD"},"content":"* Creates an EventTag called orientation that starts from 2024-04-04 02:02:02 to 2024-04-05 02:02:02.","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"jonpwk"},"content":"### Delete a tag : `dtag`","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"jonpwk"},"content":"Deletes a tag in the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":147,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":148,"author":{"gitId":"jonpwk"},"content":"Format: `dtag TAGNAME`","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"jonpwk"},"content":"* The provided name has to be a unique tag name that does not already exist in the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"jonpwk"},"content":"* The provided tag has to exist in the EventBook.","lastModifiedDate":"2024-03-25"},{"lineNumber":152,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"jonpwk"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":154,"author":{"gitId":"cleowenxuan"},"content":"* `dtag Friend` Deletes a tag named `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":156,"author":{"gitId":"peterXGD"},"content":"### Delete an EventTag : `devent`","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"peterXGD"},"content":"Deletes an event tag in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"peterXGD"},"content":"Format: `devent EVENTTAGNAME`","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"peterXGD"},"content":"* The provided name has to be a unique event tag name that already exist in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"peterXGD"},"content":"Examples:","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"peterXGD"},"content":"* `devent bonfire` Deletes an EventTag named `bonfire`.","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"jonpwk"},"content":"### Assigning a tag : `assign`","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"jonpwk"},"content":"Assigns a tag in the address book to a specified person.","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"cleowenxuan"},"content":"Format: `assign (NAME or INDEX) t/TAG…​` or `assign (NAME or INDEX) t/E-EVENTTAG…​`","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"cleowenxuan"},"content":"* Assign the person at the specified `INDEX` or `NAME` with the tag `TAG` or with the event tag `EVENTTAG`.","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"cleowenxuan"},"content":"* The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"cleowenxuan"},"content":"* The name refers to the name shown in the displayed person list. The name must be **exactly** what is shown in the displayed person list.","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"cleowenxuan"},"content":"* For example, `assign John Doe t/friends` instead of `assign John t/friends`.","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"cleowenxuan"},"content":"* The provided tag(s) and event tag(s) have to exist in the EventBook.","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"jonpwk"},"content":"Examples:","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"cleowenxuan"},"content":"* `assign 1 t/friends` Assigns the first person in the list to a tag named `Friends`.","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"cleowenxuan"},"content":"* `assign John Doe t/E-event1` Assigns the person named John Doe in the list to an Event Tag named `event1`.","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"jonpwk"},"content":"### Searching by tag : `search`","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":184,"author":{"gitId":"jonpwk"},"content":"Displays all the people that are tagged with TAGNAME.","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"jonpwk"},"content":"Format: `search TAGNAME`","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"jonpwk"},"content":"* The search is case-sensitive.","lastModifiedDate":"2024-03-25"},{"lineNumber":189,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":190,"author":{"gitId":"jonpwk"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":191,"author":{"gitId":"cleowenxuan"},"content":"* `search Friend` Displays all people tagged as `Friend`.","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":193,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":"### Switching between events : `switch`","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":"Format: `switch EVENTTAGNAME`","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"peienlim"},"content":"Switches to tab with EVENTTAGNAME.","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":"* The search is case-sensitive.","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"peienlim"},"content":"* The default tab is the `All` tab with full list of contacts displayed.","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"peienlim"},"content":"* `search Flag` Switches to \u0027Flag\u0027 event tab and shows all members tagged with \u0027Flag\u0027 event tag.","lastModifiedDate":"2024-04-04"},{"lineNumber":205,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"cleowenxuan"},"content":"Format: `delete (NAME or INDEX)`","lastModifiedDate":"2024-04-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"jonpwk"},"content":"* Deletes the person at the specified `INDEX` or `NAME`.","lastModifiedDate":"2024-03-25"},{"lineNumber":231,"author":{"gitId":"cleowenxuan"},"content":"* The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"cleowenxuan"},"content":"* The name refers to the name shown in the displayed person list. The name must be **exactly** what is shown in the displayed person list.","lastModifiedDate":"2024-04-04"},{"lineNumber":233,"author":{"gitId":"cleowenxuan"},"content":"* For example, `delete John Doe` instead of `delete John`.","lastModifiedDate":"2024-04-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"cleowenxuan"},"content":"* `list` followed by `delete John Doe` deletes the 2nd person in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"jonpwk"},"content":"### Importing contacts from .csv : `import`","lastModifiedDate":"2024-03-25"},{"lineNumber":246,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":247,"author":{"gitId":"owenong1"},"content":"Imports all contacts from given file path (default ./import/import.csv)","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"owenong1"},"content":"Format: `import f/PATH`","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"owenong1"},"content":"* Requires a valid file to be given in the PATH variable","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"owenong1"},"content":"* If PATH is left empty (i.e. `import f/`) the default file referenced is ./import/import.csv","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"jonpwk"},"content":"* The format of the first line of the csv should be:","lastModifiedDate":"2024-03-25"},{"lineNumber":254,"author":{"gitId":"owenong1"},"content":" `NAME | NUMBER | EMAIL | ADDRESS | EVENTS | TAGS`","lastModifiedDate":"2024-04-05"},{"lineNumber":255,"author":{"gitId":"owenong1"},"content":" Here the `|` character specifies a new cell.","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"owenong1"},"content":"* There should be no trailing empty characters (\u0027 \u0027) in any cell.","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"owenong1"},"content":"* The titles are non-caps sensitive (`Name` pr `NaME` would also be valid)","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"owenong1"},"content":"* The format of each parameter should follow the appropriate add command format.","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"jonpwk"},"content":"* There should be no blank lines, and no conflicts with contacts in the existing address book","lastModifiedDate":"2024-03-25"},{"lineNumber":260,"author":{"gitId":"owenong1"},"content":"* The `EVENTS` portion must have satisfy some format requirements:","lastModifiedDate":"2024-04-05"},{"lineNumber":261,"author":{"gitId":"owenong1"},"content":" * `N/A` if the contact is not in any events, else a field error will occur","lastModifiedDate":"2024-04-05"},{"lineNumber":262,"author":{"gitId":"owenong1"},"content":" * The first instance of each unique event must follow the arguments of the cTag command:","lastModifiedDate":"2024-04-05"},{"lineNumber":263,"author":{"gitId":"owenong1"},"content":" `t/E-eventName dc/Description sd/yyyy-MM-dd HH:mm:ss ed/yyyy-MM-dd HH:mm:ss`","lastModifiedDate":"2024-04-05"},{"lineNumber":264,"author":{"gitId":"owenong1"},"content":" * Further instances of the same event may simply use the event name portion `t/E-eventName`","lastModifiedDate":"2024-04-05"},{"lineNumber":265,"author":{"gitId":"owenong1"},"content":" * e.g. If the first contact has `t/E-orientation dc/Orientation! sd/2024-04-04 02:02:02 ed/2024-04-05 02:02:02`,","lastModifiedDate":"2024-04-05"},{"lineNumber":266,"author":{"gitId":"owenong1"},"content":" then further contacts may simply have `t/E-orientation` under the `EVENTS` fields","lastModifiedDate":"2024-04-05"},{"lineNumber":267,"author":{"gitId":"owenong1"},"content":"* The `TAGS` and `EVENTS` portion accept multiple tags delimited by the `|` character (e.g. Friend|Colleague)","lastModifiedDate":"2024-04-05"},{"lineNumber":268,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"owenong1"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"owenong1"},"content":"* `import f/./import/import.csv` imports the contacts from the specified file","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"owenong1"},"content":"### Exporting contacts from address book : `export`","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"owenong1"},"content":"Exports all contacts to ./export/export.csv","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":276,"author":{"gitId":"owenong1"},"content":"Format: `export`","lastModifiedDate":"2024-04-04"},{"lineNumber":277,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":278,"author":{"gitId":"owenong1"},"content":"* If a file export.csv is already present at ./export, it will be overwritten with the","lastModifiedDate":"2024-04-04"},{"lineNumber":279,"author":{"gitId":"owenong1"},"content":" current address book data","lastModifiedDate":"2024-04-04"},{"lineNumber":280,"author":{"gitId":"owenong1"},"content":"* The export file format is the same as the output format given in `import`","lastModifiedDate":"2024-04-04"},{"lineNumber":281,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":282,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":283,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":295,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook 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-02-09"},{"lineNumber":301,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook 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":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"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":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":319,"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":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":327,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"cleowenxuan"},"content":"**Assign** | `assign (NAME or INDEX) [t/TAG]…​` or `assign (NAME or INDEX) [t/E-TAG]…​` \u003cbr\u003e e.g.,`assign 2 t/tag1` or `assign John Doe t/E-event1`","lastModifiedDate":"2024-04-04"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"cleowenxuan"},"content":"**Delete** | `delete (NAME or INDEX)` \u003cbr\u003e e.g., `delete 3` or `delete John Doe`","lastModifiedDate":"2024-04-04"},{"lineNumber":331,"author":{"gitId":"cleowenxuan"},"content":"**Edit** | `edit (NAME or INDEX) [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` \u003cbr\u003e e.g., `edit 2 n/James Lee e/jameslee@example.com` or`edit John Doe n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-04-04"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"jonpwk"},"content":"**Create Tag** | `ctag TAGNAME` \u003cbr\u003e e.g., `ctag Friend`","lastModifiedDate":"2024-03-25"},{"lineNumber":336,"author":{"gitId":"peterXGD"},"content":"**Create EventTag** | `ctag t/E- eventName dc/ Description sd/yyyy-MM-dd HH:mm:ss ed/yyyy-MM-dd HH:mm:ss` \u003cbr\u003e e.g., `ctag t/E-orientation dc/Orientation! sd/2024-04-04 02:02:02 ed/2024-04-05 02:02:02`","lastModifiedDate":"2024-04-05"},{"lineNumber":337,"author":{"gitId":"jonpwk"},"content":"**Delete Tag** | `dtag TAGNAME` \u003cbr\u003e e.g., `dtag Friend`","lastModifiedDate":"2024-03-25"},{"lineNumber":338,"author":{"gitId":"peterXGD"},"content":"**Delete Event** | `devent EVENTTAGNAME` \u003cbr\u003e e.g., `devent fire`","lastModifiedDate":"2024-04-05"},{"lineNumber":339,"author":{"gitId":"owenong1"},"content":"**Import** | `import f/PATH` \u003cbr\u003e e.g., `import f/./import/import.csv`","lastModifiedDate":"2024-04-05"},{"lineNumber":340,"author":{"gitId":"owenong1"},"content":"**Export** | `export`","lastModifiedDate":"2024-04-05"},{"lineNumber":341,"author":{"gitId":"jonpwk"},"content":"**Search Tag** | `search TAGNAME` \u003cbr\u003e e.g., `search Friend`","lastModifiedDate":"2024-03-25"},{"lineNumber":342,"author":{"gitId":"peienlim"},"content":"**Switch** | `switch EVENTTAGNAME` \u003cbr\u003e e.g. `switch Flag`","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"cleowenxuan":37,"peterXGD":24,"owenong1":35,"jonpwk":47,"peienlim":12,"-":187}},{"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":"cleowenxuan"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eEventBook\u003c/a\u003e","lastModifiedDate":"2024-02-25"},{"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":{"cleowenxuan":1,"-":66}},{"path":"docs/diagrams/DeleteActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"cleowenxuan"},"content":"skin rose","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"cleowenxuan"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"cleowenxuan"},"content":"start","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":":User provides name or index to delete;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":"if (Is name provided?) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":" :Find person by name;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":" if (Person found?) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"cleowenxuan"},"content":" :Delete person;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":" :Display success message;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"cleowenxuan"},"content":" else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"cleowenxuan"},"content":" :Display error message;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"cleowenxuan"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"cleowenxuan"},"content":"else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":" :Find person by index;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"cleowenxuan"},"content":" if (Person found?) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"cleowenxuan"},"content":" :Delete person;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"cleowenxuan"},"content":" :Display success message;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":" else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"cleowenxuan"},"content":" :Display error message;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"cleowenxuan"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":"endif","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":"stop","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"cleowenxuan":25}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"cleowenxuan"},"content":"[-\u003e LogicManager : execute(\"delete John Doe\")","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete John Doe\")","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"John Doe\")","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"cleowenxuan"},"content":"DeleteCommand -\u003e Model : deletePerson(\"John Doe\")","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"cleowenxuan":4,"-":66}},{"path":"docs/diagrams/EventTagActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"!include style.puml","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"skinparam monochrome black","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"start","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":":Launch the address book;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"if (Search person associated with a tag) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":" :Tag found;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":" if (Is EventTag) then (yes)","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" :Displays EventTag description and date;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" :Displays error message;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"else (no)","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" :Displays error message;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":"endif","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":"stop","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"peterXGD":19}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"Class UniqueTagList","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":"AddressBook *--\u003e \"1\" UniqueTagList","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":"UniqueTagList --\u003e \"~*\" Tag","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":"Person --\u003e \"*\" Tag","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"peienlim":6,"-":53}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"peienlim":2,"-":43}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":" public static final Version VERSION \u003d new Version(1, 3, 1, true);","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"owenong1":1,"-":185}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" ObservableSet\u003cEventTag\u003e getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"peienlim":4,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-01"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" return model.getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":80,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"peienlim":7,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_INVALID_TAG \u003d \"The tag provided does not exist\";","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The person name provided is invalid\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" builder.append(\"; EventTags: \");","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"cleowenxuan"},"content":" if (!person.getEventTags().isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"cleowenxuan"},"content":" builder.append(\"[\");","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"cleowenxuan"},"content":" person.getEventTags().forEach(eventTag -\u003e builder.append(eventTag.tagName).append(\", \"));","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"cleowenxuan"},"content":" builder.delete(builder.length() - 2, builder.length());","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"cleowenxuan"},"content":" builder.append(\"]\");","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"cleowenxuan"},"content":" builder.append(\"[]\");","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cleowenxuan":12,"jonpwk":1,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AssignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"import java.util.List;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" * Assigns a person from the address book with the given tags.","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":"public class AssignCommand extends Command {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" + \": Assigns the person identified by the index number or full name used in the displayed person list with\"","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":" + \" the given tags.\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" + \"Parameters: INDEX (must be a positive integer) or NAME (must be the exact full name), TAGS (t/TAGNAME)\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" + \"Examples: \" + COMMAND_WORD + \" 1\" + \"t/friends\"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" + \" or\" + COMMAND_WORD + \" John Doe\" + \"t/friends\"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" + \" or\" + COMMAND_WORD + \" 1\" + \"t/E-eventName\";","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_ASSIGN_PERSON_MISSING \u003d \"Please provide either a name or index to delete.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_ASSIGN_TAG_MISSING \u003d \"Please ensure that all tag(s) provided exist.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_ASSIGN_PERSON_SUCCESS \u003d \"Assigned Person: %1$s\";","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"jonpwk"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"jonpwk"},"content":" private final String targetName;","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"jonpwk"},"content":" private final Set\u003cTag\u003e targetTagList;","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" private final Set\u003cTag\u003e targetEventTagList;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"jonpwk"},"content":" * Constructs an AssignCommand with the specified target index, target name and target tag list.","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"jonpwk"},"content":" * @param targetIndex The index of the person to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" * @param targetName The name of the person to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"jonpwk"},"content":" * @param targetTagList The set of tags to be added to the person.","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"cleowenxuan"},"content":" public AssignCommand(Index targetIndex, String targetName, Set\u003cTag\u003e targetTagList, Set\u003cTag\u003e targetEventTagList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" this.targetTagList \u003d targetTagList;","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" this.targetEventTagList \u003d targetEventTagList;","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"jonpwk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"jonpwk"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"jonpwk"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"jonpwk"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"jonpwk"},"content":" for (Tag t : targetTagList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"jonpwk"},"content":" if (!model.hasTag(t)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(MESSAGE_ASSIGN_TAG_MISSING);","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" for (Tag t : targetEventTagList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"cleowenxuan"},"content":" if (!model.hasEventTag(t.tagName)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_ASSIGN_TAG_MISSING);","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"jonpwk"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"jonpwk"},"content":" Person personToAssign \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"cleowenxuan"},"content":" model.assign(personToAssign, targetTagList, targetEventTagList);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"jonpwk"},"content":" return new CommandResult(String.format(MESSAGE_ASSIGN_PERSON_SUCCESS, Messages.format(personToAssign)));","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"jonpwk"},"content":" } else if (targetName !\u003d dummyName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"jonpwk"},"content":" Optional\u003cPerson\u003e personToFind \u003d lastShownList.stream().filter(person -\u003e person.getName()","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"jonpwk"},"content":" .toString().equals(targetName)).findFirst();","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"jonpwk"},"content":" if (personToFind.isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"jonpwk"},"content":" Person personToAssign \u003d personToFind.get();","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"cleowenxuan"},"content":" model.assign(personToAssign, targetTagList, targetEventTagList);","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"jonpwk"},"content":" return new CommandResult(String.format(MESSAGE_ASSIGN_PERSON_SUCCESS, Messages.format(personToAssign)));","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"jonpwk"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"jonpwk"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(MESSAGE_ASSIGN_PERSON_MISSING);","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"jonpwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"jonpwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"jonpwk"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":" if (!(other instanceof AssignCommand)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"jonpwk"},"content":" AssignCommand otherAssignCommand \u003d (AssignCommand) other;","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"jonpwk"},"content":" return (targetIndex.equals(otherAssignCommand.targetIndex)","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"jonpwk"},"content":" \u0026\u0026 targetTagList.equals(otherAssignCommand.targetTagList)","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"cleowenxuan"},"content":" \u0026\u0026 targetEventTagList.equals(otherAssignCommand.targetEventTagList)","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"jonpwk"},"content":" \u0026\u0026 targetName.equals((otherAssignCommand.targetName)));","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"jonpwk"},"content":" public String toString() {","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"jonpwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"jonpwk"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"jonpwk"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"jonpwk"},"content":" .add(\"targetTagList\", targetTagList)","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"cleowenxuan"},"content":" .add(\"targetTagList\", targetEventTagList)","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"jonpwk"},"content":" .toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"cleowenxuan":15,"jonpwk":107}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" private final Optional\u003cEventTag\u003e eventTag;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, EventTag eventTag) {","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" this.eventTag \u003d Optional.ofNullable(eventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" * Constructs a {@code CommandResult} with the specified fields, with eventTag set to null.","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" this(feedbackToUser, showHelp, exit, null);","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" this(feedbackToUser, false, false, null);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser} and {@code eventTag},","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" public CommandResult(String feedbackToUser, EventTag eventTag) {","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" this(feedbackToUser, false, false, eventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" public Optional\u003cEventTag\u003e getEventTag() {","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" return eventTag;","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"peienlim":26,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/CtagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":" * Adds a tag to the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":"public class CtagCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" public static final String COMMAND_WORD \u003d \"ctag\";","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a tag or event tag to the address book. \"","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" + \"tagName\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" + \"FRIEND\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" + \"or \" + COMMAND_WORD + \" \" + PREFIX_EVENT_TAG + \" eventName\" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" + PREFIX_DESCRIPTION + \" Description\" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" + PREFIX_START_DATE + \"yyyy-MM-dd HH:mm:ss\" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" + PREFIX_END_DATE + \"yyyy-MM-dd HH:mm:ss\" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" + \"Example: \" + COMMAND_WORD + \" \";","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_SUCCESS_TAG \u003d \"New tag added: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_SUCCESS_EVENT_TAG \u003d \"New event tag added: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_DUPLICATE_TAG \u003d \"This tag already exists in the address book\";","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_DUPLICATE_EVENT_TAG \u003d \"This EventTag already exists in the address book\";","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_FAILED \u003d \"Failed to add any tag or event tag.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":" private final Tag toAdd;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" private final EventTag toAddEvent;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jonpwk"},"content":" * Creates an CtagCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":" public CtagCommand(Tag toAdd, EventTag toAddEvent) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" this.toAdd \u003d toAdd;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" this.toAddEvent \u003d toAddEvent;","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jonpwk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":" boolean isEventTag \u003d toAddEvent !\u003d null;","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" boolean isTag \u003d toAdd !\u003d null;","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":" if (isTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"jonpwk"},"content":" if (model.hasTag(toAdd)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TAG);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jonpwk"},"content":" model.addTag(toAdd);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_TAG, toAdd));","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"peterXGD"},"content":" if (isEventTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"peterXGD"},"content":" if (model.hasEventTag(toAddEvent.tagName)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"peterXGD"},"content":" throw new CommandException(MESSAGE_DUPLICATE_EVENT_TAG);","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"peterXGD"},"content":" model.addEventTag(toAddEvent);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_EVENT_TAG, toAddEvent));","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(MESSAGE_FAILED);","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jonpwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jonpwk"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jonpwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jonpwk"},"content":" if (!(other instanceof CtagCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"jonpwk"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jonpwk"},"content":" CtagCommand e \u003d (CtagCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"peterXGD"},"content":" return toAdd.equals(e.toAdd) \u0026\u0026 toAddEvent.equals(e.toAddEvent);","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jonpwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jonpwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jonpwk"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"peterXGD"},"content":" .add(\"toAddEventTag\", toAddEvent)","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"jonpwk"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"peterXGD":39,"jonpwk":58}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":" * Deletes a person identified using it\u0027s displayed index or displayed name from the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":" + \": Deletes the person identified by the index number or full name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":" + \"Parameters: INDEX (must be a positive integer) or NAME (must be the exact full name)\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\" + \"or\" + COMMAND_WORD + \" John Doe\";","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_DELETE_PERSON_ERROR \u003d \"Please provide either a name or index to delete.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" private final String targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":" * Constructs a DeleteCommand with the specified target index and target name.","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"cleowenxuan"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":" * @param targetIndex The index of the person to be deleted.","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"cleowenxuan"},"content":" * @param targetName The name of the person to be deleted.","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" public DeleteCommand(Index targetIndex, String targetName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"cleowenxuan"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"cleowenxuan"},"content":" } else if (targetName !\u003d dummyName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"cleowenxuan"},"content":" Optional\u003cPerson\u003e personToFind \u003d lastShownList.stream().filter(person -\u003e person.getName()","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" .toString().equals(targetName)).findFirst();","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"cleowenxuan"},"content":" if (personToFind.isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"cleowenxuan"},"content":" Person personToDelete \u003d personToFind.get();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"cleowenxuan"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_DELETE_PERSON_ERROR);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"cleowenxuan"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex) \u0026\u0026 targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"cleowenxuan"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cleowenxuan":32,"-":62}},{"path":"src/main/java/seedu/address/logic/commands/DeventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" * Format devent command for EventBook that deletes a tag.","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":"public class DeventCommand extends Command {","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public static final String COMMAND_WORD \u003d \"devent\";","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": delete an event tag from the list\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" + \"EventTag name\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" + \"FRIEND\\n\";","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_SUCCESS_DELETE \u003d \"Deleted event tag %1$s\";","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_NO_EVENT_TAG \u003d \"This EventTag does not exists in the address book\";","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_FAILED \u003d \"Failed to remove event tag.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" private final String tagName;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" * Creates an CtagCommand to add the specified {@code Person}","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" public DeventCommand(String tagName) {","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"peterXGD"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"peterXGD"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"peterXGD"},"content":" if (!model.hasEventTag(tagName)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" throw new CommandException(MESSAGE_NO_EVENT_TAG);","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"peterXGD"},"content":" //get event tag to be used for checking","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"peterXGD"},"content":" EventTag et \u003d model.getEventTag(tagName);","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"peterXGD"},"content":" model.clearCurrentEventTag();","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":" model.updateTagPersonList(et);","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"peterXGD"},"content":" model.deleteEventTag(et);","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_DELETE, et));","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"peterXGD"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":" return true;","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"peterXGD"},"content":" if (!(other instanceof seedu.address.logic.commands.DeventCommand)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":" return false;","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" seedu.address.logic.commands.DeventCommand e \u003d (seedu.address.logic.commands.DeventCommand) other;","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":" return this.tagName \u003d\u003d ((DeventCommand) other).tagName;","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"peterXGD"},"content":" public String toString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"peterXGD"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"peterXGD"},"content":" .add(\"tagName\", tagName)","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"peterXGD"},"content":" .toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"peterXGD":73}},{"path":"src/main/java/seedu/address/logic/commands/DtagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-01"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":" * Deletes a tag from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"public class DtagCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" public static final String COMMAND_WORD \u003d \"dtag\";","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" + \": Deletes the tag identified by the name used in the displayed tag list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" + \"Parameters: TAGNAME\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" + \"Example: \" + COMMAND_WORD + \" FRIEND\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_DELETE_TAG_SUCCESS \u003d \"Deleted Tag: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" private final String tagName;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":" public DtagCommand(String tagName) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jonpwk"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jonpwk"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jonpwk"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jonpwk"},"content":" Tag dummyTag \u003d new Tag(tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"jonpwk"},"content":" if (!model.hasTag(dummyTag)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TAG);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jonpwk"},"content":" model.deleteTag(dummyTag);","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"jonpwk"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TAG_SUCCESS, tagName));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jonpwk"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jonpwk"},"content":" if (!(other instanceof DtagCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jonpwk"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jonpwk"},"content":" DtagCommand otherDeleteCommand \u003d (DtagCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jonpwk"},"content":" return tagName.equals(otherDeleteCommand.tagName);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jonpwk"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jonpwk"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jonpwk"},"content":" .add(\"tagName\", tagName)","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jonpwk"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jonpwk":67}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" + \"by the index number or the name used in the displayed person list. \"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"cleowenxuan"},"content":" + \"Parameters: INDEX (must be a positive integer) or NAME (must be the exact name saved)\"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_EDIT_PERSON_ERROR \u003d \"Please provide either a valid name or index to edit.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"cleowenxuan"},"content":" private final String name;","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" * @param name of the person in the filtered person list to edit","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" public EditCommand(Index index, String name, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":" this.name \u003d name;","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"cleowenxuan"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"cleowenxuan"},"content":" } else if (name !\u003d dummyName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"cleowenxuan"},"content":" Optional\u003cPerson\u003e personToFind \u003d lastShownList.stream().filter(person -\u003e person.getName()","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"cleowenxuan"},"content":" .toString().equals(name)).findFirst();","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"cleowenxuan"},"content":" if (personToFind.isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"cleowenxuan"},"content":" Person personToEdit \u003d personToFind.get();","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"cleowenxuan"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"cleowenxuan"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"cleowenxuan"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"cleowenxuan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"cleowenxuan"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_EDIT_PERSON_ERROR);","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" Set\u003cEventTag\u003e updatedEventTags \u003d editPersonDescriptor.getEventTags().orElse(personToEdit.getEventTags());","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedEventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"cleowenxuan"},"content":" return index.equals(otherEditCommand.index) \u0026\u0026 name.equals(otherEditCommand.name)","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"cleowenxuan"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":169,"author":{"gitId":"peienlim"},"content":" private Set\u003cEventTag\u003e eventTags;","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":183,"author":{"gitId":"peienlim"},"content":" setEventTags(toCopy.eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":243,"author":{"gitId":"peienlim"},"content":" * Sets {@code eventTags} to this object\u0027s {@code eventTags}.","lastModifiedDate":"2024-04-02"},{"lineNumber":244,"author":{"gitId":"peienlim"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-04-02"},{"lineNumber":245,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"peienlim"},"content":" public void setEventTags(Set\u003cEventTag\u003e eventTag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":247,"author":{"gitId":"peienlim"},"content":" this.eventTags \u003d (eventTag !\u003d null) ? new HashSet\u003c\u003e(eventTag) : null;","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":249,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":250,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":251,"author":{"gitId":"peienlim"},"content":" * Returns an unmodifiable event tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-04-02"},{"lineNumber":252,"author":{"gitId":"peienlim"},"content":" * if modification is attempted.","lastModifiedDate":"2024-04-02"},{"lineNumber":253,"author":{"gitId":"peienlim"},"content":" * Returns {@code Optional#empty()} if {@code eventTag} is null.","lastModifiedDate":"2024-04-02"},{"lineNumber":254,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":255,"author":{"gitId":"peienlim"},"content":" public Optional\u003cSet\u003cEventTag\u003e\u003e getEventTags() {","lastModifiedDate":"2024-04-02"},{"lineNumber":256,"author":{"gitId":"peienlim"},"content":" return (eventTags !\u003d null) ? Optional.of(Collections.unmodifiableSet(eventTags)) : Optional.empty();","lastModifiedDate":"2024-04-02"},{"lineNumber":257,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":258,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":262,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":272,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"cleowenxuan":31,"peienlim":22,"-":236}},{"path":"src/main/java/seedu/address/logic/commands/ExportCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.FIELDS;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.NUMBER_OF_FIELDS;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":"import java.io.File;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"import java.io.IOException;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" * Exports contacts from address book","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":"public class ExportCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"owenong1"},"content":" public static final String COMMAND_WORD \u003d \"export\";","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contacts from address book have been exported!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_FAILURE \u003d \"Something went wrong! Make sure export.csv is not open!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"owenong1"},"content":" public static final String EXPORT_PATH \u003d \"./export/export.csv\";","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"owenong1"},"content":" private Set\u003cEventTag\u003e exported \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"owenong1"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"owenong1"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":" exportFile(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"owenong1"},"content":" * Reads the current address book and exports to ./export/export.csv","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"owenong1"},"content":" * @param model as in execute()","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"owenong1"},"content":" * @throws CommandException in the case that the file cannot be written to","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"owenong1"},"content":" private void exportFile(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"owenong1"},"content":" ObservableList\u003cPerson\u003e list \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"owenong1"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"owenong1"},"content":" File exportFile \u003d new File(EXPORT_PATH);","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"owenong1"},"content":" FileWriter fw \u003d new FileWriter(exportFile);","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"owenong1"},"content":" for (int i \u003d 0; i \u003c NUMBER_OF_FIELDS; i++) {","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"owenong1"},"content":" fw.write(FIELDS.get(i));","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"owenong1"},"content":" if (i + 1 !\u003d NUMBER_OF_FIELDS) {","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"owenong1"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"owenong1"},"content":" for (Person person : list) {","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"owenong1"},"content":" fw.write(person.getName().toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"owenong1"},"content":" fw.write(person.getPhone().toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"owenong1"},"content":" fw.write(person.getEmail().toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"owenong1"},"content":" fw.write(person.getAddress().toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"owenong1"},"content":" Set\u003cEventTag\u003e eTags \u003d person.getEventTags();","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"owenong1"},"content":" StringBuilder eTagsString \u003d new StringBuilder();","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"owenong1"},"content":" for (EventTag eTag : eTags) {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"owenong1"},"content":" if (exported.contains(eTag)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"owenong1"},"content":" eTagsString.append(eTag.tagName).append(\"|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"owenong1"},"content":" } else {","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"owenong1"},"content":" exported.add(eTag);","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"owenong1"},"content":" eTagsString.append(eTag.getCodeFormat()).append(\"|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"owenong1"},"content":" eTagsString.deleteCharAt(eTagsString.length() - 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"owenong1"},"content":" fw.write(eTagsString.toString());","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"owenong1"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"owenong1"},"content":" StringBuilder tagsString \u003d new StringBuilder();","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"owenong1"},"content":" for (Tag tag : tags) {","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"owenong1"},"content":" tagsString.append(tag.tagName).append(\"|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"owenong1"},"content":" tagsString.deleteCharAt(tagsString.length() - 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"owenong1"},"content":" fw.write(tagsString.toString());","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"owenong1"},"content":" fw.write(\",\");","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"owenong1"},"content":" fw.write(\"\\n\");","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"owenong1"},"content":" fw.close();","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"owenong1"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"owenong1":100}},{"path":"src/main/java/seedu/address/logic/commands/ImportCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.FIELDS;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.NUMBER_OF_FIELDS;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.ImportExportSyntax.PREFIX_MAP;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"import java.io.File;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":" * Imports contacts from csv","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":"public class ImportCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"owenong1"},"content":" public static final String COMMAND_WORD \u003d \"import\";","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contacts from csv have been added!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_FILE_NOT_FOUND \u003d \"File could not be found! Check import.csv exists at ./import\";","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_FIELDS_FORMAT_ERROR \u003d \"An error occurred while parsing the csv! \"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"owenong1"},"content":" + \"Check the field values!\";","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_VALUES_FORMAT_ERROR \u003d \"An error occurred while adding persons to the csv!\\n \"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"owenong1"},"content":" + \"The values in the csv are converted to add command format\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"owenong1"},"content":" + \"Make sure the values match the correct format for the add command!\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"owenong1"},"content":" + \"The error with the add command occurred as follows:\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_EVENTS_FORMAT_ERROR \u003d \"An error occurred while parsing the EVENTS/TAGS portion! \"","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":" + \"Make sure the first occurrence values match the correct format for the add command!\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" + \"(See UG for more details)\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" + \"The error with the command occurred as follows:\\n\";","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":" public static final String DEFAULT_PATH \u003d \"./import/import.csv\";","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"owenong1"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"owenong1"},"content":" + \": Updates the Address book with contacts from the \"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"owenong1"},"content":" + \"csv file found at given path.\"","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"owenong1"},"content":" + \"If path not specified, default path is: \" + DEFAULT_PATH + \"\\n\"","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"owenong1"},"content":" + \"Parameters: path to file (prefixed with /f)\\n\"","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"owenong1"},"content":" + \"Example: \" + COMMAND_WORD + \" f/\" + DEFAULT_PATH + \"\\n\"","lastModifiedDate":"2024-04-01"},{"lineNumber":46,"author":{"gitId":"owenong1"},"content":" + \"Example: \" + COMMAND_WORD + \" f/\";","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"owenong1"},"content":" private final String path;","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"owenong1"},"content":" private final List\u003cString\u003e personsToAdd \u003d new ArrayList\u003c\u003e(); // To hold the person data from the csv","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"owenong1"},"content":" private final List\u003cCommand\u003e commands \u003d new ArrayList\u003c\u003e(); // Holds commands to assign and generate eventTags;","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":52,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":53,"author":{"gitId":"owenong1"},"content":" * @param path of the import.csv file containing contacts to import","lastModifiedDate":"2024-04-01"},{"lineNumber":54,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":55,"author":{"gitId":"owenong1"},"content":" public ImportCommand(String path) {","lastModifiedDate":"2024-04-01"},{"lineNumber":56,"author":{"gitId":"owenong1"},"content":" requireAllNonNull(path);","lastModifiedDate":"2024-04-01"},{"lineNumber":57,"author":{"gitId":"owenong1"},"content":" this.path \u003d (path.isEmpty()) ? DEFAULT_PATH : path;","lastModifiedDate":"2024-04-01"},{"lineNumber":58,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":59,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"owenong1"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"owenong1"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"owenong1"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"owenong1"},"content":" try { // parse the csv file at the path w scanner","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"owenong1"},"content":" parse(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"owenong1"},"content":" checkFields(personsToAdd.get(0));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"owenong1"},"content":" personsToAdd.remove(0); // remove the fields","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"owenong1"},"content":" addPersons(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"owenong1"},"content":" loadEventTags(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"owenong1"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_FILE_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"owenong1"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_FIELDS_FORMAT_ERROR);","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"owenong1"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"owenong1"},"content":" * Parses the data in the csv into the given list","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"owenong1"},"content":" * Takes all the values and formats them into add command format","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"owenong1"},"content":" * e.g. John -\u003e n/John","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"owenong1"},"content":" private void parse(Model model) throws FileNotFoundException, IndexOutOfBoundsException, CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"owenong1"},"content":" StringBuilder currRow \u003d new StringBuilder(); // To hold the current row data","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"owenong1"},"content":" Scanner sc \u003d new Scanner(new File(path));","lastModifiedDate":"2024-04-01"},{"lineNumber":89,"author":{"gitId":"owenong1"},"content":" sc.useDelimiter(\",|\\r?\\n\");","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"owenong1"},"content":" int count \u003d 0; // holds an idx to keep track of the current field","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"owenong1"},"content":" String personName \u003d \"\";","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"owenong1"},"content":" Boolean fieldsParsed \u003d false;","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"owenong1"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"owenong1"},"content":" String next \u003d sc.next();","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"owenong1"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"owenong1"},"content":" personName \u003d next;","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"owenong1"},"content":" if (!next.isEmpty()) { // append the field in the correct format if present","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"owenong1"},"content":" String formatted \u003d formatFieldValue(next, FIELDS.get(count), personName, fieldsParsed);","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"owenong1"},"content":" currRow.append(formatted);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"owenong1"},"content":" count +\u003d 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"owenong1"},"content":" if (count \u003d\u003d NUMBER_OF_FIELDS) { // add the person data to the list once parsed","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"owenong1"},"content":" currRow.deleteCharAt(currRow.length() - 1); // remove trailing \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"owenong1"},"content":" personsToAdd.add(currRow.toString());","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"owenong1"},"content":" currRow \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"owenong1"},"content":" count \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"owenong1"},"content":" fieldsParsed \u003d true;","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"owenong1"},"content":" sc.close();","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"owenong1"},"content":" * Formats the given data field into proper command format","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"owenong1"},"content":" * e.g. John -\u003e n/John","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"owenong1"},"content":" * @param fieldValue the value to be formatted","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"owenong1"},"content":" * @param field the field the value belongs to","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"owenong1"},"content":" * @param personName holds the current persons name","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"owenong1"},"content":" * @param fieldsParsed checks for whether fields are being parsed or not","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"owenong1"},"content":" * @return the given field value formatted into command format","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"owenong1"},"content":" private String formatFieldValue(String fieldValue, String field, String personName, Boolean fieldsParsed)","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"owenong1"},"content":" throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"owenong1"},"content":" final String rmvChar \u003d \"\\uFEFF\";","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"owenong1"},"content":" if (fieldValue.startsWith(rmvChar)) { // to remove extra potential characters added due to csv format","lastModifiedDate":"2024-04-05"},{"lineNumber":132,"author":{"gitId":"owenong1"},"content":" fieldValue \u003d fieldValue.substring(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"owenong1"},"content":" if (field.equalsIgnoreCase(\"EVENTS\") \u0026\u0026 fieldsParsed) {","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"owenong1"},"content":" String[] eTags \u003d fieldValue.split(\"\\\\|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"owenong1"},"content":" for (String eTag : eTags) {","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"owenong1"},"content":" handleEventTag(eTag, personName);","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"owenong1"},"content":" return \"\";","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"owenong1"},"content":" String prefix \u003d PREFIX_MAP.get(field);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"owenong1"},"content":" if (field.equalsIgnoreCase(\"TAGS\") \u0026\u0026 fieldsParsed) { // handle case of multiple tags in field","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"owenong1"},"content":" String[] tags \u003d fieldValue.split(\"\\\\|\");","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"owenong1"},"content":" StringBuilder tagString \u003d new StringBuilder();","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"owenong1"},"content":" for (String tag : tags) {","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"owenong1"},"content":" tagString.append(prefix).append(tag).append(\" \");","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"owenong1"},"content":" return tagString.toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"owenong1"},"content":" return prefix + fieldValue + \" \";","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"owenong1"},"content":" * Manages the eventTags to create and assign","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"owenong1"},"content":" * @param details holds the eventTag details","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"owenong1"},"content":" private void handleEventTag(String details, String personName) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"owenong1"},"content":" if (!details.equals(\"N/A\") \u0026\u0026 !details.equalsIgnoreCase(\"EVENTS\")) {","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"owenong1"},"content":" try {","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"owenong1"},"content":" AddressBookParser addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"owenong1"},"content":" if (details.trim().split(\" \").length !\u003d 1) { // case where event is defined","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"owenong1"},"content":" commands.add(addressBookParser.parseCommand(\"ctag \" + details));","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"owenong1"},"content":" String eventName \u003d details.trim().split(\" \")[0].substring(2);","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"owenong1"},"content":" commands.add(addressBookParser.parseCommand(\"assign \" + personName + \"t/\" + eventName));","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"owenong1"},"content":" } else { // case where only event name is given","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"owenong1"},"content":" commands.add(addressBookParser.parseCommand(\"assign \" + personName + \"t/E-\" + details));","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"owenong1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-04-05"},{"lineNumber":173,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_EVENTS_FORMAT_ERROR + e.getMessage());","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"owenong1"},"content":" private void loadEventTags(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"owenong1"},"content":" try {","lastModifiedDate":"2024-04-05"},{"lineNumber":180,"author":{"gitId":"owenong1"},"content":" AddressBookParser addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"owenong1"},"content":" // access model and add/assign events into address book","lastModifiedDate":"2024-04-05"},{"lineNumber":182,"author":{"gitId":"owenong1"},"content":" for (Command command : commands) {","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"owenong1"},"content":" command.execute(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":185,"author":{"gitId":"owenong1"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_EVENTS_FORMAT_ERROR + e.getMessage());","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"owenong1"},"content":" * Returns True if given String matches the number and order of fields specified in FIELDS","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"owenong1"},"content":" * @param fieldString String parsed from the first row of the csv file","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"owenong1"},"content":" private void checkFields(String fieldString) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"owenong1"},"content":" StringBuilder fields \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"owenong1"},"content":" for (String field: FIELDS) {","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"owenong1"},"content":" fields.append(PREFIX_MAP.get(field));","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"owenong1"},"content":" fields.append(field).append(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"owenong1"},"content":" fields.deleteCharAt(fields.length() - 1); // adjust for extra \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"owenong1"},"content":" if (!fieldString.equalsIgnoreCase(fields.toString())) {","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_FIELDS_FORMAT_ERROR);","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"owenong1"},"content":" * Adds the person data from the list to the addressbook","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"owenong1"},"content":" * Simulates the work of AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"owenong1"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"owenong1"},"content":" * @param model reference to the model to add the data into","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"owenong1"},"content":" private void addPersons(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":214,"author":{"gitId":"owenong1"},"content":" try {","lastModifiedDate":"2024-04-05"},{"lineNumber":215,"author":{"gitId":"owenong1"},"content":" AddressBookParser addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"owenong1"},"content":" // access model and add people into address book","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"owenong1"},"content":" for (String person : personsToAdd) {","lastModifiedDate":"2024-04-05"},{"lineNumber":218,"author":{"gitId":"owenong1"},"content":" String commandText \u003d \"add \" + person;","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"owenong1"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"owenong1"},"content":" command.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"owenong1"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2024-04-05"},{"lineNumber":223,"author":{"gitId":"owenong1"},"content":" throw new CommandException(MESSAGE_VALUES_FORMAT_ERROR);","lastModifiedDate":"2024-04-05"},{"lineNumber":224,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":225,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"owenong1":226}},{"path":"src/main/java/seedu/address/logic/commands/ImportExportSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"import java.util.Map;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"public class ImportExportSyntax {","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":" public static final List\u003cString\u003e FIELDS \u003d List.of(","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":" \"NAME\", \"NUMBER\", \"EMAIL\", \"ADDRESS\", \"EVENTS\", \"TAGS\"","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":" ); // TO hold the fields present in the csv","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":" public static final int NUMBER_OF_FIELDS \u003d FIELDS.size();","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":" public static final Map\u003cString, String\u003e PREFIX_MAP \u003d Map.of(","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":" \"NAME\", \"n/\",","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":" \"NUMBER\", \"p/\",","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":" \"EMAIL\", \"e/\",","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":" \"ADDRESS\", \"a/\",","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":" \"TAGS\", \"t/\",","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":" \"EVENTS\", \"\"","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" ); // To format the data in the csv to command format","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"owenong1":23}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import static seedu.address.model.AddressBook.DEFAULT_EVENT_TAG;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" model.clearCurrentEventTag();","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":" return new CommandResult(MESSAGE_SUCCESS, DEFAULT_EVENT_TAG);","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"peienlim":3,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/SearchTagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" * Format search instructions for every command for display.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":"public class SearchTagCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" public static final String COMMAND_WORD \u003d \"search\";","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_SUCCESS \u003d \"found all person with the tag\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_NO_TAG \u003d \"no person with this tag is found\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" + \": Search people who are associated with this tag \"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" + \"by listing the person that it is associated with.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" + \"Parameters: TAG (must be an existing tag) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" + \"[TAG]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" + \"Example: \" + COMMAND_WORD + \" school\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" private final Tag tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" * The constructor for SearchCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" * @param tag the tag that you want to search the list for","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"cleowenxuan"},"content":" public SearchTagCommand(Tag tag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"peterXGD"},"content":" requireAllNonNull(tag);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"peterXGD"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"peterXGD"},"content":" if (!model.hasTag(tag)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"peterXGD"},"content":" throw new CommandException(MESSAGE_NO_TAG);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":" model.updateTagPersonList(tag);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"peterXGD"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"peterXGD"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"peterXGD"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"peterXGD"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":" if (!(other instanceof SearchTagCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"peterXGD"},"content":" SearchTagCommand e \u003d (SearchTagCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"peterXGD"},"content":" return tag.equals(e.tag);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":61,"peienlim":1}},{"path":"src/main/java/seedu/address/logic/commands/SwitchCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"cleowenxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"cleowenxuan"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"cleowenxuan"},"content":" * Switch command to toggle between different events.","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":"public class SwitchCommand extends Command {","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"cleowenxuan"},"content":" public static final String COMMAND_WORD \u003d \"switch\";","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Found all persons with the tag.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_SUCCESS_EVENT_TAG \u003d \"Displaying all persons in the event: \";","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_NO_EVENT_TAG \u003d \"No such event found.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" + \": Finds people who are associated with this tag \"","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":" + \"by listing the person that it is associated with.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"cleowenxuan"},"content":" + \"Parameters: TAG (must be an existing tag) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" + \"[TAG]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" + \"Example: \" + COMMAND_WORD + \" school\";","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"cleowenxuan"},"content":" private final Tag tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":" * The constructor for SwitchCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"cleowenxuan"},"content":" * @param tag the tag that you want to search the list for","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" public SwitchCommand(Tag tag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"cleowenxuan"},"content":" requireAllNonNull(tag);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"cleowenxuan"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"cleowenxuan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"cleowenxuan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"cleowenxuan"},"content":" if (!model.hasEventTag(tag.tagName)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"cleowenxuan"},"content":" throw new CommandException(MESSAGE_NO_EVENT_TAG);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"cleowenxuan"},"content":" EventTag eventTag \u003d model.getEventTag(tag.tagName);","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"cleowenxuan"},"content":" model.updateEventTagPersonList(eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" return new CommandResult(getEventTagDescription(eventTag), eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"cleowenxuan"},"content":" private String getEventTagDescription(EventTag eventTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"cleowenxuan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d, yyyy HH:mm a\");","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"cleowenxuan"},"content":" return MESSAGE_SUCCESS_EVENT_TAG + eventTag.tagName + \"\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"cleowenxuan"},"content":" + \"Description: \" + eventTag.description + \"\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"cleowenxuan"},"content":" + \"Start Date: \" + eventTag.startDate.format(formatter) + \"\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" + \"End Date: \" + eventTag.endDate.format(formatter) + \"\\n\";","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"cleowenxuan"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"cleowenxuan"},"content":" return true;","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"cleowenxuan"},"content":" if (!(other instanceof SwitchCommand)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":" return false;","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"cleowenxuan"},"content":" SwitchCommand e \u003d (SwitchCommand) other;","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"cleowenxuan"},"content":" return tag.equals(e.tag);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"cleowenxuan"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"cleowenxuan":76}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, new HashSet\u003c\u003e());","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"peienlim":2,"-":60}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.CtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.DeventCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.DtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.ImportCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.SearchTagCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.SwitchCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"jonpwk"},"content":" case CtagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" return new CtagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jonpwk"},"content":" case DtagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jonpwk"},"content":" return new DtagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"owenong1"},"content":" case ImportCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"owenong1"},"content":" return new ImportCommandParser().parse(arguments);","lastModifiedDate":"2024-04-01"},{"lineNumber":96,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"owenong1"},"content":" case ExportCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"owenong1"},"content":" return new ExportCommand();","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"peterXGD"},"content":" case SearchTagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"peterXGD"},"content":" return new SearchCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" case AssignCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" return new AssignCommandParser().parse(arguments);","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"cleowenxuan"},"content":" case SwitchCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"cleowenxuan"},"content":" return new SwitchCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"peterXGD"},"content":" case DeventCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"peterXGD"},"content":" return new DeventCommandParser().parse(arguments);","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cleowenxuan":4,"peterXGD":8,"owenong1":8,"jonpwk":12,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-10-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"peterXGD"},"content":" public static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"peterXGD":1,"-":147}},{"path":"src/main/java/seedu/address/logic/parser/AssignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" * Parses input arguments and creates a new AssignCommand object","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":"public class AssignCommandParser implements Parser\u003cAssignCommand\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" public AssignCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" String[] args \u003d userInput.trim().split(\"t/\");","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" String nameOrIndex \u003d args[0];","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" String tags \u003d \" t/\" + String.join(\" t/\", Arrays.copyOfRange(args, 1, args.length));","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(tags, PREFIX_TAG);","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_TAG)","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":" || userInput.equals(\"\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":" Set\u003cTag\u003e tagList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"cleowenxuan"},"content":" Set\u003cTag\u003e eventTagList \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"cleowenxuan"},"content":" for (String tagValue : argMultimap.getAllValues(PREFIX_TAG)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"cleowenxuan"},"content":" if (tagValue.startsWith(\"E-\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" Tag eventTag \u003d ParserUtil.parseEventTag(tagValue.substring(2));","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"cleowenxuan"},"content":" eventTagList.add(eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"cleowenxuan"},"content":" Tag normalTag \u003d ParserUtil.parseTag(tagValue);","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"cleowenxuan"},"content":" tagList.add(normalTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" try {","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"jonpwk"},"content":" Object parsedObject \u003d ParserUtil.parseNameIndex(nameOrIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" if (parsedObject instanceof Index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" Index index \u003d (Index) parsedObject;","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" return new AssignCommand(index, dummyName, tagList, eventTagList);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":" } else if (parsedObject instanceof Name) {","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"jonpwk"},"content":" Name name \u003d (Name) parsedObject;","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"jonpwk"},"content":" String nameString \u003d name.toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"cleowenxuan"},"content":" return new AssignCommand(null, nameString, tagList, eventTagList);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"jonpwk"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"jonpwk"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"jonpwk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"jonpwk"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"jonpwk"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"cleowenxuan":16,"jonpwk":53}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":" public static final Prefix PREFIX_FILE \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-04-01"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" public static final Prefix PREFIX_EVENT_TAG \u003d new Prefix(\"t/E-\");","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public static final Prefix PREFIX_START_DATE \u003d new Prefix(\"sd/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" public static final Prefix PREFIX_END_DATE \u003d new Prefix(\"ed/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public static final Prefix PREFIX_DESCRIPTION \u003d new Prefix(\"dc/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"owenong1":1,"peterXGD":4,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/CtagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_DATE;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_DATE;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.CtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" * Parses input arguments and creates a new CtagCommand object.","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":"public class CtagCommandParser implements Parser\u003cCtagCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" * Parses the given {@code String} of arguments in the context of the CtagCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" * and returns a CtagCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" public CtagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jonpwk"},"content":" String tagName \u003d args.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" CtagCommand cmd \u003d new CtagCommand(null, null);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":" if (tagName.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jonpwk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"peterXGD"},"content":" boolean isEventTag \u003d ArgumentTokenizer.findPrefixPosition(args, PREFIX_EVENT_TAG.getPrefix(), 0) !\u003d -1;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"peterXGD"},"content":" boolean isTag \u003d tagName.split(\" \").length \u003d\u003d 1;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"peterXGD"},"content":" //check type of tag: e-tag or normal tag","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" if (isTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" //if we have a tag string","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" Tag tag \u003d ParserUtil.parseTag(tagName);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"peterXGD"},"content":" cmd \u003d new CtagCommand(tag, null);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"peterXGD"},"content":" } else if (isEventTag) {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":" //if we have an event tag","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"peterXGD"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" PREFIX_EVENT_TAG, PREFIX_DESCRIPTION, PREFIX_START_DATE, PREFIX_END_DATE);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"peterXGD"},"content":" if (!containsAllPrefix(argMultimap,","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"peterXGD"},"content":" PREFIX_EVENT_TAG, PREFIX_DESCRIPTION, PREFIX_START_DATE, PREFIX_END_DATE)","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"peterXGD"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":" PREFIX_EVENT_TAG, PREFIX_DESCRIPTION, PREFIX_START_DATE, PREFIX_END_DATE);","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" String name \u003d argMultimap.getValue(PREFIX_EVENT_TAG).get();","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":" LocalDateTime sd \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_START_DATE).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":" LocalDateTime ed \u003d ParserUtil.parseDateTime(argMultimap.getValue(PREFIX_END_DATE).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"peterXGD"},"content":" String description \u003d argMultimap.getValue(PREFIX_DESCRIPTION).get();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":" EventTag eventTag \u003d new EventTag(name, description, sd, ed);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"peterXGD"},"content":" cmd \u003d new CtagCommand(null, eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" return cmd;","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"peterXGD"},"content":" * Check if all prefixes have input, returns true if so","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"peterXGD"},"content":" * and returns a CtagCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"peterXGD"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"peterXGD"},"content":" public boolean containsAllPrefix(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"peterXGD"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"peterXGD":43,"jonpwk":30}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"cleowenxuan"},"content":" Object parsedObject \u003d ParserUtil.parseNameIndex(args);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":" if (parsedObject instanceof Index) {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":" Index index \u003d (Index) parsedObject;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" return new DeleteCommand(index, dummyName);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":" } else if (parsedObject instanceof Name) {","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"cleowenxuan"},"content":" Name name \u003d (Name) parsedObject;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" String nameString \u003d name.toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" return new DeleteCommand(null, nameString);","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"cleowenxuan":13,"-":26}},{"path":"src/main/java/seedu/address/logic/parser/DeventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.DeventCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":" * Parser for the devent command.","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"public class DeventCommandParser {","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" * Parses the given {@code String} of arguments in the context of the DeventCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" * and returns a DeventCommand object for execution.","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public DeventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\" \");","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" if (nameKeywords.length !\u003d 1) {","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" String tagName \u003d nameKeywords[0];","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" return new DeventCommand(tagName);","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"peterXGD":30}},{"path":"src/main/java/seedu/address/logic/parser/DtagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.DtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":" * Parses input arguments and creates a new DtagCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"public class DtagCommandParser implements Parser\u003cDtagCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":" * Parses the given {@code String} of arguments in the context of the DtagCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":" * and returns a DtagCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" public DtagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" String tagName \u003d args.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" if (tagName.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" return new DtagCommand(tagName);","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jonpwk":29}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"cleowenxuan"},"content":" Index index \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"cleowenxuan"},"content":" Name name \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"cleowenxuan"},"content":" Object parsedObject \u003d ParserUtil.parseNameIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"cleowenxuan"},"content":" if (parsedObject instanceof Index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"cleowenxuan"},"content":" index \u003d (Index) parsedObject;","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"cleowenxuan"},"content":" } else if (parsedObject instanceof Name) {","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"cleowenxuan"},"content":" name \u003d (Name) parsedObject;","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"cleowenxuan"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"cleowenxuan"},"content":" return new EditCommand(index, dummyName, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"cleowenxuan"},"content":" } else if (name !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"cleowenxuan"},"content":" return new EditCommand(null, name.toString(), editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"cleowenxuan":19,"-":81}},{"path":"src/main/java/seedu/address/logic/parser/ImportCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-01"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FILE;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-01"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.commands.ImportCommand;","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-01"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-04-01"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":" * Parses input arguments and creates a new ImportCommand object","lastModifiedDate":"2024-04-01"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":"public class ImportCommandParser implements Parser\u003cImportCommand\u003e {","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":" * Parses the given {@code String} of arguments in the context of the ImportCommand","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":" * and returns an ImportCommand object for execution.","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"owenong1"},"content":" public ImportCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"owenong1"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"owenong1"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"owenong1"},"content":" PREFIX_FILE);","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":27,"author":{"gitId":"owenong1"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_FILE)","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"owenong1"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"owenong1"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ImportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"owenong1"},"content":" String path \u003d argMultimap.getValue(PREFIX_FILE).orElse(\"\");","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"owenong1"},"content":" return new ImportCommand(path);","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"owenong1"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"owenong1"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-04-01"}],"authorContributionMap":{"owenong1":43}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.CtagCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_INVALID_NAME \u003d \"Name is not a valid name in the contacts.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" public static final String MESSAGE_INVALID_INDEX_OR_NAME \u003d \"Index or Name is invalid.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" public static final String MESSAGE_INVALID_TIME_FORMAT \u003d \"Format of time is must be of YYYY-MM-DD HH:mm:ss\";","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":62,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" * Parses a {@code String} into an {@code Index} or {@code Name} object based on its content.","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"cleowenxuan"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"cleowenxuan"},"content":" * @param input The string to parse, which can be either an index or a name.","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"cleowenxuan"},"content":" * @return Either an {@code Index} or a {@code Name} object based on the input.","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"cleowenxuan"},"content":" * @throws ParseException if the input is neither a valid index nor a valid name.","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"cleowenxuan"},"content":" public static Object parseNameIndex(String input) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"cleowenxuan"},"content":" String trimmedInput \u003d input.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"cleowenxuan"},"content":" if (trimmedInput.equals(\"0\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"cleowenxuan"},"content":" } else if (StringUtil.isNonZeroUnsignedInteger(trimmedInput)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"cleowenxuan"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedInput));","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"cleowenxuan"},"content":" } else if (Name.isValidName(trimmedInput)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"cleowenxuan"},"content":" return new Name(trimmedInput);","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"cleowenxuan"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"cleowenxuan"},"content":" * Parses a {@code String tag} into a {@code EventTag}.","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"cleowenxuan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"cleowenxuan"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"cleowenxuan"},"content":" * @param tag The string representing the event tag.","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"cleowenxuan"},"content":" * @return The parsed EventTag object.","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"cleowenxuan"},"content":" * @throws ParseException If the tag string is invalid.","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"cleowenxuan"},"content":" public static Tag parseEventTag(String tag) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"cleowenxuan"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"cleowenxuan"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"cleowenxuan"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"cleowenxuan"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":171,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"peterXGD"},"content":" * Parses a {@code String date} into a {@code LocalDateTime}.","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"peterXGD"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"peterXGD"},"content":" * The String formatted should be of the pattern \"yyyy-MM-dd HH:mm:ss\" by default.","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"peterXGD"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"peterXGD"},"content":" * @throws DateTimeParseException if the given {@code tag} is invalid.","lastModifiedDate":"2024-03-29"},{"lineNumber":178,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"peterXGD"},"content":" public static LocalDateTime parseDateTime(String dateTime) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"peterXGD"},"content":" requireNonNull(dateTime);","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"peterXGD"},"content":" String trimmedTime \u003d dateTime.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"peterXGD"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2024-03-29"},{"lineNumber":183,"author":{"gitId":"peterXGD"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"peterXGD"},"content":" LocalDateTime time \u003d LocalDateTime.parse(trimmedTime, formatter);","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"peterXGD"},"content":" return time;","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"peterXGD"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"cleowenxuan":42,"peterXGD":24,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/SearchCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.SearchTagCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":" * Parser for the search command.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"public class SearchCommandParser implements Parser\u003cSearchTagCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" * Parses the given {@code String} of arguments in the context of the SearchCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" * and returns a SearchCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public SearchTagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\" \");","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" if (nameKeywords.length !\u003d 1) {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" Tag tag \u003d ParserUtil.parseTag(nameKeywords[0]);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" return new SearchTagCommand(tag);","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"peterXGD":30,"peienlim":2}},{"path":"src/main/java/seedu/address/logic/parser/SwitchCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.SearchTagCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.commands.SwitchCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"cleowenxuan"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":" * Parser for the switch command.","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"cleowenxuan"},"content":"public class SwitchCommandParser implements Parser\u003cSwitchCommand\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"cleowenxuan"},"content":" * Parses the given {@code String} of arguments in the context of the SwitchCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":" * and returns a SwitchCommand object for execution.","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"cleowenxuan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"cleowenxuan"},"content":" public SwitchCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"cleowenxuan"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"cleowenxuan"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"cleowenxuan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" if (nameKeywords.length !\u003d 1) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"cleowenxuan"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"cleowenxuan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" return new SwitchCommand(new Tag(nameKeywords[0]));","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"cleowenxuan":33}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.UniqueTagList;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" public static final EventTag DEFAULT_EVENT_TAG \u003d new EventTag(\"All\", \"All contacts in EventBook\",","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" LocalDateTime.parse(\"2024-04-05T14:00:00\"), LocalDateTime.parse(\"2024-04-05T14:00:00\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" private final UniqueTagList\u003cTag\u003e tagList;","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" private final UniqueTagList\u003cEventTag\u003e eventTagList;","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" tagList \u003d new UniqueTagList\u003cTag\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" eventTagList \u003d new UniqueTagList\u003cEventTag\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" public void setTagList(Set\u003cTag\u003e tagList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" this.tagList.setTags(tagList);","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" public void setEventTagList(Set\u003cEventTag\u003e eventTagList) {","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" this.eventTagList.setTags(eventTagList);","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" setTagList(newData.getTagList());","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" setEventTagList(newData.getEventTagList());","lastModifiedDate":"2024-04-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" //// person-level and tag-level operations","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" * Returns true if a tag {@code tag} exists in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"peienlim"},"content":" public boolean hasTag(Tag tag) {","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"peienlim"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"peienlim"},"content":" return tagList.contains(tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" * Assigns the given tags {@code tags} to {@code targetPerson}.","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":" * {@code tags} must exist in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"jonpwk"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"cleowenxuan"},"content":" public void assign(Person targetPerson, Set\u003cTag\u003e tags, Set\u003cTag\u003e eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"jonpwk"},"content":" targetPerson.addTags(tags);","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":" Set\u003cEventTag\u003e eventsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"cleowenxuan"},"content":" for (Tag t : eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":" EventTag eventTag \u003d getEventTag(t.tagName);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"cleowenxuan"},"content":" eventsToAdd.add(eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"cleowenxuan"},"content":" targetPerson.addEventTags(eventsToAdd);","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":" * Returns true if an event tag {@code tag} exists in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(EventTag eventTag) {","lastModifiedDate":"2024-04-01"},{"lineNumber":122,"author":{"gitId":"peienlim"},"content":" requireNonNull(eventTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":" return eventTagList.contains(eventTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"peienlim"},"content":" * Returns true if an event tag with name {@code eventTagName} exists in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(String eventTagName) {","lastModifiedDate":"2024-03-31"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" requireNonNull(eventTagName);","lastModifiedDate":"2024-03-31"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" return eventTagList.contains(eventTagName);","lastModifiedDate":"2024-03-31"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":140,"author":{"gitId":"jonpwk"},"content":" for (Tag tag:p.getTags()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"jonpwk"},"content":" if (!hasTag(tag)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"jonpwk"},"content":" addTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"jonpwk"},"content":" for (EventTag eventTag:p.getEventTags()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"jonpwk"},"content":" if (!hasEventTag(eventTag)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"jonpwk"},"content":" addEventTag(eventTag);","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"peienlim"},"content":" * Adds a tag to the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"peienlim"},"content":" * The tag must not already exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"peienlim"},"content":" public void addTag(Tag t) {","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"peienlim"},"content":" tagList.add(t);","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":161,"author":{"gitId":"peienlim"},"content":" * Adds an event tag to the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":162,"author":{"gitId":"peienlim"},"content":" * The event tag must not already exist in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":163,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":164,"author":{"gitId":"peienlim"},"content":" public void addEventTag(EventTag t) {","lastModifiedDate":"2024-04-01"},{"lineNumber":165,"author":{"gitId":"peienlim"},"content":" eventTagList.add(t);","lastModifiedDate":"2024-03-31"},{"lineNumber":166,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":167,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":168,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"peterXGD"},"content":" * Gets an event tag to the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"peienlim"},"content":" * The event tag must not already exist in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"peienlim"},"content":" public EventTag getEventTag(String t) {","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"peienlim"},"content":" return eventTagList.getEventTag(t);","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":182,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":187,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"peienlim"},"content":" * Replaces the given tag {@code target} in the list with {@code editedTag}.","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"peienlim"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"peienlim"},"content":" * The {@code editedTag} must not be the same as another tag in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"peienlim"},"content":" public void setTags(Tag target, Tag editedTag) {","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" requireNonNull(editedTag);","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":" tagList.replace(target, editedTag);","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":199,"author":{"gitId":"peienlim"},"content":" * Replaces the given event tag {@code target} in the list with {@code editedTag}.","lastModifiedDate":"2024-03-31"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":201,"author":{"gitId":"peienlim"},"content":" * The {@code editedTag} must not be the same as another event tag in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":202,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":" public void setEventTags(EventTag target, EventTag editedTag) {","lastModifiedDate":"2024-04-01"},{"lineNumber":204,"author":{"gitId":"peienlim"},"content":" requireNonNull(editedTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":205,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":206,"author":{"gitId":"peienlim"},"content":" eventTagList.replace(target, editedTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":207,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":208,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"peienlim"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2024-03-13"},{"lineNumber":219,"author":{"gitId":"peienlim"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"peienlim"},"content":" public void removeTag(Tag key) {","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"jonpwk"},"content":" for (Person p:persons) {","lastModifiedDate":"2024-04-01"},{"lineNumber":223,"author":{"gitId":"jonpwk"},"content":" p.removeTag(key);","lastModifiedDate":"2024-04-01"},{"lineNumber":224,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"jonpwk"},"content":" tagList.remove(key);","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":228,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":229,"author":{"gitId":"peterXGD"},"content":" * Removes {@code key} event tag from this {@code AddressBook}.","lastModifiedDate":"2024-04-05"},{"lineNumber":230,"author":{"gitId":"peterXGD"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":231,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":232,"author":{"gitId":"peienlim"},"content":" public void removeEventTag(EventTag key) {","lastModifiedDate":"2024-04-01"},{"lineNumber":233,"author":{"gitId":"peterXGD"},"content":" for (Person p:persons) {","lastModifiedDate":"2024-04-05"},{"lineNumber":234,"author":{"gitId":"peterXGD"},"content":" p.removeEventTag(key);","lastModifiedDate":"2024-04-05"},{"lineNumber":235,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":236,"author":{"gitId":"peienlim"},"content":" eventTagList.remove(key);","lastModifiedDate":"2024-03-31"},{"lineNumber":237,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":238,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":239,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":245,"author":{"gitId":"peienlim"},"content":" .add(\"tags\", tagList)","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"peienlim"},"content":" .add(\"event tags\", eventTagList)","lastModifiedDate":"2024-03-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":255,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":256,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cTag\u003e getTagList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":257,"author":{"gitId":"peienlim"},"content":" return tagList.asUnmodifiableObservableSet();","lastModifiedDate":"2024-03-13"},{"lineNumber":258,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":259,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":260,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":261,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-01"},{"lineNumber":262,"author":{"gitId":"peienlim"},"content":" return eventTagList.asUnmodifiableObservableSet();","lastModifiedDate":"2024-03-31"},{"lineNumber":263,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":264,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":266,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":267,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":268,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":271,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":272,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":273,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":277,"author":{"gitId":"peienlim"},"content":" return persons.equals(otherAddressBook.persons)","lastModifiedDate":"2024-03-13"},{"lineNumber":278,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 tagList.equals(otherAddressBook.tagList)","lastModifiedDate":"2024-03-31"},{"lineNumber":279,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 eventTagList.equals(otherAddressBook.eventTagList);","lastModifiedDate":"2024-03-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":282,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":283,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":284,"author":{"gitId":"peienlim"},"content":" return Objects.hash(persons, tagList, eventTagList);","lastModifiedDate":"2024-03-31"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cleowenxuan":8,"peterXGD":7,"jonpwk":22,"peienlim":120,"-":129}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"peienlim"},"content":" * Returns the AddressBook","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jonpwk"},"content":" * Returns true if a tag with the same identity as {@code tag} exists in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jonpwk"},"content":" boolean hasTag(Tag tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"jonpwk"},"content":" * Assigns the given tags {@code tags} to {@code targetPerson}.","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"jonpwk"},"content":" * {@code tags} must exist in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"jonpwk"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"cleowenxuan"},"content":" void assign(Person targetPerson, Set\u003cTag\u003e tags, Set\u003cTag\u003e eventTags);","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jonpwk"},"content":" * Deletes the given tag.","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" * The tag must exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" void deleteTag(Tag tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"jonpwk"},"content":" * Adds the given tag.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jonpwk"},"content":" * {@code tag} must not already exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"jonpwk"},"content":" void addTag(Tag tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"peienlim"},"content":" boolean hasEventTag(EventTag tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"peienlim"},"content":" boolean hasEventTag(String tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"peienlim"},"content":" void deleteEventTag(EventTag tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" void addEventTag(EventTag tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" EventTag getEventTag(String tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":" * Returns an unmodifiable view of the filtered person list","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"peterXGD"},"content":" void updateTagPersonList(Tag t);","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":135,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"peienlim"},"content":" ObservableSet\u003cEventTag\u003e getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":137,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"peienlim"},"content":" void updateEventTagPersonList(EventTag t);","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"peienlim"},"content":" void setCurrentEventTag(EventTag tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"peienlim"},"content":" void clearCurrentEventTag();","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":3,"jonpwk":26,"peienlim":29,"-":84}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" private EventTag currentEventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" currentEventTag \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"jonpwk"},"content":" public boolean hasTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jonpwk"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jonpwk"},"content":" return addressBook.hasTag(tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"cleowenxuan"},"content":" public void assign(Person targetPerson, Set\u003cTag\u003e tags, Set\u003cTag\u003e eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"cleowenxuan"},"content":" requireAllNonNull(targetPerson, tags, eventTags);","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"cleowenxuan"},"content":" addressBook.assign(targetPerson, tags, eventTags);","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"jonpwk"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jonpwk"},"content":" public void deleteTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jonpwk"},"content":" addressBook.removeTag(tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jonpwk"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jonpwk"},"content":" public void addTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jonpwk"},"content":" addressBook.addTag(tag);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"jonpwk"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"peienlim"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"peienlim"},"content":" return addressBook.hasEventTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":149,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(String tagName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"peienlim"},"content":" requireNonNull(tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"peienlim"},"content":" return addressBook.hasEventTag(tagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"peienlim"},"content":" public void deleteEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":159,"author":{"gitId":"peienlim"},"content":" addressBook.removeEventTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":160,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":161,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":162,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"peienlim"},"content":" public void addEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"peterXGD"},"content":" addressBook.addEventTag(tag);","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"peienlim"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"peienlim"},"content":" public EventTag getEventTag(String tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"peienlim"},"content":" return addressBook.getEventTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":186,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":187,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":190,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"peterXGD"},"content":" public void updateTagPersonList(Tag t) {","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"peterXGD"},"content":" requireNonNull(t);","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" if (currentEventTag !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":" Predicate\u003cPerson\u003e eventTagPredicate \u003d person -\u003e person.containsEventTag(currentEventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":" Predicate\u003cPerson\u003e normalTagPredicate \u003d person -\u003e person.containsTag(t);","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" filteredPersons.setPredicate(eventTagPredicate.and(normalTagPredicate));","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"peterXGD"},"content":" filteredPersons.setPredicate(person -\u003e person.containsTag(t));","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":201,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":202,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":" public void updateEventTagPersonList(EventTag t) {","lastModifiedDate":"2024-04-03"},{"lineNumber":204,"author":{"gitId":"peienlim"},"content":" requireNonNull(t);","lastModifiedDate":"2024-04-03"},{"lineNumber":205,"author":{"gitId":"peienlim"},"content":" setCurrentEventTag(t);","lastModifiedDate":"2024-04-03"},{"lineNumber":206,"author":{"gitId":"peienlim"},"content":" filteredPersons.setPredicate(person -\u003e person.containsEventTag(currentEventTag));","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":208,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":209,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":210,"author":{"gitId":"peienlim"},"content":" * Sets the current event tag to filter by.","lastModifiedDate":"2024-04-02"},{"lineNumber":211,"author":{"gitId":"peienlim"},"content":" * @param eventTag The event tag to filter by.","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"peienlim"},"content":" public void setCurrentEventTag(EventTag eventTag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"peienlim"},"content":" this.currentEventTag \u003d eventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"peienlim"},"content":" * Clears the current event tag.","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":220,"author":{"gitId":"peienlim"},"content":" public void clearCurrentEventTag() {","lastModifiedDate":"2024-04-02"},{"lineNumber":221,"author":{"gitId":"peienlim"},"content":" this.currentEventTag \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":223,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":231,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":241,"author":{"gitId":"peienlim"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Event List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-04-01"},{"lineNumber":242,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":243,"author":{"gitId":"peienlim"},"content":" * Returns an unmodifiable view of the list of {@code EventTag} backed by the internal list of","lastModifiedDate":"2024-04-01"},{"lineNumber":244,"author":{"gitId":"peienlim"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-04-01"},{"lineNumber":245,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":246,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-01"},{"lineNumber":247,"author":{"gitId":"peienlim"},"content":" return addressBook.getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":248,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":249,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cleowenxuan":3,"peterXGD":6,"jonpwk":24,"peienlim":69,"-":148}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" ObservableSet\u003cTag\u003e getTagList();","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" ObservableSet\u003cEventTag\u003e getEventTagList();","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"peienlim":6,"-":17}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":" * Guarantees: details are present and not null, field values are validated.","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" private final Set\u003cEventTag\u003e eventTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Set\u003cEventTag\u003e eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" this.eventTags.addAll(eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" * Returns an immutable event tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" * if modification is attempted.","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" public Set\u003cEventTag\u003e getEventTags() {","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" return Collections.unmodifiableSet(eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"peterXGD"},"content":" * Returns true if a person contains a tag, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"peterXGD"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"peterXGD"},"content":" public boolean containsTag(Tag tag) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"peterXGD"},"content":" for (Tag t : tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"peterXGD"},"content":" if (t.isSameTag(tag)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"peterXGD"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"peterXGD"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"peienlim"},"content":" * Returns true if a person contains a tag, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"peienlim"},"content":" * if modification is attempted.","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"peienlim"},"content":" public boolean containsEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"peienlim"},"content":" for (EventTag t : eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"peienlim"},"content":" if (t.isSameTag(tag)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"peienlim"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"peienlim"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":" * Removes a tag from the Person if it exists in the tags for this Person.","lastModifiedDate":"2024-04-01"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" public void removeTag(Tag key) {","lastModifiedDate":"2024-04-01"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":" if (this.containsTag(key)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":106,"author":{"gitId":"jonpwk"},"content":" tags.remove(key);","lastModifiedDate":"2024-04-01"},{"lineNumber":107,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":108,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":109,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"cleowenxuan"},"content":" * Adds an event tag to the Person.","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"cleowenxuan"},"content":" * @param eventTags The event tags to be added.","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"cleowenxuan"},"content":" public void addEventTags(Set\u003cEventTag\u003e eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"cleowenxuan"},"content":" this.eventTags.addAll(eventTags);","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"cleowenxuan"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":119,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"jonpwk"},"content":" * Adds a tag to the Person.","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"jonpwk"},"content":" public void addTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"jonpwk"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"jonpwk"},"content":" * Removes a tag from the Person if it exists in the tags for this Person.","lastModifiedDate":"2024-04-03"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" public void removeEventTag(EventTag key) {","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" if (this.containsEventTag(key)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" eventTags.remove(key);","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 eventTags.equals(otherPerson.eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"peienlim"},"content":" .add(\"eventTags\", eventTags)","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cleowenxuan":9,"peterXGD":13,"jonpwk":19,"peienlim":35,"-":114}},{"path":"src/main/java/seedu/address/model/tag/EventTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":" * Represents an EventTag in the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":"public class EventTag extends Tag {","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" public final String description;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public final LocalDateTime startDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public final LocalDateTime endDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" * Constructs a {@code EventTag}.","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" * @param description A Description for the event.","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" public EventTag(String tagName, String description, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" super(tagName);","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" requireNonNull(tagName);","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":" public String getCodeFormat() {","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" return \"t/E-\" + tagName + \" dc/\" + description + \" sd/\" + startDate.format(formatter)","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" + \" ed/\" + endDate.format(formatter);","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"peterXGD"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"peterXGD"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"peterXGD"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"peterXGD"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"peterXGD"},"content":" if (!(other instanceof EventTag)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"peterXGD"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"peterXGD"},"content":" EventTag otherTag \u003d (EventTag) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"peterXGD"},"content":" boolean nameEqual \u003d tagName.equals(otherTag.tagName) \u0026\u0026 description.equals(otherTag.description);","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"peterXGD"},"content":" boolean timeEqual \u003d startDate.isEqual(((EventTag) other).startDate)","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"peterXGD"},"content":" \u0026\u0026 endDate.equals(((EventTag) other).endDate);","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"peterXGD"},"content":" return nameEqual \u0026\u0026 timeEqual;","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"peterXGD"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"peterXGD"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"peterXGD"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"peterXGD"},"content":" String startTime \u003d startDate.format(formatter);","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"peterXGD"},"content":" String endTime \u003d endDate.format(formatter);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"peterXGD"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027 + \" from \" + startTime + \" to \" + endTime + \".\\n\" + description;","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"peterXGD":62,"owenong1":6}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric and not contain spaces\";","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" * Returns true if both tags have the same name.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" public boolean isSameTag(Tag otherTag) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" if (otherTag \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" return otherTag !\u003d null","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" \u0026\u0026 otherTag.tagName.equals(tagName);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"jonpwk"},"content":" * Returns true if this tag has the given name.","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" public boolean hasName(String tagName) {","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"jonpwk"},"content":" return this.tagName.equals(tagName);","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jonpwk":7,"peienlim":12,"-":61}},{"path":"src/main/java/seedu/address/model/tag/UniqueTagList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.DuplicateTagException;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.TagNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":" * Represents a list of unique tags.","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" * A UniqueTagList ensures that no duplicate tags are stored.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":"public class UniqueTagList\u003cT extends Tag\u003e implements Iterable\u003cT\u003e {","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" private final ObservableSet\u003cT\u003e internalSet \u003d FXCollections.observableSet();","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" * Constructs an empty UniqueTagList.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" public UniqueTagList() {}","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" * Constructs a UniqueTagList with the given tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" * @param tags A list of tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" public UniqueTagList(Set\u003cT\u003e tags) {","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" internalSet.addAll(tags);","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jonpwk"},"content":" * Returns true if the list contains an equivalent tag as the given argument of type Tag.","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" public boolean contains(T toCheck) {","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"jonpwk"},"content":" return internalSet.stream().anyMatch(tag -\u003e tag.equals(toCheck));","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jonpwk"},"content":" * Returns true if the list contains an equivalent tag as the given argument of type String.","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" public boolean contains(String toCheck) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" return internalSet.stream().anyMatch(tag -\u003e tag.tagName.equals(toCheck));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" * Adds a tag to the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" * The tag must not already exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"peienlim"},"content":" public void add(T toAdd) {","lastModifiedDate":"2024-04-01"},{"lineNumber":58,"author":{"gitId":"peienlim"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"peienlim"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" throw new DuplicateTagException();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" internalSet.add(toAdd);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" * Replaces the specified tag in the list with the new tag.","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" * @param oldTag The tag to be replaced.","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" * @param newTag The new tag to replace the old tag.","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" public void replace(T oldTag, T newTag) {","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" requireAllNonNull(oldTag, newTag);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" if (!internalSet.contains(oldTag)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" if (!oldTag.isSameTag(newTag) \u0026\u0026 contains(newTag)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" throw new DuplicateTagException();","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" internalSet.remove(oldTag);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" internalSet.add(newTag);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"peienlim"},"content":" * Removes the equivalent tag from the list.","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"jonpwk"},"content":" * The argument of type Tag must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"peienlim"},"content":" public void remove(T toRemove) {","lastModifiedDate":"2024-04-01"},{"lineNumber":90,"author":{"gitId":"peienlim"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"peienlim"},"content":" if (!internalSet.remove(toRemove)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"peienlim"},"content":" throw new TagNotFoundException();","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jonpwk"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jonpwk"},"content":" * Removes the equivalent tag from the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jonpwk"},"content":" * The argument of type String must exist in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jonpwk"},"content":" public void remove(String toRemove) {","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jonpwk"},"content":" if (!internalSet.removeIf(tag -\u003e tag.tagName.equals(toRemove))) {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" throw new TagNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"peienlim"},"content":" * Replaces all tags in this list with the tags from the replacement list.","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"peienlim"},"content":" * @param replacement The replacement UniqueTagList.","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"peienlim"},"content":" public void setTags(UniqueTagList\u003cT\u003e replacement) {","lastModifiedDate":"2024-04-01"},{"lineNumber":111,"author":{"gitId":"peienlim"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"peienlim"},"content":" internalSet.clear();","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"peienlim"},"content":" internalSet.addAll(replacement.internalSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":" * Replaces the tags in the list with the given set of tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" * @param tags The set of tags to replace the current tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" public void setTags(Set\u003cT\u003e tags) {","lastModifiedDate":"2024-04-01"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":" requireAllNonNull(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"peienlim"},"content":" internalSet.clear();","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":" internalSet.addAll(tags);","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"peienlim"},"content":" * Returns the event tag with the specified event tag name, if it exists in the list.","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":" * Returns null if no such event tag is found.","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" * @param eventTagName The name of the event tag to retrieve.","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" * @return The event tag with the specified event tag name, or null if not found.","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" public EventTag getEventTag(String eventTagName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":" requireNonNull(eventTagName);","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"peienlim"},"content":" for (T tag : internalSet) {","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"peienlim"},"content":" if (tag instanceof EventTag \u0026\u0026 tag.tagName.equals(eventTagName)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"peienlim"},"content":" return (EventTag) tag;","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"peienlim"},"content":" return null;","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"peterXGD"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"peterXGD"},"content":" * Removes all the event tags given a specified event tag name, if it exists in the list.","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"peterXGD"},"content":" * Returns null if no such event tag is found.","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"peterXGD"},"content":" * @param eventTagName The name of the event tag to retrieve.","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"peterXGD"},"content":" * @return The event tag with the specified event tag name, or null if not found.","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"peterXGD"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"peterXGD"},"content":" public EventTag removeEvent(String eventTagName) {","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"peterXGD"},"content":" requireNonNull(eventTagName);","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"peterXGD"},"content":" for (T tag : internalSet) {","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"peterXGD"},"content":" if (tag instanceof EventTag \u0026\u0026 tag.tagName.equals(eventTagName)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"peterXGD"},"content":" return (EventTag) tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"peterXGD"},"content":" return null;","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"peienlim"},"content":" * Returns the backing set as an unmodifiable {@code ObservableSet}.","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cT\u003e asUnmodifiableObservableSet() {","lastModifiedDate":"2024-04-01"},{"lineNumber":162,"author":{"gitId":"peienlim"},"content":" return FXCollections.unmodifiableObservableSet(internalSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"peienlim"},"content":" public Iterator\u003cT\u003e iterator() {","lastModifiedDate":"2024-04-01"},{"lineNumber":167,"author":{"gitId":"peienlim"},"content":" return internalSet.iterator();","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"peienlim"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"peienlim"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"peienlim"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"peienlim"},"content":" // handle nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"peienlim"},"content":" if (!(other instanceof UniqueTagList\u003c?\u003e)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":178,"author":{"gitId":"peienlim"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003c?\u003e otherUniqueTagSet \u003d (UniqueTagList\u003c?\u003e) other;","lastModifiedDate":"2024-04-01"},{"lineNumber":182,"author":{"gitId":"peienlim"},"content":" return internalSet.equals(otherUniqueTagSet.internalSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"peienlim"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"peienlim"},"content":" return internalSet.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"peienlim"},"content":" * Returns true if {@code tags} contains only unique tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" private boolean tagsAreUnique(Set\u003cT\u003e tags) {","lastModifiedDate":"2024-04-01"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":" Set\u003cT\u003e uniqueTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":" for (T tag : tags) {","lastModifiedDate":"2024-04-01"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" if (!uniqueTags.add(tag)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":" return false; // Duplicate tag found","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":" return true; // No duplicate tags found","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"peterXGD":16,"jonpwk":21,"peienlim":166}},{"path":"src/main/java/seedu/address/model/tag/exceptions/DuplicateTagException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.model.tag.exceptions;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":" * Signals that the operation will result in duplicate Tags (Tags are considered duplicates if they have the same","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":" * name).","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"public class DuplicateTagException extends RuntimeException {","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":" public DuplicateTagException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":" super(\"Operation would result in duplicate tags\");","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"peienlim":12}},{"path":"src/main/java/seedu/address/model/tag/exceptions/TagNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.model.tag.exceptions;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":" * Signals that the operation is unable to find the specified tag.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"public class TagNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"peienlim":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"marketing|marketing dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"marketing|marketing dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"logistics|logistics dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"logistics|logistics dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"logistics|logistics dpt|2024-04-01T09:00:00|2024-04-01T09:00:00\")),","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"peienlim"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" getEventTagSet(\"VPD|vice project director|2024-04-01T09:00:00|2024-04-01T09:00:00\"))","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" * Returns a set of event tags containing the list of strings given.","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" public static Set\u003cEventTag\u003e getEventTagSet(String... strings) {","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" Set\u003cEventTag\u003e eventTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" for (String s : strings) {","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" // parse string to extract tag name, description, start date, and end date","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" // eg. \"tagName|description|startDate|endDate\"","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" String[] parts \u003d s.split(\"\\\\|\");","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" String tagName \u003d parts[0];","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":" String description \u003d parts[1];","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"peienlim"},"content":" LocalDateTime startDate \u003d LocalDateTime.parse(parts[2]);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" LocalDateTime endDate \u003d LocalDateTime.parse(parts[3]);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"peienlim"},"content":" eventTags.add(new EventTag(tagName, description, startDate, endDate));","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" return eventTags;","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"peienlim":34,"-":54}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedEventTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":" * Jackson-friendly version of {@link EventTag}.","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"class JsonAdaptedEventTag {","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":" private final String tagName;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" private final String description;","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" private final LocalDateTime startDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" private final LocalDateTime endDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":" * Constructs a {@code JsonAdaptedEventTag} with the given details.","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" @JsonCreator","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" public JsonAdaptedEventTag(@JsonProperty(\"tagName\") String tagName,","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"description\") String description,","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"startDate\") LocalDateTime startDate,","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"endDate\") LocalDateTime endDate) {","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" * Converts a given {@code EventTag} into this class for Jackson use.","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" public JsonAdaptedEventTag(EventTag source) {","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" tagName \u003d source.tagName;","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" description \u003d source.description;","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" startDate \u003d source.startDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" endDate \u003d source.endDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"tagName\")","lastModifiedDate":"2024-04-01"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" public String getTagName() {","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" return tagName;","lastModifiedDate":"2024-04-01"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" public String getDescription() {","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" return description;","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" public LocalDateTime getStartDate() {","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"peienlim"},"content":" return startDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" public LocalDateTime getEndDate() {","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" return endDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" * Converts this Jackson-friendly adapted event tag object into the model\u0027s {@code EventTag} object.","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" public EventTag toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" return new EventTag(tagName, description, startDate, endDate);","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"peienlim":76}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" private final List\u003cJsonAdaptedEventTag\u003e eventTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"eventTags\") List\u003cJsonAdaptedEventTag\u003e eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":" if (eventTags !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":" this.eventTags.addAll(eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" eventTags.addAll(source.getEventTags().stream()","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" .map(JsonAdaptedEventTag::new)","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" final List\u003cEventTag\u003e personEventTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"peienlim"},"content":" for (JsonAdaptedEventTag eventTag : eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"peienlim"},"content":" personEventTags.add(eventTag.toModelType());","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" final Set\u003cEventTag\u003e modelEventTags \u003d new HashSet\u003c\u003e(personEventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelEventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"peienlim":17,"-":107}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" public static final String MESSAGE_DUPLICATE_TAG \u003d \"Tags list contains duplicate tag(s).\";","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" public static final String MESSAGE_DUPLICATE_EVENT_TAG \u003d \"Events tag list contains duplicate event tag(s).\";","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" private final List\u003cJsonAdaptedTag\u003e tagList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" private final List\u003cJsonAdaptedEventTag\u003e eventTagList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"tagList\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" @JsonProperty(\"eventTagList\") List\u003cJsonAdaptedEventTag\u003e eventTags) {","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" this.tagList.addAll(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" this.eventTagList.addAll(eventTags);","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" tagList.addAll(source.getTagList().stream().map(JsonAdaptedTag::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" eventTagList.addAll(source.getEventTagList().stream()","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" .map(JsonAdaptedEventTag::new)","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" for (JsonAdaptedTag jsonAdaptedTag : tagList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" Tag tag \u003d jsonAdaptedTag.toModelType();","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" if (addressBook.hasTag(tag)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" for (JsonAdaptedEventTag jsonAdaptedEventTag : eventTagList) {","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" EventTag eventTag \u003d jsonAdaptedEventTag.toModelType();","lastModifiedDate":"2024-04-01"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" if (addressBook.hasEventTag(eventTag)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_EVENT_TAG);","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" addressBook.addEventTag(eventTag);","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"peienlim":30,"-":59}},{"path":"src/main/java/seedu/address/ui/EventCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":" * An UI component that displays information of a {@code EventTag}.","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"public class EventCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":" private static final String FXML \u003d \"EventCard.fxml\";","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":" public final EventTag eventTag;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" private Label eventName;","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" * Creates a {@code EventCard} with the given {@code EventTag} to display.","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":" public EventCard(EventTag eventTag) {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" super(FXML);","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" this.eventTag \u003d eventTag;","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" eventName.setText(eventTag.tagName);","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"peienlim":31}},{"path":"src/main/java/seedu/address/ui/EventListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static seedu.address.model.AddressBook.DEFAULT_EVENT_TAG;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import java.util.List;","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":" * Panel containing the list of events.","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":"public class EventListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" private static final String FXML \u003d \"EventListPanel.fxml\";","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" private final Logger logger \u003d LogsCenter.getLogger(EventListPanel.class);","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" private ListView\u003cEventTag\u003e eventListView;","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":" * Creates a {@code EventListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" public EventListPanel(ObservableSet\u003cEventTag\u003e eventSet) {","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" super(FXML);","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" eventListView.setCellFactory(listView -\u003e new EventListViewCell());","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" addDefaultEventCard();","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" addExistingTagEventCard(eventSet);","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" eventListView.getSelectionModel().select(DEFAULT_EVENT_TAG);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" private void addDefaultEventCard() {","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"peienlim"},"content":" eventListView.getItems().add(DEFAULT_EVENT_TAG);","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" private void addExistingTagEventCard(ObservableSet\u003cEventTag\u003e eventSet) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" List\u003cEventTag\u003e eventList \u003d new ArrayList\u003c\u003e(eventSet);","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"peienlim"},"content":" eventListView.getItems().addAll(eventList);","lastModifiedDate":"2024-04-01"},{"lineNumber":46,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //@@author {peienlim}-reused","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":" //Reused from https://github.com/AY2324S1-CS2103T-F08-3/tp","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":" //(src/main/java/seedu/address/ui/AnimalListPanel.java) Lines 45 to 51 with minor modifications","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void selectEvent(EventTag eventTag) {","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":" eventListView.getSelectionModel().select(eventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void clearEventSelection() {","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" eventListView.getSelectionModel().select(DEFAULT_EVENT_TAG);","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Event} using a {@code EventCard}.","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" class EventListViewCell extends ListCell\u003cEventTag\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" protected void updateItem(EventTag eventTag, boolean empty) {","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" super.updateItem(eventTag, empty);","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":" if (empty || eventTag \u003d\u003d null) {","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" setText(null);","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" } else {","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" EventCard eventCard \u003d new EventCard(eventTag);","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" setGraphic(eventCard.getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"peienlim":68,"-":11}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static seedu.address.model.AddressBook.DEFAULT_EVENT_TAG;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"peienlim"},"content":" private EventListPanel eventListPanel;","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" private StackPane eventListPanelPlaceholder;","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" eventListPanel \u003d new EventListPanel(logic.getEventTagList());","lastModifiedDate":"2024-04-01"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":" eventListPanelPlaceholder.getChildren().add(eventListPanel.getRoot());","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" //@@author {peienlim}-reused","lastModifiedDate":"2024-04-03"},{"lineNumber":201,"author":{"gitId":"-"},"content":" //Reused from https://github.com/AY2324S1-CS2103T-F08-3/tp","lastModifiedDate":"2024-04-03"},{"lineNumber":202,"author":{"gitId":"-"},"content":" //(src/main/java/seedu/address/ui/MainWindow.java) Lines 196 to 202 with minor modifications","lastModifiedDate":"2024-04-03"},{"lineNumber":203,"author":{"gitId":"-"},"content":" Optional\u003cEventTag\u003e eventTag \u003d commandResult.getEventTag();","lastModifiedDate":"2024-04-03"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":205,"author":{"gitId":"-"},"content":" if (eventTag.isPresent()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":206,"author":{"gitId":"-"},"content":" if (eventTag.get().equals(DEFAULT_EVENT_TAG)) { // list command, change back to all contacts tab","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"-"},"content":" eventListPanel.clearEventSelection();","lastModifiedDate":"2024-04-03"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":209,"author":{"gitId":"-"},"content":" eventListPanel.selectEvent(eventTag.get());","lastModifiedDate":"2024-04-03"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":211,"author":{"gitId":"-"},"content":" //@@author {peienlim}","lastModifiedDate":"2024-04-03"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":213,"author":{"gitId":"-"},"content":" eventListPanel \u003d new EventListPanel(logic.getEventTagList());","lastModifiedDate":"2024-04-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" eventListPanelPlaceholder.getChildren().add(eventListPanel.getRoot());","lastModifiedDate":"2024-04-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"peienlim":11,"-":213}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" @FXML","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" private FlowPane eventTags;","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" person.getEventTags().stream()","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" .sorted(Comparator.comparing(eventTag -\u003e eventTag.tagName))","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" .forEach(eventTag -\u003e eventTags.getChildren().add(new Label(eventTag.tagName)));","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"peienlim":5,"-":59}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"peienlim"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-04-03"},{"lineNumber":344,"author":{"gitId":"peienlim"},"content":" -fx-padding: 2 0 2 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":345,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":354,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":356,"author":{"gitId":"peienlim"},"content":"#eventTags {","lastModifiedDate":"2024-04-03"},{"lineNumber":357,"author":{"gitId":"peienlim"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-04-03"},{"lineNumber":358,"author":{"gitId":"peienlim"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-04-03"},{"lineNumber":359,"author":{"gitId":"peienlim"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-04-03"},{"lineNumber":360,"author":{"gitId":"peienlim"},"content":" -fx-padding: 2 0 2 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":361,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-04-03"},{"lineNumber":362,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":363,"author":{"gitId":"peienlim"},"content":"#eventTags .label {","lastModifiedDate":"2024-04-03"},{"lineNumber":364,"author":{"gitId":"peienlim"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-04-03"},{"lineNumber":365,"author":{"gitId":"peienlim"},"content":" -fx-background-color: #8e7ebd;","lastModifiedDate":"2024-04-03"},{"lineNumber":366,"author":{"gitId":"peienlim"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-04-03"},{"lineNumber":367,"author":{"gitId":"peienlim"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-04-03"},{"lineNumber":368,"author":{"gitId":"peienlim"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-04-03"},{"lineNumber":369,"author":{"gitId":"peienlim"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-04-03"},{"lineNumber":370,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"peienlim":18,"-":352}},{"path":"src/main/resources/view/EventCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"peienlim"},"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-30"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"50\" prefHeight\u003d\"50\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":" \u003cLabel fx:id\u003d\"eventName\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"peienlim":17}},{"path":"src/main/resources/view/EventListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":" \u003cListView fx:id\u003d\"eventListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"peienlim":9}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":" \u003cVBox fx:id\u003d\"eventList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"150\" prefWidth\u003d\"150\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" \u003cStackPane fx:id\u003d\"eventListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"peienlim"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"peienlim":11,"-":58}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" \u003cFlowPane fx:id\u003d\"eventTags\" /\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"peienlim":1,"-":36}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"jonpwk"},"content":" public boolean hasTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"jonpwk"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"cleowenxuan"},"content":" public void assign(Person targetPerson, Set\u003cTag\u003e tags, Set\u003cTag\u003e eventTags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":162,"author":{"gitId":"jonpwk"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"jonpwk"},"content":" public void deleteTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"jonpwk"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"jonpwk"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"jonpwk"},"content":" public void addTag(Tag tag) {","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"jonpwk"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"peienlim"},"content":" public boolean hasEventTag(String tagName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"peienlim"},"content":" public void deleteEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":189,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":190,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"peienlim"},"content":" public void addEventTag(EventTag tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"peienlim"},"content":" public EventTag getEventTag(String tag) {","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"peienlim"},"content":" public void updateEventTagPersonList(EventTag t) {","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":219,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":220,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":221,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"peienlim"},"content":" public void setCurrentEventTag(EventTag tagName) {","lastModifiedDate":"2024-04-02"},{"lineNumber":223,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":224,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":225,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":226,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":227,"author":{"gitId":"peienlim"},"content":" public void clearCurrentEventTag() {","lastModifiedDate":"2024-04-03"},{"lineNumber":228,"author":{"gitId":"peienlim"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":229,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":230,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":231,"author":{"gitId":"peterXGD"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"peterXGD"},"content":" public void updateTagPersonList(Tag t) {","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"peterXGD"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":239,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":241,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":249,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":255,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":257,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":258,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":261,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":263,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":268,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":270,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":273,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":274,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":5,"jonpwk":22,"peienlim":47,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.testutil.TypicalNames.NAME_ALICE;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"cleowenxuan"},"content":" public static final String DUMMY_NAME \u003d \" \";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON, DUMMY_NAME);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"cleowenxuan"},"content":" String targetName \u003d NAME_ALICE.toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"cleowenxuan"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex, targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"cleowenxuan"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"cleowenxuan"},"content":" + \", targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"cleowenxuan":13,"-":111}},{"path":"src/test/java/seedu/address/logic/commands/DtagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"public class DtagCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jonpwk":4}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"cleowenxuan"},"content":"import static seedu.address.testutil.TypicalNames.NAME_ALICE;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"cleowenxuan"},"content":" public static final String DUMMY_NAME \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, new EditPersonDescriptor());","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, DUMMY_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"cleowenxuan"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, DESC_AMY);","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"cleowenxuan"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, copyDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"cleowenxuan"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DUMMY_NAME, DESC_AMY)));","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"cleowenxuan"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DUMMY_NAME, DESC_BOB)));","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"cleowenxuan"},"content":" String name \u003d NAME_ALICE.toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"cleowenxuan"},"content":" EditCommand editCommand \u003d new EditCommand(index, name, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"cleowenxuan"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", name\u003d\"","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"cleowenxuan"},"content":" + name + \", editPersonDescriptor\u003d\" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"cleowenxuan":18,"-":167}},{"path":"src/test/java/seedu/address/logic/commands/ExportCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"public class ExportCommandTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":" //todo","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"owenong1":5}},{"path":"src/test/java/seedu/address/logic/commands/ImportCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"owenong1"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"owenong1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"owenong1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-01"},{"lineNumber":8,"author":{"gitId":"owenong1"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-01"},{"lineNumber":9,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"owenong1"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"owenong1"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ImportCommand.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"owenong1"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"owenong1"},"content":"public class ImportCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"owenong1"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"owenong1"},"content":" public void execute_invalidFilePath_failure() {","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"owenong1"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"owenong1"},"content":" assertCommandFailure(new ImportCommand(\"xxx\"), model, ImportCommand.MESSAGE_FILE_NOT_FOUND);","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" // @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" // public void execute_invalidFileValues_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" // Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" //","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":" // assertCommandFailure(new ImportCommand(\"./src/test/data/ImportTest/invalidValueTest.csv\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" // model, ImportCommand.MESSAGE_VALUES_FORMAT_ERROR","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" // + \"Tags names should be alphanumeric and not contain spaces\");","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" // }","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"owenong1"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"owenong1"},"content":" public void execute_invalidFieldValues_failure() {","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"owenong1"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"owenong1"},"content":" assertCommandFailure(new ImportCommand(\"./src/test/data/ImportTest/invalidFieldsTest.csv\"),","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"owenong1"},"content":" model, ImportCommand.MESSAGE_FIELDS_FORMAT_ERROR);","lastModifiedDate":"2024-04-01"},{"lineNumber":37,"author":{"gitId":"owenong1"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"owenong1"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"owenong1"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"owenong1":31,"peterXGD":8}},{"path":"src/test/java/seedu/address/logic/commands/SearchTagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":"public class SearchTagCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" private Model model;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" @BeforeEach","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" public void setUp() {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" public void execute_friendTagSearch_showSuccess() throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" SearchTagCommand sc \u003d new SearchTagCommand(new Tag(\"friends\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" CommandResult result \u003d sc.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" assertEquals(SearchTagCommand.MESSAGE_SUCCESS, result.getFeedbackToUser());","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" public void execute_unknownTagSearch_throws() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"cleowenxuan"},"content":" SearchTagCommand sc \u003d new SearchTagCommand(new Tag(\"Uzuzuzuz\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"peterXGD"},"content":" assertThrows(CommandException.class, () -\u003e sc.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"cleowenxuan":2,"peterXGD":34}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"cleowenxuan"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON, dummyName), command);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, dummyName, descriptor), command);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"cleowenxuan":4,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"cleowenxuan"},"content":" String dummyName \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"cleowenxuan"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON, dummyName));","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"cleowenxuan":3,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/DtagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"import seedu.address.logic.commands.DtagCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"public class DtagCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":" private DtagCommandParser parser \u003d new DtagCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" public void parse_validArgs_returnsDtagCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" assertParseSuccess(parser, \"friends\", new DtagCommand(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DtagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jonpwk":27}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"cleowenxuan"},"content":" private static final String DUMMY_NAME \u003d \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"cleowenxuan"},"content":" // no field specified","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, VALID_NAME_AMY, EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, \"-5\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, \"0\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"cleowenxuan"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"cleowenxuan"},"content":" assertParseFailure(parser, \"tom i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"cleowenxuan"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"cleowenxuan"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"cleowenxuan"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"cleowenxuan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"cleowenxuan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"cleowenxuan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"cleowenxuan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"cleowenxuan"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"cleowenxuan"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, DUMMY_NAME, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"cleowenxuan":18,"-":190}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":197,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":198,"author":{"gitId":"peterXGD"},"content":" public void parseDateTime_stringWithInvalidTime_throwsException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"peterXGD"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDateTime(\"2020-2-3 15:03:03\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":200,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"peterXGD":5,"-":196}},{"path":"src/test/java/seedu/address/logic/parser/SearchTagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"import seedu.address.logic.commands.SearchTagCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":"public class SearchTagCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" private SearchCommandParser parser \u003d new SearchCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" public void parse_moreThanOneArg_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":" assertParseFailure(parser, \"2222 3333 \",","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"peterXGD"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"peterXGD"},"content":" public void parse_validArgs_returnsSearchCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"peterXGD"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"peterXGD"},"content":" SearchTagCommand expectedFindCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"cleowenxuan"},"content":" new SearchTagCommand(new Tag(\"friends\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"peterXGD"},"content":" assertParseSuccess(parser, \"friends\", expectedFindCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"cleowenxuan":1,"peterXGD":33}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import static seedu.address.testutil.TypicalTags.FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":"import javafx.collections.ObservableSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":28,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.DuplicateTagException;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.TagNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" assertEquals(Collections.emptySet(), addressBook.getTagList());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":" List\u003cTag\u003e newTags \u003d List.of();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" List\u003cEventTag\u003e newEventTags \u003d List.of();","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons, newTags, newEventTags);","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" public void hasTag_nullTag_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasTag((Tag) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"peienlim"},"content":" public void hasTag_tagNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"peienlim"},"content":" assertFalse(addressBook.hasTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":" public void hasTag_tagInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(FRIEND);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"peienlim"},"content":" assertTrue(addressBook.hasTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"peienlim"},"content":" public void hasTag_tagWithSameNameInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(FRIEND);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"peienlim"},"content":" Tag editedFriend \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"peienlim"},"content":" assertTrue(addressBook.hasTag(editedFriend));","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" public void addDuplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.addPerson(ALICE));","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" public void addDuplicateTag_throwsDuplicateTagException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(FRIEND);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":" assertThrows(DuplicateTagException.class, () -\u003e addressBook.addTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" public void setPerson_withDifferentIdentityFields_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"peienlim"},"content":" assertDoesNotThrow(() -\u003e addressBook.setPerson(ALICE, editedAlice));","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"peienlim"},"content":" public void setTags_withUniqueTags_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"peienlim"},"content":" Set\u003cTag\u003e uniqueTags \u003d new HashSet\u003c\u003e(Arrays.asList(FRIEND, new Tag(\"colleague\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"peienlim"},"content":" assertDoesNotThrow(() -\u003e addressBook.setTagList(uniqueTags));","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"peienlim"},"content":" public void removePerson_notExistingPerson_throwsPersonNotFoundException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"peienlim"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e addressBook.removePerson(ALICE));","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"peienlim"},"content":" public void removeTag_notExistingTag_throwsTagNotFoundException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"peienlim"},"content":" assertThrows(TagNotFoundException.class, () -\u003e addressBook.removeTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":154,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"peienlim"},"content":" public void removePerson_existingPerson_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"peienlim"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"peienlim"},"content":" assertDoesNotThrow(() -\u003e addressBook.removePerson(ALICE));","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"peienlim"},"content":" public void removeTag_existingTag_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"peienlim"},"content":" addressBook.addTag(FRIEND);","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"peienlim"},"content":" assertDoesNotThrow(() -\u003e addressBook.removeTag(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"peienlim"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList()","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"jonpwk"},"content":" + \", tags\u003d\" + addressBook.getTagList() + \", event tags\u003d\" + addressBook.getEventTagList() + \"}\";","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"peienlim"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"peienlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"peienlim"},"content":" public void getTagList_modifySet_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"peienlim"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getTagList().remove(FRIEND));","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":190,"author":{"gitId":"peienlim"},"content":" private final ObservableSet\u003cTag\u003e tags \u003d FXCollections.observableSet();","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"peienlim"},"content":" private final ObservableSet\u003cEventTag\u003e eventTags \u003d FXCollections.observableSet();","lastModifiedDate":"2024-04-01"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":193,"author":{"gitId":"peienlim"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons, Collection\u003cTag\u003e tags, Collection\u003cEventTag\u003e eventTags) {","lastModifiedDate":"2024-03-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":195,"author":{"gitId":"peienlim"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"peienlim"},"content":" this.eventTags.addAll(eventTags);","lastModifiedDate":"2024-03-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":203,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cTag\u003e getTagList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"peienlim"},"content":" return tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":209,"author":{"gitId":"peienlim"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":210,"author":{"gitId":"peienlim"},"content":" public ObservableSet\u003cEventTag\u003e getEventTagList() {","lastModifiedDate":"2024-04-01"},{"lineNumber":211,"author":{"gitId":"peienlim"},"content":" return eventTags;","lastModifiedDate":"2024-03-31"},{"lineNumber":212,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"jonpwk":5,"peienlim":106,"-":104}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":" + \", eventTags\u003d\" + ALICE.getEventTags() + \"}\";","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"peienlim":2,"-":98}},{"path":"src/test/java/seedu/address/model/tag/EventTagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peterXGD"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"peterXGD"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"peterXGD"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"peterXGD"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"peterXGD"},"content":"public class EventTagTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"peterXGD"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"peterXGD"},"content":" assertThrows(NullPointerException.class, () -\u003e new EventTag(null, \"test\",","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"peterXGD"},"content":" LocalDateTime.now(), LocalDateTime.now()));","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"peterXGD"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"peterXGD"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"peterXGD"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"peterXGD"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"peterXGD"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new EventTag(invalidTagName, \"test\",","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"peterXGD"},"content":" LocalDateTime.now(), LocalDateTime.now()));","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"peterXGD"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"peterXGD"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"peterXGD":23}},{"path":"src/test/java/seedu/address/model/tag/UniqueTagListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.DuplicateTagException;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.exceptions.TagNotFoundException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":"public class UniqueTagListTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" private final UniqueTagList\u003cTag\u003e uniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" public void contains_nullTag_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.contains((Tag) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" public void contains_nullTagString_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.contains((String) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"peienlim"},"content":" public void contains_tagNotInList_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"peienlim"},"content":" assertFalse(uniqueTagList.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jonpwk"},"content":" public void contains_tagNotInListString_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jonpwk"},"content":" assertFalse(uniqueTagList.contains(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"peienlim"},"content":" public void contains_tagInList_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"peienlim"},"content":" assertTrue(uniqueTagList.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jonpwk"},"content":" public void contains_tagInListString_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jonpwk"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jonpwk"},"content":" assertTrue(uniqueTagList.contains(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" public void contains_tagWithSameNameInList_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" assertTrue(uniqueTagList.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"peienlim"},"content":" public void add_nullTag_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"peienlim"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.add(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" public void add_duplicateTag_throwsDuplicateTagException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"peienlim"},"content":" assertThrows(DuplicateTagException.class, () -\u003e uniqueTagList.add(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"peienlim"},"content":" public void remove_nullTag_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.remove((Tag) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jonpwk"},"content":" public void remove_nullTagString_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.remove((String) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" public void remove_tagDoesNotExist_throwsTagNotFoundException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" assertThrows(TagNotFoundException.class, () -\u003e uniqueTagList.remove(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jonpwk"},"content":" public void remove_tagDoesNotExistString_throwsTagNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jonpwk"},"content":" assertThrows(TagNotFoundException.class, () -\u003e uniqueTagList.remove(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"peienlim"},"content":" public void remove_existingTag_removesTag() {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"peienlim"},"content":" uniqueTagList.remove(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003cTag\u003e expectedUniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":95,"author":{"gitId":"peienlim"},"content":" assertEquals(expectedUniqueTagList, uniqueTagList);","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"jonpwk"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jonpwk"},"content":" public void remove_existingTagString_removesTag() {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jonpwk"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jonpwk"},"content":" uniqueTagList.remove(\"friends\");","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003cTag\u003e expectedUniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":103,"author":{"gitId":"jonpwk"},"content":" assertEquals(expectedUniqueTagList, uniqueTagList);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"peienlim"},"content":" public void setTags_nullUniqueTagList_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"peienlim"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.setTags((UniqueTagList\u003cTag\u003e) null));","lastModifiedDate":"2024-04-01"},{"lineNumber":108,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"peienlim"},"content":" public void setTags_uniqueTagList_replacesOwnListWithProvidedUniqueTagList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003cTag\u003e expectedUniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":114,"author":{"gitId":"peienlim"},"content":" expectedUniqueTagList.add(new Tag(\"colleagues\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"peienlim"},"content":" uniqueTagList.setTags(expectedUniqueTagList);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"peienlim"},"content":" assertEquals(expectedUniqueTagList, uniqueTagList);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"peienlim"},"content":" public void setTags_nullSet_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"peienlim"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueTagList.setTags((Set\u003cTag\u003e) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"peienlim"},"content":" public void setTags_set_replacesOwnListWithProvidedSet() {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"peienlim"},"content":" uniqueTagList.add(new Tag(\"friends\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"peienlim"},"content":" Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e(Arrays.asList(new Tag(\"colleagues\"), new Tag(\"family\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"peienlim"},"content":" uniqueTagList.setTags(tagSet);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"peienlim"},"content":" UniqueTagList\u003cTag\u003e expectedUniqueTagList \u003d new UniqueTagList\u003c\u003e();","lastModifiedDate":"2024-04-01"},{"lineNumber":130,"author":{"gitId":"peienlim"},"content":" expectedUniqueTagList.add(new Tag(\"colleagues\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"peienlim"},"content":" expectedUniqueTagList.add(new Tag(\"family\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"peienlim"},"content":" assertEquals(expectedUniqueTagList, uniqueTagList);","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"peienlim"},"content":" public void asUnmodifiableObservableSet_modifySet_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"peienlim"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"peienlim"},"content":" -\u003e uniqueTagList.asUnmodifiableObservableSet().remove(new Tag(\"friends\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"peienlim"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"peienlim"},"content":" assertEquals(uniqueTagList.asUnmodifiableObservableSet().toString(), uniqueTagList.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jonpwk":34,"peienlim":112}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"peienlim"},"content":" private static final List\u003cJsonAdaptedEventTag\u003e VALID_EVENT_TAGS \u003d BENSON.getEventTags().stream()","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"peienlim"},"content":" .map(JsonAdaptedEventTag::new)","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"peienlim"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"peienlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"peienlim"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"peienlim"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags,","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"peienlim"},"content":" VALID_EVENT_TAGS);","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"peienlim":21,"-":101}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":" private static final Path DUPLICATE_TAG_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateTagAddressBook.json\");","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"peienlim"},"content":" public void toModelType_typicalPersonsAndTagsFile_success() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"peienlim"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"peienlim"},"content":" public void toModelType_duplicateTags_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"peienlim"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_TAG_FILE,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"peienlim"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"peienlim"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_TAG,","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"peienlim":10,"-":46}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"peienlim"},"content":" private Set\u003cEventTag\u003e eventTags;","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"peienlim"},"content":" eventTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"peienlim"},"content":" eventTags \u003d new HashSet\u003c\u003e(personToCopy.getEventTags());","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"peienlim"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"peienlim"},"content":" * Parses the {@code eventTags} into a {@code Set\u003cEventTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"peienlim"},"content":" public PersonBuilder withEventTags(String... eventTags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"peienlim"},"content":" this.eventTags \u003d SampleDataUtil.getEventTagSet(eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"peienlim"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":105,"author":{"gitId":"peienlim"},"content":" return new Person(name, phone, email, address, tags, eventTags);","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"peienlim":13,"-":95}},{"path":"src/test/java/seedu/address/testutil/TypicalEventTags.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jonpwk"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"jonpwk"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"jonpwk"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jonpwk"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jonpwk"},"content":"import java.util.List;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"jonpwk"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"jonpwk"},"content":" * A utility class containing a list of {@code Tag} objects to be used in tests.","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"jonpwk"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"public class TypicalEventTags {","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"jonpwk"},"content":" public static final EventTag MEETING \u003d new EventTag(\"meeting\",","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"jonpwk"},"content":" \"Team meeting\",","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-01T09:00:00\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-01T10:00:00\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"jonpwk"},"content":" public static final EventTag PRESENTATION \u003d new EventTag(\"presentation\",","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"jonpwk"},"content":" \"Project presentation\",","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-05T14:00:00\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-05T16:00:00\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":" public static final EventTag BIRTHDAY \u003d new EventTag(\"birthday\",","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"jonpwk"},"content":" \"Birthday party\",","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-10T18:00:00\"),","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"jonpwk"},"content":" LocalDateTime.parse(\"2024-04-10T22:00:00\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"jonpwk"},"content":" private TypicalEventTags() {}","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"jonpwk"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"jonpwk"},"content":" public static List\u003cEventTag\u003e getTypicalEventTags() {","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"jonpwk"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(MEETING, PRESENTATION, BIRTHDAY));","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"jonpwk"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"jonpwk":32}},{"path":"src/test/java/seedu/address/testutil/TypicalNames.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cleowenxuan"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"cleowenxuan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"cleowenxuan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"cleowenxuan"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"cleowenxuan"},"content":" * A utility class containing a list of {@code Name} objects to be used in tests.","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"cleowenxuan"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"cleowenxuan"},"content":"public class TypicalNames {","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"cleowenxuan"},"content":" // Example names","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"cleowenxuan"},"content":" public static final Name NAME_ALICE \u003d new Name(\"Alice\");","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"cleowenxuan"},"content":" public static final Name NAME_BOB \u003d new Name(\"Bob\");","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"cleowenxuan"},"content":" public static final Name NAME_CAROL \u003d new Name(\"Carol\");","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"cleowenxuan"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"cleowenxuan":13}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"jonpwk"},"content":"import static seedu.address.testutil.TypicalEventTags.getTypicalEventTags;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":"import static seedu.address.testutil.TypicalTags.getTypicalTags;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"jonpwk"},"content":"import seedu.address.model.tag.EventTag;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"jonpwk"},"content":" for (Tag tag : getTypicalTags()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"jonpwk"},"content":" ab.addTag(tag);","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"jonpwk"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"jonpwk"},"content":" for (EventTag eventTag : getTypicalEventTags()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"jonpwk"},"content":" ab.addEventTag(eventTag);","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"jonpwk":7,"peienlim":3,"-":76}},{"path":"src/test/java/seedu/address/testutil/TypicalTags.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"peienlim"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"peienlim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"peienlim"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"peienlim"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"peienlim"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"peienlim"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"peienlim"},"content":" * A utility class containing a list of {@code Tag} objects to be used in tests.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"peienlim"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"peienlim"},"content":"public class TypicalTags {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"peienlim"},"content":" public static final Tag FRIEND \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"peienlim"},"content":" public static final Tag OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"peienlim"},"content":" public static final Tag COLLEAGUE \u003d new Tag(\"colleagues\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"peienlim"},"content":" private TypicalTags() {}","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"peienlim"},"content":" public static List\u003cTag\u003e getTypicalTags() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"peienlim"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(FRIEND, OWES_MONEY, COLLEAGUE));","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"peienlim"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"peienlim"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"peienlim"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"peienlim":23}}] diff --git a/AY2324S2-CS2103T-T11-3_tp_master/commits.json b/AY2324S2-CS2103T-T11-3_tp_master/commits.json index edc07dbe..6c066084 100644 --- a/AY2324S2-CS2103T-T11-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-T11-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cleowenxuan":[{"date":"2024-02-25","commitResults":[{"hash":"2b75784c9f9b0ebf27dc2eabeaed8583cf3d2198","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"13b43df1dbddc4dd643524e4a361077f9b0d8a5c","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"dba6cb9f9488c7759d77fbe81af295c56c7a463d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}}]},{"date":"2024-03-07","commitResults":[{"hash":"d2f581ee7bd323129164c12be495d3262d45b9ee","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"7aa67c0e80b58da6fc7aa3886814c575c977ceeb","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}},{"hash":"2b4b7cadb70ef0901001cfb2de7052b0ec6f3d25","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"159c472921f34a238748404df6de7e77908e7425","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"18800bc210d89d2d1b61195d3433d7048d98a84e","isMergeCommit":true,"messageTitle":"Merge pull request #17 from peienlim/branch-AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"fcb605e5e24b29953b4db4d56d64adfee26b7c54","isMergeCommit":false,"messageTitle":"Update the DeleteCommand to delete both index and name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":15},"test-code":{"insertions":10,"deletions":10}}},{"hash":"74d785852ee9318f354ce90c9cf012bb84017a59","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/cleowenxuan/tp into branch-DeleteCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"73e0f695ceedab4f386ced721752db71af647685","isMergeCommit":false,"messageTitle":"Modify the relevant files that failed the build checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":3}}},{"hash":"18ccec3c8885f0dfb3704409619aa5030c33ee3c","isMergeCommit":false,"messageTitle":"Modify relevant files to address failed build checks because of failed testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":34,"deletions":12}}},{"hash":"f6175152ddfa4625ca1b8091a965ec055a1c5798","isMergeCommit":false,"messageTitle":"Modify DeleteCommandTest file to adhere to checkstyle rule","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"555d36e12e97bbffb94654c2bac0e24cae9addd8","isMergeCommit":false,"messageTitle":"Add declaration of static variables for better clarity","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":8,"deletions":12}}}]},{"date":"2024-03-21","commitResults":[{"hash":"801fedae7169596c59ef19d8520d92f4fc35cf9b","isMergeCommit":true,"messageTitle":"Merge pull request #29 from cleowenxuan/branch-DeleteCommand","messageBody":"Update DeleteCommand to delete by index or name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"8983b0469cfea8fb87145e668c92a48369e9ec19","isMergeCommit":false,"messageTitle":"Update Developer Guide and UML Diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":5}}},{"hash":"5c0c74d746a3ee84e42bbf00b11a46277692c5bd","isMergeCommit":true,"messageTitle":"Merge pull request #46 from cleowenxuan/branch-UpdateDeveloperGuide","messageBody":"Update Developer Guide and UML Diagrams","fileTypesAndContributionMap":{}},{"hash":"5016845b85a90c26a7cacc7574d51976e0eccd0e","isMergeCommit":false,"messageTitle":"Enable Assertions","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"c9a0b5d37d9f772a98d8da90553858d48578a95a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/cleowenxuan/tp into branch-AddAssertions","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d23a43ca1759f9c5f652e94acc86ed7abdb4db6","isMergeCommit":true,"messageTitle":"Merge pull request #48 from cleowenxuan/branch-AddAssertions","messageBody":"Enable Assertions","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"cc0e214f8b5a9f250eefe63a87b250f3aef13c30","isMergeCommit":false,"messageTitle":"Update EditCommand to edit by name or index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":20},"test-code":{"insertions":26,"deletions":25}}},{"hash":"244a265e449b4e6e8487b145e87cbe3f3921caa6","isMergeCommit":false,"messageTitle":"Modify relevant files to pass testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4},"test-code":{"insertions":12,"deletions":11}}},{"hash":"9b743ff3b4db1e72a0cb23098b22987ed60b1901","isMergeCommit":false,"messageTitle":"Modify relevant files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"8cc9ba5fc2fadb1bd9e880e864f0b3e7602849b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T11-3:master\u0027 into branch-RenameContacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4c75e535d800dd9af58174efb3db4303b725bf37","isMergeCommit":true,"messageTitle":"Merge pull request #57 from cleowenxuan/branch-RenameContacts","messageBody":"Update EditCommand to edit by name or index","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"ee16ba58b04f1f34a4ced2387bd783321720d323","isMergeCommit":false,"messageTitle":"Update AssignCommand to assign event tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":12},"test-code":{"insertions":1,"deletions":1}}},{"hash":"67afbbeeabb9f57a32219b5b4c3281f99d0b079a","isMergeCommit":false,"messageTitle":"Modify files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"01191dea1e83afcab2c619cc22397b7b091f8cf1","isMergeCommit":true,"messageTitle":"Merge pull request #62 from peienlim/branch-eventSwitcherUI","messageBody":"Implement event switcher UI","fileTypesAndContributionMap":{}},{"hash":"edc668ed8dfca7b40f5146a439e5db16a9a4379a","isMergeCommit":false,"messageTitle":"Create SwitchCommand feature to switch between event tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":31},"test-code":{"insertions":3,"deletions":3}}},{"hash":"ae21aede42e5b4001f4c15c36314a9061ae1e5c0","isMergeCommit":false,"messageTitle":"Modify relevant files to pass build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}},{"hash":"1edc13d450c52116b5409c0e6eefcdc3470dca1a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T11-3:master\u0027 into branch-AssignEventTags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2663ebf5721a080ecba05bc5d93a13a1a53a201e","isMergeCommit":false,"messageTitle":"Modify AddressBook to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"3db1060f7496a94b6c11eac58feb6ba879950cf6","isMergeCommit":true,"messageTitle":"Merge pull request #67 from peienlim/branch-updateUG","messageBody":"Update UG for switch command","fileTypesAndContributionMap":{}},{"hash":"0f3cbd3ce093cbf1858d8e98506083e8ae232458","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/cleowenxuan/tp into branch-UpdateUserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b592f4a2a37a56b8b287353b9fbad07b6bef2c3d","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":31}}},{"hash":"4449230676a4194a7328cda55005fa00843f4fea","isMergeCommit":false,"messageTitle":"Minor bug fix to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":11}}},{"hash":"079cfe97b6ad6f8714ac4b0fcdf529c087dcd35a","isMergeCommit":false,"messageTitle":"Minor bug fix to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":5}}}]},{"date":"2024-04-05","commitResults":[{"hash":"f9243741b6b232c46bb3833b6fd62d3bc2e36c82","isMergeCommit":false,"messageTitle":"Minor changes to the return message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":13}}},{"hash":"444b4307d71cae81b5361ec824df948c9aae2596","isMergeCommit":false,"messageTitle":"Minor changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"docs":{"insertions":1,"deletions":1}}},{"hash":"8ddea674e94d0069ef39bebec400286b1b8f727f","isMergeCommit":true,"messageTitle":"Merge pull request #73 from cleowenxuan/branch-MinorBugFix","messageBody":"Minor edits to the Messages","fileTypesAndContributionMap":{}}]}],"peterXGD":[{"date":"2024-03-15","commitResults":[{"hash":"82971dcd56e3e08e3fe1d204ce1916c1b7b72432","isMergeCommit":false,"messageTitle":"Add UG v1.1 as a template to add v1.2 features","messageBody":"Per title.\n","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-20","commitResults":[{"hash":"3d616246c3aa4777aae93689a355a4015dc81fe7","isMergeCommit":false,"messageTitle":"Search command to search for people matching one tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":123,"deletions":9},"test-code":{"insertions":82,"deletions":0}}},{"hash":"74c80ac0b9d2bfcfe424c38e2ffe7b570990ea08","isMergeCommit":false,"messageTitle":"Reverted the readme to the state and added the search command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}},{"hash":"9d7c2c37fb35bc657ec75c140274ca8199ed8108","isMergeCommit":false,"messageTitle":"Do Checkstyle for the searchCommand implemented.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3}}},{"hash":"54ee8100c5a854f9519cf564ee31c1ab468415e0","isMergeCommit":false,"messageTitle":"For checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1},"test-code":{"insertions":5,"deletions":6}}},{"hash":"2656d0c3c33bb96e54c953c9cc220b648caa219d","isMergeCommit":false,"messageTitle":"Update AddressBook.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"9db6dcefc967544f0befafa8427d6b403e0e9790","isMergeCommit":false,"messageTitle":"changed search tag name to searchTagCommand","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"fb367785ccb76fb0f8b76c9f05c6a1f1a6b66ff7","isMergeCommit":false,"messageTitle":"Change SearchCommand class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13},"test-code":{"insertions":10,"deletions":10}}}]},{"date":"2024-03-21","commitResults":[{"hash":"2f9651747d4b9d2afef3c387aa3d39a08af3a53d","isMergeCommit":true,"messageTitle":"Merge pull request #35 from peterXGD/branch-a-searchcommand","messageBody":"Branch a searchcommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"7db997ed5b57275f0ac17811f0046dd7b83cfc5b","isMergeCommit":true,"messageTitle":"Merge pull request #37 from jonpwk/branch-editUserGuide","messageBody":"Edit User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"66d431ed59bd2a16aa53a51386db24837d4bd3e0","isMergeCommit":false,"messageTitle":"Update EventTag Class","messageBody":"EventTag class is implemented as a subclass.\nThis allows the implementation of features in v1.3.\n\nLet\u0027s add the EventTag class to enable other members to start coding.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":0},"test-code":{"insertions":29,"deletions":0}}},{"hash":"25b52537fe202d3da20e5ac95c70db78a1c49803","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-UG-Update\u0027","messageBody":"* branch-UG-Update:\n Update EventTag Class\n","fileTypesAndContributionMap":{}},{"hash":"d4e0f5fc1f4bb43a76a2adaac21d47804d773fe9","isMergeCommit":false,"messageTitle":"Change version name to for a Jar release","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0692a5bacccd9f94da8d3bf0acef8fed30bd9950","isMergeCommit":true,"messageTitle":"Merge pull request #45 from peterXGD/branch-EventTagClass-Update","messageBody":"Branch event tag class update","fileTypesAndContributionMap":{}},{"hash":"332691c6a98d6bb3501da1ebe6f4024f09ee8795","isMergeCommit":false,"messageTitle":"Add lines to DevGuide, change version in Main.app.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":63,"deletions":11}}}]},{"date":"2024-04-02","commitResults":[{"hash":"49ff994ee2e92511b0ec2f436c18eebfb317a10b","isMergeCommit":true,"messageTitle":"Merge pull request #56 from jonpwk/branch-dtagBugFix","messageBody":"Branch dtag bug fix","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"f1cb193557ec92610dd43619659fd9c832d13878","isMergeCommit":false,"messageTitle":"Update ctag to work with event tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":17}}},{"hash":"a9a1af37c910c83bc27591fcaef83bf558b90937","isMergeCommit":false,"messageTitle":"update 2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"docs":{"insertions":7,"deletions":1}}}]},{"date":"2024-04-05","commitResults":[{"hash":"460f8f56070fc0b334ed526f63bf93f1018e37af","isMergeCommit":false,"messageTitle":"update 3","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":9},"test-code":{"insertions":1,"deletions":2}}},{"hash":"22bcccbb27d364ae297739d885653d6aa009888b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2b530771b492b0ed8faa653039c0d2b57f5c8eb7","isMergeCommit":false,"messageTitle":"Update ParserUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"4d7122b1a62ed24d4499134e2193ef059c3fee40","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"a6f535f2d79d952457f015a8bcc4b69663a89917","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-ctagUpdate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0181e3213690cb0269759332410c0ee0949416e","isMergeCommit":true,"messageTitle":"Merge pull request #71 from peterXGD/A-ctagUpdate","messageBody":"A ctag update","fileTypesAndContributionMap":{}},{"hash":"1329d208ae06fd6a684923b976dc03d58b5b1177","isMergeCommit":false,"messageTitle":"Add devent command for EB.","messageBody":"This allows an event to be deleted from the book, as well as its associated people.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":14},"docs":{"insertions":15,"deletions":0},"test-code":{"insertions":0,"deletions":5}}},{"hash":"cb845dc97ce37836bed95b5196854a3808281572","isMergeCommit":false,"messageTitle":"Update devent after debug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1c33583b9f431ba6aed7f11553d164df37696ee0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-deventUpdate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6cf1b402afc42f090182dbf68d002f984c9c9466","isMergeCommit":false,"messageTitle":"Fix EventPanelList Ui Issue with not displaying correct after each command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"863b16355e27db4d7cb412282acc350891c72c60","isMergeCommit":true,"messageTitle":"Merge pull request #78 from peterXGD/branch-UiFix","messageBody":"Fix EventPanelList Ui Issue with not displaying correct after each co…","fileTypesAndContributionMap":{}}]}],"owenong1":[{"date":"2024-03-05","commitResults":[{"hash":"91c9fcb65d9e4a7ca5ca9684ab1908bd7ec27561","isMergeCommit":false,"messageTitle":"Test","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5f07f85f141875404ac1ab402c6ce272e454817b","isMergeCommit":true,"messageTitle":"Merge pull request #16 from owenong1/branch-test","messageBody":"Test","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"f09d527af8fae0ee869514ac79b937dfd40b07c7","isMergeCommit":true,"messageTitle":"Merge pull request #21 from jonpwk/master","messageBody":"Update DeveloperGuide.md file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"6576cc1c2364d3468e0c922caf7b6b5bd4874b40","isMergeCommit":false,"messageTitle":"Added functionality for Import command, and sample import template","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":153,"deletions":0},"test-code":{"insertions":17,"deletions":0}}},{"hash":"674e2215f481492d3b55eb43d2fca9769b9a0cf8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-addImport\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c92e370f71b307fcd5639a9b660e146e05768090","isMergeCommit":false,"messageTitle":"Minor updates for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":31}}},{"hash":"0e1d20fa6899103b5b80f98a2f3c40915877b567","isMergeCommit":false,"messageTitle":"Minor checkstyle update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":9}}},{"hash":"7caf95bb90f4c2aa342bba468653a6c97bf87a05","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-checkstyleImportUpdate\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"bf59f9762f23f83ebe9add21854bb4c84babf464","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-ImportCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"db0a6255019a37a9a8c11beaf55de8dacdf0245c","isMergeCommit":true,"messageTitle":"Merge pull request #34 from owenong1/branch-ImportCommand","messageBody":"Implement import command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"57ece3d350de4a0c03e3500a10cf21d2d2bbb8a0","isMergeCommit":false,"messageTitle":"UPdated DG to include import/export commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":0}}}]},{"date":"2024-04-01","commitResults":[{"hash":"8ca1aa1d85e573647f31d878f7432acc91405950","isMergeCommit":false,"messageTitle":"Implement path parameter to the import command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":6}}},{"hash":"72200dbd9d3e67fc4549ec498f2c0a72230897b0","isMergeCommit":false,"messageTitle":"Checkstyle edits","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"1e25496b4c01c4151eccdd2f47d45b1aaccf18be","isMergeCommit":false,"messageTitle":"Add some testing for import command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":5},"test-code":{"insertions":32,"deletions":0}}},{"hash":"0389e123afe03811cda3a067797e209b17e91078","isMergeCommit":false,"messageTitle":"Minor checkstyle edits","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-04-03","commitResults":[{"hash":"ec606dac2d1d138e1fa729feb35af715c2243e04","isMergeCommit":true,"messageTitle":"Merge pull request #52 from owenong1/branch-addImportPath","messageBody":"Implement path parameter to the import command","fileTypesAndContributionMap":{}},{"hash":"59e1d3f2d909f0b60fb84268b9c2ef17fbb8c84d","isMergeCommit":false,"messageTitle":"Implemented Export Command","messageBody":"Pending tag implementation finalisation before complete\n","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":14},"test-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"d69931f4e72b37437da2560c4d049a6e758aed43","isMergeCommit":true,"messageTitle":"Merge pull request #61 from owenong1/branch-exportCommand","messageBody":"Implemented Export Command","fileTypesAndContributionMap":{}},{"hash":"346ee06ef9cd99fc4158b445f91a12ddb8a4e39c","isMergeCommit":false,"messageTitle":"UG update for 1.3.1 release","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":6}}}]},{"date":"2024-04-05","commitResults":[{"hash":"8a5e4179d662d096001a4310bb0c973cb14c3490","isMergeCommit":false,"messageTitle":"Tag support for export/import","messageBody":"Minor bug fixes as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":132,"deletions":27},"docs":{"insertions":11,"deletions":3}}},{"hash":"8b9cd643ad459ff1f6ae7be28fb72e2c7093fed2","isMergeCommit":false,"messageTitle":"Minor edits","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"e8183f4af5c29333e1ba8ee11b9d20a71f41bdcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-imporExportTags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a56b63957537e2a93652369743421c505572fc0","isMergeCommit":true,"messageTitle":"Merge pull request #76 from owenong1/branch-imporExportTags","messageBody":"Import/export tags","fileTypesAndContributionMap":{}},{"hash":"216c300cb6d27a5279ca2a027712d62f4a5b8f3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-deventUpdate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81bada3683b368b46dda61e1592e826c14d563fb","isMergeCommit":true,"messageTitle":"Merge pull request #74 from peterXGD/branch-deventUpdate","messageBody":"Branch devent update","fileTypesAndContributionMap":{}},{"hash":"a17d3b9b9face16a1545942584b8da93411a4f67","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"26aaf8abe720e321a679fcfc663442600ec05acc","isMergeCommit":true,"messageTitle":"Merge pull request #77 from owenong1/branch-versionNu,","messageBody":"Version no.","tags":["v1.3.1"],"fileTypesAndContributionMap":{}}]}],"jonpwk":[{"date":"2024-03-07","commitResults":[{"hash":"40b14ce4ba93d1b6487090520c0971fc7386054b","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":54,"deletions":16}}}]},{"date":"2024-03-11","commitResults":[{"hash":"dc2c9c08090ef5c2bdd9d33a5c28fec9a0c05be5","isMergeCommit":false,"messageTitle":"Edit DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"f5b9f4ef1e10c62e29b3411d0ebae07db8546cdf","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T11-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6703116bf4da4ff1acbcfc88d58ca668b5fbc2dd","isMergeCommit":false,"messageTitle":"Edit DeveloperGuide","messageBody":"Made minor changes to numbering format and removed extra new lines.\n","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}}]},{"date":"2024-03-18","commitResults":[{"hash":"abec874a6ee9d8ddb6af5264aeb7117fc5fc0864","isMergeCommit":true,"messageTitle":"Merge pull request #27 from peienlim/branch-TagListClass","messageBody":"Implement UniqueTagList class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"9129c711f8b60dfbaeb0dc0a49d4f1bf2d5c67f1","isMergeCommit":false,"messageTitle":"Add ctag and dtag functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":268,"deletions":10},"test-code":{"insertions":110,"deletions":3}}},{"hash":"ea947a1875514390121fdc5f75038d3f8b91e5db","isMergeCommit":false,"messageTitle":"Minor changes to fix failing build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":15},"test-code":{"insertions":9,"deletions":4}}}]},{"date":"2024-03-21","commitResults":[{"hash":"77e2726d588496d015733ba5ccc20bdac0a9d072","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-addTagCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b755f38e0215465854e8b6539df9c90c843956ca","isMergeCommit":true,"messageTitle":"Merge pull request #33 from jonpwk/branch-addTagCommand","messageBody":"Add ctag and dtag functions","fileTypesAndContributionMap":{}},{"hash":"d674a6271155e15dc82107973ad6f6a3a97cbe24","isMergeCommit":false,"messageTitle":"Minor Bug Fixex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}}]},{"date":"2024-03-25","commitResults":[{"hash":"55fbb1885c27b4f0fe3438d8f532f18afd4a34eb","isMergeCommit":false,"messageTitle":"Edit User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":4}}},{"hash":"153c093ddb2270be742a4097e5f98eb4690415ad","isMergeCommit":false,"messageTitle":"Minor Edit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":0,"deletions":5}}}]},{"date":"2024-03-29","commitResults":[{"hash":"daab269068e39cf3a2f1183ab903044673276cf0","isMergeCommit":true,"messageTitle":"Merge pull request #47 from owenong1/branch-dgImportExport","messageBody":"UPdated DG to include import/export commands","fileTypesAndContributionMap":{}},{"hash":"18566cd0206a68e505c18b8a33595cb2036da213","isMergeCommit":true,"messageTitle":"Merge pull request #49 from peterXGD/branch-DevGuideUpdate","messageBody":"Add lines to DevGuide, change version in Main.app.","fileTypesAndContributionMap":{}},{"hash":"322a23193de86c8631f689ab2d3cf38dac934b50","isMergeCommit":false,"messageTitle":"Edit DeveleporGuide to describe ctag and dtag functions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":0}}},{"hash":"111baee8480fb14d7a6dbb5e76e82161e0d8dfd5","isMergeCommit":true,"messageTitle":"Merge pull request #50 from jonpwk/branch-dgCtagDtag","messageBody":"Edit DeveleporGuide to describe ctag and dtag functions","tags":["v1.2.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-01","commitResults":[{"hash":"9ee04c5e7beb805a24422e7a3e1bed9d6868796d","isMergeCommit":true,"messageTitle":"Merge pull request #51 from peienlim/branch-eventTagList","messageBody":"Introduce eventTagList for addressbook ","fileTypesAndContributionMap":{}},{"hash":"4e626a581b4de766d457fd9e5b9bd58bc9df5143","isMergeCommit":false,"messageTitle":"bugfix dtag to remove tag from Person object","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":13},"test-code":{"insertions":1,"deletions":13}}},{"hash":"bcb71092086f7b6805b8bb8355dc35fd394f833b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from peienlim/branch-eventTagList","messageBody":"Implement use of generics for UniqueTagList class","fileTypesAndContributionMap":{}},{"hash":"2eb558fd0f2035fa59f375fc500887fc78aa717b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jonpwk/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"16427febedb12aa7c862f7185a6f41b193a2c03c","isMergeCommit":true,"messageTitle":"Merge pull request #54 from peienlim/branch-eventTagList","messageBody":"Edit JsonAdaptedEventTag to properly store event tag list on exit","fileTypesAndContributionMap":{}},{"hash":"944a8b028a8cf1d96bee3a7c2c32a7541ff1aaef","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T11-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0b454773735f6a749e84628d0026fbb0cfe7cb35","isMergeCommit":false,"messageTitle":"Edit JsonSerializableAddressBook to parse Person\u0027s tags into Model\u0027s internal tagList Fixed dtag command bug to remove tags from Person\u0027s tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":10}}},{"hash":"11a1e2247241796fc92b7c45e76b3918d1396230","isMergeCommit":false,"messageTitle":"Edit for successful build","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":3}}},{"hash":"80feb3fca361b1bb8e53d19bd23156fe6eceb838","isMergeCommit":false,"messageTitle":"Edit for build errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"abf38aa37ee7848a395867a9b8e7145b1595143c","isMergeCommit":false,"messageTitle":"Add assign command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":199,"deletions":10},"docs":{"insertions":12,"deletions":0},"test-code":{"insertions":2,"deletions":12}}},{"hash":"515f1c56642c660072e8ae13643586ed8292fa0a","isMergeCommit":false,"messageTitle":"edit minor bug to allow multiple tags assigned at once","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-04-03","commitResults":[{"hash":"aef9b39fc934de2e231b81c85407300f9209ad0a","isMergeCommit":false,"messageTitle":"edit for build errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-04-04","commitResults":[{"hash":"8941115dfc4680627f600f3f8738d90afc05aadb","isMergeCommit":false,"messageTitle":"Edit for correct sample JSON file creation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"92635dc1f9bf89d467cff3860da3a313efc50bb9","isMergeCommit":false,"messageTitle":"minor edit to preserve save file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"c080d7d8e30497dd1fc316d5b009502493e9a7c2","isMergeCommit":false,"messageTitle":"Edit logic to display correct error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"peienlim":[{"date":"2024-02-25","commitResults":[{"hash":"b40dc7e35a3b3f22b7b30579048c225c87693056","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-T11-3/switch-docs-to-markbind","messageBody":"Merge switch-docs-to-markbind to master","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"782844cdaedc99a2c6f5d6f698b6b9f1ff3254ef","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":33}}}]},{"date":"2024-03-10","commitResults":[{"hash":"73865a1e2d2229eacda704219c7a7a3e43e79b15","isMergeCommit":true,"messageTitle":"Merge pull request #19 from cleowenxuan/branch-README","messageBody":"Update README file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"f07c114d177af711d23f0608ee12ff04dbef0f7d","isMergeCommit":true,"messageTitle":"Merge pull request #22 from jonpwk/master","messageBody":"Edit DeveloperGuide","fileTypesAndContributionMap":{}},{"hash":"1736f48ef0d1cef019eb29dbf3ee23985cada8cd","isMergeCommit":true,"messageTitle":"Merge pull request #23 from jonpwk/branch-editDeveloperGuide","messageBody":"Edit DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"5e2402a0b7d993dbd2b0703d68403fd6b986b96c","isMergeCommit":false,"messageTitle":"Create UniqueTagList class and methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"8a8839259077ca6f3ebdfede630ee480ed40741c","isMergeCommit":false,"messageTitle":"Create UniqueTagList class and methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":100,"deletions":2}}}]},{"date":"2024-03-13","commitResults":[{"hash":"931ad50358bf4916a9b116b3350b6fd4a0ad1d91","isMergeCommit":false,"messageTitle":"Add UniqueTagList var and methods for AddressBook class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":3}}},{"hash":"8a3fd80ae87bcad4a9fff51002334b1f7db9b37f","isMergeCommit":false,"messageTitle":"Implement JSON serializing of tag list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":14}}}]},{"date":"2024-03-15","commitResults":[{"hash":"c1e9956af7a3432ae6782205cdf37cfb1697f852","isMergeCommit":true,"messageTitle":"Merge pull request #28 from peterXGD/branch-UG-Update","messageBody":"Add UG v1.1 as a template to add v1.2 features","fileTypesAndContributionMap":{}},{"hash":"8a2178faf65446aa27513b97f2b2adfe04630fa6","isMergeCommit":false,"messageTitle":"Minor changes to fix failing build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"ac7228e44af24c4e93704c596c91e93fb17de769","isMergeCommit":false,"messageTitle":"Minor change to fix failing build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"b572b29c5a1cd393c670ee3c193ca82991de9087","isMergeCommit":false,"messageTitle":"Implement and update tests for new classes and methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":13},"test-code":{"insertions":195,"deletions":4}}},{"hash":"a14ea37e8c260e8101353f22e316b3a820255a1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-TagListClass","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"211aab8d7c34a5f7c480894239982f4019db1bd9","isMergeCommit":false,"messageTitle":"Add more tests for AddressBook class to improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":7}}},{"hash":"0779856d50953cf28666c5326eeaa95e878bf508","isMergeCommit":false,"messageTitle":"Minor changes to AddressBookTest to address build issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":16}}}]},{"date":"2024-03-21","commitResults":[{"hash":"a8764e29ee57e6b97c3967b654191da74fe03714","isMergeCommit":true,"messageTitle":"Merge pull request #36 from jonpwk/branch-addTagCommand","messageBody":"Minor Bug Fixes","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-28","commitResults":[{"hash":"f46ca7d2c2a915cf9d77a03cc052d8b303a6c9ab","isMergeCommit":false,"messageTitle":"Update model class diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}},{"hash":"02a3491876254a3435a9e04bc5f7bb33f2e064e1","isMergeCommit":false,"messageTitle":"Update StorageClassDiagram and developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":10}}}]},{"date":"2024-03-29","commitResults":[{"hash":"9e826f4b34aa59bc89bf76b2f77de30dc971a764","isMergeCommit":true,"messageTitle":"Merge pull request #44 from peienlim/branch-updateDgPeiEn","messageBody":"Update developer guide and class diagrams","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"6ea29c09425ad8ff8d77718c6b2d98a62dd6a2da","isMergeCommit":false,"messageTitle":"Create new EventListPanel class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":0}}},{"hash":"8f6758a5fc8a102753eedb1c89e32852869db805","isMergeCommit":false,"messageTitle":"Create EventCard class and fxml files for event tab section","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":4}}}]},{"date":"2024-03-31","commitResults":[{"hash":"28dd1b6e1b14757b8dfab7407bdb1dd1a51d9f6a","isMergeCommit":false,"messageTitle":"Fix EventCard class for event tab switcher UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":28}}},{"hash":"ad49b2b8cc93f9a135f7bdcd92c26bcdb90ae381","isMergeCommit":false,"messageTitle":"Add additional eventTagList for addressbook class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":2}}},{"hash":"28d0439531e7193ceac7275da7494333928e4680","isMergeCommit":false,"messageTitle":"Implement JsonAdaptedEventTag for proper storage of event tag list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":1}}},{"hash":"06fb7388bef05487b8305559eff4af6ba5c2bc8c","isMergeCommit":false,"messageTitle":"Minor edit to add duplicate event tag message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e8b381ce757dc1a13b4feafb5a2a539782819cc4","isMergeCommit":false,"messageTitle":"Edits to fix build issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":13},"test-code":{"insertions":11,"deletions":2}}}]},{"date":"2024-04-01","commitResults":[{"hash":"8e193a23bff987d4c2b919a473b1f83aaed40228","isMergeCommit":false,"messageTitle":"Implement use of generics for UniqueTagList class to handle both Tags and EventTags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":30},"test-code":{"insertions":8,"deletions":8}}},{"hash":"d29f5211aec886b96f784315ce0e04b54763f268","isMergeCommit":false,"messageTitle":"Edit JsonAdaptedEventTag to properly store event tag list on exit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}},{"hash":"6b9805603bf2571fc1c97eb52a44fa4568695364","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-eventTagList\u0027 into branch-eventSwitcherUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"536dc2b90c9edbaea37c4d200358b08429285cca","isMergeCommit":false,"messageTitle":"Modify event panel list to display event tags in addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":3}}}]},{"date":"2024-04-02","commitResults":[{"hash":"8bb88f88d10c210c2f0f60e64f7a887f202c4077","isMergeCommit":false,"messageTitle":"Edit searchTag command to search via event tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":123,"deletions":18},"test-code":{"insertions":45,"deletions":3}}},{"hash":"8bbd0c63d5b62c7cc794978fc06df77acd962195","isMergeCommit":false,"messageTitle":"Modify Person class to store set of events","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":2}}},{"hash":"f6720f3ae7e6a2e91348ff121f7748306a040e25","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-eventSwitcherUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ef8626da7cd246a483d3270f87562f2d08c7290","isMergeCommit":false,"messageTitle":"Minor edit to fix build issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e0e5565d92cbc583060374ceae02a84458b4245d","isMergeCommit":true,"messageTitle":"Merge pull request #55 from peienlim/branch-eventSwitcherUI","messageBody":"Implement Event Switcher UI","fileTypesAndContributionMap":{}},{"hash":"1400de5d94fbbb86cbfd4f1d0edd07ef164d878e","isMergeCommit":true,"messageTitle":"Merge new changes and resolve merge conflict in Person.java","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3c059b5f47716ff6a5ddf49177e2954eb02d510e","isMergeCommit":false,"messageTitle":"Edit Person and JsonAdaptedPerson classes to include list of event tags of person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":2}}},{"hash":"a43236573430e078fc8590613fbb0267f360fcae","isMergeCommit":false,"messageTitle":"Modify classes related to Person and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":8},"test-code":{"insertions":36,"deletions":11}}},{"hash":"4c20eacc30b2d87e28c08625acdb249797592258","isMergeCommit":true,"messageTitle":"Merge pull request #58 from peienlim/branch-personEventTagList","messageBody":"Event tag list for Person class ","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"0f410d90c6cb1bd42b7abca3c700b02270b677e1","isMergeCommit":false,"messageTitle":"Implement logic to display persons correctly when searching by events","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":7}}},{"hash":"8fbd3d47284298a005b2e3b3b819d3a201b84baf","isMergeCommit":false,"messageTitle":"Modify event switcher UI to highlight selected event","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":5}}},{"hash":"3928fdfc97aea847ceb80560863a286bfd0fd893","isMergeCommit":false,"messageTitle":"Modify person cards to display event tags of person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":0}}},{"hash":"8e8b48bbef2632ae93895b93d334aca1403ad94e","isMergeCommit":false,"messageTitle":"Fix bugs for search function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":9},"test-code":{"insertions":10,"deletions":0}}},{"hash":"d7cefc239338edbb9eb09f4d4010403976d50152","isMergeCommit":false,"messageTitle":"Minor edits","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":16}}},{"hash":"c57a5d61de3e581134cbb3629118b8ee853b4811","isMergeCommit":false,"messageTitle":"Remove CurrentEventTagListener class and minor edit to fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7}}},{"hash":"8d13b9117beaaf95ed2becb7ca48a019f5e2e0d8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-assignCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a737bcf0db7401fa6e883ba03d0e616c32ea1dec","isMergeCommit":true,"messageTitle":"Merge pull request #59 from jonpwk/branch-assignCommand","messageBody":"Add assign command","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"3afdf36f3282d4173976badd09b7c1ab734e8505","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AssignEventTags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc2dce0c630209669f1ed05abfb96f0c0190f286","isMergeCommit":true,"messageTitle":"Merge pull request #64 from cleowenxuan/branch-SwitchCommand","messageBody":"Create SwitchCommand feature to switch between event tags","fileTypesAndContributionMap":{}},{"hash":"63df22e76e7ba6e0f630df7cd21799fafc6562b5","isMergeCommit":true,"messageTitle":"Merge pull request #65 from jonpwk/branch-buildShadowJar","messageBody":"Edit for correct sample JSON file creation","fileTypesAndContributionMap":{}},{"hash":"fe826ad654ffbf3ab52b4b575b8083bc8b6993ed","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jonpwk/branch-assignCommand","messageBody":"Edit logic to display correct error message","fileTypesAndContributionMap":{}},{"hash":"298a8eee3cec2c584348babe6318957e70b627b1","isMergeCommit":false,"messageTitle":"Edit UG for new Switch command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":0}}},{"hash":"3f27a9e7700412756c9621dff514b170d2c31e2a","isMergeCommit":false,"messageTitle":"Minor edit to fix search command bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d5e679f4f50c78f3a431fe7fabd63da75374862a","isMergeCommit":true,"messageTitle":"Merge pull request #63 from cleowenxuan/branch-AssignEventTags","messageBody":"Update AssignCommand to assign event tags","fileTypesAndContributionMap":{}},{"hash":"f069f2210ae4d96b98de53ed9d89aa737213f888","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateUserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d74293e1afc211d7718a094dd8daf9bed16e27d1","isMergeCommit":true,"messageTitle":"Merge pull request #69 from cleowenxuan/branch-UpdateUserGuide","messageBody":"Update User Guide","fileTypesAndContributionMap":{}},{"hash":"596fe2e31ba261f52085a1c200c18eca10acec3c","isMergeCommit":true,"messageTitle":"Merge pull request #68 from peienlim/branch-addressbookjson","messageBody":"Update addressbook.json and SearchCommandParser","fileTypesAndContributionMap":{}},{"hash":"f276102cb683fe46da583de606f0e0f87034f91a","isMergeCommit":true,"messageTitle":"Merge pull request #70 from owenong1/branch-updateUG1.3","messageBody":"UG update for 1.3.1 release","tags":["v1.3"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cleowenxuan":{"docs":99,"functional-code":315,"test-code":73,"other":4},"peterXGD":{"docs":85,"functional-code":420,"test-code":100},"owenong1":{"docs":68,"functional-code":408,"test-code":44},"jonpwk":{"docs":137,"functional-code":476,"test-code":131,"other":1},"peienlim":{"docs":60,"functional-code":850,"test-code":337}},"authorContributionVariance":{"cleowenxuan":4004.364,"peterXGD":4112.6772,"owenong1":2666.909,"jonpwk":7125.848,"peienlim":9176.744},"authorDisplayNameMap":{"cleowenxuan":"CS2103T-T11-3 TAY ..CLEO","peterXGD":"CS2103T-T11-3 LI Y..IFEI","owenong1":"CS2103T-T11-3 ONG ..OWEN","jonpwk":"CS2103T-T11-3 PUA ..THAN","peienlim":"CS2103T-T11-3 LIM ..I EN"}} +{"authorDailyContributionsMap":{"cleowenxuan":[{"date":"2024-02-25","commitResults":[{"hash":"2b75784c9f9b0ebf27dc2eabeaed8583cf3d2198","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"13b43df1dbddc4dd643524e4a361077f9b0d8a5c","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"dba6cb9f9488c7759d77fbe81af295c56c7a463d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}}]},{"date":"2024-03-07","commitResults":[{"hash":"d2f581ee7bd323129164c12be495d3262d45b9ee","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"7aa67c0e80b58da6fc7aa3886814c575c977ceeb","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}},{"hash":"2b4b7cadb70ef0901001cfb2de7052b0ec6f3d25","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"159c472921f34a238748404df6de7e77908e7425","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"18800bc210d89d2d1b61195d3433d7048d98a84e","isMergeCommit":true,"messageTitle":"Merge pull request #17 from peienlim/branch-AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"fcb605e5e24b29953b4db4d56d64adfee26b7c54","isMergeCommit":false,"messageTitle":"Update the DeleteCommand to delete both index and name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":15},"test-code":{"insertions":10,"deletions":10}}},{"hash":"74d785852ee9318f354ce90c9cf012bb84017a59","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/cleowenxuan/tp into branch-DeleteCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"73e0f695ceedab4f386ced721752db71af647685","isMergeCommit":false,"messageTitle":"Modify the relevant files that failed the build checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":3}}},{"hash":"18ccec3c8885f0dfb3704409619aa5030c33ee3c","isMergeCommit":false,"messageTitle":"Modify relevant files to address failed build checks because of failed testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":34,"deletions":12}}},{"hash":"f6175152ddfa4625ca1b8091a965ec055a1c5798","isMergeCommit":false,"messageTitle":"Modify DeleteCommandTest file to adhere to checkstyle rule","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"555d36e12e97bbffb94654c2bac0e24cae9addd8","isMergeCommit":false,"messageTitle":"Add declaration of static variables for better clarity","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":8,"deletions":12}}}]},{"date":"2024-03-21","commitResults":[{"hash":"801fedae7169596c59ef19d8520d92f4fc35cf9b","isMergeCommit":true,"messageTitle":"Merge pull request #29 from cleowenxuan/branch-DeleteCommand","messageBody":"Update DeleteCommand to delete by index or name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"8983b0469cfea8fb87145e668c92a48369e9ec19","isMergeCommit":false,"messageTitle":"Update Developer Guide and UML Diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":5}}},{"hash":"5c0c74d746a3ee84e42bbf00b11a46277692c5bd","isMergeCommit":true,"messageTitle":"Merge pull request #46 from cleowenxuan/branch-UpdateDeveloperGuide","messageBody":"Update Developer Guide and UML Diagrams","fileTypesAndContributionMap":{}},{"hash":"5016845b85a90c26a7cacc7574d51976e0eccd0e","isMergeCommit":false,"messageTitle":"Enable Assertions","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"c9a0b5d37d9f772a98d8da90553858d48578a95a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/cleowenxuan/tp into branch-AddAssertions","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d23a43ca1759f9c5f652e94acc86ed7abdb4db6","isMergeCommit":true,"messageTitle":"Merge pull request #48 from cleowenxuan/branch-AddAssertions","messageBody":"Enable Assertions","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"cc0e214f8b5a9f250eefe63a87b250f3aef13c30","isMergeCommit":false,"messageTitle":"Update EditCommand to edit by name or index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":20},"test-code":{"insertions":26,"deletions":25}}},{"hash":"244a265e449b4e6e8487b145e87cbe3f3921caa6","isMergeCommit":false,"messageTitle":"Modify relevant files to pass testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4},"test-code":{"insertions":12,"deletions":11}}},{"hash":"9b743ff3b4db1e72a0cb23098b22987ed60b1901","isMergeCommit":false,"messageTitle":"Modify relevant files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":2}}},{"hash":"8cc9ba5fc2fadb1bd9e880e864f0b3e7602849b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T11-3:master\u0027 into branch-RenameContacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4c75e535d800dd9af58174efb3db4303b725bf37","isMergeCommit":true,"messageTitle":"Merge pull request #57 from cleowenxuan/branch-RenameContacts","messageBody":"Update EditCommand to edit by name or index","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"ee16ba58b04f1f34a4ced2387bd783321720d323","isMergeCommit":false,"messageTitle":"Update AssignCommand to assign event tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":12},"test-code":{"insertions":1,"deletions":1}}},{"hash":"67afbbeeabb9f57a32219b5b4c3281f99d0b079a","isMergeCommit":false,"messageTitle":"Modify files to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"01191dea1e83afcab2c619cc22397b7b091f8cf1","isMergeCommit":true,"messageTitle":"Merge pull request #62 from peienlim/branch-eventSwitcherUI","messageBody":"Implement event switcher UI","fileTypesAndContributionMap":{}},{"hash":"edc668ed8dfca7b40f5146a439e5db16a9a4379a","isMergeCommit":false,"messageTitle":"Create SwitchCommand feature to switch between event tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":31},"test-code":{"insertions":3,"deletions":3}}},{"hash":"ae21aede42e5b4001f4c15c36314a9061ae1e5c0","isMergeCommit":false,"messageTitle":"Modify relevant files to pass build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}},{"hash":"1edc13d450c52116b5409c0e6eefcdc3470dca1a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T11-3:master\u0027 into branch-AssignEventTags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2663ebf5721a080ecba05bc5d93a13a1a53a201e","isMergeCommit":false,"messageTitle":"Modify AddressBook to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"3db1060f7496a94b6c11eac58feb6ba879950cf6","isMergeCommit":true,"messageTitle":"Merge pull request #67 from peienlim/branch-updateUG","messageBody":"Update UG for switch command","fileTypesAndContributionMap":{}},{"hash":"0f3cbd3ce093cbf1858d8e98506083e8ae232458","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/cleowenxuan/tp into branch-UpdateUserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b592f4a2a37a56b8b287353b9fbad07b6bef2c3d","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":31}}},{"hash":"4449230676a4194a7328cda55005fa00843f4fea","isMergeCommit":false,"messageTitle":"Minor bug fix to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":11}}},{"hash":"079cfe97b6ad6f8714ac4b0fcdf529c087dcd35a","isMergeCommit":false,"messageTitle":"Minor bug fix to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":5}}}]},{"date":"2024-04-05","commitResults":[{"hash":"f9243741b6b232c46bb3833b6fd62d3bc2e36c82","isMergeCommit":false,"messageTitle":"Minor changes to the return message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":13}}},{"hash":"444b4307d71cae81b5361ec824df948c9aae2596","isMergeCommit":false,"messageTitle":"Minor changes to pass checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"docs":{"insertions":1,"deletions":1}}},{"hash":"8ddea674e94d0069ef39bebec400286b1b8f727f","isMergeCommit":true,"messageTitle":"Merge pull request #73 from cleowenxuan/branch-MinorBugFix","messageBody":"Minor edits to the Messages","fileTypesAndContributionMap":{}}]}],"peterXGD":[{"date":"2024-03-15","commitResults":[{"hash":"82971dcd56e3e08e3fe1d204ce1916c1b7b72432","isMergeCommit":false,"messageTitle":"Add UG v1.1 as a template to add v1.2 features","messageBody":"Per title.\n","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-20","commitResults":[{"hash":"3d616246c3aa4777aae93689a355a4015dc81fe7","isMergeCommit":false,"messageTitle":"Search command to search for people matching one tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":123,"deletions":9},"test-code":{"insertions":82,"deletions":0}}},{"hash":"74c80ac0b9d2bfcfe424c38e2ffe7b570990ea08","isMergeCommit":false,"messageTitle":"Reverted the readme to the state and added the search command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":10}}},{"hash":"9d7c2c37fb35bc657ec75c140274ca8199ed8108","isMergeCommit":false,"messageTitle":"Do Checkstyle for the searchCommand implemented.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3}}},{"hash":"54ee8100c5a854f9519cf564ee31c1ab468415e0","isMergeCommit":false,"messageTitle":"For checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1},"test-code":{"insertions":5,"deletions":6}}},{"hash":"2656d0c3c33bb96e54c953c9cc220b648caa219d","isMergeCommit":false,"messageTitle":"Update AddressBook.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"9db6dcefc967544f0befafa8427d6b403e0e9790","isMergeCommit":false,"messageTitle":"changed search tag name to searchTagCommand","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"fb367785ccb76fb0f8b76c9f05c6a1f1a6b66ff7","isMergeCommit":false,"messageTitle":"Change SearchCommand class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13},"test-code":{"insertions":10,"deletions":10}}}]},{"date":"2024-03-21","commitResults":[{"hash":"2f9651747d4b9d2afef3c387aa3d39a08af3a53d","isMergeCommit":true,"messageTitle":"Merge pull request #35 from peterXGD/branch-a-searchcommand","messageBody":"Branch a searchcommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"7db997ed5b57275f0ac17811f0046dd7b83cfc5b","isMergeCommit":true,"messageTitle":"Merge pull request #37 from jonpwk/branch-editUserGuide","messageBody":"Edit User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"66d431ed59bd2a16aa53a51386db24837d4bd3e0","isMergeCommit":false,"messageTitle":"Update EventTag Class","messageBody":"EventTag class is implemented as a subclass.\nThis allows the implementation of features in v1.3.\n\nLet\u0027s add the EventTag class to enable other members to start coding.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":0},"test-code":{"insertions":29,"deletions":0}}},{"hash":"25b52537fe202d3da20e5ac95c70db78a1c49803","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-UG-Update\u0027","messageBody":"* branch-UG-Update:\n Update EventTag Class\n","fileTypesAndContributionMap":{}},{"hash":"d4e0f5fc1f4bb43a76a2adaac21d47804d773fe9","isMergeCommit":false,"messageTitle":"Change version name to for a Jar release","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0692a5bacccd9f94da8d3bf0acef8fed30bd9950","isMergeCommit":true,"messageTitle":"Merge pull request #45 from peterXGD/branch-EventTagClass-Update","messageBody":"Branch event tag class update","fileTypesAndContributionMap":{}},{"hash":"332691c6a98d6bb3501da1ebe6f4024f09ee8795","isMergeCommit":false,"messageTitle":"Add lines to DevGuide, change version in Main.app.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":63,"deletions":11}}}]},{"date":"2024-04-02","commitResults":[{"hash":"49ff994ee2e92511b0ec2f436c18eebfb317a10b","isMergeCommit":true,"messageTitle":"Merge pull request #56 from jonpwk/branch-dtagBugFix","messageBody":"Branch dtag bug fix","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"f1cb193557ec92610dd43619659fd9c832d13878","isMergeCommit":false,"messageTitle":"Update ctag to work with event tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":17}}},{"hash":"a9a1af37c910c83bc27591fcaef83bf558b90937","isMergeCommit":false,"messageTitle":"update 2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"docs":{"insertions":7,"deletions":1}}}]},{"date":"2024-04-05","commitResults":[{"hash":"460f8f56070fc0b334ed526f63bf93f1018e37af","isMergeCommit":false,"messageTitle":"update 3","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":9},"test-code":{"insertions":1,"deletions":2}}},{"hash":"22bcccbb27d364ae297739d885653d6aa009888b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2b530771b492b0ed8faa653039c0d2b57f5c8eb7","isMergeCommit":false,"messageTitle":"Update ParserUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"4d7122b1a62ed24d4499134e2193ef059c3fee40","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"a6f535f2d79d952457f015a8bcc4b69663a89917","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-ctagUpdate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0181e3213690cb0269759332410c0ee0949416e","isMergeCommit":true,"messageTitle":"Merge pull request #71 from peterXGD/A-ctagUpdate","messageBody":"A ctag update","fileTypesAndContributionMap":{}},{"hash":"1329d208ae06fd6a684923b976dc03d58b5b1177","isMergeCommit":false,"messageTitle":"Add devent command for EB.","messageBody":"This allows an event to be deleted from the book, as well as its associated people.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":14},"docs":{"insertions":15,"deletions":0},"test-code":{"insertions":0,"deletions":5}}},{"hash":"cb845dc97ce37836bed95b5196854a3808281572","isMergeCommit":false,"messageTitle":"Update devent after debug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1c33583b9f431ba6aed7f11553d164df37696ee0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-deventUpdate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6cf1b402afc42f090182dbf68d002f984c9c9466","isMergeCommit":false,"messageTitle":"Fix EventPanelList Ui Issue with not displaying correct after each command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"863b16355e27db4d7cb412282acc350891c72c60","isMergeCommit":true,"messageTitle":"Merge pull request #78 from peterXGD/branch-UiFix","messageBody":"Fix EventPanelList Ui Issue with not displaying correct after each co…","fileTypesAndContributionMap":{}},{"hash":"aaa938a5e40429b6562fb690ef3100f59bd1bb5e","isMergeCommit":false,"messageTitle":"Make test pass build","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}}]}],"owenong1":[{"date":"2024-03-05","commitResults":[{"hash":"91c9fcb65d9e4a7ca5ca9684ab1908bd7ec27561","isMergeCommit":false,"messageTitle":"Test","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5f07f85f141875404ac1ab402c6ce272e454817b","isMergeCommit":true,"messageTitle":"Merge pull request #16 from owenong1/branch-test","messageBody":"Test","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"f09d527af8fae0ee869514ac79b937dfd40b07c7","isMergeCommit":true,"messageTitle":"Merge pull request #21 from jonpwk/master","messageBody":"Update DeveloperGuide.md file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"6576cc1c2364d3468e0c922caf7b6b5bd4874b40","isMergeCommit":false,"messageTitle":"Added functionality for Import command, and sample import template","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":153,"deletions":0},"test-code":{"insertions":17,"deletions":0}}},{"hash":"674e2215f481492d3b55eb43d2fca9769b9a0cf8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-addImport\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c92e370f71b307fcd5639a9b660e146e05768090","isMergeCommit":false,"messageTitle":"Minor updates for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":31}}},{"hash":"0e1d20fa6899103b5b80f98a2f3c40915877b567","isMergeCommit":false,"messageTitle":"Minor checkstyle update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":9}}},{"hash":"7caf95bb90f4c2aa342bba468653a6c97bf87a05","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-checkstyleImportUpdate\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"bf59f9762f23f83ebe9add21854bb4c84babf464","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-ImportCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"db0a6255019a37a9a8c11beaf55de8dacdf0245c","isMergeCommit":true,"messageTitle":"Merge pull request #34 from owenong1/branch-ImportCommand","messageBody":"Implement import command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"57ece3d350de4a0c03e3500a10cf21d2d2bbb8a0","isMergeCommit":false,"messageTitle":"UPdated DG to include import/export commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":0}}}]},{"date":"2024-04-01","commitResults":[{"hash":"8ca1aa1d85e573647f31d878f7432acc91405950","isMergeCommit":false,"messageTitle":"Implement path parameter to the import command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":6}}},{"hash":"72200dbd9d3e67fc4549ec498f2c0a72230897b0","isMergeCommit":false,"messageTitle":"Checkstyle edits","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"1e25496b4c01c4151eccdd2f47d45b1aaccf18be","isMergeCommit":false,"messageTitle":"Add some testing for import command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":5},"test-code":{"insertions":32,"deletions":0}}},{"hash":"0389e123afe03811cda3a067797e209b17e91078","isMergeCommit":false,"messageTitle":"Minor checkstyle edits","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-04-03","commitResults":[{"hash":"ec606dac2d1d138e1fa729feb35af715c2243e04","isMergeCommit":true,"messageTitle":"Merge pull request #52 from owenong1/branch-addImportPath","messageBody":"Implement path parameter to the import command","fileTypesAndContributionMap":{}},{"hash":"59e1d3f2d909f0b60fb84268b9c2ef17fbb8c84d","isMergeCommit":false,"messageTitle":"Implemented Export Command","messageBody":"Pending tag implementation finalisation before complete\n","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":14},"test-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"d69931f4e72b37437da2560c4d049a6e758aed43","isMergeCommit":true,"messageTitle":"Merge pull request #61 from owenong1/branch-exportCommand","messageBody":"Implemented Export Command","fileTypesAndContributionMap":{}},{"hash":"346ee06ef9cd99fc4158b445f91a12ddb8a4e39c","isMergeCommit":false,"messageTitle":"UG update for 1.3.1 release","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":6}}}]},{"date":"2024-04-05","commitResults":[{"hash":"8a5e4179d662d096001a4310bb0c973cb14c3490","isMergeCommit":false,"messageTitle":"Tag support for export/import","messageBody":"Minor bug fixes as well\n","fileTypesAndContributionMap":{"functional-code":{"insertions":132,"deletions":27},"docs":{"insertions":11,"deletions":3}}},{"hash":"8b9cd643ad459ff1f6ae7be28fb72e2c7093fed2","isMergeCommit":false,"messageTitle":"Minor edits","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"e8183f4af5c29333e1ba8ee11b9d20a71f41bdcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-imporExportTags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a56b63957537e2a93652369743421c505572fc0","isMergeCommit":true,"messageTitle":"Merge pull request #76 from owenong1/branch-imporExportTags","messageBody":"Import/export tags","fileTypesAndContributionMap":{}},{"hash":"216c300cb6d27a5279ca2a027712d62f4a5b8f3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-deventUpdate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81bada3683b368b46dda61e1592e826c14d563fb","isMergeCommit":true,"messageTitle":"Merge pull request #74 from peterXGD/branch-deventUpdate","messageBody":"Branch devent update","fileTypesAndContributionMap":{}},{"hash":"a17d3b9b9face16a1545942584b8da93411a4f67","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"26aaf8abe720e321a679fcfc663442600ec05acc","isMergeCommit":true,"messageTitle":"Merge pull request #77 from owenong1/branch-versionNu,","messageBody":"Version no.","tags":["v1.3.1"],"fileTypesAndContributionMap":{}},{"hash":"08745b5b3d79d31c6c8ee797d6f9deb813bbd6cb","isMergeCommit":true,"messageTitle":"Merge pull request #79 from peterXGD/branch-UiFix","messageBody":"Make test pass build","fileTypesAndContributionMap":{}}]}],"jonpwk":[{"date":"2024-03-07","commitResults":[{"hash":"40b14ce4ba93d1b6487090520c0971fc7386054b","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":54,"deletions":16}}}]},{"date":"2024-03-11","commitResults":[{"hash":"dc2c9c08090ef5c2bdd9d33a5c28fec9a0c05be5","isMergeCommit":false,"messageTitle":"Edit DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"f5b9f4ef1e10c62e29b3411d0ebae07db8546cdf","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T11-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6703116bf4da4ff1acbcfc88d58ca668b5fbc2dd","isMergeCommit":false,"messageTitle":"Edit DeveloperGuide","messageBody":"Made minor changes to numbering format and removed extra new lines.\n","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}}]},{"date":"2024-03-18","commitResults":[{"hash":"abec874a6ee9d8ddb6af5264aeb7117fc5fc0864","isMergeCommit":true,"messageTitle":"Merge pull request #27 from peienlim/branch-TagListClass","messageBody":"Implement UniqueTagList class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"9129c711f8b60dfbaeb0dc0a49d4f1bf2d5c67f1","isMergeCommit":false,"messageTitle":"Add ctag and dtag functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":268,"deletions":10},"test-code":{"insertions":110,"deletions":3}}},{"hash":"ea947a1875514390121fdc5f75038d3f8b91e5db","isMergeCommit":false,"messageTitle":"Minor changes to fix failing build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":15},"test-code":{"insertions":9,"deletions":4}}}]},{"date":"2024-03-21","commitResults":[{"hash":"77e2726d588496d015733ba5ccc20bdac0a9d072","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-addTagCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b755f38e0215465854e8b6539df9c90c843956ca","isMergeCommit":true,"messageTitle":"Merge pull request #33 from jonpwk/branch-addTagCommand","messageBody":"Add ctag and dtag functions","fileTypesAndContributionMap":{}},{"hash":"d674a6271155e15dc82107973ad6f6a3a97cbe24","isMergeCommit":false,"messageTitle":"Minor Bug Fixex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}}]},{"date":"2024-03-25","commitResults":[{"hash":"55fbb1885c27b4f0fe3438d8f532f18afd4a34eb","isMergeCommit":false,"messageTitle":"Edit User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":4}}},{"hash":"153c093ddb2270be742a4097e5f98eb4690415ad","isMergeCommit":false,"messageTitle":"Minor Edit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":0,"deletions":5}}}]},{"date":"2024-03-29","commitResults":[{"hash":"daab269068e39cf3a2f1183ab903044673276cf0","isMergeCommit":true,"messageTitle":"Merge pull request #47 from owenong1/branch-dgImportExport","messageBody":"UPdated DG to include import/export commands","fileTypesAndContributionMap":{}},{"hash":"18566cd0206a68e505c18b8a33595cb2036da213","isMergeCommit":true,"messageTitle":"Merge pull request #49 from peterXGD/branch-DevGuideUpdate","messageBody":"Add lines to DevGuide, change version in Main.app.","fileTypesAndContributionMap":{}},{"hash":"322a23193de86c8631f689ab2d3cf38dac934b50","isMergeCommit":false,"messageTitle":"Edit DeveleporGuide to describe ctag and dtag functions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":0}}},{"hash":"111baee8480fb14d7a6dbb5e76e82161e0d8dfd5","isMergeCommit":true,"messageTitle":"Merge pull request #50 from jonpwk/branch-dgCtagDtag","messageBody":"Edit DeveleporGuide to describe ctag and dtag functions","tags":["v1.2.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-01","commitResults":[{"hash":"9ee04c5e7beb805a24422e7a3e1bed9d6868796d","isMergeCommit":true,"messageTitle":"Merge pull request #51 from peienlim/branch-eventTagList","messageBody":"Introduce eventTagList for addressbook ","fileTypesAndContributionMap":{}},{"hash":"4e626a581b4de766d457fd9e5b9bd58bc9df5143","isMergeCommit":false,"messageTitle":"bugfix dtag to remove tag from Person object","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":13},"test-code":{"insertions":1,"deletions":13}}},{"hash":"bcb71092086f7b6805b8bb8355dc35fd394f833b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from peienlim/branch-eventTagList","messageBody":"Implement use of generics for UniqueTagList class","fileTypesAndContributionMap":{}},{"hash":"2eb558fd0f2035fa59f375fc500887fc78aa717b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jonpwk/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"16427febedb12aa7c862f7185a6f41b193a2c03c","isMergeCommit":true,"messageTitle":"Merge pull request #54 from peienlim/branch-eventTagList","messageBody":"Edit JsonAdaptedEventTag to properly store event tag list on exit","fileTypesAndContributionMap":{}},{"hash":"944a8b028a8cf1d96bee3a7c2c32a7541ff1aaef","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T11-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0b454773735f6a749e84628d0026fbb0cfe7cb35","isMergeCommit":false,"messageTitle":"Edit JsonSerializableAddressBook to parse Person\u0027s tags into Model\u0027s internal tagList Fixed dtag command bug to remove tags from Person\u0027s tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":10}}},{"hash":"11a1e2247241796fc92b7c45e76b3918d1396230","isMergeCommit":false,"messageTitle":"Edit for successful build","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":3}}},{"hash":"80feb3fca361b1bb8e53d19bd23156fe6eceb838","isMergeCommit":false,"messageTitle":"Edit for build errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"abf38aa37ee7848a395867a9b8e7145b1595143c","isMergeCommit":false,"messageTitle":"Add assign command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":199,"deletions":10},"docs":{"insertions":12,"deletions":0},"test-code":{"insertions":2,"deletions":12}}},{"hash":"515f1c56642c660072e8ae13643586ed8292fa0a","isMergeCommit":false,"messageTitle":"edit minor bug to allow multiple tags assigned at once","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-04-03","commitResults":[{"hash":"aef9b39fc934de2e231b81c85407300f9209ad0a","isMergeCommit":false,"messageTitle":"edit for build errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-04-04","commitResults":[{"hash":"8941115dfc4680627f600f3f8738d90afc05aadb","isMergeCommit":false,"messageTitle":"Edit for correct sample JSON file creation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"92635dc1f9bf89d467cff3860da3a313efc50bb9","isMergeCommit":false,"messageTitle":"minor edit to preserve save file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"c080d7d8e30497dd1fc316d5b009502493e9a7c2","isMergeCommit":false,"messageTitle":"Edit logic to display correct error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"peienlim":[{"date":"2024-02-25","commitResults":[{"hash":"b40dc7e35a3b3f22b7b30579048c225c87693056","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-T11-3/switch-docs-to-markbind","messageBody":"Merge switch-docs-to-markbind to master","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"782844cdaedc99a2c6f5d6f698b6b9f1ff3254ef","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":33}}}]},{"date":"2024-03-10","commitResults":[{"hash":"73865a1e2d2229eacda704219c7a7a3e43e79b15","isMergeCommit":true,"messageTitle":"Merge pull request #19 from cleowenxuan/branch-README","messageBody":"Update README file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"f07c114d177af711d23f0608ee12ff04dbef0f7d","isMergeCommit":true,"messageTitle":"Merge pull request #22 from jonpwk/master","messageBody":"Edit DeveloperGuide","fileTypesAndContributionMap":{}},{"hash":"1736f48ef0d1cef019eb29dbf3ee23985cada8cd","isMergeCommit":true,"messageTitle":"Merge pull request #23 from jonpwk/branch-editDeveloperGuide","messageBody":"Edit DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"5e2402a0b7d993dbd2b0703d68403fd6b986b96c","isMergeCommit":false,"messageTitle":"Create UniqueTagList class and methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"8a8839259077ca6f3ebdfede630ee480ed40741c","isMergeCommit":false,"messageTitle":"Create UniqueTagList class and methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":100,"deletions":2}}}]},{"date":"2024-03-13","commitResults":[{"hash":"931ad50358bf4916a9b116b3350b6fd4a0ad1d91","isMergeCommit":false,"messageTitle":"Add UniqueTagList var and methods for AddressBook class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":3}}},{"hash":"8a3fd80ae87bcad4a9fff51002334b1f7db9b37f","isMergeCommit":false,"messageTitle":"Implement JSON serializing of tag list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":14}}}]},{"date":"2024-03-15","commitResults":[{"hash":"c1e9956af7a3432ae6782205cdf37cfb1697f852","isMergeCommit":true,"messageTitle":"Merge pull request #28 from peterXGD/branch-UG-Update","messageBody":"Add UG v1.1 as a template to add v1.2 features","fileTypesAndContributionMap":{}},{"hash":"8a2178faf65446aa27513b97f2b2adfe04630fa6","isMergeCommit":false,"messageTitle":"Minor changes to fix failing build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"ac7228e44af24c4e93704c596c91e93fb17de769","isMergeCommit":false,"messageTitle":"Minor change to fix failing build","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"b572b29c5a1cd393c670ee3c193ca82991de9087","isMergeCommit":false,"messageTitle":"Implement and update tests for new classes and methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":13},"test-code":{"insertions":195,"deletions":4}}},{"hash":"a14ea37e8c260e8101353f22e316b3a820255a1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-TagListClass","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"211aab8d7c34a5f7c480894239982f4019db1bd9","isMergeCommit":false,"messageTitle":"Add more tests for AddressBook class to improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":7}}},{"hash":"0779856d50953cf28666c5326eeaa95e878bf508","isMergeCommit":false,"messageTitle":"Minor changes to AddressBookTest to address build issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":16}}}]},{"date":"2024-03-21","commitResults":[{"hash":"a8764e29ee57e6b97c3967b654191da74fe03714","isMergeCommit":true,"messageTitle":"Merge pull request #36 from jonpwk/branch-addTagCommand","messageBody":"Minor Bug Fixes","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-28","commitResults":[{"hash":"f46ca7d2c2a915cf9d77a03cc052d8b303a6c9ab","isMergeCommit":false,"messageTitle":"Update model class diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}},{"hash":"02a3491876254a3435a9e04bc5f7bb33f2e064e1","isMergeCommit":false,"messageTitle":"Update StorageClassDiagram and developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":10}}}]},{"date":"2024-03-29","commitResults":[{"hash":"9e826f4b34aa59bc89bf76b2f77de30dc971a764","isMergeCommit":true,"messageTitle":"Merge pull request #44 from peienlim/branch-updateDgPeiEn","messageBody":"Update developer guide and class diagrams","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"6ea29c09425ad8ff8d77718c6b2d98a62dd6a2da","isMergeCommit":false,"messageTitle":"Create new EventListPanel class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":0}}},{"hash":"8f6758a5fc8a102753eedb1c89e32852869db805","isMergeCommit":false,"messageTitle":"Create EventCard class and fxml files for event tab section","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":4}}}]},{"date":"2024-03-31","commitResults":[{"hash":"28dd1b6e1b14757b8dfab7407bdb1dd1a51d9f6a","isMergeCommit":false,"messageTitle":"Fix EventCard class for event tab switcher UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":28}}},{"hash":"ad49b2b8cc93f9a135f7bdcd92c26bcdb90ae381","isMergeCommit":false,"messageTitle":"Add additional eventTagList for addressbook class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":2}}},{"hash":"28d0439531e7193ceac7275da7494333928e4680","isMergeCommit":false,"messageTitle":"Implement JsonAdaptedEventTag for proper storage of event tag list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":1}}},{"hash":"06fb7388bef05487b8305559eff4af6ba5c2bc8c","isMergeCommit":false,"messageTitle":"Minor edit to add duplicate event tag message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e8b381ce757dc1a13b4feafb5a2a539782819cc4","isMergeCommit":false,"messageTitle":"Edits to fix build issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":13},"test-code":{"insertions":11,"deletions":2}}}]},{"date":"2024-04-01","commitResults":[{"hash":"8e193a23bff987d4c2b919a473b1f83aaed40228","isMergeCommit":false,"messageTitle":"Implement use of generics for UniqueTagList class to handle both Tags and EventTags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":30},"test-code":{"insertions":8,"deletions":8}}},{"hash":"d29f5211aec886b96f784315ce0e04b54763f268","isMergeCommit":false,"messageTitle":"Edit JsonAdaptedEventTag to properly store event tag list on exit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}},{"hash":"6b9805603bf2571fc1c97eb52a44fa4568695364","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-eventTagList\u0027 into branch-eventSwitcherUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"536dc2b90c9edbaea37c4d200358b08429285cca","isMergeCommit":false,"messageTitle":"Modify event panel list to display event tags in addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":3}}}]},{"date":"2024-04-02","commitResults":[{"hash":"8bb88f88d10c210c2f0f60e64f7a887f202c4077","isMergeCommit":false,"messageTitle":"Edit searchTag command to search via event tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":123,"deletions":18},"test-code":{"insertions":45,"deletions":3}}},{"hash":"8bbd0c63d5b62c7cc794978fc06df77acd962195","isMergeCommit":false,"messageTitle":"Modify Person class to store set of events","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":2}}},{"hash":"f6720f3ae7e6a2e91348ff121f7748306a040e25","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-eventSwitcherUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ef8626da7cd246a483d3270f87562f2d08c7290","isMergeCommit":false,"messageTitle":"Minor edit to fix build issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e0e5565d92cbc583060374ceae02a84458b4245d","isMergeCommit":true,"messageTitle":"Merge pull request #55 from peienlim/branch-eventSwitcherUI","messageBody":"Implement Event Switcher UI","fileTypesAndContributionMap":{}},{"hash":"1400de5d94fbbb86cbfd4f1d0edd07ef164d878e","isMergeCommit":true,"messageTitle":"Merge new changes and resolve merge conflict in Person.java","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3c059b5f47716ff6a5ddf49177e2954eb02d510e","isMergeCommit":false,"messageTitle":"Edit Person and JsonAdaptedPerson classes to include list of event tags of person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":2}}},{"hash":"a43236573430e078fc8590613fbb0267f360fcae","isMergeCommit":false,"messageTitle":"Modify classes related to Person and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":8},"test-code":{"insertions":36,"deletions":11}}},{"hash":"4c20eacc30b2d87e28c08625acdb249797592258","isMergeCommit":true,"messageTitle":"Merge pull request #58 from peienlim/branch-personEventTagList","messageBody":"Event tag list for Person class ","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"0f410d90c6cb1bd42b7abca3c700b02270b677e1","isMergeCommit":false,"messageTitle":"Implement logic to display persons correctly when searching by events","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":7}}},{"hash":"8fbd3d47284298a005b2e3b3b819d3a201b84baf","isMergeCommit":false,"messageTitle":"Modify event switcher UI to highlight selected event","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":5}}},{"hash":"3928fdfc97aea847ceb80560863a286bfd0fd893","isMergeCommit":false,"messageTitle":"Modify person cards to display event tags of person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":0}}},{"hash":"8e8b48bbef2632ae93895b93d334aca1403ad94e","isMergeCommit":false,"messageTitle":"Fix bugs for search function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":9},"test-code":{"insertions":10,"deletions":0}}},{"hash":"d7cefc239338edbb9eb09f4d4010403976d50152","isMergeCommit":false,"messageTitle":"Minor edits","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":16}}},{"hash":"c57a5d61de3e581134cbb3629118b8ee853b4811","isMergeCommit":false,"messageTitle":"Remove CurrentEventTagListener class and minor edit to fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7}}},{"hash":"8d13b9117beaaf95ed2becb7ca48a019f5e2e0d8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-assignCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a737bcf0db7401fa6e883ba03d0e616c32ea1dec","isMergeCommit":true,"messageTitle":"Merge pull request #59 from jonpwk/branch-assignCommand","messageBody":"Add assign command","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"3afdf36f3282d4173976badd09b7c1ab734e8505","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AssignEventTags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc2dce0c630209669f1ed05abfb96f0c0190f286","isMergeCommit":true,"messageTitle":"Merge pull request #64 from cleowenxuan/branch-SwitchCommand","messageBody":"Create SwitchCommand feature to switch between event tags","fileTypesAndContributionMap":{}},{"hash":"63df22e76e7ba6e0f630df7cd21799fafc6562b5","isMergeCommit":true,"messageTitle":"Merge pull request #65 from jonpwk/branch-buildShadowJar","messageBody":"Edit for correct sample JSON file creation","fileTypesAndContributionMap":{}},{"hash":"fe826ad654ffbf3ab52b4b575b8083bc8b6993ed","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jonpwk/branch-assignCommand","messageBody":"Edit logic to display correct error message","fileTypesAndContributionMap":{}},{"hash":"298a8eee3cec2c584348babe6318957e70b627b1","isMergeCommit":false,"messageTitle":"Edit UG for new Switch command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":0}}},{"hash":"3f27a9e7700412756c9621dff514b170d2c31e2a","isMergeCommit":false,"messageTitle":"Minor edit to fix search command bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d5e679f4f50c78f3a431fe7fabd63da75374862a","isMergeCommit":true,"messageTitle":"Merge pull request #63 from cleowenxuan/branch-AssignEventTags","messageBody":"Update AssignCommand to assign event tags","fileTypesAndContributionMap":{}},{"hash":"f069f2210ae4d96b98de53ed9d89aa737213f888","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateUserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d74293e1afc211d7718a094dd8daf9bed16e27d1","isMergeCommit":true,"messageTitle":"Merge pull request #69 from cleowenxuan/branch-UpdateUserGuide","messageBody":"Update User Guide","fileTypesAndContributionMap":{}},{"hash":"596fe2e31ba261f52085a1c200c18eca10acec3c","isMergeCommit":true,"messageTitle":"Merge pull request #68 from peienlim/branch-addressbookjson","messageBody":"Update addressbook.json and SearchCommandParser","fileTypesAndContributionMap":{}},{"hash":"f276102cb683fe46da583de606f0e0f87034f91a","isMergeCommit":true,"messageTitle":"Merge pull request #70 from owenong1/branch-updateUG1.3","messageBody":"UG update for 1.3.1 release","tags":["v1.3"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cleowenxuan":{"docs":99,"functional-code":315,"test-code":73,"other":4},"peterXGD":{"docs":85,"functional-code":420,"test-code":108},"owenong1":{"docs":68,"functional-code":408,"test-code":36},"jonpwk":{"docs":137,"functional-code":476,"test-code":131,"other":1},"peienlim":{"docs":60,"functional-code":850,"test-code":337}},"authorContributionVariance":{"cleowenxuan":4004.364,"peterXGD":4258.555,"owenong1":2666.909,"jonpwk":7125.848,"peienlim":9176.744},"authorDisplayNameMap":{"cleowenxuan":"CS2103T-T11-3 TAY ..CLEO","peterXGD":"CS2103T-T11-3 LI Y..IFEI","owenong1":"CS2103T-T11-3 ONG ..OWEN","jonpwk":"CS2103T-T11-3 PUA ..THAN","peienlim":"CS2103T-T11-3 LIM ..I EN"}} diff --git a/AY2324S2-CS2103T-T15-4_tp_master/authorship.json b/AY2324S2-CS2103T-T15-4_tp_master/authorship.json index 68c8ec75..20178171 100644 --- a/AY2324S2-CS2103T-T15-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T15-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T15-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T15-4/tp/actions)","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"# TaskMasterPro","lastModifiedDate":"2024-03-05"},{"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":"azumieflare"},"content":"TaskMasterPro is a desktop application designed to aid managers with managing employee\u0027s tasks.","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"### Features","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"* Add or remove","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" * Employees","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" * Tasks","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"* Assign or Unassign tasks to employees","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"* List all information","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"* Mark tasks as completed or not completed","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"* Save and Load","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"\u003c!-- Add more if needed --\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"# Contents","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"- [Feature breakdown](#feature-breakdown)","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"- [How to use](#how-to-use)","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"- [Credits](#credits)","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"# Feature Breakdown","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"```add``` - Adds an employee to TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"```add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAGS]```","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"```delete``` - Deletes an employee from TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"```delete EMPLOYEE_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"```listemployees``` - Lists all employee recorded in TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":"```task``` - Creates a task and add it to TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":"```task TASK_DESCRIPTION```","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":"```deletetask``` - Deletes a task from TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"```deletetask TASK_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":"```listtasks``` - Lists all tasks recorded in TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"```assigntask``` - Assigns a task to an employee \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":"```assigntask t/TASK_ID e/EMPLOYEE_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":"```removetask``` - Removes a task from an employee \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"```removetask t/ TASK_ID e/EMPLOYEE_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":"```listassignments``` - Lists all tasks and employees assigned to them \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":"```mark``` - Marks a task as completed \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":"```mark TASK_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":"```unmark``` - Marks a task as not completed \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":"```unmark TASK_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":"```save``` - Saves the current state of TaskMasterPro into a save file \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":"\u003c!-- load? --\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":"# How to use","lastModifiedDate":"2024-03-05"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":"Down the .jar file from releases \u003c!-- TODO --\u003e and run the command \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":"```java -jar TaskMasterPro.jar```","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":"# Credits","lastModifiedDate":"2024-03-05"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"azumieflare":62,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" archiveFileName \u003d \u0027taskmasterpro.jar\u0027","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":"run {","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"azumieflare"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":4,"gavin331":1,"-":71}},{"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":"gavin331"},"content":"### Gavin Goh","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"\u003cimg src\u003d\"images/gavin331.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"[[github](http://github.com/gavin331)]","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"[[portfolio](team/gavingoh.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"* Role: Team Member","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"* Responsibilities: Deliver the project tasks on time and ensure the quality of the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"### John Chan","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"\u003cimg src\u003d\"images/azumieflare.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"[[github](http://github.com/azumieflare)] [[portfolio](team/azumieflare.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"* Responsibilities: Ensuring project deliverables are done on time and in the right format.","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"### Bryan Lee","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"\u003cimg src\u003d\"images/bryanl2303.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"[[github](http://github.com/BryanL2303)]","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"[[portfolio](team/bryanlee.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":"* Role: Scheduling and tracking","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"* Responsibilities: In charge of defining, assigning, and tracking project tasks","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":"### John Yoo","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":"\u003cimg src\u003d\"images/johnyoozhengxian.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"[[github](http://github.com/johnyoozhengxian)]","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":"[[portfolio](team/johnyoozhengxian.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"BryanL2303":6,"azumieflare":5,"gavin331":7,"-":28,"johnyoozhengxian":4}},{"path":"docs/DevOps.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: DevOps guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"azumieflare"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26"}],"authorContributionMap":{"azumieflare":1,"-":78}},{"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":"azumieflare"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-16"},{"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":"azumieflare"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-03-13"},{"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":"azumieflare"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-13"},{"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":"gavin331"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `EmployeeListPanel`, `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":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"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/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-13"},{"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":"gavin331"},"content":"* depends on some classes in the `Model` component, as it displays `Employee` object residing in the `Model`.","lastModifiedDate":"2024-03-11"},{"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":"azumieflare"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-13"},{"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":"gavin331"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `TaskMasterProParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-12"},{"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":"gavin331"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a employee).\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"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":"azumieflare"},"content":"* When called upon to parse a user command, the `TaskMasterProParser` 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 `TaskMasterProParser` returns back as a `Command` object.","lastModifiedDate":"2024-03-13"},{"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":"azumieflare"},"content":"**API** : [`Model.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-13"},{"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":"gavin331"},"content":"* stores the TaskMasterPro data i.e., all `Employee` objects (which are contained in a `UniqueEmployeeList` object) and all `Task` objects (which are contained in a `TaskList` object.","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":"* stores the currently \u0027selected\u0027 `Employee` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cEmployee\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":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"azumieflare"},"content":"* stores `Task` objects in a similar manner as with `Employee` objects.","lastModifiedDate":"2024-03-24"},{"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":"gavin331"},"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 `TaskMasterPro`, which `Employee` references. This allows `TaskMasterPro` to only require one `Tag` object per unique tag, instead of each `Employee` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003c/div\u003e","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":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"azumieflare"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":"* can save both TaskMasterPro data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":"* inherits from both `TaskMasterProStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"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":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"azumieflare"},"content":"Classes used by multiple components are in the `seedu.TaskMasterPro.commons` package.","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"azumieflare"},"content":"### \\[Proposed\\] Add/Delete task","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"azumieflare"},"content":"#### Current Implementation","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"azumieflare"},"content":"The current add/delete task feature is designed in a way such that every task has an unique `TaskId` to uniquely identify each task. This is done as there is no explicit constraint stating that tasks cannot have the same name, as such an identifier is required for other aspects of the TaskMasterPro (namely assigning of tasks to employees).","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"azumieflare"},"content":"The unique `TaskId` is assigned by the TaskMasterPro automatically and is also tracked by the TaskMasterPro. It is saved in the common .json file along with other data from TaskMasterPro, and carries over across sessions.","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"azumieflare"},"content":"\u003c!--ToDo, add info about corrupt TaskId? --\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"azumieflare"},"content":"Given below is an example usage scenario and how the add/delete task feature behaves at each step.","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"azumieflare"},"content":"Step 1. The user launches the TaskMasterPro. Assume that there are no existing tasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":173,"author":{"gitId":"azumieflare"},"content":"![AddTask0](images/AddTask0.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"azumieflare"},"content":"Step 2. The user enters the command `task Meeting`. This creates a new `Task` object with its `TaskId` automatically assigned. Assume that the `TaskId` value is 1.","lastModifiedDate":"2024-03-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":177,"author":{"gitId":"azumieflare"},"content":"![AddTask1](images/AddTask1.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"azumieflare"},"content":"Step 3. The user enters the command `task Project`. This creates another new `Task` object with its `TaskId` automatically assigned. Assume that the `TaskId` value is 2.","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"azumieflare"},"content":"![AddTask2](images/AddTask2.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":182,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":183,"author":{"gitId":"azumieflare"},"content":"Step 4. The user now enters the command `deletetask 1`. This will delete the task created in Step 2. as its assigned `TaskId` is 1.","lastModifiedDate":"2024-03-24"},{"lineNumber":184,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":185,"author":{"gitId":"azumieflare"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If an invalid `TaskId` is entered instead, an error will appear informing the user and nothing else will happen.","lastModifiedDate":"2024-03-24"},{"lineNumber":186,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":187,"author":{"gitId":"azumieflare"},"content":"![AddTask3](images/AddTask3.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":191,"author":{"gitId":"azumieflare"},"content":"The following sequence diagram shows how an add task operation goes through the `Logic` component:","lastModifiedDate":"2024-03-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":193,"author":{"gitId":"azumieflare"},"content":"![AddTaskSequence](images/AddTaskSequence.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"azumieflare"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `AddTaskCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2024-03-24"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":199,"author":{"gitId":"azumieflare"},"content":"Similarly, how an add task operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-03-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":201,"author":{"gitId":"azumieflare"},"content":"![AddTaskSequence-Model](images/AddTaskSequence-Model.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":203,"author":{"gitId":"azumieflare"},"content":"The `deletetask` command works similarly  —  it calls `Model#deleteTask` with a given `TaskId` and deletes the `Task` if it exists.","lastModifiedDate":"2024-03-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":206,"author":{"gitId":"azumieflare"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-03-24"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":208,"author":{"gitId":"azumieflare"},"content":"\u003cimg src\u003d\"images/AddTaskActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":209,"author":{"gitId":"azumieflare"},"content":"\u003cimg src\u003d\"images/DeleteTaskActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":211,"author":{"gitId":"azumieflare"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-24"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":213,"author":{"gitId":"azumieflare"},"content":"**Aspect: How to uniquely identify `Task`:**","lastModifiedDate":"2024-03-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":215,"author":{"gitId":"azumieflare"},"content":"* **Alternative 1 (current choice):** Using of `taskId`.","lastModifiedDate":"2024-03-24"},{"lineNumber":216,"author":{"gitId":"azumieflare"},"content":" * Pros: Easy to implement. `TaskMasterPro` automatically assigns this value.","lastModifiedDate":"2024-03-24"},{"lineNumber":217,"author":{"gitId":"azumieflare"},"content":" * Cons: May be hard for users to keep track of.","lastModifiedDate":"2024-03-24"},{"lineNumber":218,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":219,"author":{"gitId":"azumieflare"},"content":"* **Alternative 2:** Using of `taskName`.","lastModifiedDate":"2024-03-24"},{"lineNumber":220,"author":{"gitId":"azumieflare"},"content":" * Pros: An existing field, no additional implementations needed.","lastModifiedDate":"2024-03-24"},{"lineNumber":221,"author":{"gitId":"azumieflare"},"content":" * Cons: Impossible to uniquely identify tasks as there could be tasks with the same name.","lastModifiedDate":"2024-03-24"},{"lineNumber":222,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":223,"author":{"gitId":"BryanL2303"},"content":"### \\[Proposed\\] Assign/Unassign task","lastModifiedDate":"2024-03-27"},{"lineNumber":224,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":225,"author":{"gitId":"BryanL2303"},"content":"#### Current Implementation","lastModifiedDate":"2024-03-27"},{"lineNumber":226,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":227,"author":{"gitId":"BryanL2303"},"content":"The current assign/unassign task features are designed such that they accept the ids of a task an employee as a parameter.","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"BryanL2303"},"content":"As mentioned above in Add/Delete task a task or employee can have the same name as another task or employee so their ids are the best way to identify them.","lastModifiedDate":"2024-03-27"},{"lineNumber":229,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":230,"author":{"gitId":"BryanL2303"},"content":"To keep track of the assignment of tasks, every employee has an immutable AssignedTasks and every task has an immutable AssignedEmployees.","lastModifiedDate":"2024-03-27"},{"lineNumber":231,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"BryanL2303"},"content":"This object contains a hashtable, for AssignedTasks it contains the TaskId as a key and the corresponding task as the value for that key.","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"BryanL2303"},"content":"This is the same for AssignedEmployees which contains a hashtable where EmployeeId is a key and the corresponding employee is the value for that key.","lastModifiedDate":"2024-03-27"},{"lineNumber":234,"author":{"gitId":"BryanL2303"},"content":"Both of these gets updated for each call to any of the two functions.","lastModifiedDate":"2024-03-27"},{"lineNumber":235,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":236,"author":{"gitId":"BryanL2303"},"content":"There is also a string variable in each AssignedTasks and AssignedEmployees which contains the keys of existing ids separated by an empty space.","lastModifiedDate":"2024-03-27"},{"lineNumber":237,"author":{"gitId":"BryanL2303"},"content":"This String is stored into the JSON file with each Employee or Task so that assignments can be stored between sessions.","lastModifiedDate":"2024-03-27"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":239,"author":{"gitId":"BryanL2303"},"content":"Given below is an example usage scenario and how the assign/unassign task feature behaves at each step.","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":241,"author":{"gitId":"BryanL2303"},"content":"Step 1. The user launches the TaskMasterPro. Assume that there are existing employee with EmployeeId: 1 and existing task with TaskId: 2 and that both were not already assigned to each other.","lastModifiedDate":"2024-03-27"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":243,"author":{"gitId":"BryanL2303"},"content":"![AssignTask0](images/AssignTask0.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"BryanL2303"},"content":"Step 2. The user enters the command `assigntask 2 1`. This updates the AssignedTasks of the employee to put the task into the hashtable and add the string \" 2\" to the existing string as well as the AssignedEmployees of the task to add the employee in the hashtable and add the string \" 1\" to the existing string.","lastModifiedDate":"2024-03-27"},{"lineNumber":246,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":247,"author":{"gitId":"BryanL2303"},"content":"Step 3. The user enters the command `unassigntask 2 1`. This updates the AssignedTasks of the employee to remove the task from the hashtable and the AssignedEmployees of the task to remove the employee from the hashtable.","lastModifiedDate":"2024-03-27"},{"lineNumber":248,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":249,"author":{"gitId":"BryanL2303"},"content":"Both of the above command will call a function in Task and Employee which will call a function in AssignedEmployees and AssignedTasks respectively.","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":251,"author":{"gitId":"BryanL2303"},"content":"![AssignTask](images/AssignTask.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":252,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":253,"author":{"gitId":"BryanL2303"},"content":"Step 4. The user now enters the command `unassigntask 2 1` again. This will return an error as they are no longer assigned to each other to begin with.","lastModifiedDate":"2024-03-27"},{"lineNumber":254,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"BryanL2303"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If an invalid `TaskId` or `EmployeeId` is entered instead, an error will appear informing the user and nothing else will happen.","lastModifiedDate":"2024-03-27"},{"lineNumber":256,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":257,"author":{"gitId":"BryanL2303"},"content":"The following sequence diagram shows how an assign task operation goes through the `Logic` component:","lastModifiedDate":"2024-03-27"},{"lineNumber":258,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":259,"author":{"gitId":"BryanL2303"},"content":"![AssignTaskSequence](images/AssignTaskSequence.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":260,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":261,"author":{"gitId":"BryanL2303"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":262,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":263,"author":{"gitId":"BryanL2303"},"content":"Similarly, how an assign task operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-03-27"},{"lineNumber":264,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":265,"author":{"gitId":"BryanL2303"},"content":"![AssignTaskSequence-Model](images/AssignTaskSequence-Model.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":268,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-03-27"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":270,"author":{"gitId":"BryanL2303"},"content":"\u003cimg src\u003d\"images/AssignTaskActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":272,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-27"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":274,"author":{"gitId":"BryanL2303"},"content":"**Aspect: How to store `AssignedTasks`/`AssignedEmployees` into JSON:**","lastModifiedDate":"2024-03-27"},{"lineNumber":275,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":276,"author":{"gitId":"BryanL2303"},"content":"* **Alternative 1 (current choice):** Using both String variable with the ids separated by spaces and a hashtable for functions to access.","lastModifiedDate":"2024-03-27"},{"lineNumber":277,"author":{"gitId":"BryanL2303"},"content":" * Pros: The most straightforward approach. Both approaches described after this requires some complex functions for certain functions.","lastModifiedDate":"2024-03-27"},{"lineNumber":278,"author":{"gitId":"BryanL2303"},"content":" * Cons: Whenever we update `AssignedTasks` or `AssignedEmployees` we have to update both the hashtable and the String and ensure that both are in sync.","lastModifiedDate":"2024-03-27"},{"lineNumber":279,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":280,"author":{"gitId":"BryanL2303"},"content":"* **Alternative 2:** Using only the String variable.","lastModifiedDate":"2024-03-27"},{"lineNumber":281,"author":{"gitId":"BryanL2303"},"content":" * Pros: Extremely easy to understand.","lastModifiedDate":"2024-03-27"},{"lineNumber":282,"author":{"gitId":"BryanL2303"},"content":" * Cons: Each time we want to access any task or employee we have to iterate through the split string and then iterate through every task/employee to compare the ids.","lastModifiedDate":"2024-03-27"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":284,"author":{"gitId":"BryanL2303"},"content":"* **Alternative 3:** Using only the hashtable.","lastModifiedDate":"2024-03-27"},{"lineNumber":285,"author":{"gitId":"BryanL2303"},"content":" * Pros: We can easily access the assigned tasks and employees so that we do not need to loop and compare every id each function call.","lastModifiedDate":"2024-03-27"},{"lineNumber":286,"author":{"gitId":"BryanL2303"},"content":" * Cons: When we try to store or load the stored JSON data to the hashtable we have to go through quite a complicated process to do it in the right order.","lastModifiedDate":"2024-03-27"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"gavin331"},"content":"### \\[Proposed\\] Find task by name","lastModifiedDate":"2024-03-27"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":290,"author":{"gitId":"gavin331"},"content":"#### Current Implementation","lastModifiedDate":"2024-03-27"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":292,"author":{"gitId":"gavin331"},"content":"The current find task by name feature is designed such that it accepts a string as a parameter.","lastModifiedDate":"2024-03-27"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":294,"author":{"gitId":"gavin331"},"content":"The string will be split using whitespaces to form keywords and the tasks will be filtered based on whether their names contain at least 1 of the keywords.","lastModifiedDate":"2024-03-27"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":296,"author":{"gitId":"gavin331"},"content":"The search is case-insensitive and the order of the keywords does not matter.","lastModifiedDate":"2024-03-27"},{"lineNumber":297,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":298,"author":{"gitId":"gavin331"},"content":"Only full words are matched, so if the task name is \"meeting with client\" and the user searches for \"meet\", the task will not be found.","lastModifiedDate":"2024-03-27"},{"lineNumber":299,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":300,"author":{"gitId":"gavin331"},"content":"Given below is an example usage scenario and how the find task by name feature behaves at each step.","lastModifiedDate":"2024-03-27"},{"lineNumber":301,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":302,"author":{"gitId":"gavin331"},"content":"Step 1. The user launches the TaskMasterPro. Assume that there are existing tasks with names \"Project 1 Meeting\", \"Client Meeting\" and \"Complete Project 2\".","lastModifiedDate":"2024-03-27"},{"lineNumber":303,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":304,"author":{"gitId":"gavin331"},"content":"Step 2. The user enters the command `findtasks meeting`. This returns \"Project 1 Meeting\" and \"Client Meeting\".","lastModifiedDate":"2024-03-27"},{"lineNumber":305,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":306,"author":{"gitId":"gavin331"},"content":"The following sequence diagram shows how a `findtasks` operation goes through the `Logic` component:","lastModifiedDate":"2024-03-27"},{"lineNumber":307,"author":{"gitId":"gavin331"},"content":"![FindTasksSequence-Model](images/FindTasksSequenceDiagram.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":308,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":309,"author":{"gitId":"gavin331"},"content":"The following activity diagram summarizes what happens when a user executes `findtasks project meeting`:","lastModifiedDate":"2024-03-27"},{"lineNumber":310,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":311,"author":{"gitId":"gavin331"},"content":"![FindTasksActivityDiagram](images/FindTasksActivityDiagram.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":312,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":313,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":314,"author":{"gitId":"gavin331"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-27"},{"lineNumber":315,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":316,"author":{"gitId":"gavin331"},"content":"**Aspect: Whether to make both `find` and `findtasks` inherit from a common parent class:**","lastModifiedDate":"2024-03-27"},{"lineNumber":317,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":318,"author":{"gitId":"gavin331"},"content":"This is because both `find` and `findtasks` are similar in terms of functionality. `find` finds employees and `findtasks` finds tasks.","lastModifiedDate":"2024-03-27"},{"lineNumber":319,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":320,"author":{"gitId":"gavin331"},"content":"* **Alternative 1 (current choice):** Keep them separate.","lastModifiedDate":"2024-03-27"},{"lineNumber":321,"author":{"gitId":"gavin331"},"content":" * Pros: Easier to understand and organise because currently all the classes related to employee","lastModifiedDate":"2024-03-27"},{"lineNumber":322,"author":{"gitId":"gavin331"},"content":" are in the `model.employee` package and all the classes related to task are in the `model.task` package.","lastModifiedDate":"2024-03-27"},{"lineNumber":323,"author":{"gitId":"gavin331"},"content":" * Cons: There will be code duplication because their implementations are similar.","lastModifiedDate":"2024-03-27"},{"lineNumber":324,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":325,"author":{"gitId":"gavin331"},"content":"* **Alternative 2 :** Make both `find` and `findtasks` inherit from a parent class.","lastModifiedDate":"2024-03-27"},{"lineNumber":326,"author":{"gitId":"gavin331"},"content":" * Pros: Reduces code duplication.","lastModifiedDate":"2024-03-27"},{"lineNumber":327,"author":{"gitId":"gavin331"},"content":" * Cons: May be harder to understand and organise.","lastModifiedDate":"2024-03-27"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":334,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":335,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":336,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":337,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"azumieflare"},"content":"**Target user profile**: Managers who","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"azumieflare"},"content":"* manage many employees","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"azumieflare"},"content":"* prefers command line input","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"azumieflare"},"content":"* comfortable with manually editing save file","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"azumieflare"},"content":"**Value proposition**: manage employees faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"gavin331"},"content":"|---------| ------------------------------------------ |----------------------------------------------|-------------------------------------------------------------------|","lastModifiedDate":"2024-03-26"},{"lineNumber":360,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | add a new employee | keep a employee on record |","lastModifiedDate":"2024-03-11"},{"lineNumber":362,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | delete a employee | remove entries that I no longer need |","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | list all recorded employees | locate details of all employees in a list |","lastModifiedDate":"2024-03-11"},{"lineNumber":364,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | add a new task | keep upcoming tasks on record |","lastModifiedDate":"2024-03-05"},{"lineNumber":365,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | delete a task | remove entries that I no longer need |","lastModifiedDate":"2024-03-05"},{"lineNumber":366,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | list all recorded tasks | locate details of all tasks in a list |","lastModifiedDate":"2024-03-05"},{"lineNumber":367,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | assign a employee to a tasks | keep track of who is supposed to contribute to a task |","lastModifiedDate":"2024-03-11"},{"lineNumber":368,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | unassign a employee from a task | update changes in manpower allocation |","lastModifiedDate":"2024-03-11"},{"lineNumber":369,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | list all tasks with their assigned employees | locate details of all tasks while seeing who are assigned to them |","lastModifiedDate":"2024-03-05"},{"lineNumber":370,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | mark a task as done | keep track of task completion |","lastModifiedDate":"2024-03-05"},{"lineNumber":371,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | unmark a marked task | undo wrongly marked tasks |","lastModifiedDate":"2024-03-05"},{"lineNumber":372,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | save current data | keep track of all data even after exiting |","lastModifiedDate":"2024-03-05"},{"lineNumber":373,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | load saved data | use the data that was saved previously |","lastModifiedDate":"2024-03-05"},{"lineNumber":374,"author":{"gitId":"gavin331"},"content":"| `* * ` | user | find tasks by name | quickly locate specific tasks that I remember |","lastModifiedDate":"2024-03-26"},{"lineNumber":375,"author":{"gitId":"gavin331"},"content":"| `*` | user with many employees in the TaskMasterPro | sort employees by name | locate a employee easily |","lastModifiedDate":"2024-04-02"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"BryanL2303"},"content":"*{More to be added for v1.3}*","lastModifiedDate":"2024-03-05"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"BryanL2303"},"content":"(For all use cases below, the **System** is the `TaskMasterPro` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-05"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"gavin331"},"content":"**Use case: Delete an employee**","lastModifiedDate":"2024-03-26"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"gavin331"},"content":"1. User requests to list employees","lastModifiedDate":"2024-03-11"},{"lineNumber":388,"author":{"gitId":"gavin331"},"content":"2. TaskMasterPro shows a list of employees with their ids","lastModifiedDate":"2024-03-11"},{"lineNumber":389,"author":{"gitId":"gavin331"},"content":"3. User requests to delete a specific employee in the list by their id","lastModifiedDate":"2024-03-11"},{"lineNumber":390,"author":{"gitId":"gavin331"},"content":"4. TaskMasterPro deletes the employee","lastModifiedDate":"2024-03-11"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":392,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":394,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-05"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-05"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":398,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":400,"author":{"gitId":"BryanL2303"},"content":"* 3a. The given id is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":402,"author":{"gitId":"BryanL2303"},"content":" * 3a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":404,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-05"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":406,"author":{"gitId":"BryanL2303"},"content":"**Use case: Delete a task**","lastModifiedDate":"2024-03-05"},{"lineNumber":407,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":408,"author":{"gitId":"BryanL2303"},"content":"**MSS**","lastModifiedDate":"2024-03-05"},{"lineNumber":409,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":410,"author":{"gitId":"BryanL2303"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-05"},{"lineNumber":411,"author":{"gitId":"BryanL2303"},"content":"2. TaskMasterPro shows a list of tasks with their ids","lastModifiedDate":"2024-03-05"},{"lineNumber":412,"author":{"gitId":"BryanL2303"},"content":"3. User requests to delete a specific task in the list by their id","lastModifiedDate":"2024-03-05"},{"lineNumber":413,"author":{"gitId":"BryanL2303"},"content":"4. TaskMasterPro deletes the task","lastModifiedDate":"2024-03-05"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"BryanL2303"},"content":"* 3a. The given id is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"BryanL2303"},"content":" * 3a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"gavin331"},"content":"**Use case: Assign/unassign an employee to a task**","lastModifiedDate":"2024-03-26"},{"lineNumber":430,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":431,"author":{"gitId":"BryanL2303"},"content":"**MSS**","lastModifiedDate":"2024-03-05"},{"lineNumber":432,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":433,"author":{"gitId":"gavin331"},"content":"1. User requests to list employees","lastModifiedDate":"2024-03-11"},{"lineNumber":434,"author":{"gitId":"gavin331"},"content":"2. TaskMasterPro shows a list of employees with their ids","lastModifiedDate":"2024-03-11"},{"lineNumber":435,"author":{"gitId":"BryanL2303"},"content":"3. User requests to list tasks","lastModifiedDate":"2024-03-05"},{"lineNumber":436,"author":{"gitId":"BryanL2303"},"content":"4. TaskMasterPro shows a list of tasks with their ids","lastModifiedDate":"2024-03-05"},{"lineNumber":437,"author":{"gitId":"gavin331"},"content":"5. User requests to assign/un-assign a specific employee in the employee list by their id to a specific task in the task list by its id","lastModifiedDate":"2024-03-11"},{"lineNumber":438,"author":{"gitId":"gavin331"},"content":"6. TaskMasterPro assigns/un-assigns the employee to the task","lastModifiedDate":"2024-03-11"},{"lineNumber":439,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":440,"author":{"gitId":"BryanL2303"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":441,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":442,"author":{"gitId":"BryanL2303"},"content":"**Extensions**","lastModifiedDate":"2024-03-05"},{"lineNumber":443,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":444,"author":{"gitId":"BryanL2303"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-05"},{"lineNumber":445,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":446,"author":{"gitId":"BryanL2303"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":447,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":448,"author":{"gitId":"BryanL2303"},"content":"* 4a. The list is empty.","lastModifiedDate":"2024-03-05"},{"lineNumber":449,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":450,"author":{"gitId":"BryanL2303"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":451,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":452,"author":{"gitId":"BryanL2303"},"content":"* 5a. Any given id is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":453,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":454,"author":{"gitId":"BryanL2303"},"content":" * 5a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":455,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":456,"author":{"gitId":"BryanL2303"},"content":" Use case resumes at step 2/4.","lastModifiedDate":"2024-03-05"},{"lineNumber":457,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":458,"author":{"gitId":"johnyoozhengxian"},"content":"**Use case: Mark a task as done**","lastModifiedDate":"2024-03-27"},{"lineNumber":459,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"gavin331"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"gavin331"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"gavin331"},"content":"2. TaskMasterPro shows a list of tasks with their ids","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"johnyoozhengxian"},"content":"3. User requests to mark a specific task in the list by their id as done","lastModifiedDate":"2024-03-27"},{"lineNumber":465,"author":{"gitId":"johnyoozhengxian"},"content":"4. TaskMasterPro marks that task as done/not done.","lastModifiedDate":"2024-03-27"},{"lineNumber":466,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"gavin331"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"gavin331"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"gavin331"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"gavin331"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"gavin331"},"content":"* 3a. The given id is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"gavin331"},"content":" * 3a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":479,"author":{"gitId":"gavin331"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":480,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":481,"author":{"gitId":"johnyoozhengxian"},"content":"![Interactions Inside the Logic Component for the `mark 1` Command](images/MarkDiagram.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":482,"author":{"gitId":"johnyoozhengxian"},"content":"![Interactions for mark for the `mark 1` command](images/MarkRefDiagram.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":483,"author":{"gitId":"azumieflare"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":484,"author":{"gitId":"johnyoozhengxian"},"content":"Note that if none of the taskId \u003d\u003d 1, an invalid taskId exception will be thrown.","lastModifiedDate":"2024-03-27"},{"lineNumber":485,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":486,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":487,"author":{"gitId":"johnyoozhengxian"},"content":"**Use case: Unmark a task as not done**","lastModifiedDate":"2024-03-27"},{"lineNumber":488,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":489,"author":{"gitId":"johnyoozhengxian"},"content":"**MSS**","lastModifiedDate":"2024-03-27"},{"lineNumber":490,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":491,"author":{"gitId":"johnyoozhengxian"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-27"},{"lineNumber":492,"author":{"gitId":"johnyoozhengxian"},"content":"2. TaskMasterPro shows a list of tasks with their ids","lastModifiedDate":"2024-03-27"},{"lineNumber":493,"author":{"gitId":"johnyoozhengxian"},"content":"3. User requests to unmark a specific task in the list by their id","lastModifiedDate":"2024-03-27"},{"lineNumber":494,"author":{"gitId":"johnyoozhengxian"},"content":"4. TaskMasterPro unmarks that task as not done.","lastModifiedDate":"2024-03-27"},{"lineNumber":495,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":496,"author":{"gitId":"johnyoozhengxian"},"content":" Use case ends.","lastModifiedDate":"2024-03-27"},{"lineNumber":497,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":498,"author":{"gitId":"johnyoozhengxian"},"content":"**Extensions**","lastModifiedDate":"2024-03-27"},{"lineNumber":499,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":500,"author":{"gitId":"johnyoozhengxian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-27"},{"lineNumber":501,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":502,"author":{"gitId":"johnyoozhengxian"},"content":" Use case ends.","lastModifiedDate":"2024-03-27"},{"lineNumber":503,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":504,"author":{"gitId":"johnyoozhengxian"},"content":"* 3a. The given id is invalid.","lastModifiedDate":"2024-03-27"},{"lineNumber":505,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":506,"author":{"gitId":"johnyoozhengxian"},"content":" * 3a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-27"},{"lineNumber":507,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":508,"author":{"gitId":"johnyoozhengxian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-27"},{"lineNumber":509,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":510,"author":{"gitId":"johnyoozhengxian"},"content":"![Interactions Inside the Logic Component for the `unmark 1` Command](images/UnmarkDiagram.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":511,"author":{"gitId":"johnyoozhengxian"},"content":"![Interactions for unmark for the `unmark 1` command](images/UnmarkRefDiagram.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":512,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":513,"author":{"gitId":"johnyoozhengxian"},"content":"Note that if none of the taskId \u003d\u003d 1, an invalid taskId exception will be thrown.","lastModifiedDate":"2024-03-21"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"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":518,"author":{"gitId":"gavin331"},"content":"2. Should be able to hold up to 1000 employees without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-11"},{"lineNumber":519,"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":520,"author":{"gitId":"gavin331"},"content":"4. Should be able to handle a corrupted data file without crashing.","lastModifiedDate":"2024-03-07"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":527,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"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":536,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"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":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"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":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"gavin331"},"content":"### Deleting a employee","lastModifiedDate":"2024-03-11"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"gavin331"},"content":"1. Deleting a employee while all employees are being shown","lastModifiedDate":"2024-03-11"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"gavin331"},"content":" 1. Prerequisites: List all employees using the `list` command. Multiple employees in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"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":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"gavin331"},"content":" Expected: No employee is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-11"},{"lineNumber":567,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"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":569,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"BryanL2303":98,"azumieflare":54,"gavin331":89,"-":303,"johnyoozhengxian":35}},{"path":"docs/SettingUp.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: Setting up and getting started","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":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2020-06-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":" 1. Run the `seedu.address.Main` and try a few commands.","lastModifiedDate":"2020-06-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [TaskMasterPro’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"azumieflare":1,"-":54}},{"path":"docs/UserGuide.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: User Guide","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":"BryanL2303"},"content":"Hi! Welcome to the user guide for TaskMasterPro. TaskMasterPro is a **desktop app for managing team members and group tasks**, optimized for use via a **Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TaskMasterPro can get your contact management tasks done faster than traditional GUI apps. No matter whether you are a manager or a team lead who has to manage a team and keep track of their deliverables, TaskMasterPro can help you! Refer to the table of contents below and click on the section you want to skip to. Refer to the `Quick Start` section to get the program running and the `Features` section on the commands that you can use. If you run into any issues using the program try checking through the `FAQ` or `Known Issues` sections to see if the issues has already been brought up and there are any known solutions.","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"# Table of Contents","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"1. [Quick Start](#quick-start)","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"2. [Features](#features)","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" 3. [help](#viewing-help--help)","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" 4. [add](#adding-an-employee-add)","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" 5. [list](#listing-all-employees-list)","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":" 6. [edit](#editing-an-employee-edit)","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" 7. [delete](#deleting-an-employee-delete)","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" 8. [find](#locating-employees-by-employee-names--find)","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" 9. [task](#adding-a-task-task)","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" 10. [listtasks](#listing-all-tasks--listtasks)","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" 11. [deletetask](#deleting-a-task--deletetask-task_id)","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" 12. [findtasks](#locating-tasks-by-task-names--findtasks)","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" 13. [assigntask](#assign-a-task-to-employee--assigntask)","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" 14. [unassigntask](#unassign-a-task-to-employee--unassigntask)","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" 15. [mark](#mark-a-task--mark)","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" 16. [unmark](#unmark-a-task--unmark)","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" 17. [Saving the data](#saving-the-data)","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":" 18. [Editing the data file](#editing-the-data-file)","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" 19. [clear](#clearing-all-entries--clear)","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" 20. [exit](#exiting-the-program--exit)","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"21. [FAQ](#faq)","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"22. [Known Issues](#known-issues)","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"23. [Command Summary](#command-summary)","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"## Quick Start","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"1. Download the latest `taskmasterpro.jar` from [here](https://github.com/AY2324S2-CS2103T-T15-4/tp/releases/tag/v1.2).","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your TaskMasterPro.","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar taskmasterpro.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"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":45,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"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":48,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" * `list` : Lists all employees.","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds an employee named `John Doe` to TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * `delete 3` : Deletes the employee with employee ID \u003d 3.","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":" * `task meeting` : Creates a task with description called meeting.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" * `clear` : Deletes all stored data.","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"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":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"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":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"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":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"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":85,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":87,"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":88,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":"### Adding an employee: `add`","lastModifiedDate":"2024-03-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":"Adds an employee to TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-03-06"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":"Make sure that your parameter\u0027s formats are valid!","lastModifiedDate":"2024-03-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":"* `add n/AikenDueet p/82311231 e/aiken@example.com a/Dueet street, block 123, #01-01`","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"BryanL2303"},"content":"* `add n/Ben Diddle t/friend e/bendiddle@example.com a/Newgate Prison p/81092109 t/criminal`","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":"### Listing all employees: `list`","lastModifiedDate":"2024-03-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":"Shows a list of all employees in TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"BryanL2303"},"content":"### Editing an employee: `edit`","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"BryanL2303"},"content":"Edits an employee\u0027s details in TaskMasterPro.","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"BryanL2303"},"content":"Format: `edit EMPLOYEE_ID [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"BryanL2303"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"BryanL2303"},"content":"You can specify `t/` multiple times to add more tags","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"BryanL2303"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"BryanL2303"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":"* `edit 1 n/AikenDueet p/82311231 e/aiken@example.com`","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"BryanL2303"},"content":"* `edit 2 a/Newgate Prison p/81092109 t/criminal`","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":"### Deleting an employee: `delete`","lastModifiedDate":"2024-03-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":"Deletes the specified employee from TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":"Format: `delete EMPLOYEE_ID`","lastModifiedDate":"2024-03-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":"* The `EMPLOYEE_ID` refers to the index number shown in the displayed employee list.","lastModifiedDate":"2024-03-06"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" Make sure that its valid!","lastModifiedDate":"2024-03-06"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":141,"author":{"gitId":"BryanL2303"},"content":"![id position](images/indicateIdPosition.png)","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":"* `list` followed by `delete 3` deletes the employee with id 3 in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"BryanL2303"},"content":"### Locating employees by employee names : `find`","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"BryanL2303"},"content":"Finds employees whose names contain any of the given keyword.","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"BryanL2303"},"content":"* The search is case-insensitive. e.g. `alex` will match `Alex`.","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"BryanL2303"},"content":"* The order of the keywords does not matter. e.g. `Yeoh Alex` will match `Alex Yeoh`.","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"BryanL2303"},"content":"* Only full words will be matched. e.g. `Ale` will not match `Alex`.","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"BryanL2303"},"content":"* Employees matching at least 1 keyword will be returned. e.g. `Alex Yu` will return employees with","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"BryanL2303"},"content":"`Alex` or `Yu` in their names.","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"BryanL2303"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":159,"author":{"gitId":"BryanL2303"},"content":"* `find alex` returns employees with `alex` in their names.","lastModifiedDate":"2024-04-04"},{"lineNumber":160,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":161,"author":{"gitId":"BryanL2303"},"content":"### Adding a task: `task`","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"gavin331"},"content":"Adds a task to TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"BryanL2303"},"content":"Format: `task TASK_DESCRIPTION`","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"BryanL2303"},"content":"The description for the task is required and can be any length with spaces in between","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"BryanL2303"},"content":"* `task Weekly meeting`","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"BryanL2303"},"content":"* `task Submitting report`","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":"### Listing all tasks : `listtasks`","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"gavin331"},"content":"Shows a list of all tasks in TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"BryanL2303"},"content":"Format: `listtasks`","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"BryanL2303"},"content":"### Deleting a task : `deletetask TASK_ID`","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"gavin331"},"content":"Deletes the specified task from TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"BryanL2303"},"content":"Format: `deletetask TASK_ID`","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"BryanL2303"},"content":"* Deletes the task with the specified `TASK_ID`.","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"BryanL2303"},"content":"* The task id refers to the number shown in the displayed task list.","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"gavin331"},"content":"* `listtasks` followed by `deletetask 2` deletes the task with id 2 in TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"gavin331"},"content":"### Locating tasks by task names : `findtasks`","lastModifiedDate":"2024-03-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":196,"author":{"gitId":"BryanL2303"},"content":"Finds tasks whose names contain any of the given keyword.","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"gavin331"},"content":"Format: `findtasks KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"gavin331"},"content":"* The search is case-insensitive. e.g. `report` will match `Report`.","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"gavin331"},"content":"* The order of the keywords does not matter. e.g. `report meeting` will match `meeting report`.","lastModifiedDate":"2024-03-26"},{"lineNumber":202,"author":{"gitId":"gavin331"},"content":"* Only full words will be matched. e.g. `report` will not match `reports`.","lastModifiedDate":"2024-03-26"},{"lineNumber":203,"author":{"gitId":"gavin331"},"content":"* Tasks matching at least 1 keyword will be returned. e.g. `report meeting` will return tasks with","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"gavin331"},"content":"`report` or `meeting` in their names.","lastModifiedDate":"2024-03-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"gavin331"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":207,"author":{"gitId":"gavin331"},"content":"* `findtasks report` returns tasks with `report` in their names.","lastModifiedDate":"2024-03-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"johnyoozhengxian"},"content":"### Assign a task to employee : `assigntask`","lastModifiedDate":"2024-03-06"},{"lineNumber":210,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":211,"author":{"gitId":"johnyoozhengxian"},"content":"Assigns a task object to employee.","lastModifiedDate":"2024-03-06"},{"lineNumber":212,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":213,"author":{"gitId":"BryanL2303"},"content":"Format: `assigntask TASK_ID EMPLOYEE_ID`","lastModifiedDate":"2024-04-03"},{"lineNumber":214,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":215,"author":{"gitId":"johnyoozhengxian"},"content":"* Assigns a task object with id `TASK_ID` to an employee with id `EMPLOYEE_ID`.","lastModifiedDate":"2024-03-06"},{"lineNumber":216,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":217,"author":{"gitId":"johnyoozhengxian"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":218,"author":{"gitId":"johnyoozhengxian"},"content":"* `assigntask` followed by `2 3` assigns task object with id 2 to an employee with id 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":219,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":220,"author":{"gitId":"BryanL2303"},"content":"### Unassign a task to employee : `unassigntask`","lastModifiedDate":"2024-03-30"},{"lineNumber":221,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":222,"author":{"gitId":"johnyoozhengxian"},"content":"Unassigns a task object from an employee.","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":224,"author":{"gitId":"BryanL2303"},"content":"Format: `unassigntask TASK_ID EMPLOYEE_ID`","lastModifiedDate":"2024-04-03"},{"lineNumber":225,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":226,"author":{"gitId":"BryanL2303"},"content":"* Unassigns a task object with id `TASK_ID` from an employee with id `EMPLOYEE_ID`.","lastModifiedDate":"2024-03-30"},{"lineNumber":227,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":228,"author":{"gitId":"BryanL2303"},"content":"Examples:","lastModifiedDate":"2024-03-30"},{"lineNumber":229,"author":{"gitId":"BryanL2303"},"content":"* `unassigntask` followed by `2 3` unassigns task object with id 2 from an employee with id 3.","lastModifiedDate":"2024-03-30"},{"lineNumber":230,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":231,"author":{"gitId":"johnyoozhengxian"},"content":"### Mark a task : `mark`","lastModifiedDate":"2024-03-06"},{"lineNumber":232,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":233,"author":{"gitId":"johnyoozhengxian"},"content":"Marks a task as done.","lastModifiedDate":"2024-03-06"},{"lineNumber":234,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":235,"author":{"gitId":"johnyoozhengxian"},"content":"Format: `mark TASK_ID`","lastModifiedDate":"2024-03-06"},{"lineNumber":236,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":237,"author":{"gitId":"johnyoozhengxian"},"content":"* Marks a specified task with id `TASK_ID`.","lastModifiedDate":"2024-03-06"},{"lineNumber":238,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":239,"author":{"gitId":"johnyoozhengxian"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":240,"author":{"gitId":"johnyoozhengxian"},"content":"* `mark` followed by a valid integer `TASK_ID` which corresponds to a real task in the database.","lastModifiedDate":"2024-03-06"},{"lineNumber":241,"author":{"gitId":"johnyoozhengxian"},"content":"* `mark 1`","lastModifiedDate":"2024-03-06"},{"lineNumber":242,"author":{"gitId":"johnyoozhengxian"},"content":"* `mark 2`","lastModifiedDate":"2024-03-06"},{"lineNumber":243,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":244,"author":{"gitId":"johnyoozhengxian"},"content":"### Unmark a task : `unmark`","lastModifiedDate":"2024-03-06"},{"lineNumber":245,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":246,"author":{"gitId":"johnyoozhengxian"},"content":"Unmarks a task.","lastModifiedDate":"2024-03-06"},{"lineNumber":247,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":248,"author":{"gitId":"johnyoozhengxian"},"content":"Format: `unmark TASK_ID`","lastModifiedDate":"2024-03-06"},{"lineNumber":249,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":250,"author":{"gitId":"johnyoozhengxian"},"content":"* Unmarks a specified task with id `TASK_ID`.","lastModifiedDate":"2024-03-06"},{"lineNumber":251,"author":{"gitId":"johnyoozhengxian"},"content":"* task to be unmarked should be marked as done before.","lastModifiedDate":"2024-03-06"},{"lineNumber":252,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":253,"author":{"gitId":"johnyoozhengxian"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":254,"author":{"gitId":"johnyoozhengxian"},"content":"* `unmark` followed by a valid integer `TASK_ID` which corresponds to a real task in the database.","lastModifiedDate":"2024-03-06"},{"lineNumber":255,"author":{"gitId":"johnyoozhengxian"},"content":"* `unmark 1`","lastModifiedDate":"2024-03-06"},{"lineNumber":256,"author":{"gitId":"johnyoozhengxian"},"content":"* `unmark 2`","lastModifiedDate":"2024-03-06"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":258,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro data are saved in the hard disk automatically after any command that changes the data.","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"BryanL2303"},"content":"There is no need to save manually.","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro data are saved automatically as a JSON file [JAR file location]/data/taskmasterpro.json . Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-04-04"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"BryanL2303"},"content":"If your changes to the data file makes its format invalid, TaskMasterPro will discard all data and start with the original sample data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"BryanL2303"},"content":"Furthermore, certain edits can cause TaskMasterPro to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"gavin331"},"content":"Clears all entries from TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"Format: `exit`","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"BryanL2303"},"content":"**A**: Install the app in the other computer and overwrite the data file it creates with the file that contains the data of your previous TaskMasterPro home folder.","lastModifiedDate":"2024-04-04"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"BryanL2303"},"content":"## Known Issues","lastModifiedDate":"2024-04-03"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":296,"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":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":300,"author":{"gitId":"BryanL2303"},"content":"## Command Summary","lastModifiedDate":"2024-04-03"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2024-04-04"},{"lineNumber":305,"author":{"gitId":"BryanL2303"},"content":"**Add employee** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/Ben Diddle t/friend e/bendiddle@example.com a/Newgate Prison p/81092109 t/criminal`","lastModifiedDate":"2024-04-04"},{"lineNumber":306,"author":{"gitId":"BryanL2303"},"content":"**Edit employee** | `edit EMPLOYEE_ID [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` \u003cbr\u003e e.g., `edit 2 a/Newgate Prison p/81092109 t/criminal`","lastModifiedDate":"2024-04-04"},{"lineNumber":307,"author":{"gitId":"gavin331"},"content":"**List employees** | `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":308,"author":{"gitId":"BryanL2303"},"content":"**Find employees** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find alex`","lastModifiedDate":"2024-04-04"},{"lineNumber":309,"author":{"gitId":"gavin331"},"content":"**Delete employee** | `delete EMPLOYEE_ID` \u003cbr\u003e e.g., `delete 2`","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"BryanL2303"},"content":"**Add task** | `task TASK_DESCRIPTION` \u003cbr\u003e e.g., `task Weekly meeting`","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"BryanL2303"},"content":"**List tasks** | `listtasks`","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"BryanL2303"},"content":"**Delete task** | `deletetask TASK_ID`\u003cbr\u003e e.g., `deletetask 3`","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"gavin331"},"content":"**Find tasks** | `findtasks KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `findtasks report`","lastModifiedDate":"2024-03-26"},{"lineNumber":314,"author":{"gitId":"johnyoozhengxian"},"content":"**Mark task** | `mark TASK_ID`\u003cbr\u003e e.g., `mark 1` ","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"johnyoozhengxian"},"content":"**Unmark task** | `unmark TASK_ID`\u003cbr\u003e e.g., `unmark 1` ","lastModifiedDate":"2024-03-06"},{"lineNumber":316,"author":{"gitId":"BryanL2303"},"content":"**Assign task to an employee** | `assigntask TASK_ID EMPLOYEE_ID` \u003cbr\u003e e.g., `assigntask 1 2`","lastModifiedDate":"2024-04-03"},{"lineNumber":317,"author":{"gitId":"BryanL2303"},"content":"**Unassign employee from a task** | `unassigntask TASK_ID EMPLOYEE_ID` \u003cbr\u003e e.g., `unassigntask 1 1`","lastModifiedDate":"2024-04-03"},{"lineNumber":318,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"BryanL2303"},"content":"**Exit** | `exit`","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"BryanL2303":96,"gavin331":36,"-":147,"johnyoozhengxian":40}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","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":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","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":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"BryanL2303"},"content":" content: \"TaskMasterPro\";","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"BryanL2303":1,"-":294}},{"path":"docs/diagrams/AddTask0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":11}},{"path":"docs/diagrams/AddTask1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003eMeeting:Task\" as TaskMeeting","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"TaskMeeting : TaskId \u003d 1","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"TaskList - TaskMeeting","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":14}},{"path":"docs/diagrams/AddTask2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003eMeeting:Task\" as TaskMeeting","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"TaskMeeting : TaskId \u003d 1","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003eProject:Task\" as TaskProject","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskProject : TaskId \u003d 2","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"TaskList - TaskMeeting","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"TaskList -- TaskProject","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":17}},{"path":"docs/diagrams/AddTask3.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003eProject:Task\" as TaskProject","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"TaskProject : TaskId \u003d 2","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"TaskList -- TaskProject","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":15}},{"path":"docs/diagrams/AddTaskActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"skin rose","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"start","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":":User executes \"task\" command;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":":New task is created and","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"added to TaskMasterPro;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":":Save after execution","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"completes;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"stop","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":12}},{"path":"docs/diagrams/AddTaskSequence-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"!include style.puml","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"participant \":TaskMasterPro\" as TaskMasterPro MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"end box","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"[-\u003e Model : addTask()","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"activate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"Model -\u003e TaskMasterPro : addTask()","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"activate TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro -\u003e TaskMasterPro :addTask()","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro --\u003e Model :","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"deactivate TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"[\u003c-- Model","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"deactivate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":23}},{"path":"docs/diagrams/AddTaskSequence.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"!include style.puml","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"participant \"u:AddTaskCommand\" as AddTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"end box","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"end box","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"[-\u003e LogicManager : execute(task)","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"activate LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(task)","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"create AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"TaskMasterProParser -\u003e AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"activate AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"AddTaskCommand --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"deactivate AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"TaskMasterProParser --\u003e LogicManager : u","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"LogicManager -\u003e AddTaskCommand : execute()","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"activate AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":"AddTaskCommand -\u003e Model : addTask()","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"activate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"Model --\u003e AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":"deactivate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":"AddTaskCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"deactivate AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":"AddTaskCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":"destroy AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":46}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteEmployee(employee)","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveTaskMasterPro(taskMasterPro)","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"BryanL2303":1,"gavin331":1,"-":37}},{"path":"docs/diagrams/AssignTask.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:Employee\" as Employee","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:AssignedTasks\" as AssignedTasks","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"Employee - AssignedTasks","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:Task\" as Task","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:AssignedEmployees\" as AssignedEmployees","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"Task - AssignedEmployees","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":16}},{"path":"docs/diagrams/AssignTask0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:UniqueEmployeeList\" as UniqueEmployeeList","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro - UniqueEmployeeList","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":14}},{"path":"docs/diagrams/AssignTaskActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"skin rose","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"start","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":":User executes \"assigntask\" command;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":":Logic retrieves all employees","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"and tasks from the model;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":":Logic iterates through all employees","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"and tasks to look for employee and task","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"with matching id to the parameter;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":":Model creates new Employee and Task updated","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"with the new AssignedTasks and AssignedEmployees;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":":Save after execution","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"completes;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"stop","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":17}},{"path":"docs/diagrams/AssignTaskRefSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"mainframe sd update existing Employee fields","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \"a:AssignTaskCommand\" as AssignTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"participant \"t:Task\" as Task MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"participant \"e:Employee\" as Employee MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand -\u003e Model : getFilteredTaskList()","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"Model --\u003e AssignTaskCommand : taskList","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand -\u003e Model : getFilteredEmployeeList()","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"Model --\u003e AssignTaskCommand : employeeList","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"\u0027loop until taskId \u003d\u003d 1 for each t in taskList","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"\u0027AssignTaskCommand -\u003e Task: getTaskId()","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"\u0027end","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"loop for each t in taskList","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" AssignTaskCommand -\u003e Task: getTaskId()","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" opt taskId \u003d\u003d 1","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" loop until employeeId \u003d\u003d 6 for each e in employeeList","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" AssignTaskCommand -\u003e Employee: getEmployeeId()","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" opt employeeId \u003d\u003d 6","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" AssignTaskCommand -\u003e Employee : assignTask(1)","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" Employee --\u003e AssignTaskCommand : updatedEmployee","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" AssignTaskCommand -\u003e Model : setEmployee(e, updatedEmployee)","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" end","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" end","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" end","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"end","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"gavin331":39}},{"path":"docs/diagrams/AssignTaskSequence-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"participant \":Employee\" as Employee MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"participant \":Task\" as Task MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Model : getFilteredTaskList()","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Model : :TaskList","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Model : getFilteredEmployeeList()","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Model : :EmployeeList","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Employee : assignEmployee(e1)","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"activate Employee","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Employee : e2:Employee","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"deactivate Employee","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Model : setEmployee(e1, e2)","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Model","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Task : assignTask(t1)","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":"activate Task","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Task : t2:Task","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"deactivate Task","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Model : setTask(t1, t2)","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Model","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":41}},{"path":"docs/diagrams/AssignTaskSequence.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"participant \":AssignTaskParser\" as AssignTaskParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"participant \"a:AssignTaskCommand\" as AssignTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"[-\u003e LogicManager : execute(assigntask)","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"activate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"assigntask 2 1\")","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"create AssignTaskParser","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"TaskMasterProParser -\u003e AssignTaskParser","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"create AssignTaskCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"AssignTaskParser -\u003e AssignTaskCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"AssignTaskCommand --\u003e AssignTaskParser : a","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":"AssignTaskParser --\u003e TaskMasterProParser : a","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":"TaskMasterProParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"LogicManager -\u003e AssignTaskCommand : a.execute(m)","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":"activate AssignTaskCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"AssignTaskCommand -\u003e Model : e.assignTask(t)","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"AssignTaskCommand -\u003e Model : t.assignEmployee(e)","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"AssignTaskCommand --\u003e LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":"deactivate AssignTaskCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":41}},{"path":"docs/diagrams/AssignTaskSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"participant \":AssignTaskCommandParser\" as AssignTaskCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"participant \"a:AssignTaskCommand\" as AssignTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"[-\u003e LogicManager : execute(\"assigntask 1 6\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"assigntask 1 6\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"create AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"activate AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"AssignTaskCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"deactivate AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e AssignTaskCommandParser : parse(\" 1 6\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"activate AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"create AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"AssignTaskCommandParser -\u003e AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"activate AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand --\u003e AssignTaskCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"deactivate AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"AssignTaskCommandParser --\u003e TaskMasterProParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"deactivate AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"AssignTaskCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"destroy AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e AssignTaskCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"activate AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"\u0027Put this into a ref block\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":"group ref [update existing Employee fields]","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand -[hidden]-\u003e Model","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":"end","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":"\u0027Up to here is inside the ref block\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"CommandResult --\u003e AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":"deactivate AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"gavin331":72}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"TaskMasterPro *-right-\u003e \"1\" UniqueEmployeeList","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"TaskMasterPro *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro *-down-\u003e \"1\" TaskList","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"UniqueTagList -[hidden]down- UniqueEmployeeList","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"UniqueTagList -[hidden]down- UniqueEmployeeList","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"UniqueEmployeeList -right-\u003e Employee","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"TaskList --\u003e Task","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskId","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskName","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskStatus","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"Employee -up-\u003e \"*\" Tag","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Name","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Phone","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Email","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Address","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"azumieflare":6,"gavin331":10,"-":12}},{"path":"docs/diagrams/CommitActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"skin rose","lastModifiedDate":"2023-07-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"start","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":":User executes command;","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u0027Since the beta syntax does not support placing the condition outside the","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u0027diamond we place it as the true branch instead.","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"if () then ([command commits TaskMasterPro])","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" :Purge redundant states;","lastModifiedDate":"2020-12-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" :Save TaskMasterPro to","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" taskMasterProStateList;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"else ([else])","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"endif","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"stop","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":15}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"delete 1\")","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e DeleteCommandParser","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"DeleteCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"DeleteCommandParser --\u003e TaskMasterProParser : d","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"DeleteCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":"DeleteCommand -\u003e Model : deleteEmployee(employee)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"BryanL2303":1,"gavin331":10,"-":59}},{"path":"docs/diagrams/DeleteTaskActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"skin rose","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"start","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":":User executes \"deletetask\" command;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"if () then ([task exists])","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":" :Delete task from","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" TaskMasterPro;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"else ([else])","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"endif","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":":Save after execution","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"completes;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"stop","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":15}},{"path":"docs/diagrams/FindTasksActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"skin rose","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"start","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":":User executes \"findtasks","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"project meeting\" command;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":":Split \"project meeting\" using","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" whitespaces.;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":":A keyword array containing","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"\"project\" and \"meeting\" is","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" created.;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":":Iterates through the tasklist","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"to find tasks that matches","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"any of the keywords.;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":":Display the tasks that matches","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"any of the keywords.;","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"stop","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"gavin331":23}},{"path":"docs/diagrams/FindTasksSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"participant \":FindTasksCommandParser\" as FindTasksCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"participant \"p:TaskNameContainsKeywordsPredicate\" as TaskNameContainsKeywordsPredicate LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"participant \"f:FindTasksCommand\" as FindTasksCommand LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"[-\u003e LogicManager : execute(\"findtasks \\nproject meeting\")","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"activate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"findtasks \\nproject meeting\")","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"create FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"activate FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"deactivate FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e FindTasksCommandParser : parse(\"project meeting\")","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"activate FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"create TaskNameContainsKeywordsPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser -\u003e TaskNameContainsKeywordsPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"activate TaskNameContainsKeywordsPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"TaskNameContainsKeywordsPredicate --\u003e FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"deactivate TaskNameContainsKeywordsPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"create FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser -\u003e FindTasksCommand : FindTasksCommand(p)","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"activate FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"FindTasksCommand --\u003e FindTasksCommandParser :","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"deactivate FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser --\u003e TaskMasterProParser : f","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"deactivate FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"destroy FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e FindTasksCommand : execute(m)","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":"activate FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"FindTasksCommand -\u003e Model : updateFilteredTaskList(p)","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":"Model --\u003e FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":"create CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":"FindTasksCommand -\u003e CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":"activate CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"CommandResult --\u003e FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":"FindTasksCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":"deactivate FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"gavin331":78}},{"path":"docs/diagrams/MarkDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":MarkCommandParser\" as MarkCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"a:MarkCommand\" as MarkCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"[-\u003e LogicManager : execute(\"mark 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"mark 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"create MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser -\u003e MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"activate MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser -\u003e MarkCommandParser : parse(\" 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"activate MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"create MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommandParser -\u003e MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"activate MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand --\u003e MarkCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommandParser --\u003e TaskMasterProParser : a","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"destroy MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":"LogicManager -\u003e MarkCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":"activate MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Put this into a ref block\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":"group ref [update existing Employee fields]","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand -[hidden]-\u003e Model","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":"end","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Up to here is inside the ref block\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":"CommandResult --\u003e MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"johnyoozhengxian":73}},{"path":"docs/diagrams/MarkRefDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"mainframe sd mark Task","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:MarkCommand\" as MarkCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"t:Task\" as Task MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand -\u003e Model : getFilteredTaskList()","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"Model --\u003e MarkCommand : taskList","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"loop for each t in taskList","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand -\u003e Task: getTaskId()","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" opt taskId \u003d\u003d 1","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand -\u003e Model : deleteTask(t)","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand -\u003e Task : markTask()","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" Task --\u003e MarkCommand : taskToMark","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand -\u003e Model : addTask(taskToMark)","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" end","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"end","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"johnyoozhengxian":27}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyTaskMasterPro\" as ReadOnlyTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"Class TaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"Class UniqueEmployeeList","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"Class TaskList","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"Class Employee","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"Class Task","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"Class TaskId","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"Class TaskName","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"Class TaskStatus","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"Class Tasks","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"TaskMasterPro .up.|\u003e ReadOnlyTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"Model .left.\u003e ReadOnlyTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"ModelManager -left-\u003e \"1\" TaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"TaskMasterPro *--\u003e \"1\" UniqueEmployeeList","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro *--\u003e \"1\" TaskList","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"UniqueEmployeeList --\u003e \"~* all\" Employee","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":"TaskList --\u003e \"~* all\" Task","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Name","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Phone","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Email","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Address","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":"Employee *--\u003e \"*\" Tasks","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e \"*\" Tag","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskName","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskStatus","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskId","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":"Employee -[hidden]up--\u003e I","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"UniqueEmployeeList -[hidden]right-\u003e I","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"ModelManager --\u003e \"~* filtered\" Employee","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":10,"gavin331":17,"-":37}},{"path":"docs/diagrams/ParserClasses.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2021-07-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2021-07-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2021-07-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2021-07-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2021-07-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2021-07-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class XYZCommand","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"package \"Parser classes\"{","lastModifiedDate":"2021-07-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nParser\" as Parser","lastModifiedDate":"2022-01-03"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"Class TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class XYZCommandParser","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class CliSyntax","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class ArgumentTokenizer","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"HiddenOutside ..\u003e TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser .down.\u003e XYZCommandParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"XYZCommandParser .up.|\u003e Parser","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ArgumentTokenizer","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ArgumentTokenizer .left.\u003e ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e CliSyntax","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"CliSyntax ..\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ParserUtil .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ArgumentTokenizer .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"gavin331":4,"-":34}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"package \"TaskMasterPro Storage\" #F4F6F6{","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nTaskMasterProStorage\" as TaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"Class JsonTaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"Class JsonSerializableTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"Class JsonAdaptedEmployee","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"StorageManager -up-\u003e \"1\" TaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"Storage -right-|\u003e TaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"JsonTaskMasterProStorage .up.|\u003e TaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"JsonTaskMasterProStorage ..\u003e JsonSerializableTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"JsonSerializableTaskMasterPro --\u003e \"*\" JsonAdaptedEmployee","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"JsonAdaptedEmployee --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":11,"-":32}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"Class Panel","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"Class EmployeeCard","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"Class TaskCard","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"MainWindow *-down-\u003e \"1\" Panel","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"Panel -down-\u003e \"*\" EmployeeCard","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":"Panel -down-\u003e \"*\" TaskCard","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":"Panel --|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"EmployeeCard --|\u003e UiPart","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":"TaskCard --|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"EmployeeCard ..\u003e Model","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":"TaskCard ..\u003e Model","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":"Panel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"azumieflare":9,"gavin331":3,"-":52}},{"path":"docs/diagrams/UndoRedoState0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title Initial state","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"hide State2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State1","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":18}},{"path":"docs/diagrams/UndoRedoState1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"delete 5\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":20}},{"path":"docs/diagrams/UndoRedoState2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"add n/David\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":18}},{"path":"docs/diagrams/UndoRedoState3.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"undo\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":18}},{"path":"docs/diagrams/UndoRedoState4.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"list\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":18}},{"path":"docs/diagrams/UndoRedoState5.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"clear\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab3:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"note right on link: State ab2 deleted.","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":19}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(undo)","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e UndoCommand","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"UndoCommand --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser --\u003e LogicManager : u","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"UndoCommand -\u003e Model : undoTaskMasterPro()","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":8,"-":38}},{"path":"docs/diagrams/UndoSequenceDiagram-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2024-02-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2024-02-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-02-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-02-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":VersionedTaskMasterPro\" as VersionedTaskMasterPro MODEL_COLOR","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"[-\u003e Model : undoTaskMasterPro()","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"Model -\u003e VersionedTaskMasterPro : undo()","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"activate VersionedTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"VersionedTaskMasterPro -\u003e VersionedTaskMasterPro :resetData(ReadOnlyTaskMasterPro)","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"VersionedTaskMasterPro --\u003e Model :","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"deactivate VersionedTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[\u003c-- Model","lastModifiedDate":"2024-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2024-02-09"}],"authorContributionMap":{"gavin331":7,"-":16}},{"path":"docs/diagrams/UnmarkDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":UnmarkCommandParser\" as UnmarkCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"a:UnmarkCommand\" as UnmarkCommand LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"[-\u003e LogicManager : execute(\"mark 1\")","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"activate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"unmark 1\")","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"create UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser -\u003e UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"activate UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser -\u003e UnmarkCommandParser : parse(\" 1\")","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"activate UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"create UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommandParser -\u003e UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"activate UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand --\u003e UnmarkCommandParser :","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommandParser --\u003e TaskMasterProParser : a","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"destroy UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":"LogicManager -\u003e UnmarkCommand : execute(m)","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":"activate UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Put this into a ref block\u0027","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":"group ref [update existing Employee fields]","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand -[hidden]-\u003e Model","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":"end","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Up to here is inside the ref block\u0027","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":"create CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand -\u003e CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"activate CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":"CommandResult --\u003e UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"johnyoozhengxian":73}},{"path":"docs/diagrams/UnmarkRefDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"mainframe sd unmark Task","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:UnmarkCommand\" as UnmarkCommand LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"t:Task\" as Task MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand -\u003e Model : getFilteredTaskList()","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"Model --\u003e UnmarkCommand : taskList","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"loop for each t in taskList","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand -\u003e Task: getTaskId()","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" opt taskId \u003d\u003d 1","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand -\u003e Model : deleteTask(t)","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand -\u003e Task : unmarkTask()","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" Task --\u003e UnmarkCommand : taskToUnmark","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand -\u003e Model : addTask(taskToUnmark)","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" end","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"end","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"johnyoozhengxian":27}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"Participant \":TaskMasterProParser\" as abp LOGIC_COLOR","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"ecp -\u003e ec ++: index, editEmployeeDescriptor","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17"}],"authorContributionMap":{"gavin331":2,"-":20}},{"path":"docs/index.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":"BryanL2303"},"content":"title: TaskMasterPro","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T15-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T15-4/tp/actions)","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T15-4/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-T15-4/tp)","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"**TaskMasterPro is a desktop application designed to aid managers with managing employee\u0027s tasks.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"* If you are interested in using TaskMasterPro, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"* If you are interested about developing TaskMasterPro, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"BryanL2303":7,"-":13}},{"path":"docs/team/azumieflare.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"layout: page","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"### Project: TaskMasterPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro is a desktop application build on TaskMasterPro - Level 3. 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-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"### ToDo, will be updated over time.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"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-05"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"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-05"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"azumieflare":47}},{"path":"docs/team/bryanlee.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"layout: page","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"title: Bryan Lee\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"### Project: TaskMasterPro","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"### Work in progress... Do not refer to this page yet.","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro is a desktop address book application used for organising team members and team projects. 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":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"* **New Feature**: Description of the feature.","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" * What it does:","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":" * Justification:","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" * Highlights:","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" * Credits:","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"* **Project management**:","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" * Managed releases `v1.1` - `v1.1` (1 release) on GitHub","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" * User Guide:","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"* **Community**:","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":"* **Tools**:","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" * Integrated a new Github plugin (Codecov) to the team repo","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"BryanL2303":43}},{"path":"docs/team/gavingoh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"layout: page","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"title: Gavin Goh\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"### Project: TaskMasterPro Level 3","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"TaskMasterPro 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-05"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"gavin331"},"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-05"},{"lineNumber":16,"author":{"gitId":"gavin331"},"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-05"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"azumieflare":1,"gavin331":45}},{"path":"docs/team/johndoe.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: John Doe\u0027s Project Portfolio Page","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":"azumieflare"},"content":"### Project: TaskMasterPro Level 3","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - 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-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"azumieflare":2,"-":44}},{"path":"docs/team/johnyoozhengxian.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"### Project: TaskMasterPro Level 3","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - 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-13"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"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-06"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"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-06"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" * User Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"azumieflare":2,"johnyoozhengxian":44}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"This command allows users of the TaskMasterPro application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * Changes the remark of an existing employee in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `TaskMasterProParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/TaskMasterPro-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" + \": Edits the remark of the employee identified \"","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" + \"by the index number used in the last employee listing. \"","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" * @param index of the employee in the filtered employee list to edit the remark","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" * @param remark of the employee to be updated to","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"azumieflare"},"content":"Your code should look something like [this](https://github.com/se-edu/TaskMasterPro-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"azumieflare"},"content":":information_source: Don’t forget to update `TaskMasterProParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"azumieflare"},"content":"[here](https://github.com/se-edu/TaskMasterPro-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"azumieflare"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of employee data. We achieve that by working with the `Employee` model. Each field in a Employee is implemented as a separate class (e.g. a `Name` object represents the employee’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a employee.","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"gavin331"},"content":"Create a new `Remark` in `seedu.address.model.employee`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"azumieflare"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/TaskMasterPro-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2024-03-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"gavin331"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"azumieflare"},"content":"Simply add the following to [`seedu.address.ui.EmployeeCard`](https://github.com/se-edu/TaskMasterPro-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-13"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"azumieflare"},"content":"**`EmployeeCard.java`:**","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"azumieflare"},"content":"Then insert the following into [`main/resources/view/EmployeeListCard.fxml`](https://github.com/se-edu/TaskMasterPro-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2024-03-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"azumieflare"},"content":"**`EmployeeListCard.fxml`:**","lastModifiedDate":"2024-03-13"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"azumieflare"},"content":"## Modify `Employee` to support a `Remark` field","lastModifiedDate":"2024-03-13"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"azumieflare"},"content":"Since `EmployeeCard` displays data from a `Employee`, we need to update `Employee` to get our `Remark` displayed!","lastModifiedDate":"2024-03-13"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"azumieflare"},"content":"### Modify `Employee`","lastModifiedDate":"2024-03-13"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"azumieflare"},"content":"We change the constructor of `Employee` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2024-03-13"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"azumieflare"},"content":"### Update other usages of `Employee`","lastModifiedDate":"2024-03-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"azumieflare"},"content":"Unfortunately, a change to `Employee` will cause other commands to break, you will have to modify these commands to use the updated `Employee`!","lastModifiedDate":"2024-03-13"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"azumieflare"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Employee` class to find these commands.","lastModifiedDate":"2024-03-13"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"azumieflare"},"content":"Refer to [this commit](https://github.com/se-edu/TaskMasterPro-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2024-03-13"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro stores data by serializing `JsonAdaptedEmployee` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedEmployee` to work with our new `Employee`!","lastModifiedDate":"2024-03-13"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"azumieflare"},"content":":exclamation: You must delete TaskMasterPro’s storage file located at `/data/TaskMasterPro.json` before running it! Not doing so will cause TaskMasterPro to default to an empty address book!","lastModifiedDate":"2024-03-13"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"azumieflare"},"content":"Check out [this commit](https://github.com/se-edu/TaskMasterPro-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2024-03-13"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"azumieflare"},"content":"Now that we have finalized the `Employee` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2024-03-13"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"azumieflare"},"content":"Just add [this one line of code!](https://github.com/se-edu/TaskMasterPro-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2024-03-13"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"azumieflare"},"content":"**`EmployeeCard.java`:**","lastModifiedDate":"2024-03-13"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"azumieflare"},"content":"public EmployeeCard(Employee employee, int displayedIndex) {","lastModifiedDate":"2024-03-13"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"gavin331"},"content":" remark.setText(employee.getRemark().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"azumieflare"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Employee`. Since all fields in a `Employee` are immutable, we create a new instance of a `Employee` with the values that we want and","lastModifiedDate":"2024-03-13"},{"lineNumber":327,"author":{"gitId":"azumieflare"},"content":"save it with `Model#setEmployee()`.","lastModifiedDate":"2024-03-13"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Employee: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":334,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Employee: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"azumieflare"},"content":" List\u003cEmployee\u003e lastShownList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-13"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"azumieflare"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_Employee_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"azumieflare"},"content":" Employee employeeToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":345,"author":{"gitId":"azumieflare"},"content":" Employee editedEmployee \u003d new Employee(","lastModifiedDate":"2024-03-13"},{"lineNumber":346,"author":{"gitId":"gavin331"},"content":" employeeToEdit.getName(), employeeToEdit.getPhone(), employeeToEdit.getEmail(),","lastModifiedDate":"2024-03-11"},{"lineNumber":347,"author":{"gitId":"gavin331"},"content":" employeeToEdit.getAddress(), remark, employeeToEdit.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"azumieflare"},"content":" model.setEmployee(employeeToEdit, editedEmployee);","lastModifiedDate":"2024-03-13"},{"lineNumber":350,"author":{"gitId":"azumieflare"},"content":" model.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EmployeeS);","lastModifiedDate":"2024-03-13"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"gavin331"},"content":" return new CommandResult(generateSuccessMessage(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"gavin331"},"content":" * {@code employeeToEdit}.","lastModifiedDate":"2024-03-11"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"azumieflare"},"content":" private String generateSuccessMessage(Employee employeeToEdit) {","lastModifiedDate":"2024-03-13"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"gavin331"},"content":" return String.format(message, employeeToEdit);","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"azumieflare"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/TaskMasterPro-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2024-03-13"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"azumieflare"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/TaskMasterPro-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2024-03-13"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"azumieflare"},"content":"This concludes the tutorial for adding a new `Command` to TaskMasterPro.","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":41,"gavin331":13,"-":345}},{"path":"docs/tutorials/RemovingFields.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: \"Tutorial: Removing Fields\"","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":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Employee` class.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"The `address` field in `Employee` is actually an instance of the `seedu.address.model.employee.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditEmployeeDescriptor` may require more careful inspection.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":"Let’s try removing references to `Address` in `EditEmployeeDescriptor`.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"1. Safe delete the field `address` in `EditEmployeeDescriptor`.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Employee` class will require you to modify its constructor.","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `EmployeeCard` that has not been removed nor identified.","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":"A quick look at the `EmployeeCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":"**`EmployeeCard.java`**","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"azumieflare"},"content":"**`EmployeeCard.fxml`**","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"azumieflare"},"content":"**`invalidEmployeeTaskMasterPro.json`:**","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" \"employees\": [ {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"azumieflare"},"content":" \"name\": \"Employee with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"azumieflare":12,"gavin331":1,"-":99}},{"path":"docs/tutorials/TracingCode.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: \"Tutorial: Tracing code\"","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":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"azumieflare"},"content":" Command command \u003d TaskMasterProParser.parseCommand(commandText);","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"azumieflare"},"content":" storage.saveTaskMasterPro(model.getTaskMasterPro());","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","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":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"azumieflare"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `TaskMasterProParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","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":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2021-07-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"azumieflare"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditEmployeeDescriptor`. Recall that we can verify the contents of `editEmployeeDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"azumieflare"},"content":" Employee employeeToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"azumieflare"},"content":" Employee editedEmployee \u003d createEditedEmployee(employeeToEdit, editEmployeeDescriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"azumieflare"},"content":" if (!employeeToEdit.isSameEmployee(editedEmployee) \u0026\u0026 model.hasEmployee(editedEmployee)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"azumieflare"},"content":" throw new CommandException(MESSAGE_DUPLICATE_Employee);","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"azumieflare"},"content":" model.setEmployee(employeeToEdit, editedEmployee);","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"azumieflare"},"content":" model.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EmployeeS);","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"azumieflare"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_Employee_SUCCESS, editedEmployee));","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"azumieflare"},"content":" * it uses the `setEmployee()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the employee data.","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"azumieflare"},"content":" * it uses the `updateFilteredEmployeeList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ employees.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"gavin331"},"content":" FYI, The \u0027filtered list\u0027 is the list of employees resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the employees so that the user can see the edited employee along with all other employees. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"gavin331"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of employees is being tracked.","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"azumieflare"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveTaskMasterPro(model.getTaskMasterPro())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"azumieflare"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonTaskMasterPro#saveTaskMasterPro()` method which calls the `JsonSerializableTaskMasterPro` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"azumieflare"},"content":" **`JsonSerializableTaskMasterPro` constructor:**","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"azumieflare"},"content":" * Converts a given {@code ReadOnlyTaskMasterPro} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"azumieflare"},"content":" * {@code JsonSerializableTaskMasterPro}.","lastModifiedDate":"2024-03-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"azumieflare"},"content":" public JsonSerializableTaskMasterPro(ReadOnlyTaskMasterPro source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":234,"author":{"gitId":"gavin331"},"content":" employees.addAll(","lastModifiedDate":"2024-03-11"},{"lineNumber":235,"author":{"gitId":"azumieflare"},"content":" source.getEmployeeList()","lastModifiedDate":"2024-03-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"azumieflare"},"content":" .map(JsonAdaptedEmployee::new)","lastModifiedDate":"2024-03-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"azumieflare"},"content":"1. It appears that a `JsonAdaptedEmployee` is created for each `Employee` and then added to the `JsonSerializableTaskMasterPro`.","lastModifiedDate":"2024-03-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","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":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"azumieflare"},"content":" 5. Add a new field to `Employee`","lastModifiedDate":"2024-03-13"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"azumieflare":23,"gavin331":3,"-":275}},{"path":"src/main/java/seedu/address/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2018-04-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents the parsed command-line parameters given to the application.","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AppParameters.class);","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Path getConfigPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setConfigPath(Path configPath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.configPath \u003d configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the application command-line parameters.","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" * @param parameters The javafx application parameters","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" * @return The parsed command-line parameters","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static AppParameters parse(Application.Parameters parameters) {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Map\u003cString, String\u003e namedParameters \u003d parameters.getNamed();","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String configPathParameter \u003d namedParameters.get(\"config\");","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (configPathParameter !\u003d null \u0026\u0026 !FileUtil.isValidPath(configPathParameter)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" logger.warning(\"Invalid config path \" + configPathParameter + \". Using default config path.\");","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" configPathParameter \u003d null;","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" appParameters.setConfigPath(configPathParameter !\u003d null ? Paths.get(configPathParameter) : null);","lastModifiedDate":"2018-04-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return appParameters;","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof AppParameters)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d (AppParameters) other;","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Objects.equals(configPath, otherAppParameters.configPath);","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-04-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return configPath.hashCode();","lastModifiedDate":"2018-04-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .add(\"configPath\", configPath)","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"BryanL2303":3,"-":73}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"import seedu.address.storage.JsonTaskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"import seedu.address.storage.TaskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing TaskMasterPro ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" TaskMasterProStorage taskMasterProStorage \u003d new JsonTaskMasterProStorage(userPrefs.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" storage \u003d new StorageManager(taskMasterProStorage, userPrefsStorage);","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s TaskMasterPro and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" * The data from the sample TaskMasterPro will be used instead if {@code storage}\u0027s TaskMasterPro is not found,","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" * or an empty TaskMasterPro will be used instead if errors occur when reading {@code storage}\u0027s TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" logger.info(\"Using data file : \" + storage.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" Optional\u003cReadOnlyTaskMasterPro\u003e taskMasterProOptional;","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro initialData;","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" boolean isSampleData \u003d false;","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" taskMasterProOptional \u003d storage.readTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" if (!taskMasterProOptional.isPresent()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskMasterProFilePath()","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" + \" populated with a sample TaskMasterPro.\");","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"BryanL2303"},"content":" isSampleData \u003d true;","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" initialData \u003d taskMasterProOptional.orElseGet(SampleDataUtil::getSampleTaskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" logger.warning(\"Data file at \" + storage.getTaskMasterProFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"azumieflare"},"content":" + \" Will be starting with a default TaskMasterPro.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"azumieflare"},"content":" initialData \u003d SampleDataUtil.getSampleTaskMasterPro();","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"BryanL2303"},"content":" isSampleData \u003d true;","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" Model model \u003d new ModelManager(initialData, userPrefs);","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"BryanL2303"},"content":" if (isSampleData) {","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"BryanL2303"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" AssignTaskCommand atc \u003d new AssignTaskCommand(1, 1);","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(1, 2);","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(1, 3);","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(2, 3);","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(2, 4);","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(2, 5);","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(3, 5);","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":114,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(3, 6);","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":116,"author":{"gitId":"BryanL2303"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"BryanL2303"},"content":" logger.warning(\"Error with generating sample data.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":120,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"BryanL2303"},"content":" return model;","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":132,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":133,"author":{"gitId":"BryanL2303"},"content":" * @param configFilePath The path to the config file.","lastModifiedDate":"2024-03-31"},{"lineNumber":134,"author":{"gitId":"BryanL2303"},"content":" * @return The {@code Config} using the file at {@code configFilePath}.","lastModifiedDate":"2024-03-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":136,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":" * @param storage The file with user preference.","lastModifiedDate":"2024-03-31"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":" * @return The representation of user preference.","lastModifiedDate":"2024-03-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":186,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":188,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":196,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":198,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":199,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"gavin331"},"content":" logger.info(\"Starting TaskMasterPro \" + MainApp.VERSION);","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"gavin331"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping TaskMasterPro ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":215,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":216,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":217,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":36,"azumieflare":2,"gavin331":20,"-":162}},{"path":"src/main/java/seedu/address/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" private static final String LOG_FILE \u003d \"taskmasterpro.log\";","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":1,"-":105}},{"path":"src/main/java/seedu/address/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Writes and reads files","lastModifiedDate":"2016-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via @link Paths#get(String),","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":1,"-":82}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" * Returns the TaskMasterPro.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * @see seedu.address.model.Model#getTaskMasterPro()","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro getTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" /** Returns an unmodifiable view of the filtered list of employees */","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" ObservableList\u003cEmployee\u003e getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" /** Returns an unmodifiable view of the filtered list of tasks */","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Returns the user prefs\u0027 TaskMasterPro file path.","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":3,"gavin331":9,"-":42}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.parser.TaskMasterProParser;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" private final TaskMasterProParser taskMasterProParser;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" taskMasterProParser \u003d new TaskMasterProParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" Command command \u003d taskMasterProParser.parseCommand(commandText);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" storage.saveTaskMasterPro(model.getTaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" public ReadOnlyTaskMasterPro getTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" return model.getTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getFilteredEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" return model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" return model.getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"azumieflare":5,"gavin331":13,"-":76}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" public static final String MESSAGE_INVALID_EMPLOYEEID \u003d \"The employee id provided is invalid\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_EMPLOYEES_LISTED_OVERVIEW \u003d \"%1$d employees listed!\";","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_TASKS_LISTED_OVERVIEW \u003d \"%1$d tasks listed!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_INVALID_TASKID \u003d \"The Task ID provided is invalid\";","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_DUPLICATE_TASKID \u003d \"The Task ID provided is already assigned to this employee\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_NONEXISTENT_TASKS \u003d \"There are no tasks assigned to this employee\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" public static final String MESSAGE_NONEXISTENT_EMPLOYEES \u003d \"There are no employees assigned to this task\";","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Formats the {@code employee} for display to the user.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" public static String format(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" builder.append(employee.getName())","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" .append(employee.getPhone())","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" .append(employee.getEmail())","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" .append(employee.getAddress())","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" .append(\"; Tasks Assigned: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" .append(employee.getTasks())","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" employee.getTags().forEach(builder::append);","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":" public static String format(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":" builder.append(task.getName())","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":" .append(\"; TaskID: \")","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" .append(task.getTaskId())","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" .append(\"; TaskStatus: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":" .append(task.getTaskStatus()); // Add more append if got more fields to show","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":11,"gavin331":10,"-":44,"johnyoozhengxian":6}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * Adds an employee to TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a employee to TaskMasterPro. \"","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New employee added: %1$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_DUPLICATE_EMPLOYEE \u003d \"This employee already exists in TaskMasterPro\";","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" private final Employee toAdd;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" * Creates an AddCommand to add the specified {@code Employee}.","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" * @param employee An instance of {@code Employee}.","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" public AddCommand(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" toAdd \u003d employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" if (model.hasEmployee(toAdd)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" throw new CommandException(MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" model.addEmployee(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":3,"gavin331":12,"-":71}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Adds a Task to TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public static final String COMMAND_WORD \u003d \"task\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task to TaskMasterPro. \"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" + \"Parameters: DESCRIPTION \\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" + \"Example: \" + COMMAND_WORD + \" meeting\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New task added: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" private final Task toAdd;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" * Creates an AddTaskCommand to add the specified {@code Task}","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" * @param task An instance of {@code Task}","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" public AddTaskCommand(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" toAdd \u003d task;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" model.addTask(toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":46,"gavin331":2}},{"path":"src/main/java/seedu/address/logic/commands/AssignTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":" * Assigns a task to an employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignTaskCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String COMMAND_WORD \u003d \"assigntask\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" + \": Assigns a task object identified by TASK_ID to employee identified by EMPLOYEE_ID.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Parameters: taskID, employeeID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_ASSIGN_TASK_SUCCESS \u003d \"Assign task success\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" private final int taskID;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" private final int employeeID;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" * Creates an AssignTaskCommand to assign a task to an employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" * @param taskID The ID of the task to be assigned.","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" * @param employeeID The ID of the employee to whom the task is assigned.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" public AssignTaskCommand(int taskID, int employeeID) {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" this.taskID \u003d taskID;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" this.employeeID \u003d employeeID;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * Executes the AssignTaskCommand to assign a task to an employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" * @param model The model in which the command should be executed.","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cTask\u003e taskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cEmployee\u003e employeeList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" Task assignTask \u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" Employee assignEmployee \u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d taskID) {","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" assignTask \u003d t;","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" for (Employee e : employeeList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" if (e.getEmployeeId() \u003d\u003d employeeID) {","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" assignEmployee \u003d e;","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":" if (assignTask !\u003d null \u0026\u0026 assignEmployee !\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" Employee updatedEmployee \u003d assignEmployee.assignTask(assignTask);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"azumieflare"},"content":" model.setEmployee(assignEmployee, updatedEmployee);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":" Task updatedTask \u003d assignTask.assignEmployee(assignEmployee);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"azumieflare"},"content":" model.setTask(assignTask, updatedTask);","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":" if (assignTask \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"azumieflare"},"content":" if (assignEmployee \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"johnyoozhengxian"},"content":" return new CommandResult(MESSAGE_ASSIGN_TASK_SUCCESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":20,"johnyoozhengxian":62}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" * Clears TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" public static final String MESSAGE_SUCCESS \u003d \"TaskMasterPro has been cleared!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" model.setTaskMasterPro(new TaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" Employee.setUniversalEmployeeId(1);","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" Task.setUniversalTaskId(1);","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":5,"gavin331":3,"-":19}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" /** Employee list should be shown to the user. */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" private final boolean showEmployees;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" /** Task list should be shown to the user. */","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" private final boolean showTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" * @param feedbackToUser The message the user will see based on the results of the command.","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" * @param showHelp To indicate that this is a {@code HelpCommand}.","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" * @param showEmployees To indicate that this is a {@code ListCommand}.","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" * @param showTasks To indicate that this is a {@code ListTasksCommand}.","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" * @param exit To indicate that this is a {@code ExitCommand}.","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean showEmployees, boolean showTasks,","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" boolean exit) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" this.showEmployees \u003d showEmployees;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" this.showTasks \u003d showTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" * @param feedbackToUser The message the user will see based on the results of the command.","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" this(feedbackToUser, false, false, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" public boolean isShowEmployees() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" return showEmployees;","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" public boolean isShowTasks() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"BryanL2303"},"content":" return showTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":27,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Deletes an employee identified using it\u0027s id from TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" + \": Deletes the employee identified by the employeeId used in the displayed employee list.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" + \"Parameters: ID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_DELETE_EMPLOYEE_SUCCESS \u003d \"Deleted Employee: %1$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" private final int targetIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" public DeleteCommand(int targetIndex) {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e lastShownList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" Employee employeeToDelete;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" for (Employee e : lastShownList) {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" if (e.getEmployeeId() \u003d\u003d targetIndex) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" employeeToDelete \u003d e;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" employeeToDelete.removeAssignments();","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" model.deleteEmployee(employeeToDelete);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" Messages.format(employeeToDelete)), false, true, false, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" return targetIndex \u003d\u003d otherDeleteCommand.targetIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":13,"azumieflare":1,"gavin331":5,"-":55}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Deletes a task identified using it\u0027s displayed index from TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" + \": Removes the task identified by the taskID used in the displayed task list.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" + \"Parameters: taskID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Deleted task: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" private final int targetIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" public DeleteTaskCommand(int targetIndex) {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" Task taskToDelete;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" for (Task t : lastShownList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d targetIndex) {","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" taskToDelete \u003d t;","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" taskToDelete.removeAssignments();","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" model.deleteTask(taskToDelete);","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, Messages.format(taskToDelete)),","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" false, false, true, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":54,"gavin331":1}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_EMPLOYEES;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * Edits the details of an existing employee in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the employee identified \"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" + \"by the given EmployeeId. \"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" + \"Parameters: EmployeeId (must be a positive integer) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_EDIT_EMPLOYEE_SUCCESS \u003d \"Edited Employee: %1$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_DUPLICATE_EMPLOYEE \u003d \"This employee already exists in TaskMasterPro.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" private final EditEmployeeDescriptor editEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" * @param index of the employee in the filtered employee list to edit","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" * @param editEmployeeDescriptor details to edit the employee with","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public EditCommand(Index index, EditEmployeeDescriptor editEmployeeDescriptor) {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" requireNonNull(editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" this.editEmployeeDescriptor \u003d new EditEmployeeDescriptor(editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e lastShownList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"content":" Employee employeeToEdit \u003d null;","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"azumieflare"},"content":" for (Employee e : lastShownList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"azumieflare"},"content":" if (e.getEmployeeId() \u003d\u003d index.getOneBased()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"azumieflare"},"content":" employeeToEdit \u003d e;","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"azumieflare"},"content":" if (employeeToEdit \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d createEditedEmployee(employeeToEdit, editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" if (!employeeToEdit.isSameEmployee(editedEmployee) \u0026\u0026 model.hasEmployee(editedEmployee)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" throw new CommandException(MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" model.setEmployee(employeeToEdit, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EMPLOYEES);","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_EMPLOYEE_SUCCESS, Messages.format(editedEmployee)));","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" * Creates and returns a {@code Employee} with the details of {@code employeeToEdit}","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" * edited with {@code editEmployeeDescriptor}.","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" private static Employee createEditedEmployee(Employee employeeToEdit,","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor editEmployeeDescriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" assert employeeToEdit !\u003d null;","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"azumieflare"},"content":" Name updatedName \u003d editEmployeeDescriptor.getName().orElse(new Name(employeeToEdit.getName()));","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" Phone updatedPhone \u003d editEmployeeDescriptor.getPhone().orElse(new Phone(employeeToEdit.getPhone()));","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"azumieflare"},"content":" Email updatedEmail \u003d editEmployeeDescriptor.getEmail().orElse(new Email(employeeToEdit.getEmail()));","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"azumieflare"},"content":" Address updatedAddress \u003d editEmployeeDescriptor.getAddress().orElse(new Address(employeeToEdit.getAddress()));","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"johnyoozhengxian"},"content":" AssignedTasks updatedTask \u003d editEmployeeDescriptor.getTasks().orElse(employeeToEdit.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" Set\u003cTag\u003e updatedTags \u003d editEmployeeDescriptor.getTags().orElse(employeeToEdit.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"azumieflare"},"content":" return new Employee(new EmployeeId(employeeToEdit.getEmployeeId()), updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"johnyoozhengxian"},"content":" updatedAddress, updatedTask, updatedTags);","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 editEmployeeDescriptor.equals(otherEditCommand.editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" .add(\"editEmployeeDescriptor\", editEmployeeDescriptor)","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" * Stores the details to edit the employee with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" * corresponding field value of the employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" public static class EditEmployeeDescriptor {","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"johnyoozhengxian"},"content":" private AssignedTasks tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptor() {}","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":162,"author":{"gitId":"BryanL2303"},"content":" * @param toCopy The variables to set for the current {@code Employee}.","lastModifiedDate":"2024-03-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptor(EditEmployeeDescriptor toCopy) {","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"johnyoozhengxian"},"content":" setTasks(toCopy.tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":" * @return true if any field is edited.","lastModifiedDate":"2024-03-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"johnyoozhengxian"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tasks, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"johnyoozhengxian"},"content":" public void setTasks(AssignedTasks tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"johnyoozhengxian"},"content":" public Optional\u003cAssignedTasks\u003e getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"johnyoozhengxian"},"content":" return Optional.ofNullable(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof EditEmployeeDescriptor)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":247,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor otherEditEmployeeDescriptor \u003d (EditEmployeeDescriptor) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":251,"author":{"gitId":"gavin331"},"content":" return Objects.equals(name, otherEditEmployeeDescriptor.name)","lastModifiedDate":"2024-03-11"},{"lineNumber":252,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 Objects.equals(phone, otherEditEmployeeDescriptor.phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":253,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 Objects.equals(email, otherEditEmployeeDescriptor.email)","lastModifiedDate":"2024-03-11"},{"lineNumber":254,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 Objects.equals(address, otherEditEmployeeDescriptor.address)","lastModifiedDate":"2024-03-11"},{"lineNumber":255,"author":{"gitId":"johnyoozhengxian"},"content":" \u0026\u0026 Objects.equals(tasks, otherEditEmployeeDescriptor.tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 Objects.equals(tags, otherEditEmployeeDescriptor.tags);","lastModifiedDate":"2024-03-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":273,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"BryanL2303":5,"azumieflare":18,"gavin331":38,"-":189,"johnyoozhengxian":23}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting TaskMasterPro as requested ...\";","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true, false,","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" false);","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"BryanL2303":2,"gavin331":1,"-":17}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" * Finds and lists all employees in TaskMasterPro whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all employees whose names contain any of \"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" String.format(Messages.MESSAGE_EMPLOYEES_LISTED_OVERVIEW, model.getFilteredEmployeeList().size()),","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" false, true, false, false);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"gavin331":6,"-":53}},{"path":"src/main/java/seedu/address/logic/commands/FindTasksCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" * Finds and lists all tasks in TaskMasterPro whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public class FindTasksCommand extends Command {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public static final String COMMAND_WORD \u003d \"findtasks\";","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all tasks with descriptions containing any of \"","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" + \"Example: \" + COMMAND_WORD + \" project\";","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" private final TaskNameContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" public FindTasksCommand(TaskNameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" model.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, model.getFilteredTaskList().size()),","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" false, false, true, false);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof FindTasksCommand)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" FindTasksCommand otherFindCommand \u003d (FindTasksCommand) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"gavin331":60}},{"path":"src/main/java/seedu/address/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":1,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_EMPLOYEES;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":" * Lists all employees in TaskMasterPro to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all employees\";","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EMPLOYEES);","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, true, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":2,"gavin331":3,"-":19}},{"path":"src/main/java/seedu/address/logic/commands/ListTasksCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":" * Lists all tasks in TaskMasterPro to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"public class ListTasksCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" public static final String COMMAND_WORD \u003d \"listtasks\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all tasks\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false, true, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"BryanL2303":22,"gavin331":2}},{"path":"src/main/java/seedu/address/logic/commands/MarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":" * Marks a task as completed.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" + \": Marks the task identified by the TASK_ID.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Parameters: taskID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Mark task: %1$s\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" private final int targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" * Constructs a MarkCommand to mark the task at the specified index.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" * @param targetIndex The index of the task to mark.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" public MarkCommand(int targetIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" * Executes the MarkCommand to mark a task as completed.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" * @param model The model in which the command should be executed.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cTask\u003e taskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" Task taskToMark \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d targetIndex) {","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":" model.deleteTask(t);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" taskToMark \u003d t;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":" taskToMark.markTask();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(taskToMark);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" if (taskToMark \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, Messages.format(taskToMark)));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":" * Returns a string representation of this MarkCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A string representation of this MarkCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":1,"johnyoozhengxian":71}},{"path":"src/main/java/seedu/address/logic/commands/UnassignTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":" * Unassigns a task from an employee.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnassignTaskCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String COMMAND_WORD \u003d \"unassigntask\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" + \": Unassigns a task object identified by TASK_ID from employee identified by EMPLOYEE_ID.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Parameters: taskID, employeeID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_UNASSIGN_TASK_SUCCESS \u003d \"Unassign task success\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" private final int taskID;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" private final int employeeID;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" * Creates an UnassignTaskCommand to unassign the specified task from the specified employee.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" * @param taskID ID of the task to unassign","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" * @param employeeID ID of the employee from whom the task is to be unassigned","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" public UnassignTaskCommand(int taskID, int employeeID) {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" this.taskID \u003d taskID;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" this.employeeID \u003d employeeID;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * Executes the command to unassign the task from the employee.","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" * @param model the current model","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" * @return the command result indicating the success of the operation","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException if the command cannot be executed","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" List\u003cTask\u003e taskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cEmployee\u003e employeeList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" Task assignTask \u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" Employee assignEmployee \u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d taskID) {","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" assignTask \u003d t;","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" for (Employee e : employeeList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" if (e.getEmployeeId() \u003d\u003d employeeID) {","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" assignEmployee \u003d e;","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":" if (assignTask !\u003d null \u0026\u0026 assignEmployee !\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" Employee updatedEmployee \u003d assignEmployee.removeTask(assignTask.getTaskId());","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"azumieflare"},"content":" model.setEmployee(assignEmployee, updatedEmployee);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" Task updatedTask \u003d assignTask.removeEmployee(assignEmployee.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":" model.setTask(assignTask, updatedTask);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" if (assignTask \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"content":" if (assignEmployee \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"johnyoozhengxian"},"content":" return new CommandResult(MESSAGE_UNASSIGN_TASK_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":18,"johnyoozhengxian":57}},{"path":"src/main/java/seedu/address/logic/commands/UnmarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":" * Unmarks a task, marking it as incomplete.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" + \": Unmarks the task identified by the TASK_ID.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Parameters: taskID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_UNMARK_TASK_SUCCESS \u003d \"Unmark task: %1$s\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" private final int targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" * Constructs an UnmarkCommand to unmark the task at the specified index.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" * @param targetIndex The index of the task to unmark.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" public UnmarkCommand(int targetIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" * Executes the UnmarkCommand to unmark a task.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" * @param model The model in which the command should be executed.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cTask\u003e taskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" Task taskToUnmark \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d targetIndex) {","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":" model.deleteTask(t);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" taskToUnmark \u003d t;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":" taskToUnmark.unmarkTask();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(taskToUnmark);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" if (taskToUnmark \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":" return new CommandResult(String.format(MESSAGE_UNMARK_TASK_SUCCESS, Messages.format(taskToUnmark)));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":" * Returns a string representation of this UnmarkCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A string representation of this UnmarkCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":1,"johnyoozhengxian":71}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":" * Represents an error which occurs during execution of a {@link seedu.address.logic.commands.Command}.","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"BryanL2303":1,"-":16}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASKS;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TASKS);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" EmployeeId employeeId \u003d new EmployeeId(Employee.getUniversalId());","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"BryanL2303"},"content":" Employee employee \u003d new Employee(employeeId, name, phone, email, address, new AssignedTasks(\"\"), tagList);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":" Employee.incrementEmployeeId();","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" return new AddCommand(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"BryanL2303":13,"gavin331":1,"-":51,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Adds a task to TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Parses the given {@code String} of arguments in the context of the AddTaskCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" * and returns an AddTaskCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" TaskName taskName \u003d new TaskName(trimmedArgs);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" TaskId taskId \u003d new TaskId(Task.getUniversalId());","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" TaskStatus taskStatus \u003d new TaskStatus(false);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" Task.incrementTaskId();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d new Task(taskName, taskId, taskStatus, new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" return new AddTaskCommand(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":32,"gavin331":1,"johnyoozhengxian":3}},{"path":"src/main/java/seedu/address/logic/parser/AssignTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses input arguments and creates a new AssignTaskCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignTaskCommandParser implements Parser\u003cAssignTaskCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses the given {@code String} of arguments in the context of the AssignTaskCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" * and returns an AssignTaskCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" * @param args The string containing the taskID and employeeID separated by a space.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A new AssignTaskCommand object with the parsed taskID and employeeID.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" public AssignTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" args \u003d args.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" String[] parts \u003d args.split(\" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" int arg1 \u003d Integer.parseInt(parts[0]);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" int arg2 \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" return new AssignTaskCommand(arg1, arg2);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"johnyoozhengxian":35}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" public static final Prefix PREFIX_TASKS \u003d new Prefix(\"ta/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":15,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" int index \u003d ParserUtil.parseInt(args);","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"BryanL2303":2,"-":27}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteTaskCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" * and returns a RemoveTask object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" int index \u003d ParserUtil.parseInt(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":26}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASKS;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" ArgumentTokenizer.tokenize(","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TASKS, PREFIX_TAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" EditCommand.EditEmployeeDescriptor editEmployeeDescriptor \u003d new EditCommand.EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" editEmployeeDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" editEmployeeDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" editEmployeeDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" editEmployeeDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editEmployeeDescriptor::setTags);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":" if (argMultimap.getValue(PREFIX_TASKS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" editEmployeeDescriptor.setTasks(ParserUtil.parseTasks(argMultimap.getValue(PREFIX_TASKS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" if (!editEmployeeDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" return new EditCommand(index, editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"BryanL2303":1,"gavin331":8,"-":76,"johnyoozhengxian":7}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"BryanL2303":1,"gavin331":1,"-":31}},{"path":"src/main/java/seedu/address/logic/parser/FindTasksCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.FindTasksCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" * Parses input arguments and creates a new FindTaskCommand object","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public class FindTasksCommandParser implements Parser\u003cFindTasksCommand\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" public FindTasksCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTasksCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" return new FindTasksCommand(new TaskNameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"BryanL2303":1,"gavin331":31}},{"path":"src/main/java/seedu/address/logic/parser/MarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses input arguments and creates a new MarkCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"public class MarkCommandParser implements Parser\u003cMarkCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses the given {@code String} of arguments in the context of the MarkCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":" * and returns a MarkCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" public MarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" return new MarkCommand(index.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":1,"johnyoozhengxian":28}},{"path":"src/main/java/seedu/address/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"BryanL2303":1,"-":16}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" * Parses {@code arg} into an {@code int} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" * trimmed.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" public static int parseInt(String arg) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" String trimmedIndex \u003d arg.replaceAll(\"\\\\s\", \"\"); // Strip whitespaces","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" return Integer.parseInt(trimmedIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses a string representing assigned tasks and returns an AssignedTasks object.","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"johnyoozhengxian"},"content":" * @param tasks The string representing assigned tasks.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"johnyoozhengxian"},"content":" * @return An AssignedTasks object representing the parsed tasks.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException If the given {@code tasks} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"johnyoozhengxian"},"content":" public static AssignedTasks parseTasks(String tasks) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"johnyoozhengxian"},"content":" requireNonNull(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"johnyoozhengxian"},"content":" String trimmedTasks \u003d tasks.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"johnyoozhengxian"},"content":" if (!AssignedTasks.isValidTask(trimmedTasks)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(AssignedTasks.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"johnyoozhengxian"},"content":" return new AssignedTasks(trimmedTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":13,"-":120,"johnyoozhengxian":21}},{"path":"src/main/java/seedu/address/logic/parser/TaskMasterProParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.FindTasksCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.ListTasksCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.UnassignTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.UnmarkCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"public class TaskMasterProParser {","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(TaskMasterProParser.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" case UnassignTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":" return new UnassignTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" case AssignTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" return new AssignTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":" case UnmarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" return new UnmarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"johnyoozhengxian"},"content":" return new MarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" case FindTasksCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" return new FindTasksCommandParser().parse(arguments);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"BryanL2303"},"content":" case ListTasksCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"BryanL2303"},"content":" return new ListTasksCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":106,"author":{"gitId":"azumieflare"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"azumieflare"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"azumieflare"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":10,"azumieflare":6,"gavin331":6,"-":84,"johnyoozhengxian":12}},{"path":"src/main/java/seedu/address/logic/parser/UnassignTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.UnassignTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses input arguments and creates a new AssignTaskCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnassignTaskCommandParser implements Parser\u003cUnassignTaskCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses the given {@code String} of arguments in the context of the AssignTaskCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" * and returns an AssignTaskCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" * @param args The string containing the taskID and employeeID separated by a space.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A new AssignTaskCommand object with the parsed taskID and employeeID.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" public UnassignTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" args \u003d args.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" String[] parts \u003d args.split(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" int arg1 \u003d Integer.parseInt(parts[0]);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" int arg2 \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" return new UnassignTaskCommand(arg1, arg2);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"johnyoozhengxian":35}},{"path":"src/main/java/seedu/address/logic/parser/UnmarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.UnmarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses input arguments and creates a new MarkCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnmarkCommandParser implements Parser\u003cUnmarkCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses the given {@code String} of arguments in the context of the UnmarkCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":" * and returns a UnmarkCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" public UnmarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" return new UnmarkCommand(index.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":1,"johnyoozhengxian":28}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" Predicate\u003cEmployee\u003e PREDICATE_SHOW_ALL_EMPLOYEES \u003d unused -\u003e true;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Returns the user prefs\u0027 TaskMasterPro file path.","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" * Sets the user prefs\u0027 TaskMasterPro file path.","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" void setTaskMasterProFilePath(Path taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" * Replaces TaskMasterPro data with the data in {@code taskMasterPro}.","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" void setTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" /** Returns the TaskMasterPro */","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro getTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" * Returns true if a employee with the same identity as {@code employee} exists in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" boolean hasEmployee(Employee employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" * Deletes the given employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" * The employee must exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" void deleteEmployee(Employee target);","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" * Adds the given employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" * {@code employee} must not already exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" void addEmployee(Employee employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" * Replaces the given employee {@code target} with {@code editedEmployee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" * {@code target} must exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" * The employee identity of {@code editedEmployee} must not be the same as","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" * another existing employee in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" void setEmployee(Employee target, Employee editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" /** Returns an unmodifiable view of the filtered employee list */","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" ObservableList\u003cEmployee\u003e getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" * Updates the filter of the filtered employee list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" void updateFilteredEmployeeList(Predicate\u003cEmployee\u003e predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"azumieflare"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" * {@code task} must not already exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"azumieflare"},"content":" void addTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"azumieflare"},"content":" * Deletes the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" * The task must exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"azumieflare"},"content":" void deleteTask(Task target);","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"BryanL2303"},"content":" * Replaces the given employee {@code target} with {@code editedEmployee}.","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" * {@code target} must exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" * The employee identity of {@code editedEmployee} must not be the same as","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" * another existing employee in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":112,"author":{"gitId":"BryanL2303"},"content":" void setTask(Task target, Task editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"azumieflare"},"content":" * Updates the filter of the filtered task list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"azumieflare"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"azumieflare"},"content":" /** Returns an unmodifiable view of the filtered task list */","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"BryanL2303":7,"azumieflare":12,"gavin331":31,"-":73}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * Represents the in-memory model of TaskMasterPro data.","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" private final TaskMasterPro taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" private final FilteredList\u003cEmployee\u003e filteredEmployees;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" private final FilteredList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * Initializes a ModelManager with the given taskMasterPro and userPrefs.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public ModelManager(ReadOnlyTaskMasterPro taskMasterPro, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" requireAllNonNull(taskMasterPro, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" logger.fine(\"Initializing with task master pro: \" + taskMasterPro + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" this.taskMasterPro \u003d new TaskMasterPro(taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cEmployee\u003e employeeList \u003d this.taskMasterPro.getEmployeeList();","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cTask\u003e taskList \u003d this.taskMasterPro.getTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" filteredEmployees \u003d new FilteredList\u003c\u003e(employeeList);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" this.taskList \u003d new FilteredList\u003c\u003e(taskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" this(new TaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" return userPrefs.getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath(Path taskMasterProFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" requireNonNull(taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" userPrefs.setTaskMasterProFilePath(taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskMasterPro \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" this.taskMasterPro.resetData(taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" public ReadOnlyTaskMasterPro getTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" return taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" return taskMasterPro.hasEmployee(employee);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" public void deleteEmployee(Employee target) {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" taskMasterPro.removeEmployee(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" public void addEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(employee);","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EMPLOYEES);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" public void setEmployee(Employee target, Employee editedEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" requireAllNonNull(target, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" taskMasterPro.setEmployee(target, editedEmployee);","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Employee List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" * Returns an unmodifiable view of the list of {@code Employee} backed by the internal list of","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" * {@code versionedTaskMasterPro}","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getFilteredEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" return filteredEmployees;","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" public void updateFilteredEmployeeList(Predicate\u003cEmployee\u003e predicate) {","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" filteredEmployees.setPredicate(predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":139,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"azumieflare"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Task List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"azumieflare"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"azumieflare"},"content":" taskMasterPro.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"azumieflare"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"azumieflare"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"azumieflare"},"content":" taskList.setPredicate(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"azumieflare"},"content":" public void deleteTask(Task target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"azumieflare"},"content":" taskMasterPro.removeTask(target);","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"BryanL2303"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-25"},{"lineNumber":160,"author":{"gitId":"BryanL2303"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"BryanL2303"},"content":" taskMasterPro.setTask(target, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"azumieflare"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":183,"author":{"gitId":"gavin331"},"content":" return taskMasterPro.equals(otherModelManager.taskMasterPro)","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":185,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 filteredEmployees.equals(otherModelManager.filteredEmployees);","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":28,"gavin331":39,"-":111,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/model/ReadOnlyTaskMasterPro.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" * Unmodifiable view of TaskMasterPro","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"public interface ReadOnlyTaskMasterPro {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Returns an unmodifiable view of the employees list.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * This list will not contain any duplicate employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" ObservableList\u003cEmployee\u003e getEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Returns an unmodifiable view of the tasks list.","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cTask\u003e getTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"azumieflare":5,"gavin331":6,"-":11}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"gavin331":1,"-":15}},{"path":"src/main/java/seedu/address/model/TaskMasterPro.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.UniqueEmployeeList;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" * Wraps all data at the TaskMasterPro level","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * Duplicates are not allowed (by .isSameEmployee comparison)","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"public class TaskMasterPro implements ReadOnlyTaskMasterPro {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" private final UniqueEmployeeList employees;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" employees \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" private final TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public TaskMasterPro() {}","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * Creates an TaskMasterPro using the Employees in the {@code toBeCopied}","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public TaskMasterPro(ReadOnlyTaskMasterPro toBeCopied) {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" * Replaces the contents of the Employee list with {@code Employees}.","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" * {@code Employees} must not contain duplicate Employees.","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public void setEmployees(List\u003cEmployee\u003e employees) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" this.employees.setEmployees(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" * Replaces the contents of the task list with {@code tasks}.","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" this.tasks.setTasks(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" * Resets the existing data of this {@code TaskMasterPro} with {@code newData}.","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" public void resetData(ReadOnlyTaskMasterPro newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" setEmployees(newData.getEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" setTasks(newData.getTaskList());","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" //// Employee-level operations","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" * Returns true if an Employee with the same identity as {@code employee} exists in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" * @param employee An instance of the Employee class.","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":" * @return true if an Employee with the same identity as {@code employee} exists in TaskMasterPro.","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" return employees.contains(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" * Adds an Employee to TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" * The Employee must not already exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" * @param employee The employee to be added.","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" public void addEmployee(Employee employee) {","lastModifiedDate":"2024-03-31"},{"lineNumber":92,"author":{"gitId":"BryanL2303"},"content":" employees.add(employee);","lastModifiedDate":"2024-03-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":96,"author":{"gitId":"azumieflare"},"content":" * Replaces the given Employee {@code target} in the list with {@code editedEmployee}.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" * {@code target} must exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"azumieflare"},"content":" * The Employee identity of {@code editedEmployee} must not be the same as","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" * another existing Employee in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"BryanL2303"},"content":" * @param target The employee to be replaced.","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"BryanL2303"},"content":" * @param editedEmployee The new employee to replace the target.","lastModifiedDate":"2024-03-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" public void setEmployee(Employee target, Employee editedEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" requireNonNull(editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" employees.setEmployee(target, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" * Removes {@code key} from this {@code TaskMasterPro}.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" * {@code key} must exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":113,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":114,"author":{"gitId":"BryanL2303"},"content":" * @param key An employee that must exist in TaskMasterPro","lastModifiedDate":"2024-03-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" public void removeEmployee(Employee key) {","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" employees.remove(key);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" * Adds an Employee to TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" * The Employee must not already exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"azumieflare"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"azumieflare"},"content":" tasks.add(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"azumieflare"},"content":" * Removes {@code key} from this {@code TaskMasterPro}.","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" * {@code key} must exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"azumieflare"},"content":" public void removeTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"azumieflare"},"content":" tasks.remove(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"azumieflare"},"content":" return tasks.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":141,"author":{"gitId":"BryanL2303"},"content":" * Replaces the given Task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"BryanL2303"},"content":" * {@code target} must exist in TaskMasterPro.","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"BryanL2303"},"content":" * The Task identity of {@code editedTask} must not be the same as","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"BryanL2303"},"content":" * another existing Task in TaskMasterPro.","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"BryanL2303"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-25"},{"lineNumber":147,"author":{"gitId":"BryanL2303"},"content":" requireNonNull(editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":148,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"BryanL2303"},"content":" tasks.setTask(target, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":150,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":152,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":158,"author":{"gitId":"azumieflare"},"content":" .add(\"Employees\", employees)","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":" return employees.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":174,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof TaskMasterPro)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"gavin331"},"content":" TaskMasterPro otherTaskMasterPro \u003d (TaskMasterPro) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"gavin331"},"content":" return employees.equals(otherTaskMasterPro.employees);","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":184,"author":{"gitId":"gavin331"},"content":" return employees.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":24,"azumieflare":36,"gavin331":39,"-":87,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" private Path taskMasterProFilePath \u003d Paths.get(\"data\" , \"taskmasterpro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" setTaskMasterProFilePath(newUserPrefs.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" return taskMasterProFilePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath(Path taskMasterProFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" requireNonNull(taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" this.taskMasterProFilePath \u003d taskMasterProFilePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 taskMasterProFilePath.equals(otherUserPrefs.taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" return Objects.hash(guiSettings, taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" sb.append(\"\\nLocal data file location : \" + taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":10,"-":78}},{"path":"src/main/java/seedu/address/model/employee/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents an Employee\u0027s address in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" private final String value;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":2,"gavin331":2,"-":60}},{"path":"src/main/java/seedu/address/model/employee/AssignedTasks.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_DUPLICATE_TASKID;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_TASKID;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_NONEXISTENT_TASKS;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import java.util.Hashtable;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.UnassignTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" * Represents an Employee\u0027s AssignedTasks in TaskMasterPro.","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTask(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignedTasks {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" \"TASK_IDS should only contain numeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" /*","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"^[\\\\p{Alnum} ]*$\";","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" private String tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" private Hashtable\u003cInteger, Task\u003e assignedTasks;","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" * Constructs a {@code AssignedTasks}.","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * @param tasks A valid name.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" public AssignedTasks(String tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" requireNonNull(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" checkArgument(isValidTask(tasks), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" this.assignedTasks \u003d new Hashtable\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":" * Gets the tasks assigned to the employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A string containing the tasks assigned to the employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" public String getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" return tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" * Gets the tasks assigned to the employee.","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" * @return A hashtable containing the tasks assigned to the employee.","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" public Hashtable\u003cInteger, Task\u003e getAssignedTasks() {","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"BryanL2303"},"content":" return assignedTasks;","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":" public static boolean isValidTask(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" * JsonSerializableTaskMasterPro will run this after all Employees and Tasks has been added.","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" * The hashtable will be initialized with stored data.","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" public void initiateHashTable(List\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":" if (tasks.equals(\"\")) {","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" return;","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" String[] taskArray \u003d tasks.split(\" \");","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" // Check if taskID matches any of the numbers in tasks","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" for (String taskId : taskArray) {","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(taskId) \u003d\u003d task.getTaskId()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"BryanL2303"},"content":" assignedTasks.put(task.getTaskId(), task);","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"BryanL2303"},"content":" * Adds a new task into assignedTasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The updated AssignedTasks object.","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If the task ID is already present in the assigned tasks.","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" public AssignedTasks assignTask(Task task) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"johnyoozhengxian"},"content":" if (Objects.equals(tasks, \"\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"azumieflare"},"content":" tasks \u003d \"\" + task.getTaskId();","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"BryanL2303"},"content":" assignedTasks.put(task.getTaskId(), task);","lastModifiedDate":"2024-03-25"},{"lineNumber":104,"author":{"gitId":"johnyoozhengxian"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"johnyoozhengxian"},"content":" String[] taskArray \u003d tasks.split(\" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"johnyoozhengxian"},"content":" // Check if taskID matches any of the numbers in tasks","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" for (String taskId : taskArray) {","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(taskId) \u003d\u003d task.getTaskId()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_DUPLICATE_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"johnyoozhengxian"},"content":" // Add the taskID to tasks","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"azumieflare"},"content":" tasks +\u003d \" \" + task.getTaskId();","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"BryanL2303"},"content":" tasks.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"BryanL2303"},"content":" if (assignedTasks.get(task.getTaskId()) !\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_DUPLICATE_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":124,"author":{"gitId":"BryanL2303"},"content":" assignedTasks.put(task.getTaskId(), task);","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":126,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":127,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":" * Removes a task from assignedTasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"johnyoozhengxian"},"content":" * Deletes the specified task from the assigned tasks list.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"johnyoozhengxian"},"content":" * If the specified task ID is not found in the assigned tasks list,","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"johnyoozhengxian"},"content":" * or if the assigned tasks list is empty, a CommandException is thrown.","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"azumieflare"},"content":" * @param taskId The id of the task to be removed.","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"BryanL2303"},"content":" * @return The updated AssignedTasks object.","lastModifiedDate":"2024-03-24"},{"lineNumber":136,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException If the task ID is not present in the assigned tasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":137,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"azumieflare"},"content":" public AssignedTasks unassignTask(int taskId) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"johnyoozhengxian"},"content":" if (Objects.equals(tasks, \"\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_NONEXISTENT_TASKS, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":144,"author":{"gitId":"johnyoozhengxian"},"content":" String[] taskArray \u003d tasks.split(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"johnyoozhengxian"},"content":" StringBuilder updatedTasks \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"johnyoozhengxian"},"content":" boolean taskFound \u003d false;","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"johnyoozhengxian"},"content":" for (String task : taskArray) {","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(task) \u003d\u003d taskId) {","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"johnyoozhengxian"},"content":" taskFound \u003d true;","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"johnyoozhengxian"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"johnyoozhengxian"},"content":" updatedTasks.append(task).append(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"johnyoozhengxian"},"content":" if (!taskFound) {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_TASKID, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"johnyoozhengxian"},"content":" tasks \u003d updatedTasks.toString().trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"BryanL2303"},"content":" if (assignedTasks.get(taskId) \u003d\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_INVALID_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"BryanL2303"},"content":" assignedTasks.remove(taskId);","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"BryanL2303"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"BryanL2303"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"BryanL2303"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"BryanL2303"},"content":" if (!(other instanceof AssignedTasks)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"BryanL2303"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"BryanL2303"},"content":" AssignedTasks otherAssignedTasks \u003d (AssignedTasks) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"BryanL2303"},"content":" return tasks.equals(otherAssignedTasks.tasks) \u0026\u0026 assignedTasks.equals((otherAssignedTasks.assignedTasks));","lastModifiedDate":"2024-03-24"},{"lineNumber":183,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"johnyoozhengxian"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"BryanL2303"},"content":" String taskString \u003d \"\";","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"azumieflare"},"content":" for (int taskId : assignedTasks.keySet()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":189,"author":{"gitId":"BryanL2303"},"content":" // Retrieve the Task using the key","lastModifiedDate":"2024-03-24"},{"lineNumber":190,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d assignedTasks.get(taskId);","lastModifiedDate":"2024-03-24"},{"lineNumber":191,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":192,"author":{"gitId":"BryanL2303"},"content":" // Append the Task details to the string","lastModifiedDate":"2024-03-24"},{"lineNumber":193,"author":{"gitId":"azumieflare"},"content":" taskString +\u003d (task.getTaskId() + \". \" + task.getName() + \"\\n\");","lastModifiedDate":"2024-04-03"},{"lineNumber":194,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"BryanL2303"},"content":" return taskString;","lastModifiedDate":"2024-03-24"},{"lineNumber":196,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"johnyoozhengxian"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"johnyoozhengxian"},"content":" return tasks.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":80,"azumieflare":12,"johnyoozhengxian":110}},{"path":"src/main/java/seedu/address/model/employee/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents an Employee\u0027s email in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" private final String value;","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":2,"gavin331":2,"-":74}},{"path":"src/main/java/seedu/address/model/employee/Employee.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * Represents an Employee in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"public class Employee {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" private static int universalEmployeeId \u003d 1;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" private final EmployeeId employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" private final AssignedTasks tasks;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" public Employee(EmployeeId employeeId, Name name,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" Phone phone, Email email, Address address, AssignedTasks tasks, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" requireAllNonNull(name, phone, email, address, tags, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" this.employeeId \u003d employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"BryanL2303"},"content":" * Updates Employee.EMPLOYEE_ID when loading from JSON","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" public static void setUniversalEmployeeId(int id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"BryanL2303"},"content":" Employee.universalEmployeeId \u003d id;","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":" public static int getUniversalId() {","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" int ret \u003d Employee.universalEmployeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"BryanL2303"},"content":" return ret;","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"BryanL2303"},"content":" * Increments Employee.EMPLOYEE_ID","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" public static void incrementEmployeeId() {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" Employee.universalEmployeeId++;","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" public int getEmployeeId() {","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":" return employeeId.getEmployeeId();","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" public String getName() {","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":" return name.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"content":" public String getPhone() {","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"azumieflare"},"content":" return phone.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"azumieflare"},"content":" public String getEmail() {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"azumieflare"},"content":" return email.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"azumieflare"},"content":" public String getAddress() {","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"azumieflare"},"content":" return address.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":89,"author":{"gitId":"johnyoozhengxian"},"content":" public AssignedTasks getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"johnyoozhengxian"},"content":" return tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"johnyoozhengxian"},"content":" * Assigns a task to the employee by updating the employee\u0027s task list with the given task ID.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" * @param task The task to be assigned to the employee.","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The updated Employee object with the assigned task.","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If the task ID is already present in the employee\u0027s task list.","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"BryanL2303"},"content":" public Employee assignTask(Task task) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" AssignedTasks updatedTasks \u003d tasks.assignTask(task);","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"johnyoozhengxian"},"content":" return new Employee(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"BryanL2303"},"content":" employeeId, name, phone, email, address, updatedTasks, tags);","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"johnyoozhengxian"},"content":" * Removes a task from the employee\u0027s assigned tasks.","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"johnyoozhengxian"},"content":" * @param taskID the ID of the task to be removed","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"johnyoozhengxian"},"content":" * @return a new Employee object with the specified task removed from its assigned tasks","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException if the specified task ID is invalid or the task cannot be removed","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"azumieflare"},"content":" public Employee removeTask(int taskID) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"BryanL2303"},"content":" AssignedTasks updatedTasks \u003d tasks.unassignTask(taskID);","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"johnyoozhengxian"},"content":" return new Employee(","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"BryanL2303"},"content":" employeeId, name, phone, email, address, updatedTasks, tags);","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"BryanL2303"},"content":" * Removes this employee from all assigned tasks.","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":" * This command will be run before this employee is deleted.","lastModifiedDate":"2024-03-25"},{"lineNumber":130,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"BryanL2303"},"content":" public void removeAssignments() {","lastModifiedDate":"2024-03-25"},{"lineNumber":132,"author":{"gitId":"azumieflare"},"content":" for (int taskId : tasks.getAssignedTasks().keySet()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"BryanL2303"},"content":" // Retrieve the Task using the key","lastModifiedDate":"2024-03-25"},{"lineNumber":134,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d tasks.getAssignedTasks().get(taskId);","lastModifiedDate":"2024-03-25"},{"lineNumber":135,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":136,"author":{"gitId":"BryanL2303"},"content":" // Remove this employee from the Task","lastModifiedDate":"2024-03-25"},{"lineNumber":137,"author":{"gitId":"BryanL2303"},"content":" try {","lastModifiedDate":"2024-03-25"},{"lineNumber":138,"author":{"gitId":"azumieflare"},"content":" task.removeEmployee(employeeId.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"BryanL2303"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-25"},{"lineNumber":140,"author":{"gitId":"BryanL2303"},"content":" //Ignore this exception as this error is not important since the Employee is being deleted","lastModifiedDate":"2024-03-25"},{"lineNumber":141,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" * Returns true if both employees have the same name.","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" * This defines a weaker notion of equality between two employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" public boolean isSameEmployee(Employee otherEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" if (otherEmployee \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" return otherEmployee !\u003d null","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 otherEmployee.getName().equals(getName());","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":" * Returns true if both employees have the same identity and data fields.","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"gavin331"},"content":" * This defines a stronger notion of equality between two employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof Employee)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":173,"author":{"gitId":"gavin331"},"content":" Employee otherEmployee \u003d (Employee) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"gavin331"},"content":" return name.equals(otherEmployee.name)","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 phone.equals(otherEmployee.phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 email.equals(otherEmployee.email)","lastModifiedDate":"2024-03-11"},{"lineNumber":177,"author":{"gitId":"BryanL2303"},"content":" \u0026\u0026 address.equals(otherEmployee.address);","lastModifiedDate":"2024-03-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":183,"author":{"gitId":"BryanL2303"},"content":" return Objects.hash(employeeId, name, phone, email, address, tags);","lastModifiedDate":"2024-03-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"BryanL2303"},"content":" .add(\"employeeId\", employeeId)","lastModifiedDate":"2024-03-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":194,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":50,"azumieflare":13,"gavin331":16,"-":87,"johnyoozhengxian":32}},{"path":"src/main/java/seedu/address/model/employee/EmployeeId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":" * Represents an Employee\u0027s Id.","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"public class EmployeeId {","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" private final int employeeId;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":" * Constructs a {@code EmployeeId}.","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" * @param id A valid employeeId.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":" public EmployeeId(int id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" employeeId \u003d id;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Getter for employeeId","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" * @return employeeId for this employee","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public int getEmployeeId() {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" return employeeId;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" return \"\" + employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"BryanL2303":21,"azumieflare":10}},{"path":"src/main/java/seedu/address/model/employee/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents an Employee\u0027s name in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" private final String fullName;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":2,"gavin331":2,"-":63}},{"path":"src/main/java/seedu/address/model/employee/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" * Tests that a {@code Employee}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cEmployee\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public boolean test(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(employee.getName(), keyword));","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"azumieflare":1,"gavin331":4,"-":39}},{"path":"src/main/java/seedu/address/model/employee/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents an Employee\u0027s phone number in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" \"Phone numbers should only contain numbers, should start with either 6, 8 or 9, \"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" + \"and should be exactly 8 digits long\";","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"[689]\\\\d{7}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" private final String value;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":4,"gavin331":2,"-":54}},{"path":"src/main/java/seedu/address/model/employee/UniqueEmployeeList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.DuplicateEmployeeException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.EmployeeNotFoundException;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" * A list of employees that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * An employee is considered unique by comparing using {@code #isSameEmployee(Employee)}. As such, adding and updating","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * of employees uses Employee#Employee(Employee) for equality so as to ensure that the employee being added or updated","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * is unique in terms of identity in the UniqueEmployeeList. However, the removal of a employee uses","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" * Employee#equals(Object) to ensure that the employee with exactly the same fields will be removed.","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * @see Employee#isSameEmployee(Employee)","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"public class UniqueEmployeeList implements Iterable\u003cEmployee\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" private final ObservableList\u003cEmployee\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private final ObservableList\u003cEmployee\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * Returns true if the list contains an equivalent employee as the given argument.","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" public boolean contains(Employee toCheck) {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" return internalList.stream().anyMatch(toCheck::isSameEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" * Adds an employee to the list.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" * The employee must not already exist in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" public void add(Employee toAdd) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" throw new DuplicateEmployeeException();","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * Replaces the employee {@code target} in the list with {@code editedEmployee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" * The employee identity of {@code editedEmployee} must not be the same as another existing employee in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" public void setEmployee(Employee target, Employee editedEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" requireAllNonNull(target, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" throw new EmployeeNotFoundException();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" if (!target.isSameEmployee(editedEmployee) \u0026\u0026 contains(editedEmployee)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" throw new DuplicateEmployeeException();","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" internalList.set(index, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" * Removes the equivalent employee from the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" * The employee must exist in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" public void remove(Employee toRemove) {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" throw new EmployeeNotFoundException();","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" public void setEmployees(UniqueEmployeeList replacement) {","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" * Replaces the contents of this list with {@code employees}.","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" * {@code employees} must not contain duplicate employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" public void setEmployees(List\u003cEmployee\u003e employees) {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" requireAllNonNull(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" if (!employeesAreUnique(employees)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" throw new DuplicateEmployeeException();","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" internalList.setAll(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" public Iterator\u003cEmployee\u003e iterator() {","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof UniqueEmployeeList)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList otherUniqueEmployeeList \u003d (UniqueEmployeeList) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" return internalList.equals(otherUniqueEmployeeList.internalList);","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" * Returns true if {@code employees} contains only unique employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" private boolean employeesAreUnique(List\u003cEmployee\u003e employees) {","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" for (int i \u003d 0; i \u003c employees.size() - 1; i++) {","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" for (int j \u003d i + 1; j \u003c employees.size(); j++) {","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" if (employees.get(i).isSameEmployee(employees.get(j))) {","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"gavin331":149,"johnyoozhengxian":5}},{"path":"src/main/java/seedu/address/model/employee/exceptions/DuplicateEmployeeException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee.exceptions;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" * Signals that the operation will result in duplicate Employees (Employees are considered duplicates if they","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" * have the same identity).","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"public class DuplicateEmployeeException extends RuntimeException {","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" public DuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" super(\"Operation would result in duplicate employees\");","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"gavin331":11}},{"path":"src/main/java/seedu/address/model/employee/exceptions/EmployeeNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee.exceptions;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" * Signals that the operation is unable to find the specified employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"public class EmployeeNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"gavin331":6}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents a Tag in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}\\\\s]+\";","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":1,"gavin331":1,"-":60}},{"path":"src/main/java/seedu/address/model/task/AssignedEmployees.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.Messages.MESSAGE_DUPLICATE_TASKID;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_EMPLOYEEID;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.Messages.MESSAGE_NONEXISTENT_EMPLOYEES;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import java.util.Hashtable;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import java.util.List;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.UnassignTaskCommand;","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" * Represents a Task\u0027s AssignedEmployees in TaskMasterPro.","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmployee(String)}","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"public class AssignedEmployees {","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" private static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" \"TASK_IDS should only contain numeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" /*","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"^[\\\\p{Alnum} ]*$\";","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" private String employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" private Hashtable\u003cInteger, Employee\u003e assignedEmployees;","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" * Constructs a {@code AssignedEmployees}.","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" * @param employees A valid name.","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" public AssignedEmployees(String employees) {","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" requireNonNull(employees);","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" checkArgument(isValidEmployee(employees), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" this.employees \u003d employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" this.assignedEmployees \u003d new Hashtable\u003c\u003e();","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" * Gets the employees assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" * @return A string containing the employees assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"BryanL2303"},"content":" public String getEmployees() {","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":" return employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"BryanL2303"},"content":" * Gets the employees assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" * @return A hashtable containing the employees assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":" public Hashtable\u003cInteger, Employee\u003e getAssignedEmployees() {","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" return assignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" public static boolean isValidEmployee(String test) {","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" * JsonSerializableTaskMasterPro will run this after all Employees and Tasks has been added.","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" * The hashtable will be initialized with stored data.","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":" public void initiateHashTable(List\u003cEmployee\u003e employeeList) {","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" if (employees.equals(\"\")) {","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" return;","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":" String[] employeeArray \u003d employees.split(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" // Check if employeeID matches any of the numbers in employees","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" for (String employeeId : employeeArray) {","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"BryanL2303"},"content":" for (Employee employee : employeeList) {","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(employeeId) \u003d\u003d employee.getEmployeeId()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"BryanL2303"},"content":" assignedEmployees.put(employee.getEmployeeId(), employee);","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"BryanL2303"},"content":" * Adds a new employee into assignedEmployees.","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"BryanL2303"},"content":" * @param employee The employee to be added.","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"BryanL2303"},"content":" * @return The updated AssignedEmployees object.","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException If the employee ID is already present in the assigned employees.","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"BryanL2303"},"content":" public AssignedEmployees assignEmployee(Employee employee) throws CommandException {","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"BryanL2303"},"content":" if (Objects.equals(employees, \"\")) {","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"azumieflare"},"content":" employees \u003d \"\" + employee.getEmployeeId();","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" assignedEmployees.put(employee.getEmployeeId(), employee);","lastModifiedDate":"2024-03-25"},{"lineNumber":105,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-25"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"BryanL2303"},"content":" String[] employeeArray \u003d employees.split(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" // Check if employeeID matches any of the numbers in employees","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"BryanL2303"},"content":" for (String employeeId : employeeArray) {","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(employeeId) \u003d\u003d employee.getEmployeeId()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":113,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_DUPLICATE_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":115,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":116,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":117,"author":{"gitId":"BryanL2303"},"content":" // Add the taskID to tasks","lastModifiedDate":"2024-03-25"},{"lineNumber":118,"author":{"gitId":"azumieflare"},"content":" employees +\u003d \" \" + employee.getEmployeeId();","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"BryanL2303"},"content":" employees.trim();","lastModifiedDate":"2024-03-25"},{"lineNumber":120,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":121,"author":{"gitId":"BryanL2303"},"content":" if (assignedEmployees.get(employee.getEmployeeId()) !\u003d null) {","lastModifiedDate":"2024-03-25"},{"lineNumber":122,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":123,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_DUPLICATE_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":124,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":125,"author":{"gitId":"BryanL2303"},"content":" assignedEmployees.put(employee.getEmployeeId(), employee);","lastModifiedDate":"2024-03-25"},{"lineNumber":126,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-25"},{"lineNumber":127,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":130,"author":{"gitId":"BryanL2303"},"content":" * Removes an employee from assignedEmployees.","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"BryanL2303"},"content":" * Deletes the specified employee from the assigned employees list.","lastModifiedDate":"2024-03-25"},{"lineNumber":132,"author":{"gitId":"BryanL2303"},"content":" * If the specified employee ID is not found in the assigned employees list,","lastModifiedDate":"2024-03-25"},{"lineNumber":133,"author":{"gitId":"BryanL2303"},"content":" * or if the assigned employees list is empty, a CommandException is thrown.","lastModifiedDate":"2024-03-25"},{"lineNumber":134,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":135,"author":{"gitId":"BryanL2303"},"content":" * @param employeeId The employee to be removed.","lastModifiedDate":"2024-03-25"},{"lineNumber":136,"author":{"gitId":"BryanL2303"},"content":" * @return The updated AssignedEmployees object.","lastModifiedDate":"2024-03-25"},{"lineNumber":137,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException If the employee ID is not present in the assigned employees.","lastModifiedDate":"2024-03-25"},{"lineNumber":138,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":139,"author":{"gitId":"azumieflare"},"content":" public AssignedEmployees unassignEmployee(int employeeId) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"BryanL2303"},"content":" if (Objects.equals(employees, \"\")) {","lastModifiedDate":"2024-03-25"},{"lineNumber":141,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_NONEXISTENT_EMPLOYEES, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"BryanL2303"},"content":" String[] employeeArray \u003d employees.split(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"BryanL2303"},"content":" StringBuilder updatedEmployees \u003d new StringBuilder();","lastModifiedDate":"2024-03-25"},{"lineNumber":147,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":148,"author":{"gitId":"BryanL2303"},"content":" boolean employeeFound \u003d false;","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":150,"author":{"gitId":"BryanL2303"},"content":" for (String employee : employeeArray) {","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(employee) \u003d\u003d employeeId) {","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"BryanL2303"},"content":" employeeFound \u003d true;","lastModifiedDate":"2024-03-25"},{"lineNumber":153,"author":{"gitId":"BryanL2303"},"content":" } else {","lastModifiedDate":"2024-03-25"},{"lineNumber":154,"author":{"gitId":"BryanL2303"},"content":" updatedEmployees.append(employee).append(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":155,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":156,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":157,"author":{"gitId":"BryanL2303"},"content":" if (!employeeFound) {","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_INVALID_EMPLOYEEID, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":160,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"BryanL2303"},"content":" employees \u003d updatedEmployees.toString().trim();","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"BryanL2303"},"content":" if (assignedEmployees.get(employeeId) \u003d\u003d null) {","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_INVALID_EMPLOYEEID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"BryanL2303"},"content":" assignedEmployees.remove(employeeId);","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-25"},{"lineNumber":169,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":170,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":171,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":172,"author":{"gitId":"BryanL2303"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-25"},{"lineNumber":173,"author":{"gitId":"BryanL2303"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" return true;","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"BryanL2303"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-25"},{"lineNumber":178,"author":{"gitId":"BryanL2303"},"content":" if (!(other instanceof AssignedEmployees)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":179,"author":{"gitId":"BryanL2303"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":180,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":181,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":182,"author":{"gitId":"BryanL2303"},"content":" AssignedEmployees otherAssignedEmployees \u003d (AssignedEmployees) other;","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"BryanL2303"},"content":" return employees.equals(otherAssignedEmployees.employees)","lastModifiedDate":"2024-03-25"},{"lineNumber":184,"author":{"gitId":"BryanL2303"},"content":" \u0026\u0026 assignedEmployees.equals((otherAssignedEmployees.assignedEmployees));","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"BryanL2303"},"content":" public String toString() {","lastModifiedDate":"2024-03-25"},{"lineNumber":189,"author":{"gitId":"BryanL2303"},"content":" String employeeString \u003d \"\";","lastModifiedDate":"2024-03-25"},{"lineNumber":190,"author":{"gitId":"azumieflare"},"content":" for (int employeeId : assignedEmployees.keySet()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":191,"author":{"gitId":"BryanL2303"},"content":" // Retrieve the Employee using the key","lastModifiedDate":"2024-03-25"},{"lineNumber":192,"author":{"gitId":"BryanL2303"},"content":" Employee employee \u003d assignedEmployees.get(employeeId);","lastModifiedDate":"2024-03-25"},{"lineNumber":193,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":194,"author":{"gitId":"BryanL2303"},"content":" // Append the Employee details to the string","lastModifiedDate":"2024-03-25"},{"lineNumber":195,"author":{"gitId":"azumieflare"},"content":" employeeString +\u003d (employee.getEmployeeId() + \". \" + employee.getName() + \"\\n\");","lastModifiedDate":"2024-04-03"},{"lineNumber":196,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":197,"author":{"gitId":"BryanL2303"},"content":" return employeeString;","lastModifiedDate":"2024-03-25"},{"lineNumber":198,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":199,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":200,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":201,"author":{"gitId":"BryanL2303"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-25"},{"lineNumber":202,"author":{"gitId":"BryanL2303"},"content":" return employees.hashCode();","lastModifiedDate":"2024-03-25"},{"lineNumber":203,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":204,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"BryanL2303":192,"azumieflare":12}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" * Represents a Task in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"public class Task {","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" // Identity fields","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" private static int universalTaskId \u003d 1;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" private final TaskName taskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" private final TaskId taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" private final TaskStatus taskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" private final AssignedEmployees employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" public Task(TaskName name, TaskId id, TaskStatus status, AssignedEmployees employees) {","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" taskName \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" taskId \u003d id;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" taskStatus \u003d status;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" this.employees \u003d employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" * Updates Task.TASK_ID when loading from JSON","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" public static void setUniversalTaskId(int id) {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" Task.universalTaskId \u003d id;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" public static int getUniversalId() {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" int ret \u003d Task.universalTaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" return ret;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" * Increments Task.TASK_ID","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" public static void incrementTaskId() {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" Task.universalTaskId++;","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" public String getName() {","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" return taskName.getTaskName();","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" public int getTaskId() {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" return taskId.getId();","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" public String getTaskStatus() {","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" return taskStatus.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"BryanL2303"},"content":" public AssignedEmployees getEmployees() {","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":" return employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":" public void markTask() {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":" taskStatus.setTaskDone();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":" taskStatus.setTaskNotDone();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"BryanL2303"},"content":" * Assigns an employee to the task by updating the task\u0027s employee list with the given employee ID.","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":" * @param employee The employee to be assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":" * @return The updated Task object with the assigned employee.","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException If the employee ID is already present in the task\u0027s employee list.","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" public Task assignEmployee(Employee employee) throws CommandException {","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" AssignedEmployees updatedEmployees \u003d employees.assignEmployee(employee);","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" return new Task(","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":" taskName, taskId, taskStatus, updatedEmployees);","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":" * Removes an employee from the task\u0027s assigned employees.","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" * @param employeeId the ID of the employee to be removed","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" * @return a new Task object with the specified employee removed from its assigned employees","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException if the specified employee ID is invalid or the employee cannot be removed","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"azumieflare"},"content":" public Task removeEmployee(int employeeId) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" AssignedEmployees updatedEmployees \u003d employees.unassignEmployee(employeeId);","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"BryanL2303"},"content":" return new Task(","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" taskName, taskId, taskStatus, updatedEmployees);","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"BryanL2303"},"content":" * Removes this task from all assigned employees.","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" * This command will be run before this task is deleted.","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"BryanL2303"},"content":" public void removeAssignments() {","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"azumieflare"},"content":" for (int employeeId : employees.getAssignedEmployees().keySet()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" // Retrieve the Employee using the key","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"BryanL2303"},"content":" Employee employee \u003d employees.getAssignedEmployees().get(employeeId);","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"BryanL2303"},"content":" // Remove this task from the employee","lastModifiedDate":"2024-03-25"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" try {","lastModifiedDate":"2024-03-25"},{"lineNumber":105,"author":{"gitId":"azumieflare"},"content":" employee.removeTask(taskId.getId());","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"BryanL2303"},"content":" //Ignore this exception as this error is not important since the Task is being deleted","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":112,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"azumieflare"},"content":" * Returns true if both tasks have the same name.","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"azumieflare"},"content":" * This defines a weaker notion of equality between two employees.","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"azumieflare"},"content":" public boolean isSameTask(Task otherTask) {","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"azumieflare"},"content":" if (otherTask \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"azumieflare"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"azumieflare"},"content":" return otherTask !\u003d null","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"azumieflare"},"content":" \u0026\u0026 otherTask.getName().equals(getName());","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"azumieflare"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"azumieflare"},"content":" .add(\"taskId\", taskId)","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"azumieflare"},"content":" .add(\"taskName\", taskName)","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"taskStatus\", taskStatus)","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"BryanL2303"},"content":" .add(\"employees\", employees)","lastModifiedDate":"2024-03-25"},{"lineNumber":132,"author":{"gitId":"azumieflare"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":51,"azumieflare":70,"gavin331":1,"johnyoozhengxian":12}},{"path":"src/main/java/seedu/address/model/task/TaskId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":" * Represents a Task\u0027s Id.","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"public class TaskId {","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" private final int taskId;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code TaskId}.","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" * @param id A valid taskId.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" public TaskId(int id) {","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" taskId \u003d id;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Getter for taskId","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" * @return taskId for this task","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public int getId() {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" return taskId;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" return \"\" + taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":31}},{"path":"src/main/java/seedu/address/model/task/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" * A list of tasks.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"public class TaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" private final ObservableList\u003cTask\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" private final ObservableList\u003cTask\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public void add(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" internalList.add(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" * Replaces the task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" * The task identity of {@code editedTask} must not be the same as another existing tasks in the list.","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" internalList.set(index, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" * Removes the equivalent task from the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" * The Employee must exist in the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" public void remove(Task toRemove) {","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" * Returns true if the list contains an equivalent task as the given argument.","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" public boolean contains(Task toCheck) {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" return internalList.stream().anyMatch(toCheck::isSameTask);","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"azumieflare"},"content":" internalList.setAll(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":18,"azumieflare":56,"johnyoozhengxian":1}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":" * Represents a Task\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"public class TaskName {","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" private static final String MESSAGE_CONSTRAINTS \u003d // ToDo, check if should use this (compare to Employee.Name)","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" private final String taskName;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code TaskName}.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" * @param name A valid task name.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public TaskName(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" taskName \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" * Getter for taskName","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" * @return taskName for this task","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" public String getTaskName() {","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" return taskName;","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" return taskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":34}},{"path":"src/main/java/seedu/address/model/task/TaskNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" * Tests that a {@code Task}\u0027s {@code Description} matches any of the keywords given.","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"public class TaskNameContainsKeywordsPredicate implements Predicate\u003cTask\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" public TaskNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public boolean test(Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(task.getName().toString(), keyword));","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof TaskNameContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate otherPredicate \u003d (TaskNameContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" return keywords.equals(otherPredicate.keywords);","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"gavin331":44}},{"path":"src/main/java/seedu/address/model/task/TaskStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":" * Represents the status of a task, which can be either completed or in progress.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"public class TaskStatus {","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" private boolean isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code TaskStatus}.","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" * @param taskStatus A valid boolean.","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" public TaskStatus(boolean taskStatus) {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d taskStatus;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code TaskStatus}.","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" * @param taskStatus A valid String.","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public TaskStatus(String taskStatus) {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" assert taskStatus !\u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" if (taskStatus.equals(\"Completed\")) {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" } else if (taskStatus.equals(\"In Progress\")) {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" public void setTaskDone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" public void setTaskNotDone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" return isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" if (isCompleted) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" return \"Completed\";","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" return \"In Progress\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"azumieflare":25,"johnyoozhengxian":24}},{"path":"src/main/java/seedu/address/model/task/exceptions/TaskNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":" * Signals that the operation is unable to find the specified task.","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"public class TaskNotFoundException extends RuntimeException {","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":6,"johnyoozhengxian":1}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Contains utility methods for populating {@code TaskMasterPro} with sample data.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public static Employee[] getSampleEmployees() {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" Employee.setUniversalEmployeeId(7);","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" return new Employee[] {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(1), new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" new Email(\"alexyeoh@gmail.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Chief Software Engineer\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(2), new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" new Email(\"berniceyu@gmail.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Software Engineer\", \"Intern\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(3), new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" new Email(\"charlotte@outlook.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Software Developer\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(4), new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" new Email(\"lidavid@yahoo.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Software Developer\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(5), new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" new Email(\"irfan@gmail.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Software Developer\", \"Intern\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(6), new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" new Email(\"royb@hotmail.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Art Designer\"))","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" public static Task[] getSampleTasks() {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(4);","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" return new Task[] {","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" new Task(new TaskName(\"Integrate AI into existing work\"), new TaskId(1), new TaskStatus(false),","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" new AssignedEmployees(\"\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" new Task(new TaskName(\"Create new GUI for data display\"), new TaskId(2), new TaskStatus(true),","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" new AssignedEmployees(\"\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" new Task(new TaskName(\"Intern Project - Build a chatbot\"), new TaskId(3), new TaskStatus(false),","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" new AssignedEmployees(\"\"))","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" public static ReadOnlyTaskMasterPro getSampleTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" TaskMasterPro sampleAb \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":" Employee[] employees \u003d getSampleEmployees();","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":" Task[] tasks \u003d getSampleTasks();","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" //tasks[0].assignEmployee(employees[0]); TODO, assign task 1 to employee 1,2,3, t2 to e3,4,5, t3 to e5,6","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" for (Employee sampleEmployee : employees) {","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" sampleAb.addEmployee(sampleEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" for (Task sampleTask : tasks) {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" sampleAb.addTask(sampleTask);","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"BryanL2303":7,"azumieflare":34,"gavin331":8,"-":32,"johnyoozhengxian":7}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedEmployee.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * Jackson-friendly version of {@link Employee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"class JsonAdaptedEmployee {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Employee\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" private final int employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" private String tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * Constructs a {@code JsonAdaptedEmployee} with the given employee details.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" public JsonAdaptedEmployee(@JsonProperty(\"employeeId\") int employeeId, @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" @JsonProperty(\"tasks\") String tasks,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" this.employeeId \u003d employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" * Converts a given {@code Employee} into this class for Jackson use.","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" public JsonAdaptedEmployee(Employee source) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" employeeId \u003d source.getEmployeeId();","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" name \u003d source.getName();","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":" phone \u003d source.getPhone();","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":" email \u003d source.getEmail();","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":" address \u003d source.getAddress();","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":" tasks \u003d source.getTasks().getTasks();","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" * Converts this Jackson-friendly adapted employee object into the model\u0027s {@code Employee} object.","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" public Employee toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" final List\u003cTag\u003e employeeTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" employeeTags.add(tag.toModelType());","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" // Consider to add in checks like the fields below this","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" final EmployeeId modelEmployeeId \u003d new EmployeeId(employeeId);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"johnyoozhengxian"},"content":" if (!AssignedTasks.isValidTask(tasks)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"johnyoozhengxian"},"content":" throw new IllegalValueException(AssignedTasks.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"johnyoozhengxian"},"content":" final AssignedTasks modelTasks \u003d new AssignedTasks(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(employeeTags);","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"johnyoozhengxian"},"content":" return new Employee(modelEmployeeId, modelName, modelPhone, modelEmail, modelAddress, modelTasks, modelTags);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":5,"gavin331":12,"-":85,"johnyoozhengxian":17}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class JsonAdaptedTask {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" private final String taskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" private final int taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" private String taskStatus;","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" private String employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code JsonAdaptedEmployee} with the given Employee details.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" public JsonAdaptedTask(@JsonProperty(\"taskName\") String taskName, @JsonProperty(\"taskId\") int taskId,","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" @JsonProperty(\"taskStatus\") String taskStatus,","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" @JsonProperty(\"employees\") String employees) {","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" this.taskId \u003d taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" this.taskStatus \u003d taskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" this.employees \u003d employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" taskName \u003d source.getName();","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" taskId \u003d source.getTaskId();","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" taskStatus \u003d source.getTaskStatus().toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" employees \u003d source.getEmployees().getEmployees();","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" * Converts this Jackson-friendly adapted Employee object into the model\u0027s {@code Task} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted Employee.","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" if (taskName \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" TaskName.class.getSimpleName()));","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" final TaskName modelName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" final TaskId modelId \u003d new TaskId(taskId);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":" final TaskStatus modelStatus \u003d new TaskStatus(taskStatus);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" final AssignedEmployees modelEmployees \u003d new AssignedEmployees(employees);","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" return new Task(modelName, modelId, modelStatus, modelEmployees);","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":9,"azumieflare":54,"johnyoozhengxian":4}},{"path":"src/main/java/seedu/address/storage/JsonSerializableTaskMasterPro.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * An Immutable TaskMasterPro that is serializable to JSON format.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"@JsonRootName(value \u003d \"taskmasterpro\")","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"class JsonSerializableTaskMasterPro {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_DUPLICATE_EMPLOYEE \u003d \"Employees list contains duplicate employee(s).\";","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" private final List\u003cJsonAdaptedEmployee\u003e employees \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" private final int employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" private final int taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * Constructs a {@code JsonSerializableTaskMasterPro} with the given employees.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public JsonSerializableTaskMasterPro(@JsonProperty(\"employees\") List\u003cJsonAdaptedEmployee\u003e employees) {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" this.employees.addAll(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" employeeId \u003d Employee.getUniversalId();","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" taskId \u003d Task.getUniversalId();","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Converts a given {@code ReadOnlyTaskMasterPro} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableTaskMasterPro}.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" public JsonSerializableTaskMasterPro(ReadOnlyTaskMasterPro source) {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" employees.addAll(source.getEmployeeList().stream().map(JsonAdaptedEmployee::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"BryanL2303"},"content":" employeeId \u003d Employee.getUniversalId();","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" tasks.addAll(source.getTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" taskId \u003d Task.getUniversalId();","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * Converts this TaskMasterPro into the model\u0027s {@code TaskMasterPro} object.","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" public TaskMasterPro toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" TaskMasterPro taskMasterPro \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" for (JsonAdaptedEmployee jsonAdaptedEmployee : employees) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d jsonAdaptedEmployee.toModelType();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" if (taskMasterPro.hasEmployee(employee)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(employee);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" Employee.setUniversalEmployeeId(employeeId);","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" taskMasterPro.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(taskId);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" List\u003cTask\u003e taskList \u003d taskMasterPro.getTaskList();","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" List\u003cEmployee\u003e employeeList \u003d taskMasterPro.getEmployeeList();","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" for (Employee e : employeeList) {","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" e.getTasks().initiateHashTable(taskList);","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" t.getEmployees().initiateHashTable(employeeList);","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" return taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"BryanL2303":17,"azumieflare":13,"gavin331":24,"-":36}},{"path":"src/main/java/seedu/address/storage/JsonTaskMasterProStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * A class to access TaskMasterPro data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class JsonTaskMasterProStorage implements TaskMasterProStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonTaskMasterProStorage.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" private Path filePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public JsonTaskMasterProStorage(Path filePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" return filePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro() throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" return readTaskMasterPro(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" * Similar to {@link #readTaskMasterPro()}.","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" public Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" Optional\u003cJsonSerializableTaskMasterPro\u003e jsonTaskMasterPro \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" filePath, JsonSerializableTaskMasterPro.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" if (!jsonTaskMasterPro.isPresent()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" return Optional.of(jsonTaskMasterPro.get().toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" saveTaskMasterPro(taskMasterPro, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" * Similar to {@link #saveTaskMasterPro(ReadOnlyTaskMasterPro)}.","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, Path filePath) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" requireNonNull(taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" JsonUtil.saveJsonFile(new JsonSerializableTaskMasterPro(taskMasterPro), filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gavin331":79}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"public interface Storage extends TaskMasterProStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro() throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"gavin331":5,"-":27}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" * Manages storage of TaskMasterPro data in local storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" private TaskMasterProStorage taskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Creates a {@code StorageManager} with the given {@code TaskMasterProStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public StorageManager(TaskMasterProStorage taskMasterProStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" this.taskMasterProStorage \u003d taskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskMasterPro methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" return taskMasterProStorage.getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" public Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro() throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" return readTaskMasterPro(taskMasterProStorage.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" public Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" return taskMasterProStorage.readTaskMasterPro(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" saveTaskMasterPro(taskMasterPro, taskMasterProStorage.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, Path filePath) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" taskMasterProStorage.saveTaskMasterPro(taskMasterPro, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":17,"-":61}},{"path":"src/main/java/seedu/address/storage/TaskMasterProStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" * Represents a storage for {@link TaskMasterPro}.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public interface TaskMasterProStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" * Returns TaskMasterPro data as a {@link ReadOnlyTaskMasterPro}.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro() throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * @see #getTaskMasterProFilePath()","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" * Saves the given {@link ReadOnlyTaskMasterPro} to the storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" * @param taskMasterPro cannot be null.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" * @see #saveTaskMasterPro(ReadOnlyTaskMasterPro)","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, Path filePath) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"BryanL2303":1,"gavin331":46}},{"path":"src/main/java/seedu/address/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a storage for {@link seedu.address.model.UserPrefs}.","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface UserPrefsStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Saves the given {@link seedu.address.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"BryanL2303":1,"-":36}},{"path":"src/main/java/seedu/address/ui/EmployeeCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * An UI component that displays information of a {@code Employee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"public class EmployeeCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" private static final String FXML \u003d \"EmployeeListCard.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/TaskMasterPro-level4/issues/336\"\u003eThe issue on TaskMasterPro level 4\u003c/a\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public final Employee employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" private Label employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" private Label tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" * Creates a {@code EmployeeCode} with the given {@code Employee} and index to display.","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public EmployeeCard(Employee employee, int displayedIndex) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" this.employee \u003d employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" employeeId.setText(\"Employee ID: \" + employee.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" name.setText(employee.getName());","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" phone.setText(employee.getPhone());","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" address.setText(employee.getAddress());","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" email.setText(employee.getEmail());","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" tasks.setText(\"Task Assigned: \\n\" + employee.getTasks().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" employee.getTags().stream()","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"BryanL2303":4,"azumieflare":6,"gavin331":9,"-":45,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/ui/EmployeeListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Panel containing the list of employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class EmployeeListPanel extends UiPart\u003cRegion\u003e implements Panel {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" private static final String FXML \u003d \"EmployeeListPanel.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" private final Logger logger \u003d LogsCenter.getLogger(EmployeeListPanel.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" private ListView\u003cEmployee\u003e employeeListView;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Creates a {@code EmployeeListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public EmployeeListPanel(ObservableList\u003cEmployee\u003e employeeList) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" super(FXML);","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" employeeListView.setItems(employeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" employeeListView.setCellFactory(listView -\u003e new EmployeeListViewCell());","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Employee} using a {@code EmployeeCard}.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" class EmployeeListViewCell extends ListCell\u003cEmployee\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" protected void updateItem(Employee employee, boolean empty) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" super.updateItem(employee, empty);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" if (empty || employee \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" setText(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" } else {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" setGraphic(new EmployeeCard(employee, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"azumieflare":1,"gavin331":48}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t15-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"BryanL2303":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" private Panel panel;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" private VBox employeeList;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" private StackPane panelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"azumieflare"},"content":" panel \u003d new EmployeeListPanel(logic.getFilteredEmployeeList());","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"azumieflare"},"content":" EmployeeListPanel placeholder \u003d (EmployeeListPanel) panel;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"azumieflare"},"content":" panelPlaceholder.getChildren().add(placeholder.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"BryanL2303"},"content":" * Shows the list of employees.","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"BryanL2303"},"content":" public void handleShowEmployees() {","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"azumieflare"},"content":" panel \u003d new EmployeeListPanel(logic.getFilteredEmployeeList());","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"azumieflare"},"content":" EmployeeListPanel placeholder \u003d (EmployeeListPanel) panel;","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"azumieflare"},"content":" panelPlaceholder.getChildren().add(placeholder.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"BryanL2303"},"content":" * Shows the list of tasks.","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"BryanL2303"},"content":" public void handleShowTasks() {","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"azumieflare"},"content":" panel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"azumieflare"},"content":" TaskListPanel placeholder \u003d (TaskListPanel) panel;","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"azumieflare"},"content":" panelPlaceholder.getChildren().add(placeholder.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"BryanL2303"},"content":" if (commandResult.isShowEmployees()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"BryanL2303"},"content":" handleShowEmployees();","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"BryanL2303"},"content":" if (commandResult.isShowTasks()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"BryanL2303"},"content":" handleShowTasks();","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"BryanL2303":27,"azumieflare":11,"gavin331":1,"-":187}},{"path":"src/main/java/seedu/address/ui/Panel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":" * Interface for GUI","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"public interface Panel {","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"azumieflare":7}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" * An UI component that displays information of a {@code Task}.","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/TaskMasterPro-level4/issues/336\"\u003eThe issue on TaskMasterPro level 4\u003c/a\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public final Task task;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" @javafx.fxml.FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" private Label name;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" private Label taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" private Label id;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" private Label status;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" private Label employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" * Creates a {@code TaskCode} with the given {@code Task} and index to display.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" public TaskCard(Task task, int displayedIndex) {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" super(FXML);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" name.setText(task.getName());","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" taskId.setText(\"Task ID: \" + task.getTaskId());","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":" status.setText(task.getTaskStatus().toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" employees.setText(\"Employees Assigned: \\n\" + task.getEmployees().toString());","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":5,"azumieflare":43,"johnyoozhengxian":4}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" * Panel containing the list of tasks.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e implements Panel {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TaskListPanel.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" @javafx.fxml.FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" * Creates a {@code TaskListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" super(FXML);","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListPanel.TaskListViewCell());","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Task} using a {@code TaskCard}.","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" setText(null);","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" } else {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" setGraphic(new TaskCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" * Shows the tasks list panel.","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"BryanL2303"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"BryanL2303"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"BryanL2303"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"BryanL2303"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"BryanL2303"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"BryanL2303"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" public void show() {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" logger.fine(\"Showing all tasks.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"BryanL2303"},"content":" getRoot().setVisible(true);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"BryanL2303"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" return getRoot().isVisible();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":" public void hide() {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" getRoot().setVisible(false);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":37,"azumieflare":48}},{"path":"src/main/java/seedu/address/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** Resource folder where FXML files are stored. */","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"BryanL2303":1,"-":86}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"gavin331"},"content":"#filterField, #employeeListPanel, #employeeWebpage {","lastModifiedDate":"2024-03-11"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"gavin331":1,"-":351}},{"path":"src/main/resources/view/EmployeeListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" \u003cLabel fx:id\u003d\"employeeId\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$employeeId\" /\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" \u003cLabel fx:id\u003d\"tasks\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tasks\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":1,"-":36,"johnyoozhengxian":2}},{"path":"src/main/resources/view/EmployeeListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" \u003cListView fx:id\u003d\"employeeListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":1,"-":7}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" title\u003d\"TaskMasterPro\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":48,"author":{"gitId":"BryanL2303"},"content":" \u003cVBox fx:id\u003d\"employeeList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" minHeight\u003d\"345\" prefHeight\u003d\"345\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" \u003cStackPane fx:id\u003d\"panelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" minHeight\u003d\"340\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":3,"-":56}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"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-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"20\" GridPane.columnIndex\u003d\"0\"\u003e \u003c!-- Change minHeight for box size--\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"taskId\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$taskId\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" \u003cLabel fx:id\u003d\"employees\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$employees\" /\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" \u003c!-- ToDo: for additional fields","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" --\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":38,"johnyoozhengxian":1}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":1,"-":7}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" final Index fifthEmployeeIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" assertTrue(fifthEmployeeIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" assertTrue(fifthEmployeeIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" assertTrue(fifthEmployeeIndex.equals(fifthEmployeeIndex));","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" assertFalse(fifthEmployeeIndex.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" assertFalse(fifthEmployeeIndex.equals(5.0f));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" assertFalse(fifthEmployeeIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"gavin331":7,"-":60}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_EMPLOYEEID;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"import seedu.address.storage.JsonTaskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" JsonTaskMasterProStorage taskMasterProStorage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" new JsonTaskMasterProStorage(temporaryFolder.resolve(\"taskMasterPro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" StorageManager storage \u003d new StorageManager(taskMasterProStorage, userPrefsStorage);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"johnyoozhengxian"},"content":" // @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":" // public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"johnyoozhengxian"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"johnyoozhengxian"},"content":" // LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"johnyoozhengxian"},"content":" // }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" //","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" // @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"johnyoozhengxian"},"content":" // public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"johnyoozhengxian"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"johnyoozhengxian"},"content":" // LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"johnyoozhengxian"},"content":" // }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" public void getFilteredEmployeeList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredEmployeeList().remove(0));","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"gavin331"},"content":" // Inject LogicManager with an TaskMasterProStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" JsonTaskMasterProStorage taskMasterProStorage \u003d new JsonTaskMasterProStorage(prefPath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, Path filePath)","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":" StorageManager storage \u003d new StorageManager(taskMasterProStorage, userPrefsStorage);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"gavin331"},"content":" // Triggers the saveTaskMasterPro method by executing an add command","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"gavin331"},"content":" Employee expectedEmployee \u003d new EmployeeBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"gavin331"},"content":" expectedModel.addEmployee(expectedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":177,"author":{"gitId":"azumieflare"},"content":" public void execute_modelNotNull_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"azumieflare"},"content":" assertNotNull(model.getTaskMasterPro());","lastModifiedDate":"2024-03-14"},{"lineNumber":179,"author":{"gitId":"azumieflare"},"content":" assertNotNull(model.getFilteredTaskList());","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"azumieflare"},"content":" assertNotNull(model.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":181,"author":{"gitId":"azumieflare"},"content":" assertNotNull(model.getGuiSettings());","lastModifiedDate":"2024-03-14"},{"lineNumber":182,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":183,"author":{"gitId":"azumieflare"},"content":" model.setGuiSettings(null);","lastModifiedDate":"2024-03-14"},{"lineNumber":184,"author":{"gitId":"azumieflare"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":185,"author":{"gitId":"azumieflare"},"content":" assertEquals(e.getMessage(), null);","lastModifiedDate":"2024-03-14"},{"lineNumber":186,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":188,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":14,"gavin331":18,"-":144,"johnyoozhengxian":11}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" public void execute_newEmployee_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" expectedModel.addEmployee(validEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" assertCommandSuccess(new AddCommand(validEmployee), model,","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validEmployee)),","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" public void execute_duplicateEmployee_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" Employee employeeInList \u003d model.getTaskMasterPro().getEmployeeList().get(0);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" assertCommandFailure(new AddCommand(employeeInList), model,","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" AddCommand.MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"gavin331":14,"-":34}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public void constructor_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public void execute_employeeAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" ModelStubAcceptingEmployeeAdded modelStub \u003d new ModelStubAcceptingEmployeeAdded();","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" CommandResult commandResult \u003d new AddCommand(validEmployee).execute(modelStub);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validEmployee)),","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" assertEquals(Arrays.asList(validEmployee), modelStub.employeesAdded);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" public void execute_duplicateEmployee_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" AddCommand addCommand \u003d new AddCommand(validEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" ModelStub modelStub \u003d new ModelStubWithEmployee(validEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" AddCommand.MESSAGE_DUPLICATE_EMPLOYEE, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" Employee alice \u003d new EmployeeBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" Employee bob \u003d new EmployeeBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath(Path taskMasterProFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" public void addEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterPro(ReadOnlyTaskMasterPro newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" public ReadOnlyTaskMasterPro getTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" public void deleteEmployee(Employee target) {","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" public void setEmployee(Employee target, Employee editedEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getFilteredEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":" public void updateFilteredEmployeeList(Predicate\u003cEmployee\u003e predicate) {","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"azumieflare"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"azumieflare"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"azumieflare"},"content":" public void deleteTask(Task target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"azumieflare"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":178,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"azumieflare"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"azumieflare"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"azumieflare"},"content":" return null;","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"gavin331"},"content":" * A Model stub that contains a single employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"gavin331"},"content":" private class ModelStubWithEmployee extends ModelStub {","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"gavin331"},"content":" private final Employee employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"gavin331"},"content":" ModelStubWithEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":196,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":197,"author":{"gitId":"gavin331"},"content":" this.employee \u003d employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":203,"author":{"gitId":"gavin331"},"content":" return this.employee.isSameEmployee(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"gavin331"},"content":" * A Model stub that always accept the employee being added.","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"gavin331"},"content":" private class ModelStubAcceptingEmployeeAdded extends ModelStub {","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"gavin331"},"content":" final ArrayList\u003cEmployee\u003e employeesAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"gavin331"},"content":" return employeesAdded.stream().anyMatch(employee::isSameEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"gavin331"},"content":" public void addEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"gavin331"},"content":" employeesAdded.add(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"gavin331"},"content":" public ReadOnlyTaskMasterPro getTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":227,"author":{"gitId":"gavin331"},"content":" return new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"BryanL2303":5,"azumieflare":21,"gavin331":51,"-":154}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class AddTaskCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" public void execute_addTaskCommand_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" AddTaskCommand atc \u003d new AddTaskCommand(validTask);","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" AddTaskCommand atc2 \u003d new AddTaskCommand(validTask);","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" atc.execute(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" return;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" assertEquals(123, model.getFilteredTaskList().get(0).getTaskId());","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" assertEquals(\"Test\", model.getFilteredTaskList().get(0).getName());","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" assertEquals(atc.toString(), atc2.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":30,"johnyoozhengxian":1}},{"path":"src/test/java/seedu/address/logic/commands/AssignTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignTaskCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d new Task(new TaskName(\"play game\"), new TaskId(5), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" model.addEmployee(validEmployee);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(task);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" AssignTaskCommand atc \u003d new AssignTaskCommand(5, 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" atc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" assertEquals(\"5\", model.getFilteredEmployeeList().get(0).getTasks().getTasks());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":4,"johnyoozhengxian":31}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public void execute_emptyTaskMasterPro_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public void execute_nonEmptyTaskMasterPro_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" Model model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" expectedModel.setTaskMasterPro(new TaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"gavin331":7,"-":25}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false, false, false)));","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false, false, false)));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, false, false, true)));","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false, false, false).hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, false, false, true).hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"BryanL2303":5,"-":58}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASKS;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String VALID_TASKS_AMY \u003d \"3 6\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String VALID_TASKS_BOB \u003d \"3 6\";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String VALID_TASKS_HUSBAND \u003d \"3 6\";","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String VALID_TASKS_FRIEND \u003d \"3 6\";","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" public static final String VALID_PHONE_AMY \u003d \"61111111\";","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" public static final String VALID_PHONE_BOB \u003d \"62222222\";","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String TASK_DESC_AMY \u003d \" \" + PREFIX_TASKS + VALID_TASKS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String TASK_DESC_BOB \u003d \" \" + PREFIX_TASKS + VALID_TASKS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String TASK_DESC_HUSBAND \u003d \" \" + PREFIX_TASKS + VALID_TASKS_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String TASK_DESC_FRIEND \u003d \" \" + PREFIX_TASKS + VALID_TASKS_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" public static final EditCommand.EditEmployeeDescriptor DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" public static final EditCommand.EditEmployeeDescriptor DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" DESC_AMY \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" .withTasks(VALID_TASKS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" DESC_BOB \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"johnyoozhengxian"},"content":" .withTasks(VALID_TASKS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" * - the TaskMasterPro, filtered employee list and selected employee in {@code actualModel} remain unchanged","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" TaskMasterPro expectedTaskMasterPro \u003d new TaskMasterPro(actualModel.getTaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedTaskMasterPro, actualModel.getTaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" * Updates {@code model}\u0027s filtered list to show only the employee at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" * {@code model}\u0027s TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" public static void showEmployeeAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredEmployeeList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d model.getFilteredEmployeeList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"azumieflare"},"content":" final String[] splitName \u003d employee.getName().split(\"\\\\s+\");","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" assertEquals(1, model.getFilteredEmployeeList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"azumieflare":3,"gavin331":20,"-":105,"johnyoozhengxian":16}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showEmployeeAtIndex;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private Model model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" Employee employeeToDelete \u003d model.getFilteredEmployeeList().get(INDEX_FIRST_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(employeeToDelete.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" Messages.format(employeeToDelete));","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" expectedModel.deleteEmployee(employeeToDelete);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredEmployeeList().size() + 1);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(-1);","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" Employee employeeToDelete \u003d model.getFilteredEmployeeList().get(INDEX_FIRST_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(employeeToDelete.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" Messages.format(employeeToDelete));","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" expectedModel.deleteEmployee(employeeToDelete);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" showNoEmployee(expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" // ensures that outOfBoundIndex is still in bounds of TaskMasterPro list","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskMasterPro().getEmployeeList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(-1);","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(1);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(2);","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(1);","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" int targetIndex \u003d 1;","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" private void showNoEmployee(Model model) {","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(p -\u003e false);","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" assertTrue(model.getFilteredEmployeeList().isEmpty());","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":2,"gavin331":27,"-":83}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" public void execute_deleteTaskCommand_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" model.addTask(validTask);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" assertEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" DeleteTaskCommand dtc \u003d new DeleteTaskCommand(1);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" assertEquals(dtc.toString(), \"seedu.address.logic.commands.DeleteTaskCommand{targetIndex\u003d1}\");","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" dtc.execute(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" return;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" assertEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" dtc \u003d new DeleteTaskCommand(123);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" dtc.execute(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" return;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" assertNotEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":40,"johnyoozhengxian":1}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showEmployeeAtIndex;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" private Model model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder(editedEmployee).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, descriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" Messages.format(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(new TaskMasterPro(model.getTaskMasterPro()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" expectedModel.setEmployee(model.getFilteredEmployeeList().get(0), editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" Index indexLastEmployee \u003d Index.fromOneBased(model.getFilteredEmployeeList()","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" .get(model.getFilteredEmployeeList().size() - 1).getEmployeeId());","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" Employee lastEmployee \u003d model.getFilteredEmployeeList().get(indexLastEmployee.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" EmployeeBuilder employeeInList \u003d new EmployeeBuilder(lastEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d employeeInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastEmployee, descriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" Messages.format(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(new TaskMasterPro(model.getTaskMasterPro()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" expectedModel.setEmployee(lastEmployee, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, new EditEmployeeDescriptor());","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d model.getFilteredEmployeeList().get(INDEX_FIRST_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" Messages.format(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(new TaskMasterPro(model.getTaskMasterPro()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" Employee employeeInFilteredList \u003d model.getFilteredEmployeeList().get(INDEX_FIRST_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d new EmployeeBuilder(employeeInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE,","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" Messages.format(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(new TaskMasterPro(model.getTaskMasterPro()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" expectedModel.setEmployee(model.getFilteredEmployeeList().get(0), editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" public void execute_duplicateEmployeeUnfilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"azumieflare"},"content":" Employee firstEmployee \u003d model.getFilteredEmployeeList().get(INDEX_SECOND_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder(firstEmployee).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" public void execute_duplicateEmployeeFilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" // edit employee in filtered list into a duplicate in TaskMasterPro","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" Employee employeeInList \u003d model.getTaskMasterPro().getEmployeeList().get(INDEX_SECOND_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE,","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" new EditEmployeeDescriptorBuilder(employeeInList).build());","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" public void execute_invalidEmployeeIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredEmployeeList().size() + 1);","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"BryanL2303"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":" * but smaller than size of TaskMasterPro","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" public void execute_invalidEmployeeIndexFilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" // ensures that outOfBoundIndex is still in bounds of TaskMasterPro list","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskMasterPro().getEmployeeList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"BryanL2303"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor copyDescriptor \u003d new EditCommand.EditEmployeeDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, copyDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"gavin331"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_EMPLOYEE, DESC_AMY)));","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"gavin331"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_EMPLOYEE, DESC_BOB)));","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor editEmployeeDescriptor \u003d new EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(index, editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"gavin331"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editEmployeeDescriptor\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":4,"gavin331":69,"-":113}},{"path":"src/test/java/seedu/address/logic/commands/EditEmployeeDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"public class EditEmployeeDescriptorTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptorWithSameValues \u003d new EditEmployeeDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor editEmployeeDescriptor \u003d new EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" String expected \u003d EditEmployeeDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" + editEmployeeDescriptor.getAddress().orElse(null) + \", tasks\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" + editEmployeeDescriptor.getTasks().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" assertEquals(expected, editEmployeeDescriptor.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"BryanL2303":2,"gavin331":16,"-":54}},{"path":"src/test/java/seedu/address/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false,","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" true, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"BryanL2303":2,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.Messages.MESSAGE_EMPLOYEES_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.CARL;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ELLE;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.FIONA;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" private Model model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" public void execute_zeroKeywords_noEmployeeFound() {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_EMPLOYEES_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredEmployeeList(predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" assertEquals(Collections.emptyList(), model.getFilteredEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" public void execute_multipleKeywords_multipleEmployeesFound() {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_EMPLOYEES_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredEmployeeList(predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"gavin331":17,"-":74}},{"path":"src/test/java/seedu/address/logic/commands/FindTasksCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.Messages.MESSAGE_TASKS_LISTED_OVERVIEW;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import java.util.Collections;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTasksCommand}.","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"public class FindTasksCommandTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" private Task firstTask \u003d new Task(new TaskName(\"meeting 1\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" private Task secondTask \u003d new Task(new TaskName(\"project 2\"), new TaskId(124), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" private Task thirdTask \u003d new Task(new TaskName(\"presentation 3\"), new TaskId(125), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" private Task fourthTask \u003d new Task(new TaskName(\"presentations 4\"), new TaskId(126), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" public void equals() {","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" FindTasksCommand findFirstCommand \u003d new FindTasksCommand(firstPredicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" FindTasksCommand findSecondCommand \u003d new FindTasksCommand(secondPredicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" FindTasksCommand findFirstCommandCopy \u003d new FindTasksCommand(firstPredicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public void execute_zeroKeywords_noTaskFound() {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" FindTasksCommand command \u003d new FindTasksCommand(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" assertEquals(Collections.emptyList(), model.getFilteredEmployeeList());","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" public void execute_multipleKeywords_multipleTasksFound() {","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\"meeting project presentation\");","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" FindTasksCommand command \u003d new FindTasksCommand(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" addTasksToModel(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" addTasksToModel(expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" assertEquals(Arrays.asList(firstTask, secondTask, thirdTask), expectedModel.getFilteredTaskList());","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" public void execute_unmatchedKeyword_noTasksFound() {","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\"present\");","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" FindTasksCommand command \u003d new FindTasksCommand(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" addTasksToModel(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" addTasksToModel(expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" assertEquals(Collections.emptyList(), expectedModel.getFilteredTaskList());","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" private TaskNameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" return new TaskNameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" private void addTasksToModel(Model model) {","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" model.addTask(firstTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" model.addTask(secondTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" model.addTask(thirdTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" model.addTask(fourthTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"gavin331":103}},{"path":"src/test/java/seedu/address/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"BryanL2303":1,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showEmployeeAtIndex;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"gavin331":6,"-":33}},{"path":"src/test/java/seedu/address/logic/commands/MarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(validTask);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand mc \u003d new MarkCommand(123);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" mc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"Completed\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"johnyoozhengxian":26}},{"path":"src/test/java/seedu/address/logic/commands/UnassignTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"public class UnassignTaskCommandTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" public void test() throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d new Task(new TaskName(\"play game\"), new TaskId(5), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" model.addEmployee(validEmployee);","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" model.addTask(task);","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" AssignTaskCommand atc \u003d new AssignTaskCommand(5, 1);","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" assertEquals(\"5\", model.getFilteredEmployeeList().get(0).getTasks().getTasks());","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" UnassignTaskCommand utc \u003d new UnassignTaskCommand(5, 1);","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" utc.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" assertEquals(\"\", model.getFilteredEmployeeList().get(0).getTasks().getTasks());","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"BryanL2303":40}},{"path":"src/test/java/seedu/address/logic/commands/UnmarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnmarkCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(validTask);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand mc \u003d new MarkCommand(123);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" mc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"Completed\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand umc \u003d new UnmarkCommand(123);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" umc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"In Progress\");","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"johnyoozhengxian":32}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" Employee expectedEmployee \u003d new EmployeeBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedEmployee));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" Employee expectedEmployeeMultipleTags \u003d new EmployeeBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" new AddCommand(expectedEmployeeMultipleTags));","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" String validExpectedEmployeeString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" validExpectedEmployeeString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"BryanL2303"},"content":" + validExpectedEmployeeString,","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, validExpectedEmployeeString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, validExpectedEmployeeString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, validExpectedEmployeeString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, validExpectedEmployeeString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" Employee expectedEmployee \u003d new EmployeeBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"BryanL2303"},"content":" new AddCommand(expectedEmployee));","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"BryanL2303"},"content":" + TASK_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"BryanL2303"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"BryanL2303"},"content":" + TASK_DESC_BOB , Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"BryanL2303":9,"gavin331":26,"-":162}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" Model m1 \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" Model m2 \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(5);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" AddTaskCommand atc \u003d parser.parse(\"testing \");","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" AddTaskCommand atc2 \u003d new AddTaskCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" new Task(new TaskName(\"testing\"), new TaskId(5), new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" atc.execute(m1);","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" atc2.execute(m2);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" assertTrue(m1.equals(m2));","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" public void test2() {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" AddTaskCommand atc \u003d parser.parse(\"\");","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" assertEquals(e.getMessage(), \"Invalid command format! \\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" + \"task: Adds a task to TaskMasterPro. Parameters: DESCRIPTION \\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" + \"Example: task meeting\");","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":40,"gavin331":1,"johnyoozhengxian":2}},{"path":"src/test/java/seedu/address/logic/parser/AssignTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignTaskCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" private AssignTaskCommandParser parser \u003d new AssignTaskCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" model.addEmployee(validEmployee); // id of 1","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" model.addTask(new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" AssignTaskCommand atc \u003d parser.parse(\"123 1\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" atc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" assertEquals(\"123\", model.getFilteredEmployeeList().get(0).getTasks().getTasks());","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":4,"johnyoozhengxian":33}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"BryanL2303":1,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" Model m \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" m.addTask(new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" DeleteTaskCommand dtc \u003d parser.parse(\"123\");","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" assertEquals(1, m.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" dtc.execute(m);","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" assertEquals(0, m.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" public void test2() throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" parser.parse(\"\");","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" assertEquals(e.getMessage(), \"Invalid command format! \\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" + \"deletetask: Removes the task identified by the taskID used in the displayed task list.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" + \"Parameters: taskID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" + \"Example: deletetask 1\");","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":42,"johnyoozhengxian":1}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Employee} being edited,","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_THIRD_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_THIRD_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"gavin331":23,"-":185}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"gavin331":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/FindTasksCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.FindTasksCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public class FindTasksCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" private FindTasksCommandParser parser \u003d new FindTasksCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" FindTasksCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" public void parse_validArgs_returnsFindTasksCommand() {","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" FindTasksCommand expectedFindTasksCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" new FindTasksCommand(new TaskNameContainsKeywordsPredicate(Arrays.asList(\"project\", \"meeting\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" assertParseSuccess(parser, \"project meeting\", expectedFindTasksCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" assertParseSuccess(parser, \" \\n project \\n \\t meeting \\t\", expectedFindTasksCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"gavin331":36}},{"path":"src/test/java/seedu/address/logic/parser/MarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"public class MarkCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" private MarkCommandParser parser \u003d new MarkCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" model.addTask(new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand mc \u003d parser.parse(\"123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" mc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"Completed\");","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"johnyoozhengxian":28}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" private static final String VALID_PHONE \u003d \"91234567\";","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" assertEquals(INDEX_FIRST_EMPLOYEE, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" assertEquals(INDEX_FIRST_EMPLOYEE, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"azumieflare":1,"gavin331":7,"-":188}},{"path":"src/test/java/seedu/address/logic/parser/TaskMasterProParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"public class TaskMasterProParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" private final TaskMasterProParser parser \u003d new TaskMasterProParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(EmployeeUtil.getAddCommand(employee));","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" assertEquals(new AddCommand(employee), command);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand.COMMAND_WORD + \" \" + \u00271\u0027);","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" assertEquals(new DeleteCommand(1), command);","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder(employee).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" + INDEX_FIRST_EMPLOYEE.getOneBased() + \" \" + EmployeeUtil.getEditEmployeeDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" assertEquals(new EditCommand(INDEX_FIRST_EMPLOYEE, descriptor), command);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"BryanL2303":2,"gavin331":16,"-":83}},{"path":"src/test/java/seedu/address/logic/parser/UnmarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.UnmarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnmarkCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" private MarkCommandParser parser \u003d new MarkCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" private UnmarkCommandParser parser1 \u003d new UnmarkCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" model.addTask(new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand mc \u003d parser.parse(\"123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" mc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"Completed\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand umc \u003d parser1.parse(\"123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" umc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"In Progress\");","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"johnyoozhengxian":35}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_EMPLOYEES;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BENSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.TaskMasterProBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" assertEquals(new TaskMasterPro(), new TaskMasterPro(modelManager.getTaskMasterPro()));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" userPrefs.setTaskMasterProFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" userPrefs.setTaskMasterProFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setTaskMasterProFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath_validPath_setsTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" modelManager.setTaskMasterProFilePath(path);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" assertEquals(path, modelManager.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasEmployee(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeNotInTaskMasterPro_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" assertFalse(modelManager.hasEmployee(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeInTaskMasterPro_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" modelManager.addEmployee(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" assertTrue(modelManager.hasEmployee(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" public void getFilteredEmployeeList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredEmployeeList().remove(0));","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" TaskMasterPro taskMasterPro \u003d new TaskMasterProBuilder().withEmployee(ALICE).withEmployee(BENSON).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" TaskMasterPro differentTaskMasterPro \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" modelManager \u003d new ModelManager(taskMasterPro, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(taskMasterPro, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" // different taskMasterPro -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" assertFalse(modelManager.equals(new ModelManager(differentTaskMasterPro, userPrefs)));","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"azumieflare"},"content":" String[] keywords \u003d ALICE.getName().split(\"\\\\s+\");","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" modelManager.updateFilteredEmployeeList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" assertFalse(modelManager.equals(new ModelManager(taskMasterPro, userPrefs)));","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" modelManager.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EMPLOYEES);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" differentUserPrefs.setTaskMasterProFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" assertFalse(modelManager.equals(new ModelManager(taskMasterPro, differentUserPrefs)));","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"azumieflare":1,"gavin331":33,"-":98}},{"path":"src/test/java/seedu/address/model/TaskMasterProTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.DuplicateEmployeeException;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"public class TaskMasterProTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private final TaskMasterPro taskMasterPro \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" assertEquals(Collections.emptyList(), taskMasterPro.getEmployeeList());","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e taskMasterPro.resetData(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" public void resetData_withValidReadOnlyTaskMasterPro_replacesData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" TaskMasterPro newData \u003d getTypicalTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" taskMasterPro.resetData(newData);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" assertEquals(newData, taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" public void resetData_withDuplicateEmployees_throwsDuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" // Two employees with the same identity fields","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e newEmployees \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" TaskMasterProStub newData \u003d new TaskMasterProStub(newEmployees);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" assertThrows(DuplicateEmployeeException.class, () -\u003e taskMasterPro.resetData(newData));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e taskMasterPro.hasEmployee(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeNotInTaskMasterPro_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertFalse(taskMasterPro.hasEmployee(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeInTaskMasterPro_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" assertTrue(taskMasterPro.hasEmployee(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeWithSameIdentityFieldsInTaskMasterPro_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" assertTrue(taskMasterPro.hasEmployee(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" public void getEmployeeList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e taskMasterPro.getEmployeeList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" String expected \u003d TaskMasterPro.class.getCanonicalName()","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"azumieflare"},"content":" + \"{Employees\u003d\" + taskMasterPro.getEmployeeList() + \"}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" assertEquals(expected, taskMasterPro.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" * A stub ReadOnlyTaskMasterPro whose employees list can violate interface constraints.","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" private static class TaskMasterProStub implements ReadOnlyTaskMasterPro {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" private final ObservableList\u003cEmployee\u003e employees \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" TaskMasterProStub(Collection\u003cEmployee\u003e employees) {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" this.employees.setAll(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" return employees;","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"azumieflare"},"content":" return null;","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"azumieflare":7,"gavin331":41,"-":66}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setTaskMasterProFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"gavin331":2,"-":19}},{"path":"src/test/java/seedu/address/model/employee/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"gavin331":1,"-":55}},{"path":"src/test/java/seedu/address/model/employee/AssignedTasksTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"public class AssignedTasksTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" assertThrows(NullPointerException.class, () -\u003e new AssignedTasks(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" public void isValidAssignedTasks() {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" // null assignedTasks","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" assertThrows(NullPointerException.class, () -\u003e AssignedTasks.isValidTask(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" // valid assignedTasks","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedTasks.isValidTask(\"\")); // empty string","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedTasks.isValidTask(\"1\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedTasks.isValidTask(\"1 2\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedTasks.isValidTask(\"1 2 3\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" public void equals() {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" AssignedTasks assignedTasks \u003d new AssignedTasks(\"1\");","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" assertTrue(assignedTasks.equals(new AssignedTasks(\"1\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" assertTrue(assignedTasks.equals(assignedTasks));","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedTasks.equals(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedTasks.equals(5.0f));","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedTasks.equals(new AssignedTasks(\"1 2\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"BryanL2303":46}},{"path":"src/test/java/seedu/address/model/employee/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"gavin331":1,"-":87}},{"path":"src/test/java/seedu/address/model/employee/EmployeeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"public class EmployeeTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e employee.getTags().remove(0));","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" public void isSameEmployee() {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" assertTrue(ALICE.isSameEmployee(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" assertFalse(ALICE.isSameEmployee(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" assertTrue(ALICE.isSameEmployee(editedAlice));","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" editedAlice \u003d new EmployeeBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" assertFalse(ALICE.isSameEmployee(editedAlice));","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" Employee editedBob \u003d new EmployeeBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" assertFalse(BOB.isSameEmployee(editedBob));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" editedBob \u003d new EmployeeBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" assertFalse(BOB.isSameEmployee(editedBob));","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" Employee aliceCopy \u003d new EmployeeBuilder(ALICE).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" editedAlice \u003d new EmployeeBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" editedAlice \u003d new EmployeeBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" //editedAlice \u003d new EmployeeBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"BryanL2303"},"content":" //assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"BryanL2303"},"content":" String expected \u003d Employee.class.getCanonicalName() + \"{employeeId\u003d\" + ALICE.getEmployeeId() + \", name\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"johnyoozhengxian"},"content":" + ALICE.getAddress() + \", tasks\u003d\" + ALICE.getTasks() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"BryanL2303":4,"gavin331":24,"-":71,"johnyoozhengxian":1}},{"path":"src/test/java/seedu/address/model/employee/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(new EmployeeBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(new EmployeeBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(new EmployeeBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(new EmployeeBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(new EmployeeBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(new EmployeeBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" assertFalse(predicate.test(new EmployeeBuilder().withName(\"Alice\").withPhone(\"91234567\")","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"azumieflare":1,"gavin331":9,"-":75}},{"path":"src/test/java/seedu/address/model/employee/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"gavin331":1,"-":59}},{"path":"src/test/java/seedu/address/model/employee/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" assertTrue(Phone.isValidPhone(\"91231234\")); // exactly 8 numbers","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" assertTrue(Phone.isValidPhone(\"63121534\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" assertTrue(Phone.isValidPhone(\"86666123\")); // long phone numbers","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" Phone phone \u003d new Phone(\"91234567\");","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" assertTrue(phone.equals(new Phone(\"91234567\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" assertFalse(phone.equals(new Phone(\"91238412\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"azumieflare":6,"gavin331":1,"-":53}},{"path":"src/test/java/seedu/address/model/employee/UniqueEmployeeListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.DuplicateEmployeeException;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.EmployeeNotFoundException;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"public class UniqueEmployeeListTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" private final UniqueEmployeeList uniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public void contains_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.contains(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public void contains_employeeNotInList_returnsFalse() {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" assertFalse(uniqueEmployeeList.contains(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public void contains_employeeInList_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" assertTrue(uniqueEmployeeList.contains(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" public void contains_employeeWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" .build();","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" assertTrue(uniqueEmployeeList.contains(editedAlice));","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public void add_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.add(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public void add_duplicateEmployee_throwsDuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" assertThrows(DuplicateEmployeeException.class, () -\u003e uniqueEmployeeList.add(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" public void setEmployee_nullTargetEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.setEmployee(null, ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" public void setEmployee_nullEditedEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.setEmployee(ALICE, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" public void setEmployee_targetEmployeeNotInList_throwsEmployeeNotFoundException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" assertThrows(EmployeeNotFoundException.class, () -\u003e uniqueEmployeeList.setEmployee(ALICE, ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" public void setEmployee_editedEmployeeIsSameEmployee_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployee(ALICE, ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" public void setEmployee_editedEmployeeHasSameIdentity_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" .build();","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployee(ALICE, editedAlice);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(editedAlice);","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" public void setEmployee_editedEmployeeHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployee(ALICE, BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" public void setEmployee_editedEmployeeHasNonUniqueIdentity_throwsDuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" assertThrows(DuplicateEmployeeException.class, () -\u003e uniqueEmployeeList.setEmployee(ALICE, BOB));","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":" public void remove_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.remove(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" public void remove_employeeDoesNotExist_throwsEmployeeNotFoundException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" assertThrows(EmployeeNotFoundException.class, () -\u003e uniqueEmployeeList.remove(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" public void remove_existingEmployee_removesEmployee() {","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.remove(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" public void setEmployees_nullUniqueEmployeeList_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.setEmployees((UniqueEmployeeList) null));","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" public void setEmployees_uniqueEmployeeList_replacesOwnListWithProvidedUniqueEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployees(expectedUniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" public void setEmployees_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.setEmployees((List\u003cEmployee\u003e) null));","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" public void setEmployees_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e employeeList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployees(employeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"gavin331"},"content":" public void setEmployees_listWithDuplicateEmployees_throwsDuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e listWithDuplicateEmployees \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"gavin331"},"content":" assertThrows(DuplicateEmployeeException.class, () -\u003e uniqueEmployeeList","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"gavin331"},"content":" .setEmployees(listWithDuplicateEmployees));","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":167,"author":{"gitId":"gavin331"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"gavin331"},"content":" -\u003e uniqueEmployeeList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"gavin331"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"gavin331"},"content":" assertEquals(uniqueEmployeeList.asUnmodifiableObservableList().toString(), uniqueEmployeeList.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"gavin331":176}},{"path":"src/test/java/seedu/address/model/task/AssignedEmployeesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"public class AssignedEmployeesTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" assertThrows(NullPointerException.class, () -\u003e new AssignedEmployees(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" public void isValidAssignedEmployees() {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" // null assignedEmployees","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" assertThrows(NullPointerException.class, () -\u003e AssignedEmployees.isValidEmployee(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" // valid assignedEmployees","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedEmployees.isValidEmployee(\"\")); // empty string","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedEmployees.isValidEmployee(\"1\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedEmployees.isValidEmployee(\"1 2\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedEmployees.isValidEmployee(\"1 2 3\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" public void equals() {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" AssignedEmployees assignedEmployees \u003d new AssignedEmployees(\"1\");","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" assertTrue(assignedEmployees.equals(new AssignedEmployees(\"1\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" assertTrue(assignedEmployees.equals(assignedEmployees));","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedEmployees.equals(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedEmployees.equals(5.0f));","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedEmployees.equals(new AssignedEmployees(\"1 2\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"BryanL2303":46}},{"path":"src/test/java/seedu/address/model/task/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"public class TaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" private final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" private final Task task \u003d new Task(new TaskName(\"Test\"), new TaskId(5), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public void execute_addRemoveTaskList_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" taskList.add(task);","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" assertTrue(taskList.contains(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" taskList.remove(task);","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" assertFalse(taskList.contains(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" public void execute_taskListToString_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" assertEquals(taskList.asUnmodifiableObservableList().toString(), taskList.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" public void execute_removeFromEmptyTaskList_exception() {","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" taskList.remove(task);","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" } catch (TaskNotFoundException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" assertEquals(e.getMessage(), null);","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":34}},{"path":"src/test/java/seedu/address/model/task/TaskNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public class TaskNameContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"project\");","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"project\", \"meeting\");","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" public void test_taskNameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" Task testTask \u003d new Task(new TaskName(\"project meeting\"), new TaskId(2), new TaskStatus(false),","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" // One keyword","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"project\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"project\", \"meeting\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"project\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"pRoJEct\", \"mEeTing\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" Task testTask \u003d new Task(new TaskName(\"project meeting\"), new TaskId(2), new TaskStatus(false),","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"John\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" // Zero keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(List.of(\"assignment\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" // Keywords match TaskId, TaskStatus and AssignedEmployees, but does not match TaskName","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2\", \"In\", \"Progress\", \"John\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" String expected \u003d TaskNameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"gavin331":90}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"public class TaskTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" public void execute_taskList_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(2), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" assertTrue(validTask.getName().equals(\"Test\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(100);","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" assertTrue(validTask.getTaskId() \u003d\u003d 2);","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" assertTrue(validTask.getTaskStatus().toString().equals(\"In Progress\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" Task.incrementTaskId();","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" Task validTask2 \u003d new Task(new TaskName(\"Test\"), new TaskId(Task.getUniversalId()), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" assertTrue(validTask2.getTaskId() \u003d\u003d 101);","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":4,"azumieflare":18}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedEmployeeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.storage.JsonAdaptedEmployee.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BENSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class JsonAdaptedEmployeeTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" private static final String VALID_TASKS \u003d BENSON.getTasks().toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public void toModelType_validEmployeeDetails_returnsEmployee() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(BENSON);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" assertEquals(BENSON, employee.toModelType());","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" 1, INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(1, null, VALID_PHONE,","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":" 1, VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(1, VALID_NAME, null,","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" 1, VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(1, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"johnyoozhengxian"},"content":" null, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"johnyoozhengxian"},"content":" 1, VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(1, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"johnyoozhengxian"},"content":" null, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"johnyoozhengxian"},"content":" 1, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, invalidTags);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"BryanL2303":4,"gavin331":24,"-":76,"johnyoozhengxian":15}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public void execute_noTaskInput_exception() {","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(null, 123, \"In Progress\", \"\");","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" assertThrows(IllegalValueException.class, String.format(JsonAdaptedTask.MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" TaskName.class.getSimpleName()), task::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" public void execute_errorTaskInput_exception() {","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(new Task(new TaskName(null), new TaskId(123),","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":" new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" assertThrows(IllegalValueException.class, String.format(JsonAdaptedTask.MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" TaskName.class.getSimpleName()), task::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" public void execute_taskCreationEqual_success() throws IllegalValueException {","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(new Task(new TaskName(\"Test\"), new TaskId(123),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(123);","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedTask task2 \u003d new JsonAdaptedTask(new Task(new TaskName(\"Test\"), new TaskId(Task.getUniversalId()),","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" assertEquals(task.toModelType().toString(), task2.toModelType().toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":32}},{"path":"src/test/java/seedu/address/storage/JsonSerializableTaskMasterProTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.TypicalEmployees;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"public class JsonSerializableTaskMasterProTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableTaskMasterProTest\");","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" private static final Path TYPICAL_EMPLOYEES_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalEmployeesTaskMasterPro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" private static final Path INVALID_EMPLOYEE_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidEmployeeTaskMasterPro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" private static final Path DUPLICATE_EMPLOYEE_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateEmployeeTaskMasterPro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public void toModelType_typicalEmployeesFile_success() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_EMPLOYEES_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" TaskMasterPro taskMasterProFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" TaskMasterPro typicalEmployeesTaskMasterPro \u003d TypicalEmployees.getTypicalTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" assertEquals(taskMasterProFromFile, typicalEmployeesTaskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" public void toModelType_invalidEmployeeFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro dataFromFile \u003d JsonUtil.readJsonFile(INVALID_EMPLOYEE_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public void toModelType_duplicateEmployees_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_EMPLOYEE_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, JsonSerializableTaskMasterPro.MESSAGE_DUPLICATE_EMPLOYEE,","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"gavin331":20,"-":26}},{"path":"src/test/java/seedu/address/storage/JsonTaskMasterProStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.HOON;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.IDA;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"public class JsonTaskMasterProStorageTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonTaskMasterProStorageTest\");","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" @TempDir","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" public void readTaskMasterPro_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e readTaskMasterPro(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" private java.util.Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro(String filePath) throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" return new JsonTaskMasterProStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" .readTaskMasterPro(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" : null;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" assertFalse(readTaskMasterPro(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskMasterPro(\"notJsonFormatTaskMasterPro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public void readTaskMasterPro_invalidEmployeeTaskMasterPro_throwDataLoadingException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskMasterPro(\"invalidEmployeeTaskMasterPro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" public void readTaskMasterPro_invalidAndValidEmployeeTaskMasterPro_throwDataLoadingException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskMasterPro(\"invalidAndValidEmployeeTaskMasterPro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" public void readAndSaveTaskMasterPro_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" Path filePath \u003d testFolder.resolve(\"TempTaskMasterPro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" TaskMasterPro original \u003d getTypicalTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" JsonTaskMasterProStorage jsonTaskMasterProStorage \u003d new JsonTaskMasterProStorage(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" jsonTaskMasterProStorage.saveTaskMasterPro(original, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro readBack \u003d jsonTaskMasterProStorage.readTaskMasterPro(filePath).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" assertEquals(original, new TaskMasterPro(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" original.addEmployee(HOON);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" original.removeEmployee(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" jsonTaskMasterProStorage.saveTaskMasterPro(original, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" readBack \u003d jsonTaskMasterProStorage.readTaskMasterPro(filePath).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" assertEquals(original, new TaskMasterPro(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" original.addEmployee(IDA);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" jsonTaskMasterProStorage.saveTaskMasterPro(original); // file path not specified","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" readBack \u003d jsonTaskMasterProStorage.readTaskMasterPro().get(); // file path not specified","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" assertEquals(original, new TaskMasterPro(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro_nullTaskMasterPro_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskMasterPro(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" * Saves {@code taskMasterPro} at the specified {@code filePath}.","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" private void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, String filePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" new JsonTaskMasterProStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" .saveTaskMasterPro(taskMasterPro, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskMasterPro(new TaskMasterPro(), null));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gavin331":112}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" userPrefs.setTaskMasterProFilePath(Paths.get(\"taskmasterpro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"gavin331":1,"-":122}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" JsonTaskMasterProStorage taskMasterProStorage \u003d new JsonTaskMasterProStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" storageManager \u003d new StorageManager(taskMasterProStorage, userPrefsStorage);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public void taskMasterProReadSave() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * {@link JsonTaskMasterProStorage} class.","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonTaskMasterProStorageTest} class.","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" TaskMasterPro original \u003d getTypicalTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" storageManager.saveTaskMasterPro(original);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro retrieved \u003d storageManager.readTaskMasterPro().get();","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" assertEquals(original, new TaskMasterPro(retrieved));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public void getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertNotNull(storageManager.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":14,"-":54}},{"path":"src/test/java/seedu/address/testutil/EditEmployeeDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * A utility class to help with building EditEmployeeDescriptor objects.","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class EditEmployeeDescriptorBuilder {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" private EditCommand.EditEmployeeDescriptor descriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder() {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder(EditCommand.EditEmployeeDescriptor descriptor) {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" this.descriptor \u003d new EditEmployeeDescriptor(descriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * Returns an {@code EditEmployeeDescriptor} with fields containing {@code employee}\u0027s details","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditCommand.EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" descriptor.setName(new Name(employee.getName()));","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" descriptor.setPhone(new Phone(employee.getPhone()));","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" descriptor.setEmail(new Email(employee.getEmail()));","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" descriptor.setAddress(new Address(employee.getAddress()));","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" descriptor.setTasks(employee.getTasks());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" descriptor.setTags(employee.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Name} of the {@code EditEmployeeDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Phone} of the {@code EditEmployeeDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Email} of the {@code EditEmployeeDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Address} of the {@code EditEmployeeDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"johnyoozhengxian"},"content":" * Sets the tasks assigned to the employee in the edit descriptor using the provided string.","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" * @param tasks A string containing the tasks to be assigned to the employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"johnyoozhengxian"},"content":" * @return This {@code EditEmployeeDescriptorBuilder} instance for method chaining.","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"johnyoozhengxian"},"content":" public EditEmployeeDescriptorBuilder withTasks(String tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"johnyoozhengxian"},"content":" descriptor.setTasks(new AssignedTasks(tasks));","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"johnyoozhengxian"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditEmployeeDescriptor}","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" * that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptor build() {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" return descriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":4,"gavin331":79,"johnyoozhengxian":19}},{"path":"src/test/java/seedu/address/testutil/EmployeeBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * A utility class to help with building Employee objects.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"public class EmployeeBuilder {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" public static final String DEFAULT_TASKS \u003d \"\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" private Name name;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private Phone phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" private Email email;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" private Address address;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" private AssignedTasks tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" * Creates a {@code EmployeeBuilder} with the default details.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder() {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" tasks \u003d new AssignedTasks(DEFAULT_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" * Initializes the EmployeeBuilder with the data of {@code employeeToCopy}.","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder(Employee employeeToCopy) {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" name \u003d new Name(employeeToCopy.getName());","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" phone \u003d new Phone(employeeToCopy.getPhone());","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" email \u003d new Email(employeeToCopy.getEmail());","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" address \u003d new Address(employeeToCopy.getAddress());","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" tasks \u003d employeeToCopy.getTasks();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" tags \u003d new HashSet\u003c\u003e(employeeToCopy.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Name} of the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withName(String name) {","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Address} of the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withAddress(String address) {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Phone} of the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Email} of the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withEmail(String email) {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"johnyoozhengxian"},"content":" * Sets the tasks assigned to the employee using the provided string.","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"johnyoozhengxian"},"content":" * @param tasks A string containing the tasks to be assigned to the employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"johnyoozhengxian"},"content":" * @return This {@code EmployeeBuilder} instance for method chaining.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"johnyoozhengxian"},"content":" public EmployeeBuilder withTasks(String tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d new AssignedTasks(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"johnyoozhengxian"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" public Employee build() {","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"johnyoozhengxian"},"content":" return new Employee(new EmployeeId(1), name, phone, email, address, tasks, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":4,"gavin331":86,"johnyoozhengxian":22}},{"path":"src/test/java/seedu/address/testutil/EmployeeUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASKS;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * A utility class for Employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class EmployeeUtil {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * Returns an add command string for adding the {@code employee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" public static String getAddCommand(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" return AddCommand.COMMAND_WORD + \" \" + getEmployeeDetails(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * Returns the part of command string for the given {@code employee}\u0027s details.","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public static String getEmployeeDetails(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" sb.append(PREFIX_NAME + employee.getName() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" sb.append(PREFIX_PHONE + employee.getPhone() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" sb.append(PREFIX_EMAIL + employee.getEmail() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" sb.append(PREFIX_ADDRESS + employee.getAddress() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" employee.getTags().stream().forEach(","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" * Returns the part of command string for the given {@code EditEmployeeDescriptor}\u0027s details.","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" public static String getEditEmployeeDescriptorDetails(EditCommand.EditEmployeeDescriptor descriptor) {","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name).append(\" \"));","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone).append(\" \"));","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email).append(\" \"));","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address).append(\" \"));","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" descriptor.getTasks().ifPresent(tasks -\u003e sb.append(PREFIX_TASKS).append(tasks.getTasks()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":8,"gavin331":12,"-":42}},{"path":"src/test/java/seedu/address/testutil/TaskMasterProBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * A utility class to help with building TaskMasterPro objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" * {@code TaskMasterPro ab \u003d new TaskMasterProBuilder().withEmployee(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"public class TaskMasterProBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" private TaskMasterPro taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" public TaskMasterProBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" taskMasterPro \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public TaskMasterProBuilder(TaskMasterPro taskMasterPro) {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" this.taskMasterPro \u003d taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Adds a new {@code Employee} to the {@code TaskMasterPro} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public TaskMasterProBuilder withEmployee(Employee employee) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(employee);","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" public TaskMasterPro build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" return taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gavin331":34}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" * Returns the middle index of the employee in the {@code model}\u0027s employee list.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" return Index.fromOneBased(model.getFilteredEmployeeList().size() / 2);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" * Returns the last index of the employee in the {@code model}\u0027s employee list.","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" return Index.fromOneBased(model.getFilteredEmployeeList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" * Returns the employee in the {@code model}\u0027s employee list at {@code index}.","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" public static Employee getEmployee(Model model, Index index) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" return model.getFilteredEmployeeList().get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalEmployees.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASKS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASKS_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * A utility class containing a list of {@code Employee} objects to be used in tests.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"public class TypicalEmployees {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" public static final Employee ALICE \u003d new EmployeeBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" .withTasks(\"3 6\")","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" public static final Employee BENSON \u003d new EmployeeBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" .withTasks(\"3 6\")","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" public static final Employee CARL \u003d new EmployeeBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public static final Employee DANIEL \u003d new EmployeeBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTasks(\"3 6\").withTags(\"friends\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" public static final Employee ELLE \u003d new EmployeeBuilder().withName(\"Elle Meyer\").withPhone(\"94822244\")","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" public static final Employee FIONA \u003d new EmployeeBuilder().withName(\"Fiona Kunz\").withPhone(\"94824277\")","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" public static final Employee GEORGE \u003d new EmployeeBuilder().withName(\"George Best\").withPhone(\"94824422\")","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" public static final Employee HOON \u003d new EmployeeBuilder().withName(\"Hoon Meier\").withPhone(\"84824244\")","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" public static final Employee IDA \u003d new EmployeeBuilder().withName(\"Ida Mueller\").withPhone(\"84821311\")","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" // Manually added - Employee\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public static final Employee AMY \u003d new EmployeeBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTasks(VALID_TASKS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" public static final Employee BOB \u003d new EmployeeBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASKS_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" private TypicalEmployees() {} // prevents instantiation","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" * Returns an {@code TaskMasterPro} with all the typical employees.","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" public static TaskMasterPro getTypicalTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" TaskMasterPro ab \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" for (Employee employee : getTypicalEmployees()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" ab.addEmployee(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" public static List\u003cEmployee\u003e getTypicalEmployees() {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":5,"gavin331":18,"-":32,"johnyoozhengxian":23}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" public static final Index INDEX_FIRST_EMPLOYEE \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" public static final Index INDEX_SECOND_EMPLOYEE \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public static final Index INDEX_THIRD_EMPLOYEE \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"gavin331":3,"-":9}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T15-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T15-4/tp/actions)","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"# TaskMasterPro","lastModifiedDate":"2024-03-05"},{"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":"azumieflare"},"content":"TaskMasterPro is a desktop application designed to aid managers with managing employee\u0027s tasks.","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"### Features","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"* Add or remove","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" * Employees","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" * Tasks","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"* Assign or Unassign tasks to employees","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"* List all information","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"* Mark tasks as completed or not completed","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"* Save and Load","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"\u003c!-- Add more if needed --\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"# Contents","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"- [Feature breakdown](#feature-breakdown)","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"- [How to use](#how-to-use)","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"- [Credits](#credits)","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"# Feature Breakdown","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"```add``` - Adds an employee to TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"```add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAGS]```","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"```delete``` - Deletes an employee from TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"```delete EMPLOYEE_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"```listemployees``` - Lists all employee recorded in TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":"```task``` - Creates a task and add it to TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":"```task TASK_DESCRIPTION```","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":"```deletetask``` - Deletes a task from TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"```deletetask TASK_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":"```listtasks``` - Lists all tasks recorded in TaskMasterPro \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"```assigntask``` - Assigns a task to an employee \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":"```assigntask t/TASK_ID e/EMPLOYEE_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":"```removetask``` - Removes a task from an employee \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"```removetask t/ TASK_ID e/EMPLOYEE_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":"```listassignments``` - Lists all tasks and employees assigned to them \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":"```mark``` - Marks a task as completed \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":"```mark TASK_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":"```unmark``` - Marks a task as not completed \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":"```unmark TASK_ID```","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":"```save``` - Saves the current state of TaskMasterPro into a save file \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":"\u003c!-- load? --\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":"# How to use","lastModifiedDate":"2024-03-05"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":"Down the .jar file from releases \u003c!-- TODO --\u003e and run the command \u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":"```java -jar TaskMasterPro.jar```","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":"# Credits","lastModifiedDate":"2024-03-05"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"azumieflare":62,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" archiveFileName \u003d \u0027taskmasterpro.jar\u0027","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":"run {","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"azumieflare"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":4,"gavin331":1,"-":71}},{"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":"gavin331"},"content":"### Gavin Goh","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"\u003cimg src\u003d\"images/gavin331.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"[[github](http://github.com/gavin331)]","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"[[portfolio](team/gavingoh.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"* Role: Team Member","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"* Responsibilities: Deliver the project tasks on time and ensure the quality of the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"### John Chan","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"\u003cimg src\u003d\"images/azumieflare.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"[[github](http://github.com/azumieflare)] [[portfolio](team/azumieflare.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"* Responsibilities: Ensuring project deliverables are done on time and in the right format.","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"### Bryan Lee","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"\u003cimg src\u003d\"images/bryanl2303.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"[[github](http://github.com/BryanL2303)]","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"[[portfolio](team/bryanlee.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":"* Role: Scheduling and tracking","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"* Responsibilities: In charge of defining, assigning, and tracking project tasks","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":"### John Yoo","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":"\u003cimg src\u003d\"images/johnyoozhengxian.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"[[github](http://github.com/johnyoozhengxian)]","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":"[[portfolio](team/johnyoozhengxian.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"BryanL2303":6,"azumieflare":5,"gavin331":7,"-":28,"johnyoozhengxian":4}},{"path":"docs/DevOps.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: DevOps guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"azumieflare"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26"}],"authorContributionMap":{"azumieflare":1,"-":78}},{"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":"azumieflare"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-16"},{"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":"azumieflare"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-03-13"},{"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":"azumieflare"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-13"},{"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":"gavin331"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `EmployeeListPanel`, `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":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"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/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-13"},{"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":"gavin331"},"content":"* depends on some classes in the `Model` component, as it displays `Employee` object residing in the `Model`.","lastModifiedDate":"2024-03-11"},{"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":"azumieflare"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-13"},{"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":"gavin331"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `TaskMasterProParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-12"},{"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":"gavin331"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a employee).\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"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":"azumieflare"},"content":"* When called upon to parse a user command, the `TaskMasterProParser` 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 `TaskMasterProParser` returns back as a `Command` object.","lastModifiedDate":"2024-03-13"},{"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":"azumieflare"},"content":"**API** : [`Model.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-13"},{"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":"gavin331"},"content":"* stores the TaskMasterPro data i.e., all `Employee` objects (which are contained in a `UniqueEmployeeList` object) and all `Task` objects (which are contained in a `TaskList` object.","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":"* stores the currently \u0027selected\u0027 `Employee` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cEmployee\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":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"azumieflare"},"content":"* stores `Task` objects in a similar manner as with `Employee` objects.","lastModifiedDate":"2024-03-24"},{"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":"gavin331"},"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 `TaskMasterPro`, which `Employee` references. This allows `TaskMasterPro` to only require one `Tag` object per unique tag, instead of each `Employee` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003c/div\u003e","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":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"azumieflare"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/TaskMasterPro-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":"* can save both TaskMasterPro data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":"* inherits from both `TaskMasterProStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"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":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"azumieflare"},"content":"Classes used by multiple components are in the `seedu.TaskMasterPro.commons` package.","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"azumieflare"},"content":"### \\[Proposed\\] Add/Delete task","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"azumieflare"},"content":"#### Current Implementation","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"azumieflare"},"content":"The current add/delete task feature is designed in a way such that every task has an unique `TaskId` to uniquely identify each task. This is done as there is no explicit constraint stating that tasks cannot have the same name, as such an identifier is required for other aspects of the TaskMasterPro (namely assigning of tasks to employees).","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"azumieflare"},"content":"The unique `TaskId` is assigned by the TaskMasterPro automatically and is also tracked by the TaskMasterPro. It is saved in the common .json file along with other data from TaskMasterPro, and carries over across sessions.","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"azumieflare"},"content":"\u003c!--ToDo, add info about corrupt TaskId? --\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"azumieflare"},"content":"Given below is an example usage scenario and how the add/delete task feature behaves at each step.","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"azumieflare"},"content":"Step 1. The user launches the TaskMasterPro. Assume that there are no existing tasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":173,"author":{"gitId":"azumieflare"},"content":"![AddTask0](images/AddTask0.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"azumieflare"},"content":"Step 2. The user enters the command `task Meeting`. This creates a new `Task` object with its `TaskId` automatically assigned. Assume that the `TaskId` value is 1.","lastModifiedDate":"2024-03-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":177,"author":{"gitId":"azumieflare"},"content":"![AddTask1](images/AddTask1.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"azumieflare"},"content":"Step 3. The user enters the command `task Project`. This creates another new `Task` object with its `TaskId` automatically assigned. Assume that the `TaskId` value is 2.","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"azumieflare"},"content":"![AddTask2](images/AddTask2.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":182,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":183,"author":{"gitId":"azumieflare"},"content":"Step 4. The user now enters the command `deletetask 1`. This will delete the task created in Step 2. as its assigned `TaskId` is 1.","lastModifiedDate":"2024-03-24"},{"lineNumber":184,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":185,"author":{"gitId":"azumieflare"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If an invalid `TaskId` is entered instead, an error will appear informing the user and nothing else will happen.","lastModifiedDate":"2024-03-24"},{"lineNumber":186,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":187,"author":{"gitId":"azumieflare"},"content":"![AddTask3](images/AddTask3.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":191,"author":{"gitId":"azumieflare"},"content":"The following sequence diagram shows how an add task operation goes through the `Logic` component:","lastModifiedDate":"2024-03-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":193,"author":{"gitId":"azumieflare"},"content":"![AddTaskSequence](images/AddTaskSequence.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"azumieflare"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `AddTaskCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2024-03-24"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":199,"author":{"gitId":"azumieflare"},"content":"Similarly, how an add task operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-03-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":201,"author":{"gitId":"azumieflare"},"content":"![AddTaskSequence-Model](images/AddTaskSequence-Model.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":203,"author":{"gitId":"azumieflare"},"content":"The `deletetask` command works similarly  —  it calls `Model#deleteTask` with a given `TaskId` and deletes the `Task` if it exists.","lastModifiedDate":"2024-03-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":206,"author":{"gitId":"azumieflare"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-03-24"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":208,"author":{"gitId":"azumieflare"},"content":"\u003cimg src\u003d\"images/AddTaskActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":209,"author":{"gitId":"azumieflare"},"content":"\u003cimg src\u003d\"images/DeleteTaskActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":211,"author":{"gitId":"azumieflare"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-24"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":213,"author":{"gitId":"azumieflare"},"content":"**Aspect: How to uniquely identify `Task`:**","lastModifiedDate":"2024-03-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":215,"author":{"gitId":"azumieflare"},"content":"* **Alternative 1 (current choice):** Using of `taskId`.","lastModifiedDate":"2024-03-24"},{"lineNumber":216,"author":{"gitId":"azumieflare"},"content":" * Pros: Easy to implement. `TaskMasterPro` automatically assigns this value.","lastModifiedDate":"2024-03-24"},{"lineNumber":217,"author":{"gitId":"azumieflare"},"content":" * Cons: May be hard for users to keep track of.","lastModifiedDate":"2024-03-24"},{"lineNumber":218,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":219,"author":{"gitId":"azumieflare"},"content":"* **Alternative 2:** Using of `taskName`.","lastModifiedDate":"2024-03-24"},{"lineNumber":220,"author":{"gitId":"azumieflare"},"content":" * Pros: An existing field, no additional implementations needed.","lastModifiedDate":"2024-03-24"},{"lineNumber":221,"author":{"gitId":"azumieflare"},"content":" * Cons: Impossible to uniquely identify tasks as there could be tasks with the same name.","lastModifiedDate":"2024-03-24"},{"lineNumber":222,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":223,"author":{"gitId":"BryanL2303"},"content":"### \\[Proposed\\] Assign/Unassign task","lastModifiedDate":"2024-03-27"},{"lineNumber":224,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":225,"author":{"gitId":"BryanL2303"},"content":"#### Current Implementation","lastModifiedDate":"2024-03-27"},{"lineNumber":226,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":227,"author":{"gitId":"BryanL2303"},"content":"The current assign/unassign task features are designed such that they accept the ids of a task an employee as a parameter.","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"BryanL2303"},"content":"As mentioned above in Add/Delete task a task or employee can have the same name as another task or employee so their ids are the best way to identify them.","lastModifiedDate":"2024-03-27"},{"lineNumber":229,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":230,"author":{"gitId":"BryanL2303"},"content":"To keep track of the assignment of tasks, every employee has an immutable AssignedTasks and every task has an immutable AssignedEmployees.","lastModifiedDate":"2024-03-27"},{"lineNumber":231,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"BryanL2303"},"content":"This object contains a hashtable, for AssignedTasks it contains the TaskId as a key and the corresponding task as the value for that key.","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"BryanL2303"},"content":"This is the same for AssignedEmployees which contains a hashtable where EmployeeId is a key and the corresponding employee is the value for that key.","lastModifiedDate":"2024-03-27"},{"lineNumber":234,"author":{"gitId":"BryanL2303"},"content":"Both of these gets updated for each call to any of the two functions.","lastModifiedDate":"2024-03-27"},{"lineNumber":235,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":236,"author":{"gitId":"BryanL2303"},"content":"There is also a string variable in each AssignedTasks and AssignedEmployees which contains the keys of existing ids separated by an empty space.","lastModifiedDate":"2024-03-27"},{"lineNumber":237,"author":{"gitId":"BryanL2303"},"content":"This String is stored into the JSON file with each Employee or Task so that assignments can be stored between sessions.","lastModifiedDate":"2024-03-27"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":239,"author":{"gitId":"BryanL2303"},"content":"Given below is an example usage scenario and how the assign/unassign task feature behaves at each step.","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":241,"author":{"gitId":"BryanL2303"},"content":"Step 1. The user launches the TaskMasterPro. Assume that there are existing employee with EmployeeId: 1 and existing task with TaskId: 2 and that both were not already assigned to each other.","lastModifiedDate":"2024-03-27"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":243,"author":{"gitId":"BryanL2303"},"content":"![AssignTask0](images/AssignTask0.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"BryanL2303"},"content":"Step 2. The user enters the command `assigntask 2 1`. This updates the AssignedTasks of the employee to put the task into the hashtable and add the string \" 2\" to the existing string as well as the AssignedEmployees of the task to add the employee in the hashtable and add the string \" 1\" to the existing string.","lastModifiedDate":"2024-03-27"},{"lineNumber":246,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":247,"author":{"gitId":"BryanL2303"},"content":"Step 3. The user enters the command `unassigntask 2 1`. This updates the AssignedTasks of the employee to remove the task from the hashtable and the AssignedEmployees of the task to remove the employee from the hashtable.","lastModifiedDate":"2024-03-27"},{"lineNumber":248,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":249,"author":{"gitId":"BryanL2303"},"content":"Both of the above command will call a function in Task and Employee which will call a function in AssignedEmployees and AssignedTasks respectively.","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":251,"author":{"gitId":"BryanL2303"},"content":"![AssignTask](images/AssignTask.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":252,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":253,"author":{"gitId":"BryanL2303"},"content":"Step 4. The user now enters the command `unassigntask 2 1` again. This will return an error as they are no longer assigned to each other to begin with.","lastModifiedDate":"2024-03-27"},{"lineNumber":254,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"BryanL2303"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If an invalid `TaskId` or `EmployeeId` is entered instead, an error will appear informing the user and nothing else will happen.","lastModifiedDate":"2024-03-27"},{"lineNumber":256,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":257,"author":{"gitId":"BryanL2303"},"content":"The following sequence diagram shows how an assign task operation goes through the `Logic` component:","lastModifiedDate":"2024-03-27"},{"lineNumber":258,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":259,"author":{"gitId":"BryanL2303"},"content":"![AssignTaskSequence](images/AssignTaskSequence.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":260,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":261,"author":{"gitId":"BryanL2303"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":262,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":263,"author":{"gitId":"BryanL2303"},"content":"Similarly, how an assign task operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-03-27"},{"lineNumber":264,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":265,"author":{"gitId":"BryanL2303"},"content":"![AssignTaskSequence-Model](images/AssignTaskSequence-Model.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":268,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-03-27"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":270,"author":{"gitId":"BryanL2303"},"content":"\u003cimg src\u003d\"images/AssignTaskActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":272,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-27"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":274,"author":{"gitId":"BryanL2303"},"content":"**Aspect: How to store `AssignedTasks`/`AssignedEmployees` into JSON:**","lastModifiedDate":"2024-03-27"},{"lineNumber":275,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":276,"author":{"gitId":"BryanL2303"},"content":"* **Alternative 1 (current choice):** Using both String variable with the ids separated by spaces and a hashtable for functions to access.","lastModifiedDate":"2024-03-27"},{"lineNumber":277,"author":{"gitId":"BryanL2303"},"content":" * Pros: The most straightforward approach. Both approaches described after this requires some complex functions for certain functions.","lastModifiedDate":"2024-03-27"},{"lineNumber":278,"author":{"gitId":"BryanL2303"},"content":" * Cons: Whenever we update `AssignedTasks` or `AssignedEmployees` we have to update both the hashtable and the String and ensure that both are in sync.","lastModifiedDate":"2024-03-27"},{"lineNumber":279,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":280,"author":{"gitId":"BryanL2303"},"content":"* **Alternative 2:** Using only the String variable.","lastModifiedDate":"2024-03-27"},{"lineNumber":281,"author":{"gitId":"BryanL2303"},"content":" * Pros: Extremely easy to understand.","lastModifiedDate":"2024-03-27"},{"lineNumber":282,"author":{"gitId":"BryanL2303"},"content":" * Cons: Each time we want to access any task or employee we have to iterate through the split string and then iterate through every task/employee to compare the ids.","lastModifiedDate":"2024-03-27"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":284,"author":{"gitId":"BryanL2303"},"content":"* **Alternative 3:** Using only the hashtable.","lastModifiedDate":"2024-03-27"},{"lineNumber":285,"author":{"gitId":"BryanL2303"},"content":" * Pros: We can easily access the assigned tasks and employees so that we do not need to loop and compare every id each function call.","lastModifiedDate":"2024-03-27"},{"lineNumber":286,"author":{"gitId":"BryanL2303"},"content":" * Cons: When we try to store or load the stored JSON data to the hashtable we have to go through quite a complicated process to do it in the right order.","lastModifiedDate":"2024-03-27"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"gavin331"},"content":"### \\[Proposed\\] Find task by name","lastModifiedDate":"2024-03-27"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":290,"author":{"gitId":"gavin331"},"content":"#### Current Implementation","lastModifiedDate":"2024-03-27"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":292,"author":{"gitId":"gavin331"},"content":"The current find task by name feature is designed such that it accepts a string as a parameter.","lastModifiedDate":"2024-03-27"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":294,"author":{"gitId":"gavin331"},"content":"The string will be split using whitespaces to form keywords and the tasks will be filtered based on whether their names contain at least 1 of the keywords.","lastModifiedDate":"2024-03-27"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":296,"author":{"gitId":"gavin331"},"content":"The search is case-insensitive and the order of the keywords does not matter.","lastModifiedDate":"2024-03-27"},{"lineNumber":297,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":298,"author":{"gitId":"gavin331"},"content":"Only full words are matched, so if the task name is \"meeting with client\" and the user searches for \"meet\", the task will not be found.","lastModifiedDate":"2024-03-27"},{"lineNumber":299,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":300,"author":{"gitId":"gavin331"},"content":"Given below is an example usage scenario and how the find task by name feature behaves at each step.","lastModifiedDate":"2024-03-27"},{"lineNumber":301,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":302,"author":{"gitId":"gavin331"},"content":"Step 1. The user launches the TaskMasterPro. Assume that there are existing tasks with names \"Project 1 Meeting\", \"Client Meeting\" and \"Complete Project 2\".","lastModifiedDate":"2024-03-27"},{"lineNumber":303,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":304,"author":{"gitId":"gavin331"},"content":"Step 2. The user enters the command `findtasks meeting`. This returns \"Project 1 Meeting\" and \"Client Meeting\".","lastModifiedDate":"2024-03-27"},{"lineNumber":305,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":306,"author":{"gitId":"gavin331"},"content":"The following sequence diagram shows how a `findtasks` operation goes through the `Logic` component:","lastModifiedDate":"2024-03-27"},{"lineNumber":307,"author":{"gitId":"gavin331"},"content":"![FindTasksSequence-Model](images/FindTasksSequenceDiagram.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":308,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":309,"author":{"gitId":"gavin331"},"content":"The following activity diagram summarizes what happens when a user executes `findtasks project meeting`:","lastModifiedDate":"2024-03-27"},{"lineNumber":310,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":311,"author":{"gitId":"gavin331"},"content":"![FindTasksActivityDiagram](images/FindTasksActivityDiagram.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":312,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":313,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":314,"author":{"gitId":"gavin331"},"content":"#### Design considerations:","lastModifiedDate":"2024-03-27"},{"lineNumber":315,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":316,"author":{"gitId":"gavin331"},"content":"**Aspect: Whether to make both `find` and `findtasks` inherit from a common parent class:**","lastModifiedDate":"2024-03-27"},{"lineNumber":317,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":318,"author":{"gitId":"gavin331"},"content":"This is because both `find` and `findtasks` are similar in terms of functionality. `find` finds employees and `findtasks` finds tasks.","lastModifiedDate":"2024-03-27"},{"lineNumber":319,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":320,"author":{"gitId":"gavin331"},"content":"* **Alternative 1 (current choice):** Keep them separate.","lastModifiedDate":"2024-03-27"},{"lineNumber":321,"author":{"gitId":"gavin331"},"content":" * Pros: Easier to understand and organise because currently all the classes related to employee","lastModifiedDate":"2024-03-27"},{"lineNumber":322,"author":{"gitId":"gavin331"},"content":" are in the `model.employee` package and all the classes related to task are in the `model.task` package.","lastModifiedDate":"2024-03-27"},{"lineNumber":323,"author":{"gitId":"gavin331"},"content":" * Cons: There will be code duplication because their implementations are similar.","lastModifiedDate":"2024-03-27"},{"lineNumber":324,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":325,"author":{"gitId":"gavin331"},"content":"* **Alternative 2 :** Make both `find` and `findtasks` inherit from a parent class.","lastModifiedDate":"2024-03-27"},{"lineNumber":326,"author":{"gitId":"gavin331"},"content":" * Pros: Reduces code duplication.","lastModifiedDate":"2024-03-27"},{"lineNumber":327,"author":{"gitId":"gavin331"},"content":" * Cons: May be harder to understand and organise.","lastModifiedDate":"2024-03-27"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":334,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":335,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":336,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":337,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"azumieflare"},"content":"**Target user profile**: Managers who","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"azumieflare"},"content":"* manage many employees","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"azumieflare"},"content":"* prefers command line input","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"azumieflare"},"content":"* comfortable with manually editing save file","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"azumieflare"},"content":"**Value proposition**: manage employees faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"gavin331"},"content":"|---------| ------------------------------------------ |----------------------------------------------|-------------------------------------------------------------------|","lastModifiedDate":"2024-03-26"},{"lineNumber":360,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | add a new employee | keep a employee on record |","lastModifiedDate":"2024-03-11"},{"lineNumber":362,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | delete a employee | remove entries that I no longer need |","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | list all recorded employees | locate details of all employees in a list |","lastModifiedDate":"2024-03-11"},{"lineNumber":364,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | add a new task | keep upcoming tasks on record |","lastModifiedDate":"2024-03-05"},{"lineNumber":365,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | delete a task | remove entries that I no longer need |","lastModifiedDate":"2024-03-05"},{"lineNumber":366,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | list all recorded tasks | locate details of all tasks in a list |","lastModifiedDate":"2024-03-05"},{"lineNumber":367,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | assign a employee to a tasks | keep track of who is supposed to contribute to a task |","lastModifiedDate":"2024-03-11"},{"lineNumber":368,"author":{"gitId":"gavin331"},"content":"| `* * *` | user | unassign a employee from a task | update changes in manpower allocation |","lastModifiedDate":"2024-03-11"},{"lineNumber":369,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | list all tasks with their assigned employees | locate details of all tasks while seeing who are assigned to them |","lastModifiedDate":"2024-03-05"},{"lineNumber":370,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | mark a task as done | keep track of task completion |","lastModifiedDate":"2024-03-05"},{"lineNumber":371,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | unmark a marked task | undo wrongly marked tasks |","lastModifiedDate":"2024-03-05"},{"lineNumber":372,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | save current data | keep track of all data even after exiting |","lastModifiedDate":"2024-03-05"},{"lineNumber":373,"author":{"gitId":"BryanL2303"},"content":"| `* * *` | user | load saved data | use the data that was saved previously |","lastModifiedDate":"2024-03-05"},{"lineNumber":374,"author":{"gitId":"gavin331"},"content":"| `* * ` | user | find tasks by name | quickly locate specific tasks that I remember |","lastModifiedDate":"2024-03-26"},{"lineNumber":375,"author":{"gitId":"gavin331"},"content":"| `*` | user with many employees in the TaskMasterPro | sort employees by name | locate a employee easily |","lastModifiedDate":"2024-04-02"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"BryanL2303"},"content":"*{More to be added for v1.3}*","lastModifiedDate":"2024-03-05"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"BryanL2303"},"content":"(For all use cases below, the **System** is the `TaskMasterPro` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-05"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"gavin331"},"content":"**Use case: Delete an employee**","lastModifiedDate":"2024-03-26"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"gavin331"},"content":"1. User requests to list employees","lastModifiedDate":"2024-03-11"},{"lineNumber":388,"author":{"gitId":"gavin331"},"content":"2. TaskMasterPro shows a list of employees with their ids","lastModifiedDate":"2024-03-11"},{"lineNumber":389,"author":{"gitId":"gavin331"},"content":"3. User requests to delete a specific employee in the list by their id","lastModifiedDate":"2024-03-11"},{"lineNumber":390,"author":{"gitId":"gavin331"},"content":"4. TaskMasterPro deletes the employee","lastModifiedDate":"2024-03-11"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":392,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":394,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-05"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-05"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":398,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":400,"author":{"gitId":"BryanL2303"},"content":"* 3a. The given id is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":402,"author":{"gitId":"BryanL2303"},"content":" * 3a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":404,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-05"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":406,"author":{"gitId":"BryanL2303"},"content":"**Use case: Delete a task**","lastModifiedDate":"2024-03-05"},{"lineNumber":407,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":408,"author":{"gitId":"BryanL2303"},"content":"**MSS**","lastModifiedDate":"2024-03-05"},{"lineNumber":409,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":410,"author":{"gitId":"BryanL2303"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-05"},{"lineNumber":411,"author":{"gitId":"BryanL2303"},"content":"2. TaskMasterPro shows a list of tasks with their ids","lastModifiedDate":"2024-03-05"},{"lineNumber":412,"author":{"gitId":"BryanL2303"},"content":"3. User requests to delete a specific task in the list by their id","lastModifiedDate":"2024-03-05"},{"lineNumber":413,"author":{"gitId":"BryanL2303"},"content":"4. TaskMasterPro deletes the task","lastModifiedDate":"2024-03-05"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"BryanL2303"},"content":"* 3a. The given id is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"BryanL2303"},"content":" * 3a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"gavin331"},"content":"**Use case: Assign/unassign an employee to a task**","lastModifiedDate":"2024-03-26"},{"lineNumber":430,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":431,"author":{"gitId":"BryanL2303"},"content":"**MSS**","lastModifiedDate":"2024-03-05"},{"lineNumber":432,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":433,"author":{"gitId":"gavin331"},"content":"1. User requests to list employees","lastModifiedDate":"2024-03-11"},{"lineNumber":434,"author":{"gitId":"gavin331"},"content":"2. TaskMasterPro shows a list of employees with their ids","lastModifiedDate":"2024-03-11"},{"lineNumber":435,"author":{"gitId":"BryanL2303"},"content":"3. User requests to list tasks","lastModifiedDate":"2024-03-05"},{"lineNumber":436,"author":{"gitId":"BryanL2303"},"content":"4. TaskMasterPro shows a list of tasks with their ids","lastModifiedDate":"2024-03-05"},{"lineNumber":437,"author":{"gitId":"gavin331"},"content":"5. User requests to assign/un-assign a specific employee in the employee list by their id to a specific task in the task list by its id","lastModifiedDate":"2024-03-11"},{"lineNumber":438,"author":{"gitId":"gavin331"},"content":"6. TaskMasterPro assigns/un-assigns the employee to the task","lastModifiedDate":"2024-03-11"},{"lineNumber":439,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":440,"author":{"gitId":"BryanL2303"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":441,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":442,"author":{"gitId":"BryanL2303"},"content":"**Extensions**","lastModifiedDate":"2024-03-05"},{"lineNumber":443,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":444,"author":{"gitId":"BryanL2303"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-05"},{"lineNumber":445,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":446,"author":{"gitId":"BryanL2303"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":447,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":448,"author":{"gitId":"BryanL2303"},"content":"* 4a. The list is empty.","lastModifiedDate":"2024-03-05"},{"lineNumber":449,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":450,"author":{"gitId":"BryanL2303"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":451,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":452,"author":{"gitId":"BryanL2303"},"content":"* 5a. Any given id is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":453,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":454,"author":{"gitId":"BryanL2303"},"content":" * 5a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":455,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":456,"author":{"gitId":"BryanL2303"},"content":" Use case resumes at step 2/4.","lastModifiedDate":"2024-03-05"},{"lineNumber":457,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":458,"author":{"gitId":"johnyoozhengxian"},"content":"**Use case: Mark a task as done**","lastModifiedDate":"2024-03-27"},{"lineNumber":459,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"gavin331"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"gavin331"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"gavin331"},"content":"2. TaskMasterPro shows a list of tasks with their ids","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"johnyoozhengxian"},"content":"3. User requests to mark a specific task in the list by their id as done","lastModifiedDate":"2024-03-27"},{"lineNumber":465,"author":{"gitId":"johnyoozhengxian"},"content":"4. TaskMasterPro marks that task as done/not done.","lastModifiedDate":"2024-03-27"},{"lineNumber":466,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"gavin331"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"gavin331"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"gavin331"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"gavin331"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"gavin331"},"content":"* 3a. The given id is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"gavin331"},"content":" * 3a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":479,"author":{"gitId":"gavin331"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":480,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":481,"author":{"gitId":"johnyoozhengxian"},"content":"![Interactions Inside the Logic Component for the `mark 1` Command](images/MarkDiagram.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":482,"author":{"gitId":"johnyoozhengxian"},"content":"![Interactions for mark for the `mark 1` command](images/MarkRefDiagram.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":483,"author":{"gitId":"azumieflare"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":484,"author":{"gitId":"johnyoozhengxian"},"content":"Note that if none of the taskId \u003d\u003d 1, an invalid taskId exception will be thrown.","lastModifiedDate":"2024-03-27"},{"lineNumber":485,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":486,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":487,"author":{"gitId":"johnyoozhengxian"},"content":"**Use case: Unmark a task as not done**","lastModifiedDate":"2024-03-27"},{"lineNumber":488,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":489,"author":{"gitId":"johnyoozhengxian"},"content":"**MSS**","lastModifiedDate":"2024-03-27"},{"lineNumber":490,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":491,"author":{"gitId":"johnyoozhengxian"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-27"},{"lineNumber":492,"author":{"gitId":"johnyoozhengxian"},"content":"2. TaskMasterPro shows a list of tasks with their ids","lastModifiedDate":"2024-03-27"},{"lineNumber":493,"author":{"gitId":"johnyoozhengxian"},"content":"3. User requests to unmark a specific task in the list by their id","lastModifiedDate":"2024-03-27"},{"lineNumber":494,"author":{"gitId":"johnyoozhengxian"},"content":"4. TaskMasterPro unmarks that task as not done.","lastModifiedDate":"2024-03-27"},{"lineNumber":495,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":496,"author":{"gitId":"johnyoozhengxian"},"content":" Use case ends.","lastModifiedDate":"2024-03-27"},{"lineNumber":497,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":498,"author":{"gitId":"johnyoozhengxian"},"content":"**Extensions**","lastModifiedDate":"2024-03-27"},{"lineNumber":499,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":500,"author":{"gitId":"johnyoozhengxian"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-27"},{"lineNumber":501,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":502,"author":{"gitId":"johnyoozhengxian"},"content":" Use case ends.","lastModifiedDate":"2024-03-27"},{"lineNumber":503,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":504,"author":{"gitId":"johnyoozhengxian"},"content":"* 3a. The given id is invalid.","lastModifiedDate":"2024-03-27"},{"lineNumber":505,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":506,"author":{"gitId":"johnyoozhengxian"},"content":" * 3a1. TaskMasterPro shows an error message.","lastModifiedDate":"2024-03-27"},{"lineNumber":507,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":508,"author":{"gitId":"johnyoozhengxian"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-27"},{"lineNumber":509,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":510,"author":{"gitId":"johnyoozhengxian"},"content":"![Interactions Inside the Logic Component for the `unmark 1` Command](images/UnmarkDiagram.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":511,"author":{"gitId":"johnyoozhengxian"},"content":"![Interactions for unmark for the `unmark 1` command](images/UnmarkRefDiagram.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":512,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":513,"author":{"gitId":"johnyoozhengxian"},"content":"Note that if none of the taskId \u003d\u003d 1, an invalid taskId exception will be thrown.","lastModifiedDate":"2024-03-21"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"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":518,"author":{"gitId":"gavin331"},"content":"2. Should be able to hold up to 1000 employees without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-11"},{"lineNumber":519,"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":520,"author":{"gitId":"gavin331"},"content":"4. Should be able to handle a corrupted data file without crashing.","lastModifiedDate":"2024-03-07"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":527,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"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":536,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"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":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"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":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"gavin331"},"content":"### Deleting a employee","lastModifiedDate":"2024-03-11"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"gavin331"},"content":"1. Deleting a employee while all employees are being shown","lastModifiedDate":"2024-03-11"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"gavin331"},"content":" 1. Prerequisites: List all employees using the `list` command. Multiple employees in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"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":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"gavin331"},"content":" Expected: No employee is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-11"},{"lineNumber":567,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"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":569,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"BryanL2303":98,"azumieflare":54,"gavin331":89,"-":303,"johnyoozhengxian":35}},{"path":"docs/SettingUp.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: Setting up and getting started","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":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2020-06-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":" 1. Run the `seedu.address.Main` and try a few commands.","lastModifiedDate":"2020-06-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [TaskMasterPro’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"azumieflare":1,"-":54}},{"path":"docs/UserGuide.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: User Guide","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":"BryanL2303"},"content":"Hi! Welcome to the user guide for TaskMasterPro. TaskMasterPro is a **desktop app for managing team members and group tasks**, optimized for use via a **Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TaskMasterPro can get your contact management tasks done faster than traditional GUI apps. No matter whether you are a manager or a team lead who has to manage a team and keep track of their deliverables, TaskMasterPro can help you! Refer to the table of contents below and click on the section you want to skip to. Refer to the `Quick Start` section to get the program running and the `Features` section on the commands that you can use. If you run into any issues using the program try checking through the `FAQ` or `Known Issues` sections to see if the issues has already been brought up and there are any known solutions.","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"# Table of Contents","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"1. [Quick Start](#quick-start)","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"2. [Features](#features)","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" 3. [help](#viewing-help--help)","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" 4. [add](#adding-an-employee-add)","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" 5. [list](#listing-all-employees-list)","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":" 6. [edit](#editing-an-employee-edit)","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" 7. [delete](#deleting-an-employee-delete)","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" 8. [find](#locating-employees-by-employee-names--find)","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" 9. [task](#adding-a-task-task)","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" 10. [listtasks](#listing-all-tasks--listtasks)","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" 11. [deletetask](#deleting-a-task--deletetask-task_id)","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" 12. [findtasks](#locating-tasks-by-task-names--findtasks)","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" 13. [assigntask](#assign-a-task-to-employee--assigntask)","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" 14. [unassigntask](#unassign-a-task-to-employee--unassigntask)","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" 15. [mark](#mark-a-task--mark)","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" 16. [unmark](#unmark-a-task--unmark)","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" 17. [clear](#clearing-all-entries--clear)","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" 18. [exit](#exiting-the-program--exit)","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" 19. [Saving the data](#saving-the-data)","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" 20. [Editing the data file](#editing-the-data-file)","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"21. [FAQ](#faq)","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"22. [Known Issues](#known-issues)","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"23. [Command Summary](#command-summary)","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"## Quick Start","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"1. Download the latest `taskmasterpro.jar` from [here](https://github.com/AY2324S2-CS2103T-T15-4/tp/releases/tag/v1.2).","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your TaskMasterPro.","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar taskmasterpro.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"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":45,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"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":48,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" * `list` : Lists all employees.","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds an employee named `John Doe` to TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * `delete 3` : Deletes the employee with employee ID \u003d 3.","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":" * `task meeting` : Creates a task with description called meeting.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" * `clear` : Deletes all stored data.","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"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":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"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":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"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":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"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":85,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":87,"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":88,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":"### Adding an employee: `add`","lastModifiedDate":"2024-03-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":"Adds an employee to TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-03-06"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":"Make sure that your parameter\u0027s formats are valid!","lastModifiedDate":"2024-03-06"},{"lineNumber":106,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":"* `add n/AikenDueet p/82311231 e/aiken@example.com a/Dueet street, block 123, #01-01`","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"BryanL2303"},"content":"* `add n/Ben Diddle t/friend e/bendiddle@example.com a/Newgate Prison p/81092109 t/criminal`","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":"### Listing all employees: `list`","lastModifiedDate":"2024-03-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":"Shows a list of all employees in TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"BryanL2303"},"content":"### Editing an employee: `edit`","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"BryanL2303"},"content":"Edits an employee\u0027s details in TaskMasterPro.","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"BryanL2303"},"content":"Format: `edit EMPLOYEE_ID [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"BryanL2303"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"BryanL2303"},"content":"You can specify `t/` multiple times to add more tags","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"BryanL2303"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"BryanL2303"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":"* `edit 1 n/AikenDueet p/82311231 e/aiken@example.com`","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"BryanL2303"},"content":"* `edit 2 a/Newgate Prison p/81092109 t/criminal`","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":"### Deleting an employee: `delete`","lastModifiedDate":"2024-03-06"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":"Deletes the specified employee from TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":"Format: `delete EMPLOYEE_ID`","lastModifiedDate":"2024-03-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":"* The `EMPLOYEE_ID` refers to the index number shown in the displayed employee list.","lastModifiedDate":"2024-03-06"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" Make sure that its valid!","lastModifiedDate":"2024-03-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":141,"author":{"gitId":"BryanL2303"},"content":"![id position](images/indicateIdPosition.png)","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":"* `list` followed by `delete 3` deletes the employee with id 3 in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"BryanL2303"},"content":"### Locating employees by employee names : `find`","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"BryanL2303"},"content":"Finds employees whose names contain any of the given keyword.","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"BryanL2303"},"content":"* The search is case-insensitive. e.g. `alex` will match `Alex`.","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"BryanL2303"},"content":"* The order of the keywords does not matter. e.g. `Yeoh Alex` will match `Alex Yeoh`.","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"BryanL2303"},"content":"* Only full words will be matched. e.g. `Ale` will not match `Alex`.","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"BryanL2303"},"content":"* Employees matching at least 1 keyword will be returned. e.g. `Alex Yu` will return employees with","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"BryanL2303"},"content":"`Alex` or `Yu` in their names.","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"BryanL2303"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":159,"author":{"gitId":"BryanL2303"},"content":"* `find alex` returns employees with `alex` in their names.","lastModifiedDate":"2024-04-04"},{"lineNumber":160,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":161,"author":{"gitId":"BryanL2303"},"content":"### Adding a task: `task`","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"gavin331"},"content":"Adds a task to TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"BryanL2303"},"content":"Format: `task TASK_DESCRIPTION`","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"BryanL2303"},"content":"The description for the task is required and can be any length with spaces in between","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"BryanL2303"},"content":"* `task Weekly meeting`","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"BryanL2303"},"content":"* `task Submitting report`","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":"### Listing all tasks : `listtasks`","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"gavin331"},"content":"Shows a list of all tasks in TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"BryanL2303"},"content":"Format: `listtasks`","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"BryanL2303"},"content":"### Deleting a task : `deletetask TASK_ID`","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"gavin331"},"content":"Deletes the specified task from TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"BryanL2303"},"content":"Format: `deletetask TASK_ID`","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"BryanL2303"},"content":"* Deletes the task with the specified `TASK_ID`.","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"BryanL2303"},"content":"* The task id refers to the number shown in the displayed task list.","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"gavin331"},"content":"* `listtasks` followed by `deletetask 2` deletes the task with id 2 in TaskMasterPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"gavin331"},"content":"### Locating tasks by task names : `findtasks`","lastModifiedDate":"2024-03-26"},{"lineNumber":195,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":196,"author":{"gitId":"BryanL2303"},"content":"Finds tasks whose names contain any of the given keyword.","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"gavin331"},"content":"Format: `findtasks KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-26"},{"lineNumber":199,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"gavin331"},"content":"* The search is case-insensitive. e.g. `report` will match `Report`.","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"gavin331"},"content":"* The order of the keywords does not matter. e.g. `report meeting` will match `meeting report`.","lastModifiedDate":"2024-03-26"},{"lineNumber":202,"author":{"gitId":"gavin331"},"content":"* Only full words will be matched. e.g. `report` will not match `reports`.","lastModifiedDate":"2024-03-26"},{"lineNumber":203,"author":{"gitId":"gavin331"},"content":"* Tasks matching at least 1 keyword will be returned. e.g. `report meeting` will return tasks with","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"gavin331"},"content":"`report` or `meeting` in their names.","lastModifiedDate":"2024-03-26"},{"lineNumber":205,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"gavin331"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":207,"author":{"gitId":"gavin331"},"content":"* `findtasks report` returns tasks with `report` in their names.","lastModifiedDate":"2024-03-26"},{"lineNumber":208,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"johnyoozhengxian"},"content":"### Assign a task to employee : `assigntask`","lastModifiedDate":"2024-03-06"},{"lineNumber":210,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":211,"author":{"gitId":"johnyoozhengxian"},"content":"Assigns a task object to employee.","lastModifiedDate":"2024-03-06"},{"lineNumber":212,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":213,"author":{"gitId":"BryanL2303"},"content":"Format: `assigntask TASK_ID EMPLOYEE_ID`","lastModifiedDate":"2024-04-03"},{"lineNumber":214,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":215,"author":{"gitId":"johnyoozhengxian"},"content":"* Assigns a task object with id `TASK_ID` to an employee with id `EMPLOYEE_ID`.","lastModifiedDate":"2024-03-06"},{"lineNumber":216,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":217,"author":{"gitId":"johnyoozhengxian"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":218,"author":{"gitId":"johnyoozhengxian"},"content":"* `assigntask` followed by `2 3` assigns task object with id 2 to an employee with id 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":219,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":220,"author":{"gitId":"BryanL2303"},"content":"### Unassign a task to employee : `unassigntask`","lastModifiedDate":"2024-03-30"},{"lineNumber":221,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":222,"author":{"gitId":"johnyoozhengxian"},"content":"Unassigns a task object from an employee.","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":224,"author":{"gitId":"BryanL2303"},"content":"Format: `unassigntask TASK_ID EMPLOYEE_ID`","lastModifiedDate":"2024-04-03"},{"lineNumber":225,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":226,"author":{"gitId":"BryanL2303"},"content":"* Unassigns a task object with id `TASK_ID` from an employee with id `EMPLOYEE_ID`.","lastModifiedDate":"2024-03-30"},{"lineNumber":227,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":228,"author":{"gitId":"BryanL2303"},"content":"Examples:","lastModifiedDate":"2024-03-30"},{"lineNumber":229,"author":{"gitId":"BryanL2303"},"content":"* `unassigntask` followed by `2 3` unassigns task object with id 2 from an employee with id 3.","lastModifiedDate":"2024-03-30"},{"lineNumber":230,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":231,"author":{"gitId":"johnyoozhengxian"},"content":"### Mark a task : `mark`","lastModifiedDate":"2024-03-06"},{"lineNumber":232,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":233,"author":{"gitId":"johnyoozhengxian"},"content":"Marks a task as done.","lastModifiedDate":"2024-03-06"},{"lineNumber":234,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":235,"author":{"gitId":"johnyoozhengxian"},"content":"Format: `mark TASK_ID`","lastModifiedDate":"2024-03-06"},{"lineNumber":236,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":237,"author":{"gitId":"johnyoozhengxian"},"content":"* Marks a specified task with id `TASK_ID`.","lastModifiedDate":"2024-03-06"},{"lineNumber":238,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":239,"author":{"gitId":"johnyoozhengxian"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":240,"author":{"gitId":"johnyoozhengxian"},"content":"* `mark` followed by a valid integer `TASK_ID` which corresponds to a real task in the database.","lastModifiedDate":"2024-03-06"},{"lineNumber":241,"author":{"gitId":"johnyoozhengxian"},"content":"* `mark 1`","lastModifiedDate":"2024-03-06"},{"lineNumber":242,"author":{"gitId":"johnyoozhengxian"},"content":"* `mark 2`","lastModifiedDate":"2024-03-06"},{"lineNumber":243,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":244,"author":{"gitId":"johnyoozhengxian"},"content":"### Unmark a task : `unmark`","lastModifiedDate":"2024-03-06"},{"lineNumber":245,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":246,"author":{"gitId":"johnyoozhengxian"},"content":"Unmarks a task.","lastModifiedDate":"2024-03-06"},{"lineNumber":247,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":248,"author":{"gitId":"johnyoozhengxian"},"content":"Format: `unmark TASK_ID`","lastModifiedDate":"2024-03-06"},{"lineNumber":249,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":250,"author":{"gitId":"johnyoozhengxian"},"content":"* Unmarks a specified task with id `TASK_ID`.","lastModifiedDate":"2024-03-06"},{"lineNumber":251,"author":{"gitId":"johnyoozhengxian"},"content":"* task to be unmarked should be marked as done before.","lastModifiedDate":"2024-03-06"},{"lineNumber":252,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":253,"author":{"gitId":"johnyoozhengxian"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":254,"author":{"gitId":"johnyoozhengxian"},"content":"* `unmark` followed by a valid integer `TASK_ID` which corresponds to a real task in the database.","lastModifiedDate":"2024-03-06"},{"lineNumber":255,"author":{"gitId":"johnyoozhengxian"},"content":"* `unmark 1`","lastModifiedDate":"2024-03-06"},{"lineNumber":256,"author":{"gitId":"johnyoozhengxian"},"content":"* `unmark 2`","lastModifiedDate":"2024-03-06"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":258,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-04-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":260,"author":{"gitId":"azumieflare"},"content":"Clears all entries from TaskMasterPro.","lastModifiedDate":"2024-04-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":262,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2024-04-05"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2024-04-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2024-04-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2024-04-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro data are saved in the hard disk automatically after any command that changes the data.","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"BryanL2303"},"content":"There is no need to save manually.","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2024-04-04"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":278,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro data are saved automatically as a JSON file [JAR file location]/data/taskmasterpro.json . Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-04-04"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":280,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2024-04-04"},{"lineNumber":281,"author":{"gitId":"BryanL2303"},"content":"If your changes to the data file makes its format invalid, TaskMasterPro will discard all data and start with the original sample data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":282,"author":{"gitId":"BryanL2303"},"content":"Furthermore, certain edits can cause TaskMasterPro to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"BryanL2303"},"content":"**A**: Install the app in the other computer and overwrite the data file it creates with the file that contains the data of your previous TaskMasterPro home folder.","lastModifiedDate":"2024-04-04"},{"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":"BryanL2303"},"content":"## Known Issues","lastModifiedDate":"2024-04-03"},{"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":"BryanL2303"},"content":"## Command Summary","lastModifiedDate":"2024-04-03"},{"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":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2024-04-04"},{"lineNumber":307,"author":{"gitId":"BryanL2303"},"content":"**Add employee** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/Ben Diddle t/friend e/bendiddle@example.com a/Newgate Prison p/81092109 t/criminal`","lastModifiedDate":"2024-04-04"},{"lineNumber":308,"author":{"gitId":"BryanL2303"},"content":"**Edit employee** | `edit EMPLOYEE_ID [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` \u003cbr\u003e e.g., `edit 2 a/Newgate Prison p/81092109 t/criminal`","lastModifiedDate":"2024-04-04"},{"lineNumber":309,"author":{"gitId":"gavin331"},"content":"**List employees** | `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":310,"author":{"gitId":"BryanL2303"},"content":"**Find employees** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find alex`","lastModifiedDate":"2024-04-04"},{"lineNumber":311,"author":{"gitId":"gavin331"},"content":"**Delete employee** | `delete EMPLOYEE_ID` \u003cbr\u003e e.g., `delete 2`","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"BryanL2303"},"content":"**Add task** | `task TASK_DESCRIPTION` \u003cbr\u003e e.g., `task Weekly meeting`","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"BryanL2303"},"content":"**List tasks** | `listtasks`","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"BryanL2303"},"content":"**Delete task** | `deletetask TASK_ID`\u003cbr\u003e e.g., `deletetask 3`","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"gavin331"},"content":"**Find tasks** | `findtasks KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `findtasks report`","lastModifiedDate":"2024-03-26"},{"lineNumber":316,"author":{"gitId":"johnyoozhengxian"},"content":"**Mark task** | `mark TASK_ID`\u003cbr\u003e e.g., `mark 1` ","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"johnyoozhengxian"},"content":"**Unmark task** | `unmark TASK_ID`\u003cbr\u003e e.g., `unmark 1` ","lastModifiedDate":"2024-03-06"},{"lineNumber":318,"author":{"gitId":"BryanL2303"},"content":"**Assign task to an employee** | `assigntask TASK_ID EMPLOYEE_ID` \u003cbr\u003e e.g., `assigntask 1 2`","lastModifiedDate":"2024-04-03"},{"lineNumber":319,"author":{"gitId":"BryanL2303"},"content":"**Unassign employee from a task** | `unassigntask TASK_ID EMPLOYEE_ID` \u003cbr\u003e e.g., `unassigntask 1 1`","lastModifiedDate":"2024-04-03"},{"lineNumber":320,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"BryanL2303"},"content":"**Exit** | `exit`","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"BryanL2303":93,"azumieflare":5,"gavin331":39,"-":144,"johnyoozhengxian":40}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","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":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","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":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"BryanL2303"},"content":" content: \"TaskMasterPro\";","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"BryanL2303":1,"-":294}},{"path":"docs/diagrams/AddTask0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":11}},{"path":"docs/diagrams/AddTask1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003eMeeting:Task\" as TaskMeeting","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"TaskMeeting : TaskId \u003d 1","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"TaskList - TaskMeeting","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":14}},{"path":"docs/diagrams/AddTask2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003eMeeting:Task\" as TaskMeeting","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"TaskMeeting : TaskId \u003d 1","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003eProject:Task\" as TaskProject","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskProject : TaskId \u003d 2","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"TaskList - TaskMeeting","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"TaskList -- TaskProject","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":17}},{"path":"docs/diagrams/AddTask3.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003eProject:Task\" as TaskProject","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"TaskProject : TaskId \u003d 2","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"TaskList -- TaskProject","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":15}},{"path":"docs/diagrams/AddTaskActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"skin rose","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"start","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":":User executes \"task\" command;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":":New task is created and","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"added to TaskMasterPro;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":":Save after execution","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"completes;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"stop","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":12}},{"path":"docs/diagrams/AddTaskSequence-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"!include style.puml","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"participant \":TaskMasterPro\" as TaskMasterPro MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"end box","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"[-\u003e Model : addTask()","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"activate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"Model -\u003e TaskMasterPro : addTask()","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"activate TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro -\u003e TaskMasterPro :addTask()","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro --\u003e Model :","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"deactivate TaskMasterPro","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"[\u003c-- Model","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"deactivate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":23}},{"path":"docs/diagrams/AddTaskSequence.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"!include style.puml","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"participant \"u:AddTaskCommand\" as AddTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"end box","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"end box","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"[-\u003e LogicManager : execute(task)","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"activate LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(task)","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"create AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"TaskMasterProParser -\u003e AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"activate AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"AddTaskCommand --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"deactivate AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"TaskMasterProParser --\u003e LogicManager : u","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"LogicManager -\u003e AddTaskCommand : execute()","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"activate AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":"AddTaskCommand -\u003e Model : addTask()","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"activate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"Model --\u003e AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":"deactivate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":"AddTaskCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"deactivate AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":"AddTaskCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":"destroy AddTaskCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":46}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteEmployee(employee)","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveTaskMasterPro(taskMasterPro)","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"BryanL2303":1,"gavin331":1,"-":37}},{"path":"docs/diagrams/AssignTask.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:Employee\" as Employee","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:AssignedTasks\" as AssignedTasks","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"Employee - AssignedTasks","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:Task\" as Task","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:AssignedEmployees\" as AssignedEmployees","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"Task - AssignedEmployees","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":16}},{"path":"docs/diagrams/AssignTask0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"\u0027https://plantuml.com/object-diagram","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:TaskMasterPro\" as TaskMasterPro","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:TaskList\" as TaskList","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro - TaskList","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"object \"\u003cu\u003e:UniqueEmployeeList\" as UniqueEmployeeList","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro - UniqueEmployeeList","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":14}},{"path":"docs/diagrams/AssignTaskActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"skin rose","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"start","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":":User executes \"assigntask\" command;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":":Logic retrieves all employees","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"and tasks from the model;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":":Logic iterates through all employees","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"and tasks to look for employee and task","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"with matching id to the parameter;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":":Model creates new Employee and Task updated","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"with the new AssignedTasks and AssignedEmployees;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":":Save after execution","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"completes;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"stop","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":17}},{"path":"docs/diagrams/AssignTaskRefSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"mainframe sd update existing Employee fields","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \"a:AssignTaskCommand\" as AssignTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"participant \"t:Task\" as Task MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"participant \"e:Employee\" as Employee MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand -\u003e Model : getFilteredTaskList()","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"Model --\u003e AssignTaskCommand : taskList","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand -\u003e Model : getFilteredEmployeeList()","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"Model --\u003e AssignTaskCommand : employeeList","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"\u0027loop until taskId \u003d\u003d 1 for each t in taskList","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"\u0027AssignTaskCommand -\u003e Task: getTaskId()","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"\u0027end","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"loop for each t in taskList","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" AssignTaskCommand -\u003e Task: getTaskId()","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" opt taskId \u003d\u003d 1","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" loop until employeeId \u003d\u003d 6 for each e in employeeList","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" AssignTaskCommand -\u003e Employee: getEmployeeId()","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" opt employeeId \u003d\u003d 6","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" AssignTaskCommand -\u003e Employee : assignTask(1)","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" Employee --\u003e AssignTaskCommand : updatedEmployee","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" AssignTaskCommand -\u003e Model : setEmployee(e, updatedEmployee)","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" end","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" end","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" end","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"end","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"gavin331":39}},{"path":"docs/diagrams/AssignTaskSequence-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"participant \":Employee\" as Employee MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"participant \":Task\" as Task MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Model : getFilteredTaskList()","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Model : :TaskList","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Model : getFilteredEmployeeList()","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Model : :EmployeeList","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Employee : assignEmployee(e1)","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"activate Employee","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Employee : e2:Employee","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"deactivate Employee","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Model : setEmployee(e1, e2)","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Model","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Task : assignTask(t1)","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":"activate Task","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Task : t2:Task","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"deactivate Task","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"[-\u003e Model : setTask(t1, t2)","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":"[\u003c-- Model","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":41}},{"path":"docs/diagrams/AssignTaskSequence.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"participant \":AssignTaskParser\" as AssignTaskParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"participant \"a:AssignTaskCommand\" as AssignTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"[-\u003e LogicManager : execute(assigntask)","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"activate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"assigntask 2 1\")","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"create AssignTaskParser","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"TaskMasterProParser -\u003e AssignTaskParser","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"create AssignTaskCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"AssignTaskParser -\u003e AssignTaskCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"AssignTaskCommand --\u003e AssignTaskParser : a","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":"AssignTaskParser --\u003e TaskMasterProParser : a","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":"TaskMasterProParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"LogicManager -\u003e AssignTaskCommand : a.execute(m)","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":"activate AssignTaskCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"AssignTaskCommand -\u003e Model : e.assignTask(t)","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"AssignTaskCommand -\u003e Model : t.assignEmployee(e)","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"AssignTaskCommand --\u003e LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":"deactivate AssignTaskCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"BryanL2303":41}},{"path":"docs/diagrams/AssignTaskSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"participant \":AssignTaskCommandParser\" as AssignTaskCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"participant \"a:AssignTaskCommand\" as AssignTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"[-\u003e LogicManager : execute(\"assigntask 1 6\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"assigntask 1 6\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"create AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"activate AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"AssignTaskCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"deactivate AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e AssignTaskCommandParser : parse(\" 1 6\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"activate AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"create AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"AssignTaskCommandParser -\u003e AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"activate AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand --\u003e AssignTaskCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"deactivate AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"AssignTaskCommandParser --\u003e TaskMasterProParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"deactivate AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"AssignTaskCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"destroy AssignTaskCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e AssignTaskCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"activate AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"\u0027Put this into a ref block\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":"group ref [update existing Employee fields]","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand -[hidden]-\u003e Model","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":"end","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":"\u0027Up to here is inside the ref block\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"CommandResult --\u003e AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":"AssignTaskCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":"deactivate AssignTaskCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"gavin331":72}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"TaskMasterPro *-right-\u003e \"1\" UniqueEmployeeList","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"TaskMasterPro *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro *-down-\u003e \"1\" TaskList","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"UniqueTagList -[hidden]down- UniqueEmployeeList","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"UniqueTagList -[hidden]down- UniqueEmployeeList","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"UniqueEmployeeList -right-\u003e Employee","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"TaskList --\u003e Task","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskId","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskName","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskStatus","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"Employee -up-\u003e \"*\" Tag","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Name","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Phone","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Email","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Address","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"azumieflare":6,"gavin331":10,"-":12}},{"path":"docs/diagrams/CommitActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"skin rose","lastModifiedDate":"2023-07-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"start","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":":User executes command;","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u0027Since the beta syntax does not support placing the condition outside the","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u0027diamond we place it as the true branch instead.","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"if () then ([command commits TaskMasterPro])","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" :Purge redundant states;","lastModifiedDate":"2020-12-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" :Save TaskMasterPro to","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" taskMasterProStateList;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"else ([else])","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"endif","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"stop","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":15}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"delete 1\")","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e DeleteCommandParser","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"DeleteCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"DeleteCommandParser --\u003e TaskMasterProParser : d","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"DeleteCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":"DeleteCommand -\u003e Model : deleteEmployee(employee)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"BryanL2303":1,"gavin331":10,"-":59}},{"path":"docs/diagrams/DeleteTaskActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"skin rose","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"start","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":":User executes \"deletetask\" command;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"if () then ([task exists])","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":" :Delete task from","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" TaskMasterPro;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"else ([else])","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"endif","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":":Save after execution","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"completes;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"stop","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"azumieflare":15}},{"path":"docs/diagrams/FindTasksActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"skin rose","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"start","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":":User executes \"findtasks","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"project meeting\" command;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":":Split \"project meeting\" using","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" whitespaces.;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":":A keyword array containing","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"\"project\" and \"meeting\" is","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" created.;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":":Iterates through the tasklist","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"to find tasks that matches","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"any of the keywords.;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":":Display the tasks that matches","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"any of the keywords.;","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"stop","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"gavin331":23}},{"path":"docs/diagrams/FindTasksSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"participant \":FindTasksCommandParser\" as FindTasksCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"participant \"p:TaskNameContainsKeywordsPredicate\" as TaskNameContainsKeywordsPredicate LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"participant \"f:FindTasksCommand\" as FindTasksCommand LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"[-\u003e LogicManager : execute(\"findtasks \\nproject meeting\")","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"activate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"findtasks \\nproject meeting\")","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"create FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"activate FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"deactivate FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e FindTasksCommandParser : parse(\"project meeting\")","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"activate FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"create TaskNameContainsKeywordsPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser -\u003e TaskNameContainsKeywordsPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"activate TaskNameContainsKeywordsPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"TaskNameContainsKeywordsPredicate --\u003e FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"deactivate TaskNameContainsKeywordsPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"create FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser -\u003e FindTasksCommand : FindTasksCommand(p)","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"activate FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"FindTasksCommand --\u003e FindTasksCommandParser :","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"deactivate FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser --\u003e TaskMasterProParser : f","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"deactivate FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":"FindTasksCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"destroy FindTasksCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e FindTasksCommand : execute(m)","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":"activate FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"FindTasksCommand -\u003e Model : updateFilteredTaskList(p)","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":"activate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":"Model --\u003e FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"deactivate Model","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":"create CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":"FindTasksCommand -\u003e CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":"activate CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"CommandResult --\u003e FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":"FindTasksCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":"deactivate FindTasksCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"gavin331":78}},{"path":"docs/diagrams/MarkDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":MarkCommandParser\" as MarkCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"a:MarkCommand\" as MarkCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"[-\u003e LogicManager : execute(\"mark 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"mark 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"create MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser -\u003e MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"activate MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser -\u003e MarkCommandParser : parse(\" 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"activate MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"create MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommandParser -\u003e MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"activate MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand --\u003e MarkCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommandParser --\u003e TaskMasterProParser : a","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"destroy MarkCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":"LogicManager -\u003e MarkCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":"activate MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Put this into a ref block\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":"group ref [update existing Employee fields]","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand -[hidden]-\u003e Model","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":"end","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Up to here is inside the ref block\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":"CommandResult --\u003e MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate MarkCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"johnyoozhengxian":73}},{"path":"docs/diagrams/MarkRefDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"mainframe sd mark Task","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:MarkCommand\" as MarkCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"t:Task\" as Task MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"MarkCommand -\u003e Model : getFilteredTaskList()","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"Model --\u003e MarkCommand : taskList","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"loop for each t in taskList","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand -\u003e Task: getTaskId()","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" opt taskId \u003d\u003d 1","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand -\u003e Model : deleteTask(t)","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand -\u003e Task : markTask()","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" Task --\u003e MarkCommand : taskToMark","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand -\u003e Model : addTask(taskToMark)","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" end","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"end","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"johnyoozhengxian":27}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyTaskMasterPro\" as ReadOnlyTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"Class TaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"Class UniqueEmployeeList","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"Class TaskList","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"Class Employee","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"Class Task","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"Class TaskId","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"Class TaskName","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"Class TaskStatus","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"Class Tasks","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"TaskMasterPro .up.|\u003e ReadOnlyTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"Model .left.\u003e ReadOnlyTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"ModelManager -left-\u003e \"1\" TaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"TaskMasterPro *--\u003e \"1\" UniqueEmployeeList","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro *--\u003e \"1\" TaskList","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"UniqueEmployeeList --\u003e \"~* all\" Employee","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":"TaskList --\u003e \"~* all\" Task","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Name","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Phone","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Email","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e Address","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":"Employee *--\u003e \"*\" Tasks","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"Employee *--\u003e \"*\" Tag","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskName","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskStatus","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":"Task *--\u003e TaskId","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":"Employee -[hidden]up--\u003e I","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"UniqueEmployeeList -[hidden]right-\u003e I","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"ModelManager --\u003e \"~* filtered\" Employee","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":10,"gavin331":17,"-":37}},{"path":"docs/diagrams/ParserClasses.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2021-07-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2021-07-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2021-07-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2021-07-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2021-07-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2021-07-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class XYZCommand","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"package \"Parser classes\"{","lastModifiedDate":"2021-07-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nParser\" as Parser","lastModifiedDate":"2022-01-03"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"Class TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class XYZCommandParser","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class CliSyntax","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class ArgumentTokenizer","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"HiddenOutside ..\u003e TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser .down.\u003e XYZCommandParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"XYZCommandParser .up.|\u003e Parser","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ArgumentTokenizer","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ArgumentTokenizer .left.\u003e ArgumentMultimap","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e CliSyntax","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"CliSyntax ..\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ParserUtil .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ArgumentTokenizer .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"gavin331":4,"-":34}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"package \"TaskMasterPro Storage\" #F4F6F6{","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nTaskMasterProStorage\" as TaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"Class JsonTaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"Class JsonSerializableTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"Class JsonAdaptedEmployee","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"StorageManager -up-\u003e \"1\" TaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"Storage -right-|\u003e TaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"JsonTaskMasterProStorage .up.|\u003e TaskMasterProStorage","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"JsonTaskMasterProStorage ..\u003e JsonSerializableTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"JsonSerializableTaskMasterPro --\u003e \"*\" JsonAdaptedEmployee","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"JsonAdaptedEmployee --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":11,"-":32}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"Class Panel","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"Class EmployeeCard","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"Class TaskCard","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"MainWindow *-down-\u003e \"1\" Panel","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"Panel -down-\u003e \"*\" EmployeeCard","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":"Panel -down-\u003e \"*\" TaskCard","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":"Panel --|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"EmployeeCard --|\u003e UiPart","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":"TaskCard --|\u003e UiPart","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"EmployeeCard ..\u003e Model","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":"TaskCard ..\u003e Model","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":"Panel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"azumieflare":9,"gavin331":3,"-":52}},{"path":"docs/diagrams/UndoRedoState0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title Initial state","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"hide State2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State1","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":18}},{"path":"docs/diagrams/UndoRedoState1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"delete 5\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":20}},{"path":"docs/diagrams/UndoRedoState2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"add n/David\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":18}},{"path":"docs/diagrams/UndoRedoState3.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"undo\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":18}},{"path":"docs/diagrams/UndoRedoState4.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"list\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab2:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":18}},{"path":"docs/diagrams/UndoRedoState5.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"clear\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" class State1 as \"\u003cu\u003eab0:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" class State2 as \"\u003cu\u003eab1:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" class State3 as \"\u003cu\u003eab3:TaskMasterPro\u003c/u\u003e\"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"note right on link: State ab2 deleted.","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":3,"-":19}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(undo)","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser -\u003e UndoCommand","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"UndoCommand --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"TaskMasterProParser --\u003e LogicManager : u","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"UndoCommand -\u003e Model : undoTaskMasterPro()","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gavin331":8,"-":38}},{"path":"docs/diagrams/UndoSequenceDiagram-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2024-02-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2024-02-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-02-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-02-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"participant \":VersionedTaskMasterPro\" as VersionedTaskMasterPro MODEL_COLOR","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"[-\u003e Model : undoTaskMasterPro()","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"Model -\u003e VersionedTaskMasterPro : undo()","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"activate VersionedTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"VersionedTaskMasterPro -\u003e VersionedTaskMasterPro :resetData(ReadOnlyTaskMasterPro)","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"VersionedTaskMasterPro --\u003e Model :","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"deactivate VersionedTaskMasterPro","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[\u003c-- Model","lastModifiedDate":"2024-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2024-02-09"}],"authorContributionMap":{"gavin331":7,"-":16}},{"path":"docs/diagrams/UnmarkDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":TaskMasterProParser\" as TaskMasterProParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"participant \":UnmarkCommandParser\" as UnmarkCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"a:UnmarkCommand\" as UnmarkCommand LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"[-\u003e LogicManager : execute(\"mark 1\")","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"activate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"LogicManager -\u003e TaskMasterProParser : parseCommand(\"unmark 1\")","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"activate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"create UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser -\u003e UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"activate UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommandParser --\u003e TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser -\u003e UnmarkCommandParser : parse(\" 1\")","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"activate UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"create UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommandParser -\u003e UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"activate UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand --\u003e UnmarkCommandParser :","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommandParser --\u003e TaskMasterProParser : a","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommandParser -[hidden]-\u003e TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"destroy UnmarkCommandParser","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"TaskMasterProParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate TaskMasterProParser","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":"LogicManager -\u003e UnmarkCommand : execute(m)","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":"activate UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Put this into a ref block\u0027","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":"group ref [update existing Employee fields]","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand -[hidden]-\u003e Model","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":"end","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":"\u0027Up to here is inside the ref block\u0027","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":"create CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand -\u003e CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"activate CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":"CommandResult --\u003e UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate UnmarkCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"johnyoozhengxian":73}},{"path":"docs/diagrams/UnmarkRefDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"!include style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"mainframe sd unmark Task","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:UnmarkCommand\" as UnmarkCommand LOGIC_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"participant \"t:Task\" as Task MODEL_COLOR","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"end box","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"UnmarkCommand -\u003e Model : getFilteredTaskList()","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"Model --\u003e UnmarkCommand : taskList","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"loop for each t in taskList","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand -\u003e Task: getTaskId()","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" opt taskId \u003d\u003d 1","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand -\u003e Model : deleteTask(t)","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand -\u003e Task : unmarkTask()","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" Task --\u003e UnmarkCommand : taskToUnmark","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand -\u003e Model : addTask(taskToUnmark)","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" end","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"end","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"johnyoozhengxian":27}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"Participant \":TaskMasterProParser\" as abp LOGIC_COLOR","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"ecp -\u003e ec ++: index, editEmployeeDescriptor","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17"}],"authorContributionMap":{"gavin331":2,"-":20}},{"path":"docs/index.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":"BryanL2303"},"content":"title: TaskMasterPro","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T15-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T15-4/tp/actions)","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T15-4/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-T15-4/tp)","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"**TaskMasterPro is a desktop application designed to aid managers with managing employee\u0027s tasks.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"* If you are interested in using TaskMasterPro, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"* If you are interested about developing TaskMasterPro, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"BryanL2303":7,"-":13}},{"path":"docs/team/azumieflare.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"layout: page","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"### Project: TaskMasterPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro is a desktop application build on TaskMasterPro - Level 3. 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-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"### ToDo, will be updated over time.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"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-05"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"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-05"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"azumieflare":47}},{"path":"docs/team/bryanlee.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"layout: page","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"title: Bryan Lee\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"### Project: TaskMasterPro","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"### Work in progress... Do not refer to this page yet.","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"TaskMasterPro is a desktop address book application used for organising team members and team projects. 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":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"* **New Feature**: Description of the feature.","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" * What it does:","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":" * Justification:","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" * Highlights:","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" * Credits:","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"* **Project management**:","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" * Managed releases `v1.1` - `v1.1` (1 release) on GitHub","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" * User Guide:","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"* **Community**:","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":"* **Tools**:","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" * Integrated a new Github plugin (Codecov) to the team repo","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"BryanL2303":43}},{"path":"docs/team/gavingoh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"layout: page","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"title: Gavin Goh\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"### Project: TaskMasterPro Level 3","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"TaskMasterPro 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-05"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"gavin331"},"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-05"},{"lineNumber":16,"author":{"gitId":"gavin331"},"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-05"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"azumieflare":1,"gavin331":45}},{"path":"docs/team/johndoe.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: John Doe\u0027s Project Portfolio Page","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":"azumieflare"},"content":"### Project: TaskMasterPro Level 3","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - 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-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"azumieflare":2,"-":44}},{"path":"docs/team/johnyoozhengxian.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"### Project: TaskMasterPro Level 3","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro - 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-13"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"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-06"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"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-06"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" * User Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"azumieflare":2,"johnyoozhengxian":44}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"This command allows users of the TaskMasterPro application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * Changes the remark of an existing employee in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `TaskMasterProParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/TaskMasterPro-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" + \": Edits the remark of the employee identified \"","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" + \"by the index number used in the last employee listing. \"","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" * @param index of the employee in the filtered employee list to edit the remark","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" * @param remark of the employee to be updated to","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"azumieflare"},"content":"Your code should look something like [this](https://github.com/se-edu/TaskMasterPro-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"azumieflare"},"content":":information_source: Don’t forget to update `TaskMasterProParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"azumieflare"},"content":"[here](https://github.com/se-edu/TaskMasterPro-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"azumieflare"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of employee data. We achieve that by working with the `Employee` model. Each field in a Employee is implemented as a separate class (e.g. a `Name` object represents the employee’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a employee.","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"gavin331"},"content":"Create a new `Remark` in `seedu.address.model.employee`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"azumieflare"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/TaskMasterPro-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2024-03-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"gavin331"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"azumieflare"},"content":"Simply add the following to [`seedu.address.ui.EmployeeCard`](https://github.com/se-edu/TaskMasterPro-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-13"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"azumieflare"},"content":"**`EmployeeCard.java`:**","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"azumieflare"},"content":"Then insert the following into [`main/resources/view/EmployeeListCard.fxml`](https://github.com/se-edu/TaskMasterPro-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2024-03-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"azumieflare"},"content":"**`EmployeeListCard.fxml`:**","lastModifiedDate":"2024-03-13"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"azumieflare"},"content":"## Modify `Employee` to support a `Remark` field","lastModifiedDate":"2024-03-13"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"azumieflare"},"content":"Since `EmployeeCard` displays data from a `Employee`, we need to update `Employee` to get our `Remark` displayed!","lastModifiedDate":"2024-03-13"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"azumieflare"},"content":"### Modify `Employee`","lastModifiedDate":"2024-03-13"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"azumieflare"},"content":"We change the constructor of `Employee` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2024-03-13"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"azumieflare"},"content":"### Update other usages of `Employee`","lastModifiedDate":"2024-03-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"azumieflare"},"content":"Unfortunately, a change to `Employee` will cause other commands to break, you will have to modify these commands to use the updated `Employee`!","lastModifiedDate":"2024-03-13"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"azumieflare"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Employee` class to find these commands.","lastModifiedDate":"2024-03-13"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"azumieflare"},"content":"Refer to [this commit](https://github.com/se-edu/TaskMasterPro-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2024-03-13"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"azumieflare"},"content":"TaskMasterPro stores data by serializing `JsonAdaptedEmployee` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedEmployee` to work with our new `Employee`!","lastModifiedDate":"2024-03-13"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"azumieflare"},"content":":exclamation: You must delete TaskMasterPro’s storage file located at `/data/TaskMasterPro.json` before running it! Not doing so will cause TaskMasterPro to default to an empty address book!","lastModifiedDate":"2024-03-13"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"azumieflare"},"content":"Check out [this commit](https://github.com/se-edu/TaskMasterPro-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2024-03-13"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"azumieflare"},"content":"Now that we have finalized the `Employee` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2024-03-13"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"azumieflare"},"content":"Just add [this one line of code!](https://github.com/se-edu/TaskMasterPro-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2024-03-13"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"azumieflare"},"content":"**`EmployeeCard.java`:**","lastModifiedDate":"2024-03-13"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"azumieflare"},"content":"public EmployeeCard(Employee employee, int displayedIndex) {","lastModifiedDate":"2024-03-13"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"gavin331"},"content":" remark.setText(employee.getRemark().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"azumieflare"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Employee`. Since all fields in a `Employee` are immutable, we create a new instance of a `Employee` with the values that we want and","lastModifiedDate":"2024-03-13"},{"lineNumber":327,"author":{"gitId":"azumieflare"},"content":"save it with `Model#setEmployee()`.","lastModifiedDate":"2024-03-13"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Employee: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":334,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Employee: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"azumieflare"},"content":" List\u003cEmployee\u003e lastShownList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-13"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"azumieflare"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_Employee_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"azumieflare"},"content":" Employee employeeToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":345,"author":{"gitId":"azumieflare"},"content":" Employee editedEmployee \u003d new Employee(","lastModifiedDate":"2024-03-13"},{"lineNumber":346,"author":{"gitId":"gavin331"},"content":" employeeToEdit.getName(), employeeToEdit.getPhone(), employeeToEdit.getEmail(),","lastModifiedDate":"2024-03-11"},{"lineNumber":347,"author":{"gitId":"gavin331"},"content":" employeeToEdit.getAddress(), remark, employeeToEdit.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"azumieflare"},"content":" model.setEmployee(employeeToEdit, editedEmployee);","lastModifiedDate":"2024-03-13"},{"lineNumber":350,"author":{"gitId":"azumieflare"},"content":" model.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EmployeeS);","lastModifiedDate":"2024-03-13"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"gavin331"},"content":" return new CommandResult(generateSuccessMessage(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"gavin331"},"content":" * {@code employeeToEdit}.","lastModifiedDate":"2024-03-11"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"azumieflare"},"content":" private String generateSuccessMessage(Employee employeeToEdit) {","lastModifiedDate":"2024-03-13"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"gavin331"},"content":" return String.format(message, employeeToEdit);","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"azumieflare"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/TaskMasterPro-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2024-03-13"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"azumieflare"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/TaskMasterPro-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2024-03-13"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"azumieflare"},"content":"This concludes the tutorial for adding a new `Command` to TaskMasterPro.","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":41,"gavin331":13,"-":345}},{"path":"docs/tutorials/RemovingFields.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: \"Tutorial: Removing Fields\"","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":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Employee` class.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"The `address` field in `Employee` is actually an instance of the `seedu.address.model.employee.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditEmployeeDescriptor` may require more careful inspection.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":"Let’s try removing references to `Address` in `EditEmployeeDescriptor`.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"1. Safe delete the field `address` in `EditEmployeeDescriptor`.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Employee` class will require you to modify its constructor.","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `EmployeeCard` that has not been removed nor identified.","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":"A quick look at the `EmployeeCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":"**`EmployeeCard.java`**","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"azumieflare"},"content":"**`EmployeeCard.fxml`**","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"azumieflare"},"content":"**`invalidEmployeeTaskMasterPro.json`:**","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" \"employees\": [ {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"azumieflare"},"content":" \"name\": \"Employee with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"azumieflare":12,"gavin331":1,"-":99}},{"path":"docs/tutorials/TracingCode.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: \"Tutorial: Tracing code\"","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":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"azumieflare"},"content":" Command command \u003d TaskMasterProParser.parseCommand(commandText);","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"azumieflare"},"content":" storage.saveTaskMasterPro(model.getTaskMasterPro());","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","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":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"azumieflare"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `TaskMasterProParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","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":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2021-07-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"azumieflare"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditEmployeeDescriptor`. Recall that we can verify the contents of `editEmployeeDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"azumieflare"},"content":" Employee employeeToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"azumieflare"},"content":" Employee editedEmployee \u003d createEditedEmployee(employeeToEdit, editEmployeeDescriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"azumieflare"},"content":" if (!employeeToEdit.isSameEmployee(editedEmployee) \u0026\u0026 model.hasEmployee(editedEmployee)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"azumieflare"},"content":" throw new CommandException(MESSAGE_DUPLICATE_Employee);","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"azumieflare"},"content":" model.setEmployee(employeeToEdit, editedEmployee);","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"azumieflare"},"content":" model.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EmployeeS);","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"azumieflare"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_Employee_SUCCESS, editedEmployee));","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"azumieflare"},"content":" * it uses the `setEmployee()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the employee data.","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"azumieflare"},"content":" * it uses the `updateFilteredEmployeeList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ employees.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"gavin331"},"content":" FYI, The \u0027filtered list\u0027 is the list of employees resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the employees so that the user can see the edited employee along with all other employees. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"gavin331"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of employees is being tracked.","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"azumieflare"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveTaskMasterPro(model.getTaskMasterPro())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"azumieflare"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonTaskMasterPro#saveTaskMasterPro()` method which calls the `JsonSerializableTaskMasterPro` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"azumieflare"},"content":" **`JsonSerializableTaskMasterPro` constructor:**","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"azumieflare"},"content":" * Converts a given {@code ReadOnlyTaskMasterPro} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"azumieflare"},"content":" * {@code JsonSerializableTaskMasterPro}.","lastModifiedDate":"2024-03-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"azumieflare"},"content":" public JsonSerializableTaskMasterPro(ReadOnlyTaskMasterPro source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":234,"author":{"gitId":"gavin331"},"content":" employees.addAll(","lastModifiedDate":"2024-03-11"},{"lineNumber":235,"author":{"gitId":"azumieflare"},"content":" source.getEmployeeList()","lastModifiedDate":"2024-03-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"azumieflare"},"content":" .map(JsonAdaptedEmployee::new)","lastModifiedDate":"2024-03-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"azumieflare"},"content":"1. It appears that a `JsonAdaptedEmployee` is created for each `Employee` and then added to the `JsonSerializableTaskMasterPro`.","lastModifiedDate":"2024-03-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","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":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"azumieflare"},"content":" 5. Add a new field to `Employee`","lastModifiedDate":"2024-03-13"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"azumieflare":23,"gavin331":3,"-":275}},{"path":"src/main/java/seedu/address/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2018-04-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents the parsed command-line parameters given to the application.","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AppParameters.class);","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Path getConfigPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setConfigPath(Path configPath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.configPath \u003d configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the application command-line parameters.","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" * @param parameters The javafx application parameters","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" * @return The parsed command-line parameters","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static AppParameters parse(Application.Parameters parameters) {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Map\u003cString, String\u003e namedParameters \u003d parameters.getNamed();","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String configPathParameter \u003d namedParameters.get(\"config\");","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (configPathParameter !\u003d null \u0026\u0026 !FileUtil.isValidPath(configPathParameter)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" logger.warning(\"Invalid config path \" + configPathParameter + \". Using default config path.\");","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" configPathParameter \u003d null;","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" appParameters.setConfigPath(configPathParameter !\u003d null ? Paths.get(configPathParameter) : null);","lastModifiedDate":"2018-04-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return appParameters;","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof AppParameters)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d (AppParameters) other;","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Objects.equals(configPath, otherAppParameters.configPath);","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-04-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return configPath.hashCode();","lastModifiedDate":"2018-04-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .add(\"configPath\", configPath)","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"BryanL2303":3,"-":73}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"import seedu.address.storage.JsonTaskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"import seedu.address.storage.TaskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing TaskMasterPro ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" TaskMasterProStorage taskMasterProStorage \u003d new JsonTaskMasterProStorage(userPrefs.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" storage \u003d new StorageManager(taskMasterProStorage, userPrefsStorage);","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s TaskMasterPro and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" * The data from the sample TaskMasterPro will be used instead if {@code storage}\u0027s TaskMasterPro is not found,","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" * or an empty TaskMasterPro will be used instead if errors occur when reading {@code storage}\u0027s TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" logger.info(\"Using data file : \" + storage.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" Optional\u003cReadOnlyTaskMasterPro\u003e taskMasterProOptional;","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro initialData;","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" boolean isSampleData \u003d false;","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" taskMasterProOptional \u003d storage.readTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" if (!taskMasterProOptional.isPresent()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskMasterProFilePath()","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" + \" populated with a sample TaskMasterPro.\");","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"BryanL2303"},"content":" isSampleData \u003d true;","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" initialData \u003d taskMasterProOptional.orElseGet(SampleDataUtil::getSampleTaskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" logger.warning(\"Data file at \" + storage.getTaskMasterProFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"azumieflare"},"content":" + \" Will be starting with a default TaskMasterPro.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"azumieflare"},"content":" initialData \u003d SampleDataUtil.getSampleTaskMasterPro();","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"BryanL2303"},"content":" isSampleData \u003d true;","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" Model model \u003d new ModelManager(initialData, userPrefs);","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"BryanL2303"},"content":" if (isSampleData) {","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"BryanL2303"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" AssignTaskCommand atc \u003d new AssignTaskCommand(1, 1);","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(1, 2);","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(1, 3);","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(2, 3);","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(2, 4);","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(2, 5);","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(3, 5);","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":114,"author":{"gitId":"BryanL2303"},"content":" atc \u003d new AssignTaskCommand(3, 6);","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":116,"author":{"gitId":"BryanL2303"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"BryanL2303"},"content":" logger.warning(\"Error with generating sample data.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":120,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"BryanL2303"},"content":" return model;","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":132,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":133,"author":{"gitId":"BryanL2303"},"content":" * @param configFilePath The path to the config file.","lastModifiedDate":"2024-03-31"},{"lineNumber":134,"author":{"gitId":"BryanL2303"},"content":" * @return The {@code Config} using the file at {@code configFilePath}.","lastModifiedDate":"2024-03-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":136,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":" * @param storage The file with user preference.","lastModifiedDate":"2024-03-31"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":" * @return The representation of user preference.","lastModifiedDate":"2024-03-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":186,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":188,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":196,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":197,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":198,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":199,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"gavin331"},"content":" logger.info(\"Starting TaskMasterPro \" + MainApp.VERSION);","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"gavin331"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping TaskMasterPro ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":215,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":216,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":217,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":36,"azumieflare":2,"gavin331":20,"-":162}},{"path":"src/main/java/seedu/address/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" private static final String LOG_FILE \u003d \"taskmasterpro.log\";","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":1,"-":105}},{"path":"src/main/java/seedu/address/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Writes and reads files","lastModifiedDate":"2016-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via @link Paths#get(String),","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":1,"-":82}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" * Returns the TaskMasterPro.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * @see seedu.address.model.Model#getTaskMasterPro()","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro getTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" /** Returns an unmodifiable view of the filtered list of employees */","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" ObservableList\u003cEmployee\u003e getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" /** Returns an unmodifiable view of the filtered list of tasks */","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Returns the user prefs\u0027 TaskMasterPro file path.","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":3,"gavin331":9,"-":42}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.parser.TaskMasterProParser;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" private final TaskMasterProParser taskMasterProParser;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" taskMasterProParser \u003d new TaskMasterProParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" Command command \u003d taskMasterProParser.parseCommand(commandText);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" storage.saveTaskMasterPro(model.getTaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" public ReadOnlyTaskMasterPro getTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" return model.getTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getFilteredEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" return model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" return model.getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"azumieflare":5,"gavin331":13,"-":76}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" public static final String MESSAGE_INVALID_EMPLOYEEID \u003d \"The employee id provided is invalid\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_EMPLOYEES_LISTED_OVERVIEW \u003d \"%1$d employees listed!\";","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_TASKS_LISTED_OVERVIEW \u003d \"%1$d tasks listed!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_INVALID_TASKID \u003d \"The Task ID provided is invalid\";","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_DUPLICATE_TASKID \u003d \"The Task ID provided is already assigned to this employee\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_NONEXISTENT_TASKS \u003d \"There are no tasks assigned to this employee\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" public static final String MESSAGE_NONEXISTENT_EMPLOYEES \u003d \"There are no employees assigned to this task\";","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Formats the {@code employee} for display to the user.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" public static String format(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" builder.append(employee.getName())","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" .append(employee.getPhone())","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" .append(employee.getEmail())","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" .append(employee.getAddress())","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" .append(\"; Tasks Assigned: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" .append(employee.getTasks())","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" employee.getTags().forEach(builder::append);","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":" public static String format(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":" builder.append(task.getName())","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":" .append(\"; TaskID: \")","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" .append(task.getTaskId())","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" .append(\"; TaskStatus: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":" .append(task.getTaskStatus()); // Add more append if got more fields to show","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":11,"gavin331":10,"-":44,"johnyoozhengxian":6}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * Adds an employee to TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a employee to TaskMasterPro. \"","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New employee added: %1$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_DUPLICATE_EMPLOYEE \u003d \"This employee already exists in TaskMasterPro\";","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" private final Employee toAdd;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" * Creates an AddCommand to add the specified {@code Employee}.","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" * @param employee An instance of {@code Employee}.","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" public AddCommand(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" toAdd \u003d employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" if (model.hasEmployee(toAdd)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" throw new CommandException(MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" model.addEmployee(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":3,"gavin331":12,"-":71}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Adds a Task to TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public static final String COMMAND_WORD \u003d \"task\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task to TaskMasterPro. \"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" + \"Parameters: DESCRIPTION \\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" + \"Example: \" + COMMAND_WORD + \" meeting\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New task added: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" private final Task toAdd;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" * Creates an AddTaskCommand to add the specified {@code Task}","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" * @param task An instance of {@code Task}","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" public AddTaskCommand(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" toAdd \u003d task;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" model.addTask(toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":46,"gavin331":2}},{"path":"src/main/java/seedu/address/logic/commands/AssignTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":" * Assigns a task to an employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignTaskCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String COMMAND_WORD \u003d \"assigntask\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" + \": Assigns a task object identified by TASK_ID to employee identified by EMPLOYEE_ID.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Parameters: taskID, employeeID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_ASSIGN_TASK_SUCCESS \u003d \"Assign task success\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" private final int taskID;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" private final int employeeID;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" * Creates an AssignTaskCommand to assign a task to an employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" * @param taskID The ID of the task to be assigned.","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" * @param employeeID The ID of the employee to whom the task is assigned.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" public AssignTaskCommand(int taskID, int employeeID) {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" this.taskID \u003d taskID;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" this.employeeID \u003d employeeID;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * Executes the AssignTaskCommand to assign a task to an employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" * @param model The model in which the command should be executed.","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cTask\u003e taskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cEmployee\u003e employeeList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" Task assignTask \u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" Employee assignEmployee \u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d taskID) {","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" assignTask \u003d t;","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" for (Employee e : employeeList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" if (e.getEmployeeId() \u003d\u003d employeeID) {","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" assignEmployee \u003d e;","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":" if (assignTask !\u003d null \u0026\u0026 assignEmployee !\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" Employee updatedEmployee \u003d assignEmployee.assignTask(assignTask);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"azumieflare"},"content":" model.setEmployee(assignEmployee, updatedEmployee);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":" Task updatedTask \u003d assignTask.assignEmployee(assignEmployee);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"azumieflare"},"content":" model.setTask(assignTask, updatedTask);","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":" if (assignTask \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"azumieflare"},"content":" if (assignEmployee \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"johnyoozhengxian"},"content":" return new CommandResult(MESSAGE_ASSIGN_TASK_SUCCESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":20,"johnyoozhengxian":62}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" * Clears TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" public static final String MESSAGE_SUCCESS \u003d \"TaskMasterPro has been cleared!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" model.setTaskMasterPro(new TaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" Employee.setUniversalEmployeeId(1);","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" Task.setUniversalTaskId(1);","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":5,"gavin331":3,"-":19}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" /** Employee list should be shown to the user. */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" private final boolean showEmployees;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" /** Task list should be shown to the user. */","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" private final boolean showTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" * @param feedbackToUser The message the user will see based on the results of the command.","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" * @param showHelp To indicate that this is a {@code HelpCommand}.","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" * @param showEmployees To indicate that this is a {@code ListCommand}.","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" * @param showTasks To indicate that this is a {@code ListTasksCommand}.","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" * @param exit To indicate that this is a {@code ExitCommand}.","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean showEmployees, boolean showTasks,","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" boolean exit) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" this.showEmployees \u003d showEmployees;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" this.showTasks \u003d showTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" * @param feedbackToUser The message the user will see based on the results of the command.","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" this(feedbackToUser, false, false, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" public boolean isShowEmployees() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" return showEmployees;","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" public boolean isShowTasks() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"BryanL2303"},"content":" return showTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":27,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Deletes an employee identified using it\u0027s id from TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" + \": Deletes the employee identified by the employeeId used in the displayed employee list.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" + \"Parameters: ID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_DELETE_EMPLOYEE_SUCCESS \u003d \"Deleted Employee: %1$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" private final int targetIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" public DeleteCommand(int targetIndex) {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e lastShownList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" Employee employeeToDelete;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" for (Employee e : lastShownList) {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" if (e.getEmployeeId() \u003d\u003d targetIndex) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" employeeToDelete \u003d e;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" employeeToDelete.removeAssignments();","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" model.deleteEmployee(employeeToDelete);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" Messages.format(employeeToDelete)), false, true, false, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" return targetIndex \u003d\u003d otherDeleteCommand.targetIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":13,"azumieflare":1,"gavin331":5,"-":55}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Deletes a task identified using it\u0027s displayed index from TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" + \": Removes the task identified by the taskID used in the displayed task list.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" + \"Parameters: taskID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Deleted task: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" private final int targetIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" public DeleteTaskCommand(int targetIndex) {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" Task taskToDelete;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" for (Task t : lastShownList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d targetIndex) {","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" taskToDelete \u003d t;","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" taskToDelete.removeAssignments();","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" model.deleteTask(taskToDelete);","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, Messages.format(taskToDelete)),","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" false, false, true, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":54,"gavin331":1}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_EMPLOYEES;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * Edits the details of an existing employee in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the employee identified \"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" + \"by the given EmployeeId. \"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" + \"Parameters: EmployeeId (must be a positive integer) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_EDIT_EMPLOYEE_SUCCESS \u003d \"Edited Employee: %1$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_DUPLICATE_EMPLOYEE \u003d \"This employee already exists in TaskMasterPro.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" private final EditEmployeeDescriptor editEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" * @param index of the employee in the filtered employee list to edit","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" * @param editEmployeeDescriptor details to edit the employee with","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public EditCommand(Index index, EditEmployeeDescriptor editEmployeeDescriptor) {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" requireNonNull(editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" this.editEmployeeDescriptor \u003d new EditEmployeeDescriptor(editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e lastShownList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"content":" Employee employeeToEdit \u003d null;","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"azumieflare"},"content":" for (Employee e : lastShownList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"azumieflare"},"content":" if (e.getEmployeeId() \u003d\u003d index.getOneBased()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"azumieflare"},"content":" employeeToEdit \u003d e;","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"azumieflare"},"content":" if (employeeToEdit \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d createEditedEmployee(employeeToEdit, editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" if (!employeeToEdit.isSameEmployee(editedEmployee) \u0026\u0026 model.hasEmployee(editedEmployee)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" throw new CommandException(MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" model.setEmployee(employeeToEdit, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EMPLOYEES);","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_EMPLOYEE_SUCCESS, Messages.format(editedEmployee)));","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" * Creates and returns a {@code Employee} with the details of {@code employeeToEdit}","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" * edited with {@code editEmployeeDescriptor}.","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" private static Employee createEditedEmployee(Employee employeeToEdit,","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor editEmployeeDescriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" assert employeeToEdit !\u003d null;","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"azumieflare"},"content":" Name updatedName \u003d editEmployeeDescriptor.getName().orElse(new Name(employeeToEdit.getName()));","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" Phone updatedPhone \u003d editEmployeeDescriptor.getPhone().orElse(new Phone(employeeToEdit.getPhone()));","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"azumieflare"},"content":" Email updatedEmail \u003d editEmployeeDescriptor.getEmail().orElse(new Email(employeeToEdit.getEmail()));","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"azumieflare"},"content":" Address updatedAddress \u003d editEmployeeDescriptor.getAddress().orElse(new Address(employeeToEdit.getAddress()));","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"johnyoozhengxian"},"content":" AssignedTasks updatedTask \u003d editEmployeeDescriptor.getTasks().orElse(employeeToEdit.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" Set\u003cTag\u003e updatedTags \u003d editEmployeeDescriptor.getTags().orElse(employeeToEdit.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"azumieflare"},"content":" return new Employee(new EmployeeId(employeeToEdit.getEmployeeId()), updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"johnyoozhengxian"},"content":" updatedAddress, updatedTask, updatedTags);","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 editEmployeeDescriptor.equals(otherEditCommand.editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" .add(\"editEmployeeDescriptor\", editEmployeeDescriptor)","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" * Stores the details to edit the employee with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" * corresponding field value of the employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" public static class EditEmployeeDescriptor {","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"johnyoozhengxian"},"content":" private AssignedTasks tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptor() {}","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":162,"author":{"gitId":"BryanL2303"},"content":" * @param toCopy The variables to set for the current {@code Employee}.","lastModifiedDate":"2024-03-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptor(EditEmployeeDescriptor toCopy) {","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"johnyoozhengxian"},"content":" setTasks(toCopy.tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":" * @return true if any field is edited.","lastModifiedDate":"2024-03-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"johnyoozhengxian"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tasks, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"johnyoozhengxian"},"content":" public void setTasks(AssignedTasks tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"johnyoozhengxian"},"content":" public Optional\u003cAssignedTasks\u003e getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"johnyoozhengxian"},"content":" return Optional.ofNullable(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof EditEmployeeDescriptor)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":247,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor otherEditEmployeeDescriptor \u003d (EditEmployeeDescriptor) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":251,"author":{"gitId":"gavin331"},"content":" return Objects.equals(name, otherEditEmployeeDescriptor.name)","lastModifiedDate":"2024-03-11"},{"lineNumber":252,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 Objects.equals(phone, otherEditEmployeeDescriptor.phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":253,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 Objects.equals(email, otherEditEmployeeDescriptor.email)","lastModifiedDate":"2024-03-11"},{"lineNumber":254,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 Objects.equals(address, otherEditEmployeeDescriptor.address)","lastModifiedDate":"2024-03-11"},{"lineNumber":255,"author":{"gitId":"johnyoozhengxian"},"content":" \u0026\u0026 Objects.equals(tasks, otherEditEmployeeDescriptor.tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 Objects.equals(tags, otherEditEmployeeDescriptor.tags);","lastModifiedDate":"2024-03-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":273,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"BryanL2303":5,"azumieflare":18,"gavin331":38,"-":189,"johnyoozhengxian":23}},{"path":"src/main/java/seedu/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting TaskMasterPro as requested ...\";","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true, false,","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" false);","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"BryanL2303":2,"gavin331":1,"-":17}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" * Finds and lists all employees in TaskMasterPro whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all employees whose names contain any of \"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" String.format(Messages.MESSAGE_EMPLOYEES_LISTED_OVERVIEW, model.getFilteredEmployeeList().size()),","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" false, true, false, false);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"gavin331":6,"-":53}},{"path":"src/main/java/seedu/address/logic/commands/FindTasksCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" * Finds and lists all tasks in TaskMasterPro whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public class FindTasksCommand extends Command {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public static final String COMMAND_WORD \u003d \"findtasks\";","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all tasks with descriptions containing any of \"","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" + \"Example: \" + COMMAND_WORD + \" project\";","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" private final TaskNameContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" public FindTasksCommand(TaskNameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" model.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, model.getFilteredTaskList().size()),","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" false, false, true, false);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof FindTasksCommand)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" FindTasksCommand otherFindCommand \u003d (FindTasksCommand) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"gavin331":60}},{"path":"src/main/java/seedu/address/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":1,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_EMPLOYEES;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":" * Lists all employees in TaskMasterPro to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all employees\";","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EMPLOYEES);","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, true, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":2,"gavin331":3,"-":19}},{"path":"src/main/java/seedu/address/logic/commands/ListTasksCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":" * Lists all tasks in TaskMasterPro to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"public class ListTasksCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" public static final String COMMAND_WORD \u003d \"listtasks\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all tasks\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false, true, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"BryanL2303":22,"gavin331":2}},{"path":"src/main/java/seedu/address/logic/commands/MarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":" * Marks a task as completed.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" + \": Marks the task identified by the TASK_ID.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Parameters: taskID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Mark task: %1$s\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" private final int targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" * Constructs a MarkCommand to mark the task at the specified index.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" * @param targetIndex The index of the task to mark.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" public MarkCommand(int targetIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" * Executes the MarkCommand to mark a task as completed.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" * @param model The model in which the command should be executed.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cTask\u003e taskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" Task taskToMark \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d targetIndex) {","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":" model.deleteTask(t);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" taskToMark \u003d t;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":" taskToMark.markTask();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(taskToMark);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" if (taskToMark \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, Messages.format(taskToMark)));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":" * Returns a string representation of this MarkCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A string representation of this MarkCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":1,"johnyoozhengxian":71}},{"path":"src/main/java/seedu/address/logic/commands/UnassignTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":" * Unassigns a task from an employee.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnassignTaskCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String COMMAND_WORD \u003d \"unassigntask\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" + \": Unassigns a task object identified by TASK_ID from employee identified by EMPLOYEE_ID.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Parameters: taskID, employeeID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_UNASSIGN_TASK_SUCCESS \u003d \"Unassign task success\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" private final int taskID;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" private final int employeeID;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" * Creates an UnassignTaskCommand to unassign the specified task from the specified employee.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" * @param taskID ID of the task to unassign","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" * @param employeeID ID of the employee from whom the task is to be unassigned","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" public UnassignTaskCommand(int taskID, int employeeID) {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" this.taskID \u003d taskID;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" this.employeeID \u003d employeeID;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * Executes the command to unassign the task from the employee.","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" * @param model the current model","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" * @return the command result indicating the success of the operation","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException if the command cannot be executed","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" List\u003cTask\u003e taskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cEmployee\u003e employeeList \u003d model.getFilteredEmployeeList();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" Task assignTask \u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" Employee assignEmployee \u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d taskID) {","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" assignTask \u003d t;","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" for (Employee e : employeeList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" if (e.getEmployeeId() \u003d\u003d employeeID) {","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" assignEmployee \u003d e;","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":" if (assignTask !\u003d null \u0026\u0026 assignEmployee !\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" Employee updatedEmployee \u003d assignEmployee.removeTask(assignTask.getTaskId());","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"azumieflare"},"content":" model.setEmployee(assignEmployee, updatedEmployee);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" Task updatedTask \u003d assignTask.removeEmployee(assignEmployee.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":" model.setTask(assignTask, updatedTask);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" if (assignTask \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"content":" if (assignEmployee \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"johnyoozhengxian"},"content":" return new CommandResult(MESSAGE_UNASSIGN_TASK_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":18,"johnyoozhengxian":57}},{"path":"src/main/java/seedu/address/logic/commands/UnmarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":" * Unmarks a task, marking it as incomplete.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" + \": Unmarks the task identified by the TASK_ID.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Parameters: taskID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_UNMARK_TASK_SUCCESS \u003d \"Unmark task: %1$s\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" private final int targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" * Constructs an UnmarkCommand to unmark the task at the specified index.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" * @param targetIndex The index of the task to unmark.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" public UnmarkCommand(int targetIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" * Executes the UnmarkCommand to unmark a task.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" * @param model The model in which the command should be executed.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" List\u003cTask\u003e taskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" Task taskToUnmark \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" if (t.getTaskId() \u003d\u003d targetIndex) {","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":" model.deleteTask(t);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" taskToUnmark \u003d t;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":" taskToUnmark.unmarkTask();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(taskToUnmark);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" if (taskToUnmark \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASKID);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":" return new CommandResult(String.format(MESSAGE_UNMARK_TASK_SUCCESS, Messages.format(taskToUnmark)));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":" * Returns a string representation of this UnmarkCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A string representation of this UnmarkCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":1,"johnyoozhengxian":71}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":" * Represents an error which occurs during execution of a {@link seedu.address.logic.commands.Command}.","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"BryanL2303":1,"-":16}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASKS;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TASKS);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" EmployeeId employeeId \u003d new EmployeeId(Employee.getUniversalId());","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"BryanL2303"},"content":" Employee employee \u003d new Employee(employeeId, name, phone, email, address, new AssignedTasks(\"\"), tagList);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":" Employee.incrementEmployeeId();","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" return new AddCommand(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"BryanL2303":13,"gavin331":1,"-":51,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Adds a task to TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Parses the given {@code String} of arguments in the context of the AddTaskCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" * and returns an AddTaskCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" TaskName taskName \u003d new TaskName(trimmedArgs);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" TaskId taskId \u003d new TaskId(Task.getUniversalId());","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" TaskStatus taskStatus \u003d new TaskStatus(false);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" Task.incrementTaskId();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d new Task(taskName, taskId, taskStatus, new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" return new AddTaskCommand(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":32,"gavin331":1,"johnyoozhengxian":3}},{"path":"src/main/java/seedu/address/logic/parser/AssignTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses input arguments and creates a new AssignTaskCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignTaskCommandParser implements Parser\u003cAssignTaskCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses the given {@code String} of arguments in the context of the AssignTaskCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" * and returns an AssignTaskCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" * @param args The string containing the taskID and employeeID separated by a space.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A new AssignTaskCommand object with the parsed taskID and employeeID.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" public AssignTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" args \u003d args.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" String[] parts \u003d args.split(\" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" int arg1 \u003d Integer.parseInt(parts[0]);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" int arg2 \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" return new AssignTaskCommand(arg1, arg2);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"johnyoozhengxian":35}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" public static final Prefix PREFIX_TASKS \u003d new Prefix(\"ta/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":15,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" int index \u003d ParserUtil.parseInt(args);","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"BryanL2303":2,"-":27}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteTaskCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" * and returns a RemoveTask object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" int index \u003d ParserUtil.parseInt(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" return new DeleteTaskCommand(index);","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":26}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASKS;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" ArgumentTokenizer.tokenize(","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TASKS, PREFIX_TAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" EditCommand.EditEmployeeDescriptor editEmployeeDescriptor \u003d new EditCommand.EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" editEmployeeDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" editEmployeeDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" editEmployeeDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" editEmployeeDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editEmployeeDescriptor::setTags);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":" if (argMultimap.getValue(PREFIX_TASKS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" editEmployeeDescriptor.setTasks(ParserUtil.parseTasks(argMultimap.getValue(PREFIX_TASKS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" if (!editEmployeeDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" return new EditCommand(index, editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"BryanL2303":1,"gavin331":8,"-":76,"johnyoozhengxian":7}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"BryanL2303":1,"gavin331":1,"-":31}},{"path":"src/main/java/seedu/address/logic/parser/FindTasksCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.FindTasksCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" * Parses input arguments and creates a new FindTaskCommand object","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public class FindTasksCommandParser implements Parser\u003cFindTasksCommand\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" public FindTasksCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTasksCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" return new FindTasksCommand(new TaskNameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"BryanL2303":1,"gavin331":31}},{"path":"src/main/java/seedu/address/logic/parser/MarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses input arguments and creates a new MarkCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"public class MarkCommandParser implements Parser\u003cMarkCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses the given {@code String} of arguments in the context of the MarkCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":" * and returns a MarkCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" public MarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" return new MarkCommand(index.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":1,"johnyoozhengxian":28}},{"path":"src/main/java/seedu/address/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"BryanL2303":1,"-":16}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" * Parses {@code arg} into an {@code int} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" * trimmed.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" public static int parseInt(String arg) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" String trimmedIndex \u003d arg.replaceAll(\"\\\\s\", \"\"); // Strip whitespaces","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" return Integer.parseInt(trimmedIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses a string representing assigned tasks and returns an AssignedTasks object.","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"johnyoozhengxian"},"content":" * @param tasks The string representing assigned tasks.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"johnyoozhengxian"},"content":" * @return An AssignedTasks object representing the parsed tasks.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException If the given {@code tasks} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"johnyoozhengxian"},"content":" public static AssignedTasks parseTasks(String tasks) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"johnyoozhengxian"},"content":" requireNonNull(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"johnyoozhengxian"},"content":" String trimmedTasks \u003d tasks.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"johnyoozhengxian"},"content":" if (!AssignedTasks.isValidTask(trimmedTasks)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(AssignedTasks.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"johnyoozhengxian"},"content":" return new AssignedTasks(trimmedTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":13,"-":120,"johnyoozhengxian":21}},{"path":"src/main/java/seedu/address/logic/parser/TaskMasterProParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.FindTasksCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.ListTasksCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.UnassignTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.UnmarkCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"public class TaskMasterProParser {","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(TaskMasterProParser.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" case UnassignTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":" return new UnassignTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" case AssignTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" return new AssignTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":" case UnmarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" return new UnmarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"johnyoozhengxian"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"johnyoozhengxian"},"content":" return new MarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" case FindTasksCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" return new FindTasksCommandParser().parse(arguments);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"BryanL2303"},"content":" case ListTasksCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"BryanL2303"},"content":" return new ListTasksCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":106,"author":{"gitId":"azumieflare"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"azumieflare"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"azumieflare"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":10,"azumieflare":6,"gavin331":6,"-":84,"johnyoozhengxian":12}},{"path":"src/main/java/seedu/address/logic/parser/UnassignTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.UnassignTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses input arguments and creates a new AssignTaskCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnassignTaskCommandParser implements Parser\u003cUnassignTaskCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses the given {@code String} of arguments in the context of the AssignTaskCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" * and returns an AssignTaskCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" * @param args The string containing the taskID and employeeID separated by a space.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A new AssignTaskCommand object with the parsed taskID and employeeID.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" public UnassignTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" args \u003d args.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" String[] parts \u003d args.split(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" int arg1 \u003d Integer.parseInt(parts[0]);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" int arg2 \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" return new UnassignTaskCommand(arg1, arg2);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"johnyoozhengxian":35}},{"path":"src/main/java/seedu/address/logic/parser/UnmarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.UnmarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses input arguments and creates a new MarkCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnmarkCommandParser implements Parser\u003cUnmarkCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" * Parses the given {@code String} of arguments in the context of the UnmarkCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":" * and returns a UnmarkCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" public UnmarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" return new UnmarkCommand(index.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":1,"johnyoozhengxian":28}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" Predicate\u003cEmployee\u003e PREDICATE_SHOW_ALL_EMPLOYEES \u003d unused -\u003e true;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Returns the user prefs\u0027 TaskMasterPro file path.","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" * Sets the user prefs\u0027 TaskMasterPro file path.","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" void setTaskMasterProFilePath(Path taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" * Replaces TaskMasterPro data with the data in {@code taskMasterPro}.","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" void setTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" /** Returns the TaskMasterPro */","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro getTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" * Returns true if a employee with the same identity as {@code employee} exists in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" boolean hasEmployee(Employee employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" * Deletes the given employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" * The employee must exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" void deleteEmployee(Employee target);","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" * Adds the given employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" * {@code employee} must not already exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" void addEmployee(Employee employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" * Replaces the given employee {@code target} with {@code editedEmployee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" * {@code target} must exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" * The employee identity of {@code editedEmployee} must not be the same as","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" * another existing employee in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" void setEmployee(Employee target, Employee editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" /** Returns an unmodifiable view of the filtered employee list */","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" ObservableList\u003cEmployee\u003e getFilteredEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" * Updates the filter of the filtered employee list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" void updateFilteredEmployeeList(Predicate\u003cEmployee\u003e predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"azumieflare"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" * {@code task} must not already exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"azumieflare"},"content":" void addTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"azumieflare"},"content":" * Deletes the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" * The task must exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"azumieflare"},"content":" void deleteTask(Task target);","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"BryanL2303"},"content":" * Replaces the given employee {@code target} with {@code editedEmployee}.","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" * {@code target} must exist in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" * The employee identity of {@code editedEmployee} must not be the same as","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" * another existing employee in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":112,"author":{"gitId":"BryanL2303"},"content":" void setTask(Task target, Task editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"azumieflare"},"content":" * Updates the filter of the filtered task list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"azumieflare"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"azumieflare"},"content":" /** Returns an unmodifiable view of the filtered task list */","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"BryanL2303":7,"azumieflare":12,"gavin331":31,"-":73}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * Represents the in-memory model of TaskMasterPro data.","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" private final TaskMasterPro taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" private final FilteredList\u003cEmployee\u003e filteredEmployees;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" private final FilteredList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * Initializes a ModelManager with the given taskMasterPro and userPrefs.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public ModelManager(ReadOnlyTaskMasterPro taskMasterPro, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" requireAllNonNull(taskMasterPro, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" logger.fine(\"Initializing with task master pro: \" + taskMasterPro + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" this.taskMasterPro \u003d new TaskMasterPro(taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cEmployee\u003e employeeList \u003d this.taskMasterPro.getEmployeeList();","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cTask\u003e taskList \u003d this.taskMasterPro.getTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" filteredEmployees \u003d new FilteredList\u003c\u003e(employeeList);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" this.taskList \u003d new FilteredList\u003c\u003e(taskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" this(new TaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" return userPrefs.getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath(Path taskMasterProFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" requireNonNull(taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" userPrefs.setTaskMasterProFilePath(taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskMasterPro \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" this.taskMasterPro.resetData(taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" public ReadOnlyTaskMasterPro getTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" return taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" return taskMasterPro.hasEmployee(employee);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" public void deleteEmployee(Employee target) {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" taskMasterPro.removeEmployee(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" public void addEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(employee);","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EMPLOYEES);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" public void setEmployee(Employee target, Employee editedEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" requireAllNonNull(target, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" taskMasterPro.setEmployee(target, editedEmployee);","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Employee List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" * Returns an unmodifiable view of the list of {@code Employee} backed by the internal list of","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" * {@code versionedTaskMasterPro}","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getFilteredEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" return filteredEmployees;","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" public void updateFilteredEmployeeList(Predicate\u003cEmployee\u003e predicate) {","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" filteredEmployees.setPredicate(predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":139,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"azumieflare"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Task List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"azumieflare"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"azumieflare"},"content":" taskMasterPro.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"azumieflare"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"azumieflare"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"azumieflare"},"content":" taskList.setPredicate(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"azumieflare"},"content":" public void deleteTask(Task target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"azumieflare"},"content":" taskMasterPro.removeTask(target);","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"BryanL2303"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-25"},{"lineNumber":160,"author":{"gitId":"BryanL2303"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"BryanL2303"},"content":" taskMasterPro.setTask(target, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"azumieflare"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":183,"author":{"gitId":"gavin331"},"content":" return taskMasterPro.equals(otherModelManager.taskMasterPro)","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":185,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 filteredEmployees.equals(otherModelManager.filteredEmployees);","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":28,"gavin331":39,"-":111,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/model/ReadOnlyTaskMasterPro.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" * Unmodifiable view of TaskMasterPro","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"public interface ReadOnlyTaskMasterPro {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Returns an unmodifiable view of the employees list.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * This list will not contain any duplicate employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" ObservableList\u003cEmployee\u003e getEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Returns an unmodifiable view of the tasks list.","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" ObservableList\u003cTask\u003e getTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"azumieflare":5,"gavin331":6,"-":11}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"gavin331":1,"-":15}},{"path":"src/main/java/seedu/address/model/TaskMasterPro.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.UniqueEmployeeList;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" * Wraps all data at the TaskMasterPro level","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * Duplicates are not allowed (by .isSameEmployee comparison)","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"public class TaskMasterPro implements ReadOnlyTaskMasterPro {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" private final UniqueEmployeeList employees;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" employees \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" private final TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public TaskMasterPro() {}","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * Creates an TaskMasterPro using the Employees in the {@code toBeCopied}","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public TaskMasterPro(ReadOnlyTaskMasterPro toBeCopied) {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" * Replaces the contents of the Employee list with {@code Employees}.","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" * {@code Employees} must not contain duplicate Employees.","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public void setEmployees(List\u003cEmployee\u003e employees) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" this.employees.setEmployees(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" * Replaces the contents of the task list with {@code tasks}.","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" this.tasks.setTasks(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" * Resets the existing data of this {@code TaskMasterPro} with {@code newData}.","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" public void resetData(ReadOnlyTaskMasterPro newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" setEmployees(newData.getEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" setTasks(newData.getTaskList());","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" //// Employee-level operations","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" * Returns true if an Employee with the same identity as {@code employee} exists in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" * @param employee An instance of the Employee class.","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":" * @return true if an Employee with the same identity as {@code employee} exists in TaskMasterPro.","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" return employees.contains(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" * Adds an Employee to TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" * The Employee must not already exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" * @param employee The employee to be added.","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" public void addEmployee(Employee employee) {","lastModifiedDate":"2024-03-31"},{"lineNumber":92,"author":{"gitId":"BryanL2303"},"content":" employees.add(employee);","lastModifiedDate":"2024-03-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":96,"author":{"gitId":"azumieflare"},"content":" * Replaces the given Employee {@code target} in the list with {@code editedEmployee}.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" * {@code target} must exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"azumieflare"},"content":" * The Employee identity of {@code editedEmployee} must not be the same as","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" * another existing Employee in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"BryanL2303"},"content":" * @param target The employee to be replaced.","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"BryanL2303"},"content":" * @param editedEmployee The new employee to replace the target.","lastModifiedDate":"2024-03-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" public void setEmployee(Employee target, Employee editedEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" requireNonNull(editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" employees.setEmployee(target, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" * Removes {@code key} from this {@code TaskMasterPro}.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" * {@code key} must exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":113,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":114,"author":{"gitId":"BryanL2303"},"content":" * @param key An employee that must exist in TaskMasterPro","lastModifiedDate":"2024-03-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" public void removeEmployee(Employee key) {","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" employees.remove(key);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" * Adds an Employee to TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" * The Employee must not already exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"azumieflare"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"azumieflare"},"content":" tasks.add(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"azumieflare"},"content":" * Removes {@code key} from this {@code TaskMasterPro}.","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" * {@code key} must exist in TaskMasterPro.","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"azumieflare"},"content":" public void removeTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"azumieflare"},"content":" tasks.remove(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"azumieflare"},"content":" return tasks.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":141,"author":{"gitId":"BryanL2303"},"content":" * Replaces the given Task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"BryanL2303"},"content":" * {@code target} must exist in TaskMasterPro.","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"BryanL2303"},"content":" * The Task identity of {@code editedTask} must not be the same as","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"BryanL2303"},"content":" * another existing Task in TaskMasterPro.","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"BryanL2303"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-25"},{"lineNumber":147,"author":{"gitId":"BryanL2303"},"content":" requireNonNull(editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":148,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"BryanL2303"},"content":" tasks.setTask(target, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":150,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":152,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":158,"author":{"gitId":"azumieflare"},"content":" .add(\"Employees\", employees)","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":" return employees.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":174,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof TaskMasterPro)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"gavin331"},"content":" TaskMasterPro otherTaskMasterPro \u003d (TaskMasterPro) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"gavin331"},"content":" return employees.equals(otherTaskMasterPro.employees);","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":184,"author":{"gitId":"gavin331"},"content":" return employees.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":24,"azumieflare":36,"gavin331":39,"-":87,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" private Path taskMasterProFilePath \u003d Paths.get(\"data\" , \"taskmasterpro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" setTaskMasterProFilePath(newUserPrefs.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" return taskMasterProFilePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath(Path taskMasterProFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" requireNonNull(taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" this.taskMasterProFilePath \u003d taskMasterProFilePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 taskMasterProFilePath.equals(otherUserPrefs.taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" return Objects.hash(guiSettings, taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" sb.append(\"\\nLocal data file location : \" + taskMasterProFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":10,"-":78}},{"path":"src/main/java/seedu/address/model/employee/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents an Employee\u0027s address in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" private final String value;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":2,"gavin331":2,"-":60}},{"path":"src/main/java/seedu/address/model/employee/AssignedTasks.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_DUPLICATE_TASKID;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_TASKID;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.Messages.MESSAGE_NONEXISTENT_TASKS;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import java.util.Hashtable;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.UnassignTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" * Represents an Employee\u0027s AssignedTasks in TaskMasterPro.","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTask(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignedTasks {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" \"TASK_IDS should only contain numeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" /*","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"^[\\\\p{Alnum} ]*$\";","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" private String tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" private Hashtable\u003cInteger, Task\u003e assignedTasks;","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" * Constructs a {@code AssignedTasks}.","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" * @param tasks A valid name.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" public AssignedTasks(String tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" requireNonNull(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" checkArgument(isValidTask(tasks), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" this.assignedTasks \u003d new Hashtable\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":" * Gets the tasks assigned to the employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" * @return A string containing the tasks assigned to the employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" public String getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" return tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" * Gets the tasks assigned to the employee.","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" * @return A hashtable containing the tasks assigned to the employee.","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" public Hashtable\u003cInteger, Task\u003e getAssignedTasks() {","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"BryanL2303"},"content":" return assignedTasks;","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"johnyoozhengxian"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"johnyoozhengxian"},"content":" public static boolean isValidTask(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"johnyoozhengxian"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" * JsonSerializableTaskMasterPro will run this after all Employees and Tasks has been added.","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" * The hashtable will be initialized with stored data.","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" public void initiateHashTable(List\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":" if (tasks.equals(\"\")) {","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" return;","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" String[] taskArray \u003d tasks.split(\" \");","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" // Check if taskID matches any of the numbers in tasks","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" for (String taskId : taskArray) {","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(taskId) \u003d\u003d task.getTaskId()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"BryanL2303"},"content":" assignedTasks.put(task.getTaskId(), task);","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"BryanL2303"},"content":" * Adds a new task into assignedTasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The updated AssignedTasks object.","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If the task ID is already present in the assigned tasks.","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" public AssignedTasks assignTask(Task task) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"johnyoozhengxian"},"content":" if (Objects.equals(tasks, \"\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"azumieflare"},"content":" tasks \u003d \"\" + task.getTaskId();","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"BryanL2303"},"content":" assignedTasks.put(task.getTaskId(), task);","lastModifiedDate":"2024-03-25"},{"lineNumber":104,"author":{"gitId":"johnyoozhengxian"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"johnyoozhengxian"},"content":" String[] taskArray \u003d tasks.split(\" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"johnyoozhengxian"},"content":" // Check if taskID matches any of the numbers in tasks","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" for (String taskId : taskArray) {","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(taskId) \u003d\u003d task.getTaskId()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_DUPLICATE_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"johnyoozhengxian"},"content":" // Add the taskID to tasks","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"azumieflare"},"content":" tasks +\u003d \" \" + task.getTaskId();","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"BryanL2303"},"content":" tasks.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"BryanL2303"},"content":" if (assignedTasks.get(task.getTaskId()) !\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_DUPLICATE_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":124,"author":{"gitId":"BryanL2303"},"content":" assignedTasks.put(task.getTaskId(), task);","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":126,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":127,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":" * Removes a task from assignedTasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"johnyoozhengxian"},"content":" * Deletes the specified task from the assigned tasks list.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"johnyoozhengxian"},"content":" * If the specified task ID is not found in the assigned tasks list,","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"johnyoozhengxian"},"content":" * or if the assigned tasks list is empty, a CommandException is thrown.","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"azumieflare"},"content":" * @param taskId The id of the task to be removed.","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"BryanL2303"},"content":" * @return The updated AssignedTasks object.","lastModifiedDate":"2024-03-24"},{"lineNumber":136,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException If the task ID is not present in the assigned tasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":137,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"azumieflare"},"content":" public AssignedTasks unassignTask(int taskId) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"johnyoozhengxian"},"content":" if (Objects.equals(tasks, \"\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_NONEXISTENT_TASKS, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":144,"author":{"gitId":"johnyoozhengxian"},"content":" String[] taskArray \u003d tasks.split(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"johnyoozhengxian"},"content":" StringBuilder updatedTasks \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"johnyoozhengxian"},"content":" boolean taskFound \u003d false;","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"johnyoozhengxian"},"content":" for (String task : taskArray) {","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(task) \u003d\u003d taskId) {","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"johnyoozhengxian"},"content":" taskFound \u003d true;","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"johnyoozhengxian"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"johnyoozhengxian"},"content":" updatedTasks.append(task).append(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"johnyoozhengxian"},"content":" if (!taskFound) {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"johnyoozhengxian"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"johnyoozhengxian"},"content":" String.format(MESSAGE_INVALID_TASKID, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"johnyoozhengxian"},"content":" tasks \u003d updatedTasks.toString().trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"BryanL2303"},"content":" if (assignedTasks.get(taskId) \u003d\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_INVALID_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"BryanL2303"},"content":" assignedTasks.remove(taskId);","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"BryanL2303"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"BryanL2303"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"BryanL2303"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"BryanL2303"},"content":" if (!(other instanceof AssignedTasks)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"BryanL2303"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"BryanL2303"},"content":" AssignedTasks otherAssignedTasks \u003d (AssignedTasks) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"BryanL2303"},"content":" return tasks.equals(otherAssignedTasks.tasks) \u0026\u0026 assignedTasks.equals((otherAssignedTasks.assignedTasks));","lastModifiedDate":"2024-03-24"},{"lineNumber":183,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"johnyoozhengxian"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"BryanL2303"},"content":" String taskString \u003d \"\";","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"azumieflare"},"content":" for (int taskId : assignedTasks.keySet()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":189,"author":{"gitId":"BryanL2303"},"content":" // Retrieve the Task using the key","lastModifiedDate":"2024-03-24"},{"lineNumber":190,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d assignedTasks.get(taskId);","lastModifiedDate":"2024-03-24"},{"lineNumber":191,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":192,"author":{"gitId":"BryanL2303"},"content":" // Append the Task details to the string","lastModifiedDate":"2024-03-24"},{"lineNumber":193,"author":{"gitId":"azumieflare"},"content":" taskString +\u003d (task.getTaskId() + \". \" + task.getName() + \"\\n\");","lastModifiedDate":"2024-04-03"},{"lineNumber":194,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"BryanL2303"},"content":" return taskString;","lastModifiedDate":"2024-03-24"},{"lineNumber":196,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"johnyoozhengxian"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"johnyoozhengxian"},"content":" return tasks.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":80,"azumieflare":12,"johnyoozhengxian":110}},{"path":"src/main/java/seedu/address/model/employee/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents an Employee\u0027s email in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" private final String value;","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":2,"gavin331":2,"-":74}},{"path":"src/main/java/seedu/address/model/employee/Employee.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * Represents an Employee in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"public class Employee {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" private static int universalEmployeeId \u003d 1;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" private final EmployeeId employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" private final AssignedTasks tasks;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":" public Employee(EmployeeId employeeId, Name name,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" Phone phone, Email email, Address address, AssignedTasks tasks, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" requireAllNonNull(name, phone, email, address, tags, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" this.employeeId \u003d employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"BryanL2303"},"content":" * Updates Employee.EMPLOYEE_ID when loading from JSON","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" public static void setUniversalEmployeeId(int id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"BryanL2303"},"content":" Employee.universalEmployeeId \u003d id;","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":" public static int getUniversalId() {","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" int ret \u003d Employee.universalEmployeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"BryanL2303"},"content":" return ret;","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"BryanL2303"},"content":" * Increments Employee.EMPLOYEE_ID","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" public static void incrementEmployeeId() {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" Employee.universalEmployeeId++;","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" public int getEmployeeId() {","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":" return employeeId.getEmployeeId();","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" public String getName() {","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":" return name.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"azumieflare"},"content":" public String getPhone() {","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"azumieflare"},"content":" return phone.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"azumieflare"},"content":" public String getEmail() {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"azumieflare"},"content":" return email.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"azumieflare"},"content":" public String getAddress() {","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"azumieflare"},"content":" return address.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":89,"author":{"gitId":"johnyoozhengxian"},"content":" public AssignedTasks getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"johnyoozhengxian"},"content":" return tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"johnyoozhengxian"},"content":" * Assigns a task to the employee by updating the employee\u0027s task list with the given task ID.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" * @param task The task to be assigned to the employee.","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"johnyoozhengxian"},"content":" * @return The updated Employee object with the assigned task.","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException If the task ID is already present in the employee\u0027s task list.","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"BryanL2303"},"content":" public Employee assignTask(Task task) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" AssignedTasks updatedTasks \u003d tasks.assignTask(task);","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"johnyoozhengxian"},"content":" return new Employee(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"BryanL2303"},"content":" employeeId, name, phone, email, address, updatedTasks, tags);","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"johnyoozhengxian"},"content":" * Removes a task from the employee\u0027s assigned tasks.","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"johnyoozhengxian"},"content":" * @param taskID the ID of the task to be removed","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"johnyoozhengxian"},"content":" * @return a new Employee object with the specified task removed from its assigned tasks","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"johnyoozhengxian"},"content":" * @throws CommandException if the specified task ID is invalid or the task cannot be removed","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"azumieflare"},"content":" public Employee removeTask(int taskID) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"BryanL2303"},"content":" AssignedTasks updatedTasks \u003d tasks.unassignTask(taskID);","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"johnyoozhengxian"},"content":" return new Employee(","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"BryanL2303"},"content":" employeeId, name, phone, email, address, updatedTasks, tags);","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"BryanL2303"},"content":" * Removes this employee from all assigned tasks.","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":" * This command will be run before this employee is deleted.","lastModifiedDate":"2024-03-25"},{"lineNumber":130,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"BryanL2303"},"content":" public void removeAssignments() {","lastModifiedDate":"2024-03-25"},{"lineNumber":132,"author":{"gitId":"azumieflare"},"content":" for (int taskId : tasks.getAssignedTasks().keySet()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"BryanL2303"},"content":" // Retrieve the Task using the key","lastModifiedDate":"2024-03-25"},{"lineNumber":134,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d tasks.getAssignedTasks().get(taskId);","lastModifiedDate":"2024-03-25"},{"lineNumber":135,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":136,"author":{"gitId":"BryanL2303"},"content":" // Remove this employee from the Task","lastModifiedDate":"2024-03-25"},{"lineNumber":137,"author":{"gitId":"BryanL2303"},"content":" try {","lastModifiedDate":"2024-03-25"},{"lineNumber":138,"author":{"gitId":"azumieflare"},"content":" task.removeEmployee(employeeId.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"BryanL2303"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-25"},{"lineNumber":140,"author":{"gitId":"BryanL2303"},"content":" //Ignore this exception as this error is not important since the Employee is being deleted","lastModifiedDate":"2024-03-25"},{"lineNumber":141,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" * Returns true if both employees have the same name.","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" * This defines a weaker notion of equality between two employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" public boolean isSameEmployee(Employee otherEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" if (otherEmployee \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" return otherEmployee !\u003d null","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 otherEmployee.getName().equals(getName());","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":" * Returns true if both employees have the same identity and data fields.","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"gavin331"},"content":" * This defines a stronger notion of equality between two employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":165,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof Employee)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":173,"author":{"gitId":"gavin331"},"content":" Employee otherEmployee \u003d (Employee) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"gavin331"},"content":" return name.equals(otherEmployee.name)","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 phone.equals(otherEmployee.phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"gavin331"},"content":" \u0026\u0026 email.equals(otherEmployee.email)","lastModifiedDate":"2024-03-11"},{"lineNumber":177,"author":{"gitId":"BryanL2303"},"content":" \u0026\u0026 address.equals(otherEmployee.address);","lastModifiedDate":"2024-03-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":183,"author":{"gitId":"BryanL2303"},"content":" return Objects.hash(employeeId, name, phone, email, address, tags);","lastModifiedDate":"2024-03-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"BryanL2303"},"content":" .add(\"employeeId\", employeeId)","lastModifiedDate":"2024-03-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":194,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"BryanL2303":50,"azumieflare":13,"gavin331":16,"-":87,"johnyoozhengxian":32}},{"path":"src/main/java/seedu/address/model/employee/EmployeeId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":" * Represents an Employee\u0027s Id.","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"public class EmployeeId {","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" private final int employeeId;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":" * Constructs a {@code EmployeeId}.","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" * @param id A valid employeeId.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":" public EmployeeId(int id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" employeeId \u003d id;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Getter for employeeId","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" * @return employeeId for this employee","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public int getEmployeeId() {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" return employeeId;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" return \"\" + employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"BryanL2303":21,"azumieflare":10}},{"path":"src/main/java/seedu/address/model/employee/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents an Employee\u0027s name in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" private final String fullName;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":2,"gavin331":2,"-":63}},{"path":"src/main/java/seedu/address/model/employee/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" * Tests that a {@code Employee}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cEmployee\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public boolean test(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(employee.getName(), keyword));","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"azumieflare":1,"gavin331":4,"-":39}},{"path":"src/main/java/seedu/address/model/employee/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents an Employee\u0027s phone number in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" \"Phone numbers should only contain numbers, should start with either 6, 8 or 9, \"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" + \"and should be exactly 8 digits long\";","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"[689]\\\\d{7}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" private final String value;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":4,"gavin331":2,"-":54}},{"path":"src/main/java/seedu/address/model/employee/UniqueEmployeeList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.DuplicateEmployeeException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.EmployeeNotFoundException;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" * A list of employees that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * An employee is considered unique by comparing using {@code #isSameEmployee(Employee)}. As such, adding and updating","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * of employees uses Employee#Employee(Employee) for equality so as to ensure that the employee being added or updated","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * is unique in terms of identity in the UniqueEmployeeList. However, the removal of a employee uses","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" * Employee#equals(Object) to ensure that the employee with exactly the same fields will be removed.","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * @see Employee#isSameEmployee(Employee)","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"public class UniqueEmployeeList implements Iterable\u003cEmployee\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" private final ObservableList\u003cEmployee\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private final ObservableList\u003cEmployee\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * Returns true if the list contains an equivalent employee as the given argument.","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" public boolean contains(Employee toCheck) {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" return internalList.stream().anyMatch(toCheck::isSameEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":" * Adds an employee to the list.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" * The employee must not already exist in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" public void add(Employee toAdd) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" throw new DuplicateEmployeeException();","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * Replaces the employee {@code target} in the list with {@code editedEmployee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" * The employee identity of {@code editedEmployee} must not be the same as another existing employee in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" public void setEmployee(Employee target, Employee editedEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" requireAllNonNull(target, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" throw new EmployeeNotFoundException();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" if (!target.isSameEmployee(editedEmployee) \u0026\u0026 contains(editedEmployee)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" throw new DuplicateEmployeeException();","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" internalList.set(index, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" * Removes the equivalent employee from the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" * The employee must exist in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" public void remove(Employee toRemove) {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" throw new EmployeeNotFoundException();","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" public void setEmployees(UniqueEmployeeList replacement) {","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" * Replaces the contents of this list with {@code employees}.","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" * {@code employees} must not contain duplicate employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" public void setEmployees(List\u003cEmployee\u003e employees) {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" requireAllNonNull(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" if (!employeesAreUnique(employees)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" throw new DuplicateEmployeeException();","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" internalList.setAll(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" public Iterator\u003cEmployee\u003e iterator() {","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof UniqueEmployeeList)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList otherUniqueEmployeeList \u003d (UniqueEmployeeList) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" return internalList.equals(otherUniqueEmployeeList.internalList);","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" * Returns true if {@code employees} contains only unique employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" private boolean employeesAreUnique(List\u003cEmployee\u003e employees) {","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" for (int i \u003d 0; i \u003c employees.size() - 1; i++) {","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" for (int j \u003d i + 1; j \u003c employees.size(); j++) {","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" if (employees.get(i).isSameEmployee(employees.get(j))) {","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"gavin331":149,"johnyoozhengxian":5}},{"path":"src/main/java/seedu/address/model/employee/exceptions/DuplicateEmployeeException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee.exceptions;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" * Signals that the operation will result in duplicate Employees (Employees are considered duplicates if they","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" * have the same identity).","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"public class DuplicateEmployeeException extends RuntimeException {","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" public DuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" super(\"Operation would result in duplicate employees\");","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"gavin331":11}},{"path":"src/main/java/seedu/address/model/employee/exceptions/EmployeeNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee.exceptions;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" * Signals that the operation is unable to find the specified employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"public class EmployeeNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"gavin331":6}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * Represents a Tag in TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}\\\\s]+\";","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"azumieflare":1,"gavin331":1,"-":60}},{"path":"src/main/java/seedu/address/model/task/AssignedEmployees.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.Messages.MESSAGE_DUPLICATE_TASKID;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_EMPLOYEEID;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.Messages.MESSAGE_NONEXISTENT_EMPLOYEES;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import java.util.Hashtable;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import java.util.List;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.UnassignTaskCommand;","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" * Represents a Task\u0027s AssignedEmployees in TaskMasterPro.","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmployee(String)}","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":"public class AssignedEmployees {","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" private static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" \"TASK_IDS should only contain numeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" /*","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" private static final String VALIDATION_REGEX \u003d \"^[\\\\p{Alnum} ]*$\";","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" private String employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" private Hashtable\u003cInteger, Employee\u003e assignedEmployees;","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" * Constructs a {@code AssignedEmployees}.","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" * @param employees A valid name.","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" public AssignedEmployees(String employees) {","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" requireNonNull(employees);","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" checkArgument(isValidEmployee(employees), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" this.employees \u003d employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" this.assignedEmployees \u003d new Hashtable\u003c\u003e();","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" * Gets the employees assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" * @return A string containing the employees assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"BryanL2303"},"content":" public String getEmployees() {","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":" return employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"BryanL2303"},"content":" * Gets the employees assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" * @return A hashtable containing the employees assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":" public Hashtable\u003cInteger, Employee\u003e getAssignedEmployees() {","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" return assignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" public static boolean isValidEmployee(String test) {","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" * JsonSerializableTaskMasterPro will run this after all Employees and Tasks has been added.","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" * The hashtable will be initialized with stored data.","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":" public void initiateHashTable(List\u003cEmployee\u003e employeeList) {","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" if (employees.equals(\"\")) {","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" return;","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":" String[] employeeArray \u003d employees.split(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" // Check if employeeID matches any of the numbers in employees","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" for (String employeeId : employeeArray) {","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"BryanL2303"},"content":" for (Employee employee : employeeList) {","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(employeeId) \u003d\u003d employee.getEmployeeId()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"BryanL2303"},"content":" assignedEmployees.put(employee.getEmployeeId(), employee);","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"BryanL2303"},"content":" * Adds a new employee into assignedEmployees.","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"BryanL2303"},"content":" * @param employee The employee to be added.","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"BryanL2303"},"content":" * @return The updated AssignedEmployees object.","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException If the employee ID is already present in the assigned employees.","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"BryanL2303"},"content":" public AssignedEmployees assignEmployee(Employee employee) throws CommandException {","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"BryanL2303"},"content":" if (Objects.equals(employees, \"\")) {","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"azumieflare"},"content":" employees \u003d \"\" + employee.getEmployeeId();","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" assignedEmployees.put(employee.getEmployeeId(), employee);","lastModifiedDate":"2024-03-25"},{"lineNumber":105,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-25"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"BryanL2303"},"content":" String[] employeeArray \u003d employees.split(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" // Check if employeeID matches any of the numbers in employees","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"BryanL2303"},"content":" for (String employeeId : employeeArray) {","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(employeeId) \u003d\u003d employee.getEmployeeId()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":113,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_DUPLICATE_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":115,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":116,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":117,"author":{"gitId":"BryanL2303"},"content":" // Add the taskID to tasks","lastModifiedDate":"2024-03-25"},{"lineNumber":118,"author":{"gitId":"azumieflare"},"content":" employees +\u003d \" \" + employee.getEmployeeId();","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"BryanL2303"},"content":" employees.trim();","lastModifiedDate":"2024-03-25"},{"lineNumber":120,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":121,"author":{"gitId":"BryanL2303"},"content":" if (assignedEmployees.get(employee.getEmployeeId()) !\u003d null) {","lastModifiedDate":"2024-03-25"},{"lineNumber":122,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":123,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_DUPLICATE_TASKID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":124,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":125,"author":{"gitId":"BryanL2303"},"content":" assignedEmployees.put(employee.getEmployeeId(), employee);","lastModifiedDate":"2024-03-25"},{"lineNumber":126,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-25"},{"lineNumber":127,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":130,"author":{"gitId":"BryanL2303"},"content":" * Removes an employee from assignedEmployees.","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"BryanL2303"},"content":" * Deletes the specified employee from the assigned employees list.","lastModifiedDate":"2024-03-25"},{"lineNumber":132,"author":{"gitId":"BryanL2303"},"content":" * If the specified employee ID is not found in the assigned employees list,","lastModifiedDate":"2024-03-25"},{"lineNumber":133,"author":{"gitId":"BryanL2303"},"content":" * or if the assigned employees list is empty, a CommandException is thrown.","lastModifiedDate":"2024-03-25"},{"lineNumber":134,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":135,"author":{"gitId":"BryanL2303"},"content":" * @param employeeId The employee to be removed.","lastModifiedDate":"2024-03-25"},{"lineNumber":136,"author":{"gitId":"BryanL2303"},"content":" * @return The updated AssignedEmployees object.","lastModifiedDate":"2024-03-25"},{"lineNumber":137,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException If the employee ID is not present in the assigned employees.","lastModifiedDate":"2024-03-25"},{"lineNumber":138,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":139,"author":{"gitId":"azumieflare"},"content":" public AssignedEmployees unassignEmployee(int employeeId) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"BryanL2303"},"content":" if (Objects.equals(employees, \"\")) {","lastModifiedDate":"2024-03-25"},{"lineNumber":141,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_NONEXISTENT_EMPLOYEES, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"BryanL2303"},"content":" String[] employeeArray \u003d employees.split(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"BryanL2303"},"content":" StringBuilder updatedEmployees \u003d new StringBuilder();","lastModifiedDate":"2024-03-25"},{"lineNumber":147,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":148,"author":{"gitId":"BryanL2303"},"content":" boolean employeeFound \u003d false;","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":150,"author":{"gitId":"BryanL2303"},"content":" for (String employee : employeeArray) {","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"azumieflare"},"content":" if (Integer.parseInt(employee) \u003d\u003d employeeId) {","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"BryanL2303"},"content":" employeeFound \u003d true;","lastModifiedDate":"2024-03-25"},{"lineNumber":153,"author":{"gitId":"BryanL2303"},"content":" } else {","lastModifiedDate":"2024-03-25"},{"lineNumber":154,"author":{"gitId":"BryanL2303"},"content":" updatedEmployees.append(employee).append(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":155,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":156,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":157,"author":{"gitId":"BryanL2303"},"content":" if (!employeeFound) {","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_INVALID_EMPLOYEEID, UnassignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":160,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"BryanL2303"},"content":" employees \u003d updatedEmployees.toString().trim();","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"BryanL2303"},"content":" if (assignedEmployees.get(employeeId) \u003d\u003d null) {","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"BryanL2303"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"BryanL2303"},"content":" String.format(MESSAGE_INVALID_EMPLOYEEID, AssignTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"BryanL2303"},"content":" assignedEmployees.remove(employeeId);","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"BryanL2303"},"content":" return this;","lastModifiedDate":"2024-03-25"},{"lineNumber":169,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":170,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":171,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":172,"author":{"gitId":"BryanL2303"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-25"},{"lineNumber":173,"author":{"gitId":"BryanL2303"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" return true;","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"BryanL2303"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-25"},{"lineNumber":178,"author":{"gitId":"BryanL2303"},"content":" if (!(other instanceof AssignedEmployees)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":179,"author":{"gitId":"BryanL2303"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":180,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":181,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":182,"author":{"gitId":"BryanL2303"},"content":" AssignedEmployees otherAssignedEmployees \u003d (AssignedEmployees) other;","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"BryanL2303"},"content":" return employees.equals(otherAssignedEmployees.employees)","lastModifiedDate":"2024-03-25"},{"lineNumber":184,"author":{"gitId":"BryanL2303"},"content":" \u0026\u0026 assignedEmployees.equals((otherAssignedEmployees.assignedEmployees));","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"BryanL2303"},"content":" public String toString() {","lastModifiedDate":"2024-03-25"},{"lineNumber":189,"author":{"gitId":"BryanL2303"},"content":" String employeeString \u003d \"\";","lastModifiedDate":"2024-03-25"},{"lineNumber":190,"author":{"gitId":"azumieflare"},"content":" for (int employeeId : assignedEmployees.keySet()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":191,"author":{"gitId":"BryanL2303"},"content":" // Retrieve the Employee using the key","lastModifiedDate":"2024-03-25"},{"lineNumber":192,"author":{"gitId":"BryanL2303"},"content":" Employee employee \u003d assignedEmployees.get(employeeId);","lastModifiedDate":"2024-03-25"},{"lineNumber":193,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":194,"author":{"gitId":"BryanL2303"},"content":" // Append the Employee details to the string","lastModifiedDate":"2024-03-25"},{"lineNumber":195,"author":{"gitId":"azumieflare"},"content":" employeeString +\u003d (employee.getEmployeeId() + \". \" + employee.getName() + \"\\n\");","lastModifiedDate":"2024-04-03"},{"lineNumber":196,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":197,"author":{"gitId":"BryanL2303"},"content":" return employeeString;","lastModifiedDate":"2024-03-25"},{"lineNumber":198,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":199,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":200,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":201,"author":{"gitId":"BryanL2303"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-25"},{"lineNumber":202,"author":{"gitId":"BryanL2303"},"content":" return employees.hashCode();","lastModifiedDate":"2024-03-25"},{"lineNumber":203,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":204,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"BryanL2303":192,"azumieflare":12}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" * Represents a Task in the TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"public class Task {","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" // Identity fields","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" private static int universalTaskId \u003d 1;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" private final TaskName taskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" private final TaskId taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":" private final TaskStatus taskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" private final AssignedEmployees employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" public Task(TaskName name, TaskId id, TaskStatus status, AssignedEmployees employees) {","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" taskName \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" taskId \u003d id;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" taskStatus \u003d status;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" this.employees \u003d employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" * Updates Task.TASK_ID when loading from JSON","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" public static void setUniversalTaskId(int id) {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" Task.universalTaskId \u003d id;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" public static int getUniversalId() {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" int ret \u003d Task.universalTaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" return ret;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" * Increments Task.TASK_ID","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" public static void incrementTaskId() {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" Task.universalTaskId++;","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" public String getName() {","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" return taskName.getTaskName();","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" public int getTaskId() {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" return taskId.getId();","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" public String getTaskStatus() {","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" return taskStatus.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"BryanL2303"},"content":" public AssignedEmployees getEmployees() {","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":" return employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":" public void markTask() {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":" taskStatus.setTaskDone();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"johnyoozhengxian"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"johnyoozhengxian"},"content":" taskStatus.setTaskNotDone();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"BryanL2303"},"content":" * Assigns an employee to the task by updating the task\u0027s employee list with the given employee ID.","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":" * @param employee The employee to be assigned to the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":" * @return The updated Task object with the assigned employee.","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException If the employee ID is already present in the task\u0027s employee list.","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" public Task assignEmployee(Employee employee) throws CommandException {","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" AssignedEmployees updatedEmployees \u003d employees.assignEmployee(employee);","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" return new Task(","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":" taskName, taskId, taskStatus, updatedEmployees);","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":" * Removes an employee from the task\u0027s assigned employees.","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" * @param employeeId the ID of the employee to be removed","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" * @return a new Task object with the specified employee removed from its assigned employees","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"BryanL2303"},"content":" * @throws CommandException if the specified employee ID is invalid or the employee cannot be removed","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"azumieflare"},"content":" public Task removeEmployee(int employeeId) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" AssignedEmployees updatedEmployees \u003d employees.unassignEmployee(employeeId);","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"BryanL2303"},"content":" return new Task(","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" taskName, taskId, taskStatus, updatedEmployees);","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"BryanL2303"},"content":" * Removes this task from all assigned employees.","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" * This command will be run before this task is deleted.","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"BryanL2303"},"content":" public void removeAssignments() {","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"azumieflare"},"content":" for (int employeeId : employees.getAssignedEmployees().keySet()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"BryanL2303"},"content":" // Retrieve the Employee using the key","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"BryanL2303"},"content":" Employee employee \u003d employees.getAssignedEmployees().get(employeeId);","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"BryanL2303"},"content":" // Remove this task from the employee","lastModifiedDate":"2024-03-25"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" try {","lastModifiedDate":"2024-03-25"},{"lineNumber":105,"author":{"gitId":"azumieflare"},"content":" employee.removeTask(taskId.getId());","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"BryanL2303"},"content":" //Ignore this exception as this error is not important since the Task is being deleted","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":109,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":112,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"azumieflare"},"content":" * Returns true if both tasks have the same name.","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"azumieflare"},"content":" * This defines a weaker notion of equality between two employees.","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"azumieflare"},"content":" public boolean isSameTask(Task otherTask) {","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"azumieflare"},"content":" if (otherTask \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"azumieflare"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"azumieflare"},"content":" return otherTask !\u003d null","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"azumieflare"},"content":" \u0026\u0026 otherTask.getName().equals(getName());","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"azumieflare"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"azumieflare"},"content":" .add(\"taskId\", taskId)","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"azumieflare"},"content":" .add(\"taskName\", taskName)","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"johnyoozhengxian"},"content":" .add(\"taskStatus\", taskStatus)","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"BryanL2303"},"content":" .add(\"employees\", employees)","lastModifiedDate":"2024-03-25"},{"lineNumber":132,"author":{"gitId":"azumieflare"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":51,"azumieflare":70,"gavin331":1,"johnyoozhengxian":12}},{"path":"src/main/java/seedu/address/model/task/TaskId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":" * Represents a Task\u0027s Id.","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"public class TaskId {","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" private final int taskId;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code TaskId}.","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" * @param id A valid taskId.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" public TaskId(int id) {","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" taskId \u003d id;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Getter for taskId","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" * @return taskId for this task","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public int getId() {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" return taskId;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" return \"\" + taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":31}},{"path":"src/main/java/seedu/address/model/task/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" * A list of tasks.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"public class TaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" private final ObservableList\u003cTask\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" private final ObservableList\u003cTask\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public void add(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" internalList.add(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" * Replaces the task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" * The task identity of {@code editedTask} must not be the same as another existing tasks in the list.","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" internalList.set(index, editedTask);","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" * Removes the equivalent task from the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" * The Employee must exist in the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" public void remove(Task toRemove) {","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" throw new TaskNotFoundException();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" * Returns true if the list contains an equivalent task as the given argument.","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" public boolean contains(Task toCheck) {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" return internalList.stream().anyMatch(toCheck::isSameTask);","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" public void setTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"azumieflare"},"content":" internalList.setAll(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":18,"azumieflare":56,"johnyoozhengxian":1}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":" * Represents a Task\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"public class TaskName {","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" private static final String MESSAGE_CONSTRAINTS \u003d // ToDo, check if should use this (compare to Employee.Name)","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" private final String taskName;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code TaskName}.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" * @param name A valid task name.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public TaskName(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" taskName \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" * Getter for taskName","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" * @return taskName for this task","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" public String getTaskName() {","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" return taskName;","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" return taskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":34}},{"path":"src/main/java/seedu/address/model/task/TaskNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" * Tests that a {@code Task}\u0027s {@code Description} matches any of the keywords given.","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"public class TaskNameContainsKeywordsPredicate implements Predicate\u003cTask\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" public TaskNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public boolean test(Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(task.getName().toString(), keyword));","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" if (!(other instanceof TaskNameContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate otherPredicate \u003d (TaskNameContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" return keywords.equals(otherPredicate.keywords);","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"gavin331":44}},{"path":"src/main/java/seedu/address/model/task/TaskStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":" * Represents the status of a task, which can be either completed or in progress.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"public class TaskStatus {","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" private boolean isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code TaskStatus}.","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" * @param taskStatus A valid boolean.","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":" public TaskStatus(boolean taskStatus) {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d taskStatus;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code TaskStatus}.","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" * @param taskStatus A valid String.","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public TaskStatus(String taskStatus) {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" assert taskStatus !\u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" if (taskStatus.equals(\"Completed\")) {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" } else if (taskStatus.equals(\"In Progress\")) {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" public void setTaskDone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" public void setTaskNotDone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" return isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" if (isCompleted) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" return \"Completed\";","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" return \"In Progress\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"azumieflare":25,"johnyoozhengxian":24}},{"path":"src/main/java/seedu/address/model/task/exceptions/TaskNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.model.task.exceptions;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":" * Signals that the operation is unable to find the specified task.","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"public class TaskNotFoundException extends RuntimeException {","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":6,"johnyoozhengxian":1}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Contains utility methods for populating {@code TaskMasterPro} with sample data.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public static Employee[] getSampleEmployees() {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" Employee.setUniversalEmployeeId(7);","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" return new Employee[] {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(1), new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" new Email(\"alexyeoh@gmail.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Chief Software Engineer\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(2), new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" new Email(\"berniceyu@gmail.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Software Engineer\", \"Intern\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(3), new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" new Email(\"charlotte@outlook.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Software Developer\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(4), new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" new Email(\"lidavid@yahoo.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Software Developer\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(5), new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" new Email(\"irfan@gmail.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Software Developer\", \"Intern\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" new Employee(new EmployeeId(6), new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" new Email(\"royb@hotmail.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" new AssignedTasks(\"\"), getTagSet(\"Art Designer\"))","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" public static Task[] getSampleTasks() {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(4);","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" return new Task[] {","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" new Task(new TaskName(\"Integrate AI into existing work\"), new TaskId(1), new TaskStatus(false),","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" new AssignedEmployees(\"\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" new Task(new TaskName(\"Create new GUI for data display\"), new TaskId(2), new TaskStatus(true),","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" new AssignedEmployees(\"\")),","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" new Task(new TaskName(\"Intern Project - Build a chatbot\"), new TaskId(3), new TaskStatus(false),","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" new AssignedEmployees(\"\"))","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" public static ReadOnlyTaskMasterPro getSampleTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" TaskMasterPro sampleAb \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":" Employee[] employees \u003d getSampleEmployees();","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":" Task[] tasks \u003d getSampleTasks();","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":" //tasks[0].assignEmployee(employees[0]); TODO, assign task 1 to employee 1,2,3, t2 to e3,4,5, t3 to e5,6","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" for (Employee sampleEmployee : employees) {","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" sampleAb.addEmployee(sampleEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" for (Task sampleTask : tasks) {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" sampleAb.addTask(sampleTask);","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"BryanL2303":7,"azumieflare":34,"gavin331":8,"-":32,"johnyoozhengxian":7}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedEmployee.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * Jackson-friendly version of {@link Employee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"class JsonAdaptedEmployee {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Employee\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" private final int employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" private String tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * Constructs a {@code JsonAdaptedEmployee} with the given employee details.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" public JsonAdaptedEmployee(@JsonProperty(\"employeeId\") int employeeId, @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" @JsonProperty(\"tasks\") String tasks,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":" this.employeeId \u003d employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" * Converts a given {@code Employee} into this class for Jackson use.","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" public JsonAdaptedEmployee(Employee source) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" employeeId \u003d source.getEmployeeId();","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" name \u003d source.getName();","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"azumieflare"},"content":" phone \u003d source.getPhone();","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"azumieflare"},"content":" email \u003d source.getEmail();","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"azumieflare"},"content":" address \u003d source.getAddress();","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"johnyoozhengxian"},"content":" tasks \u003d source.getTasks().getTasks();","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" * Converts this Jackson-friendly adapted employee object into the model\u0027s {@code Employee} object.","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" public Employee toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" final List\u003cTag\u003e employeeTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" employeeTags.add(tag.toModelType());","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" // Consider to add in checks like the fields below this","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" final EmployeeId modelEmployeeId \u003d new EmployeeId(employeeId);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"johnyoozhengxian"},"content":" if (!AssignedTasks.isValidTask(tasks)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"johnyoozhengxian"},"content":" throw new IllegalValueException(AssignedTasks.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"johnyoozhengxian"},"content":" final AssignedTasks modelTasks \u003d new AssignedTasks(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(employeeTags);","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"johnyoozhengxian"},"content":" return new Employee(modelEmployeeId, modelName, modelPhone, modelEmail, modelAddress, modelTasks, modelTags);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":5,"gavin331":12,"-":85,"johnyoozhengxian":17}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class JsonAdaptedTask {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" private final String taskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" private final int taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" private String taskStatus;","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" private String employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" * Constructs a {@code JsonAdaptedEmployee} with the given Employee details.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" public JsonAdaptedTask(@JsonProperty(\"taskName\") String taskName, @JsonProperty(\"taskId\") int taskId,","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" @JsonProperty(\"taskStatus\") String taskStatus,","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" @JsonProperty(\"employees\") String employees) {","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" this.taskId \u003d taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" this.taskStatus \u003d taskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" this.employees \u003d employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" taskName \u003d source.getName();","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" taskId \u003d source.getTaskId();","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" taskStatus \u003d source.getTaskStatus().toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" employees \u003d source.getEmployees().getEmployees();","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" * Converts this Jackson-friendly adapted Employee object into the model\u0027s {@code Task} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted Employee.","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" if (taskName \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" TaskName.class.getSimpleName()));","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"azumieflare"},"content":" final TaskName modelName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"azumieflare"},"content":" final TaskId modelId \u003d new TaskId(taskId);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":" final TaskStatus modelStatus \u003d new TaskStatus(taskStatus);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" final AssignedEmployees modelEmployees \u003d new AssignedEmployees(employees);","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" return new Task(modelName, modelId, modelStatus, modelEmployees);","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":9,"azumieflare":54,"johnyoozhengxian":4}},{"path":"src/main/java/seedu/address/storage/JsonSerializableTaskMasterPro.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * An Immutable TaskMasterPro that is serializable to JSON format.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"@JsonRootName(value \u003d \"taskmasterpro\")","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"class JsonSerializableTaskMasterPro {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public static final String MESSAGE_DUPLICATE_EMPLOYEE \u003d \"Employees list contains duplicate employee(s).\";","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" private final List\u003cJsonAdaptedEmployee\u003e employees \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" private final int employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" private final int taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * Constructs a {@code JsonSerializableTaskMasterPro} with the given employees.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public JsonSerializableTaskMasterPro(@JsonProperty(\"employees\") List\u003cJsonAdaptedEmployee\u003e employees) {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" this.employees.addAll(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" employeeId \u003d Employee.getUniversalId();","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" taskId \u003d Task.getUniversalId();","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Converts a given {@code ReadOnlyTaskMasterPro} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableTaskMasterPro}.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" public JsonSerializableTaskMasterPro(ReadOnlyTaskMasterPro source) {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" employees.addAll(source.getEmployeeList().stream().map(JsonAdaptedEmployee::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"BryanL2303"},"content":" employeeId \u003d Employee.getUniversalId();","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" tasks.addAll(source.getTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" taskId \u003d Task.getUniversalId();","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * Converts this TaskMasterPro into the model\u0027s {@code TaskMasterPro} object.","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" public TaskMasterPro toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" TaskMasterPro taskMasterPro \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" for (JsonAdaptedEmployee jsonAdaptedEmployee : employees) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d jsonAdaptedEmployee.toModelType();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" if (taskMasterPro.hasEmployee(employee)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(employee);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" Employee.setUniversalEmployeeId(employeeId);","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"azumieflare"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"azumieflare"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"azumieflare"},"content":" taskMasterPro.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(taskId);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" List\u003cTask\u003e taskList \u003d taskMasterPro.getTaskList();","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" List\u003cEmployee\u003e employeeList \u003d taskMasterPro.getEmployeeList();","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" for (Employee e : employeeList) {","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" e.getTasks().initiateHashTable(taskList);","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" t.getEmployees().initiateHashTable(employeeList);","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" return taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"BryanL2303":17,"azumieflare":13,"gavin331":24,"-":36}},{"path":"src/main/java/seedu/address/storage/JsonTaskMasterProStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * A class to access TaskMasterPro data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class JsonTaskMasterProStorage implements TaskMasterProStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonTaskMasterProStorage.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" private Path filePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public JsonTaskMasterProStorage(Path filePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" return filePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro() throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" return readTaskMasterPro(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" * Similar to {@link #readTaskMasterPro()}.","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" public Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" Optional\u003cJsonSerializableTaskMasterPro\u003e jsonTaskMasterPro \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" filePath, JsonSerializableTaskMasterPro.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" if (!jsonTaskMasterPro.isPresent()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" return Optional.of(jsonTaskMasterPro.get().toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" saveTaskMasterPro(taskMasterPro, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" * Similar to {@link #saveTaskMasterPro(ReadOnlyTaskMasterPro)}.","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, Path filePath) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" requireNonNull(taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" JsonUtil.saveJsonFile(new JsonSerializableTaskMasterPro(taskMasterPro), filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gavin331":79}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"public interface Storage extends TaskMasterProStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro() throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"gavin331":5,"-":27}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" * Manages storage of TaskMasterPro data in local storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" private TaskMasterProStorage taskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Creates a {@code StorageManager} with the given {@code TaskMasterProStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public StorageManager(TaskMasterProStorage taskMasterProStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" this.taskMasterProStorage \u003d taskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskMasterPro methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" return taskMasterProStorage.getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" public Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro() throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" return readTaskMasterPro(taskMasterProStorage.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" public Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" return taskMasterProStorage.readTaskMasterPro(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" saveTaskMasterPro(taskMasterPro, taskMasterProStorage.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, Path filePath) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" taskMasterProStorage.saveTaskMasterPro(taskMasterPro, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":17,"-":61}},{"path":"src/main/java/seedu/address/storage/TaskMasterProStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" * Represents a storage for {@link TaskMasterPro}.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public interface TaskMasterProStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" Path getTaskMasterProFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" * Returns TaskMasterPro data as a {@link ReadOnlyTaskMasterPro}.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro() throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * @see #getTaskMasterProFilePath()","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" * Saves the given {@link ReadOnlyTaskMasterPro} to the storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" * @param taskMasterPro cannot be null.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" * @see #saveTaskMasterPro(ReadOnlyTaskMasterPro)","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, Path filePath) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"BryanL2303":1,"gavin331":46}},{"path":"src/main/java/seedu/address/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a storage for {@link seedu.address.model.UserPrefs}.","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface UserPrefsStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Saves the given {@link seedu.address.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"BryanL2303":1,"-":36}},{"path":"src/main/java/seedu/address/ui/EmployeeCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * An UI component that displays information of a {@code Employee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"public class EmployeeCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" private static final String FXML \u003d \"EmployeeListCard.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/TaskMasterPro-level4/issues/336\"\u003eThe issue on TaskMasterPro level 4\u003c/a\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public final Employee employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" private Label employeeId;","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"johnyoozhengxian"},"content":" private Label tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" * Creates a {@code EmployeeCode} with the given {@code Employee} and index to display.","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public EmployeeCard(Employee employee, int displayedIndex) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" this.employee \u003d employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"azumieflare"},"content":" employeeId.setText(\"Employee ID: \" + employee.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" name.setText(employee.getName());","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" phone.setText(employee.getPhone());","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"azumieflare"},"content":" address.setText(employee.getAddress());","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"azumieflare"},"content":" email.setText(employee.getEmail());","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" tasks.setText(\"Task Assigned: \\n\" + employee.getTasks().toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" employee.getTags().stream()","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"BryanL2303":4,"azumieflare":6,"gavin331":9,"-":45,"johnyoozhengxian":2}},{"path":"src/main/java/seedu/address/ui/EmployeeListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * Panel containing the list of employees.","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class EmployeeListPanel extends UiPart\u003cRegion\u003e implements Panel {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" private static final String FXML \u003d \"EmployeeListPanel.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" private final Logger logger \u003d LogsCenter.getLogger(EmployeeListPanel.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" private ListView\u003cEmployee\u003e employeeListView;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Creates a {@code EmployeeListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public EmployeeListPanel(ObservableList\u003cEmployee\u003e employeeList) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" super(FXML);","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" employeeListView.setItems(employeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" employeeListView.setCellFactory(listView -\u003e new EmployeeListViewCell());","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Employee} using a {@code EmployeeCard}.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" class EmployeeListViewCell extends ListCell\u003cEmployee\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" protected void updateItem(Employee employee, boolean empty) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" super.updateItem(employee, empty);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" if (empty || employee \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" setText(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" } else {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" setGraphic(new EmployeeCard(employee, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"azumieflare":1,"gavin331":48}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t15-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"BryanL2303":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" private Panel panel;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" private VBox employeeList;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" private StackPane panelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"azumieflare"},"content":" panel \u003d new EmployeeListPanel(logic.getFilteredEmployeeList());","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"azumieflare"},"content":" EmployeeListPanel placeholder \u003d (EmployeeListPanel) panel;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"azumieflare"},"content":" panelPlaceholder.getChildren().add(placeholder.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"BryanL2303"},"content":" * Shows the list of employees.","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"BryanL2303"},"content":" public void handleShowEmployees() {","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"azumieflare"},"content":" panel \u003d new EmployeeListPanel(logic.getFilteredEmployeeList());","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"azumieflare"},"content":" EmployeeListPanel placeholder \u003d (EmployeeListPanel) panel;","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"azumieflare"},"content":" panelPlaceholder.getChildren().add(placeholder.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"BryanL2303"},"content":" * Shows the list of tasks.","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"BryanL2303"},"content":" public void handleShowTasks() {","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"azumieflare"},"content":" panel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"azumieflare"},"content":" TaskListPanel placeholder \u003d (TaskListPanel) panel;","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"azumieflare"},"content":" panelPlaceholder.getChildren().add(placeholder.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"BryanL2303"},"content":" if (commandResult.isShowEmployees()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"BryanL2303"},"content":" handleShowEmployees();","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"BryanL2303"},"content":" if (commandResult.isShowTasks()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"BryanL2303"},"content":" handleShowTasks();","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"BryanL2303":27,"azumieflare":11,"gavin331":1,"-":187}},{"path":"src/main/java/seedu/address/ui/Panel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":" * Interface for GUI","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"public interface Panel {","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"azumieflare":7}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" * An UI component that displays information of a {@code Task}.","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/TaskMasterPro-level4/issues/336\"\u003eThe issue on TaskMasterPro level 4\u003c/a\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public final Task task;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" @javafx.fxml.FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" private Label name;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" private Label taskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" private Label id;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" private Label status;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" @FXML","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" private Label employees;","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" * Creates a {@code TaskCode} with the given {@code Task} and index to display.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" public TaskCard(Task task, int displayedIndex) {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" super(FXML);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" name.setText(task.getName());","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"azumieflare"},"content":" taskId.setText(\"Task ID: \" + task.getTaskId());","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"johnyoozhengxian"},"content":" status.setText(task.getTaskStatus().toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" employees.setText(\"Employees Assigned: \\n\" + task.getEmployees().toString());","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":5,"azumieflare":43,"johnyoozhengxian":4}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" * Panel containing the list of tasks.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e implements Panel {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TaskListPanel.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" @javafx.fxml.FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" * Creates a {@code TaskListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" super(FXML);","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListPanel.TaskListViewCell());","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Task} using a {@code TaskCard}.","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" setText(null);","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" } else {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" setGraphic(new TaskCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"BryanL2303"},"content":" * Shows the tasks list panel.","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"BryanL2303"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"BryanL2303"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"BryanL2303"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"BryanL2303"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"BryanL2303"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"BryanL2303"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"BryanL2303"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"BryanL2303"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" public void show() {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" logger.fine(\"Showing all tasks.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"BryanL2303"},"content":" getRoot().setVisible(true);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"BryanL2303"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"BryanL2303"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"BryanL2303"},"content":" return getRoot().isVisible();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"BryanL2303"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"BryanL2303"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"BryanL2303"},"content":" public void hide() {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"BryanL2303"},"content":" getRoot().setVisible(false);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":37,"azumieflare":48}},{"path":"src/main/java/seedu/address/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** Resource folder where FXML files are stored. */","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"BryanL2303"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"BryanL2303":1,"-":86}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"gavin331"},"content":"#filterField, #employeeListPanel, #employeeWebpage {","lastModifiedDate":"2024-03-11"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"gavin331":1,"-":351}},{"path":"src/main/resources/view/EmployeeListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" \u003cLabel fx:id\u003d\"employeeId\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$employeeId\" /\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" \u003cLabel fx:id\u003d\"tasks\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tasks\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"BryanL2303":1,"-":36,"johnyoozhengxian":2}},{"path":"src/main/resources/view/EmployeeListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" \u003cListView fx:id\u003d\"employeeListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":1,"-":7}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" title\u003d\"TaskMasterPro\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":48,"author":{"gitId":"BryanL2303"},"content":" \u003cVBox fx:id\u003d\"employeeList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" minHeight\u003d\"345\" prefHeight\u003d\"345\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" \u003cStackPane fx:id\u003d\"panelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" minHeight\u003d\"340\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":3,"-":56}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"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-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"20\" GridPane.columnIndex\u003d\"0\"\u003e \u003c!-- Change minHeight for box size--\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"taskId\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$taskId\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" \u003cLabel fx:id\u003d\"employees\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$employees\" /\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" \u003c!-- ToDo: for additional fields","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" --\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":38,"johnyoozhengxian":1}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"azumieflare":1,"-":7}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" final Index fifthEmployeeIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" assertTrue(fifthEmployeeIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" assertTrue(fifthEmployeeIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" assertTrue(fifthEmployeeIndex.equals(fifthEmployeeIndex));","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" assertFalse(fifthEmployeeIndex.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" assertFalse(fifthEmployeeIndex.equals(5.0f));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" assertFalse(fifthEmployeeIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"gavin331":7,"-":60}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_EMPLOYEEID;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"import seedu.address.storage.JsonTaskMasterProStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" JsonTaskMasterProStorage taskMasterProStorage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" new JsonTaskMasterProStorage(temporaryFolder.resolve(\"taskMasterPro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" StorageManager storage \u003d new StorageManager(taskMasterProStorage, userPrefsStorage);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"johnyoozhengxian"},"content":" // @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"johnyoozhengxian"},"content":" // public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"johnyoozhengxian"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"johnyoozhengxian"},"content":" // LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"johnyoozhengxian"},"content":" // }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" //","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" // @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"johnyoozhengxian"},"content":" // public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"johnyoozhengxian"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"johnyoozhengxian"},"content":" // LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"johnyoozhengxian"},"content":" // }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" public void getFilteredEmployeeList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredEmployeeList().remove(0));","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"gavin331"},"content":" // Inject LogicManager with an TaskMasterProStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" JsonTaskMasterProStorage taskMasterProStorage \u003d new JsonTaskMasterProStorage(prefPath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, Path filePath)","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":" StorageManager storage \u003d new StorageManager(taskMasterProStorage, userPrefsStorage);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"gavin331"},"content":" // Triggers the saveTaskMasterPro method by executing an add command","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"gavin331"},"content":" Employee expectedEmployee \u003d new EmployeeBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"gavin331"},"content":" expectedModel.addEmployee(expectedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":177,"author":{"gitId":"azumieflare"},"content":" public void execute_modelNotNull_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"azumieflare"},"content":" assertNotNull(model.getTaskMasterPro());","lastModifiedDate":"2024-03-14"},{"lineNumber":179,"author":{"gitId":"azumieflare"},"content":" assertNotNull(model.getFilteredTaskList());","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"azumieflare"},"content":" assertNotNull(model.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":181,"author":{"gitId":"azumieflare"},"content":" assertNotNull(model.getGuiSettings());","lastModifiedDate":"2024-03-14"},{"lineNumber":182,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":183,"author":{"gitId":"azumieflare"},"content":" model.setGuiSettings(null);","lastModifiedDate":"2024-03-14"},{"lineNumber":184,"author":{"gitId":"azumieflare"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":185,"author":{"gitId":"azumieflare"},"content":" assertEquals(e.getMessage(), null);","lastModifiedDate":"2024-03-14"},{"lineNumber":186,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":188,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":14,"gavin331":18,"-":144,"johnyoozhengxian":11}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" public void execute_newEmployee_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" expectedModel.addEmployee(validEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" assertCommandSuccess(new AddCommand(validEmployee), model,","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validEmployee)),","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" public void execute_duplicateEmployee_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" Employee employeeInList \u003d model.getTaskMasterPro().getEmployeeList().get(0);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" assertCommandFailure(new AddCommand(employeeInList), model,","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" AddCommand.MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"gavin331":14,"-":34}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public void constructor_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public void execute_employeeAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" ModelStubAcceptingEmployeeAdded modelStub \u003d new ModelStubAcceptingEmployeeAdded();","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" CommandResult commandResult \u003d new AddCommand(validEmployee).execute(modelStub);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validEmployee)),","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" assertEquals(Arrays.asList(validEmployee), modelStub.employeesAdded);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" public void execute_duplicateEmployee_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" AddCommand addCommand \u003d new AddCommand(validEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" ModelStub modelStub \u003d new ModelStubWithEmployee(validEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" AddCommand.MESSAGE_DUPLICATE_EMPLOYEE, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" Employee alice \u003d new EmployeeBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" Employee bob \u003d new EmployeeBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" public Path getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath(Path taskMasterProFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" public void addEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterPro(ReadOnlyTaskMasterPro newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" public ReadOnlyTaskMasterPro getTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" public void deleteEmployee(Employee target) {","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" public void setEmployee(Employee target, Employee editedEmployee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getFilteredEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":" public void updateFilteredEmployeeList(Predicate\u003cEmployee\u003e predicate) {","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"azumieflare"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"azumieflare"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"azumieflare"},"content":" public void deleteTask(Task target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"azumieflare"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"BryanL2303"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"BryanL2303"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"BryanL2303"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":178,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"azumieflare"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"azumieflare"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"azumieflare"},"content":" return null;","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"gavin331"},"content":" * A Model stub that contains a single employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"gavin331"},"content":" private class ModelStubWithEmployee extends ModelStub {","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"gavin331"},"content":" private final Employee employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"gavin331"},"content":" ModelStubWithEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":196,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":197,"author":{"gitId":"gavin331"},"content":" this.employee \u003d employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":203,"author":{"gitId":"gavin331"},"content":" return this.employee.isSameEmployee(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"gavin331"},"content":" * A Model stub that always accept the employee being added.","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"gavin331"},"content":" private class ModelStubAcceptingEmployeeAdded extends ModelStub {","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"gavin331"},"content":" final ArrayList\u003cEmployee\u003e employeesAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"gavin331"},"content":" public boolean hasEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"gavin331"},"content":" return employeesAdded.stream().anyMatch(employee::isSameEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"gavin331"},"content":" public void addEmployee(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"gavin331"},"content":" requireNonNull(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"gavin331"},"content":" employeesAdded.add(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"gavin331"},"content":" public ReadOnlyTaskMasterPro getTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":227,"author":{"gitId":"gavin331"},"content":" return new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"BryanL2303":5,"azumieflare":21,"gavin331":51,"-":154}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"public class AddTaskCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" public void execute_addTaskCommand_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" AddTaskCommand atc \u003d new AddTaskCommand(validTask);","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" AddTaskCommand atc2 \u003d new AddTaskCommand(validTask);","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" atc.execute(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" return;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" assertEquals(123, model.getFilteredTaskList().get(0).getTaskId());","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" assertEquals(\"Test\", model.getFilteredTaskList().get(0).getName());","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" assertEquals(atc.toString(), atc2.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":30,"johnyoozhengxian":1}},{"path":"src/test/java/seedu/address/logic/commands/AssignTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignTaskCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d new Task(new TaskName(\"play game\"), new TaskId(5), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" model.addEmployee(validEmployee);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(task);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" AssignTaskCommand atc \u003d new AssignTaskCommand(5, 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" atc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" assertEquals(\"5\", model.getFilteredEmployeeList().get(0).getTasks().getTasks());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":4,"johnyoozhengxian":31}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public void execute_emptyTaskMasterPro_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public void execute_nonEmptyTaskMasterPro_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" Model model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" expectedModel.setTaskMasterPro(new TaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"gavin331":7,"-":25}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false, false, false)));","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false, false, false)));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, false, false, true)));","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false, false, false).hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, false, false, true).hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"BryanL2303":5,"-":58}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASKS;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String VALID_TASKS_AMY \u003d \"3 6\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String VALID_TASKS_BOB \u003d \"3 6\";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String VALID_TASKS_HUSBAND \u003d \"3 6\";","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String VALID_TASKS_FRIEND \u003d \"3 6\";","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" public static final String VALID_PHONE_AMY \u003d \"61111111\";","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" public static final String VALID_PHONE_BOB \u003d \"62222222\";","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String TASK_DESC_AMY \u003d \" \" + PREFIX_TASKS + VALID_TASKS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String TASK_DESC_BOB \u003d \" \" + PREFIX_TASKS + VALID_TASKS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String TASK_DESC_HUSBAND \u003d \" \" + PREFIX_TASKS + VALID_TASKS_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"johnyoozhengxian"},"content":" public static final String TASK_DESC_FRIEND \u003d \" \" + PREFIX_TASKS + VALID_TASKS_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" public static final EditCommand.EditEmployeeDescriptor DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" public static final EditCommand.EditEmployeeDescriptor DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" DESC_AMY \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" .withTasks(VALID_TASKS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" DESC_BOB \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"johnyoozhengxian"},"content":" .withTasks(VALID_TASKS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" * - the TaskMasterPro, filtered employee list and selected employee in {@code actualModel} remain unchanged","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" TaskMasterPro expectedTaskMasterPro \u003d new TaskMasterPro(actualModel.getTaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedTaskMasterPro, actualModel.getTaskMasterPro());","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" * Updates {@code model}\u0027s filtered list to show only the employee at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" * {@code model}\u0027s TaskMasterPro.","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" public static void showEmployeeAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredEmployeeList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d model.getFilteredEmployeeList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"azumieflare"},"content":" final String[] splitName \u003d employee.getName().split(\"\\\\s+\");","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" assertEquals(1, model.getFilteredEmployeeList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"azumieflare":3,"gavin331":20,"-":105,"johnyoozhengxian":16}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showEmployeeAtIndex;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private Model model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" Employee employeeToDelete \u003d model.getFilteredEmployeeList().get(INDEX_FIRST_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(employeeToDelete.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" Messages.format(employeeToDelete));","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" expectedModel.deleteEmployee(employeeToDelete);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredEmployeeList().size() + 1);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(-1);","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"BryanL2303"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" Employee employeeToDelete \u003d model.getFilteredEmployeeList().get(INDEX_FIRST_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"azumieflare"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(employeeToDelete.getEmployeeId());","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" Messages.format(employeeToDelete));","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" expectedModel.deleteEmployee(employeeToDelete);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" showNoEmployee(expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" // ensures that outOfBoundIndex is still in bounds of TaskMasterPro list","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskMasterPro().getEmployeeList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(-1);","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"BryanL2303"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(1);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(2);","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(1);","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"BryanL2303"},"content":" int targetIndex \u003d 1;","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" private void showNoEmployee(Model model) {","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" model.updateFilteredEmployeeList(p -\u003e false);","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" assertTrue(model.getFilteredEmployeeList().isEmpty());","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":2,"gavin331":27,"-":83}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" public void execute_deleteTaskCommand_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" model.addTask(validTask);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" assertEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" DeleteTaskCommand dtc \u003d new DeleteTaskCommand(1);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" assertEquals(dtc.toString(), \"seedu.address.logic.commands.DeleteTaskCommand{targetIndex\u003d1}\");","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" dtc.execute(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" return;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" assertEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" dtc \u003d new DeleteTaskCommand(123);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" dtc.execute(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" return;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" assertNotEquals(1, model.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":40,"johnyoozhengxian":1}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showEmployeeAtIndex;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" private Model model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder(editedEmployee).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, descriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" Messages.format(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(new TaskMasterPro(model.getTaskMasterPro()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" expectedModel.setEmployee(model.getFilteredEmployeeList().get(0), editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"azumieflare"},"content":" Index indexLastEmployee \u003d Index.fromOneBased(model.getFilteredEmployeeList()","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"azumieflare"},"content":" .get(model.getFilteredEmployeeList().size() - 1).getEmployeeId());","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" Employee lastEmployee \u003d model.getFilteredEmployeeList().get(indexLastEmployee.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" EmployeeBuilder employeeInList \u003d new EmployeeBuilder(lastEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d employeeInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastEmployee, descriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" Messages.format(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(new TaskMasterPro(model.getTaskMasterPro()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" expectedModel.setEmployee(lastEmployee, editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, new EditEmployeeDescriptor());","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d model.getFilteredEmployeeList().get(INDEX_FIRST_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" Messages.format(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(new TaskMasterPro(model.getTaskMasterPro()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" Employee employeeInFilteredList \u003d model.getFilteredEmployeeList().get(INDEX_FIRST_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" Employee editedEmployee \u003d new EmployeeBuilder(employeeInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE,","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_EMPLOYEE_SUCCESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" Messages.format(editedEmployee));","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" Model expectedModel \u003d new ModelManager(new TaskMasterPro(model.getTaskMasterPro()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" expectedModel.setEmployee(model.getFilteredEmployeeList().get(0), editedEmployee);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" public void execute_duplicateEmployeeUnfilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"azumieflare"},"content":" Employee firstEmployee \u003d model.getFilteredEmployeeList().get(INDEX_SECOND_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder(firstEmployee).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" public void execute_duplicateEmployeeFilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" // edit employee in filtered list into a duplicate in TaskMasterPro","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" Employee employeeInList \u003d model.getTaskMasterPro().getEmployeeList().get(INDEX_SECOND_EMPLOYEE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE,","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" new EditEmployeeDescriptorBuilder(employeeInList).build());","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" public void execute_invalidEmployeeIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredEmployeeList().size() + 1);","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"BryanL2303"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":" * but smaller than size of TaskMasterPro","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" public void execute_invalidEmployeeIndexFilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" // ensures that outOfBoundIndex is still in bounds of TaskMasterPro list","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getTaskMasterPro().getEmployeeList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" new EditEmployeeDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"BryanL2303"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_EMPLOYEEID);","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor copyDescriptor \u003d new EditCommand.EditEmployeeDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_EMPLOYEE, copyDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"gavin331"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_EMPLOYEE, DESC_AMY)));","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"gavin331"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_EMPLOYEE, DESC_BOB)));","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor editEmployeeDescriptor \u003d new EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"gavin331"},"content":" EditCommand editCommand \u003d new EditCommand(index, editEmployeeDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"gavin331"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editEmployeeDescriptor\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":4,"gavin331":69,"-":113}},{"path":"src/test/java/seedu/address/logic/commands/EditEmployeeDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"public class EditEmployeeDescriptorTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptorWithSameValues \u003d new EditEmployeeDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" editedAmy \u003d new EditEmployeeDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor editEmployeeDescriptor \u003d new EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" String expected \u003d EditEmployeeDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"BryanL2303"},"content":" + editEmployeeDescriptor.getAddress().orElse(null) + \", tasks\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"BryanL2303"},"content":" + editEmployeeDescriptor.getTasks().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" + editEmployeeDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" assertEquals(expected, editEmployeeDescriptor.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"BryanL2303":2,"gavin331":16,"-":54}},{"path":"src/test/java/seedu/address/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false,","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" true, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"BryanL2303":2,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.Messages.MESSAGE_EMPLOYEES_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.CARL;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ELLE;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.FIONA;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" private Model model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" public void execute_zeroKeywords_noEmployeeFound() {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_EMPLOYEES_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredEmployeeList(predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" assertEquals(Collections.emptyList(), model.getFilteredEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" public void execute_multipleKeywords_multipleEmployeesFound() {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_EMPLOYEES_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredEmployeeList(predicate);","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredEmployeeList());","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"gavin331":17,"-":74}},{"path":"src/test/java/seedu/address/logic/commands/FindTasksCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.Messages.MESSAGE_TASKS_LISTED_OVERVIEW;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import java.util.Collections;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTasksCommand}.","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"public class FindTasksCommandTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" private Task firstTask \u003d new Task(new TaskName(\"meeting 1\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" private Task secondTask \u003d new Task(new TaskName(\"project 2\"), new TaskId(124), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" private Task thirdTask \u003d new Task(new TaskName(\"presentation 3\"), new TaskId(125), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" private Task fourthTask \u003d new Task(new TaskName(\"presentations 4\"), new TaskId(126), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" public void equals() {","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" FindTasksCommand findFirstCommand \u003d new FindTasksCommand(firstPredicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" FindTasksCommand findSecondCommand \u003d new FindTasksCommand(secondPredicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" FindTasksCommand findFirstCommandCopy \u003d new FindTasksCommand(firstPredicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public void execute_zeroKeywords_noTaskFound() {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" FindTasksCommand command \u003d new FindTasksCommand(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" assertEquals(Collections.emptyList(), model.getFilteredEmployeeList());","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" public void execute_multipleKeywords_multipleTasksFound() {","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\"meeting project presentation\");","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" FindTasksCommand command \u003d new FindTasksCommand(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" addTasksToModel(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" addTasksToModel(expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" assertEquals(Arrays.asList(firstTask, secondTask, thirdTask), expectedModel.getFilteredTaskList());","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" public void execute_unmatchedKeyword_noTasksFound() {","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\"present\");","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" FindTasksCommand command \u003d new FindTasksCommand(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" addTasksToModel(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" addTasksToModel(expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" assertEquals(Collections.emptyList(), expectedModel.getFilteredTaskList());","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" private TaskNameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" return new TaskNameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" private void addTasksToModel(Model model) {","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" model.addTask(firstTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" model.addTask(secondTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" model.addTask(thirdTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" model.addTask(fourthTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"gavin331":103}},{"path":"src/test/java/seedu/address/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false, false, false);","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"BryanL2303":1,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showEmployeeAtIndex;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" model \u003d new ModelManager(getTypicalTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" expectedModel \u003d new ModelManager(model.getTaskMasterPro(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" showEmployeeAtIndex(model, INDEX_FIRST_EMPLOYEE);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"gavin331":6,"-":33}},{"path":"src/test/java/seedu/address/logic/commands/MarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(validTask);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand mc \u003d new MarkCommand(123);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" mc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"Completed\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"johnyoozhengxian":26}},{"path":"src/test/java/seedu/address/logic/commands/UnassignTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":"public class UnassignTaskCommandTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" public void test() throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" Task task \u003d new Task(new TaskName(\"play game\"), new TaskId(5), new TaskStatus(false),","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" model.addEmployee(validEmployee);","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" model.addTask(task);","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" AssignTaskCommand atc \u003d new AssignTaskCommand(5, 1);","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" atc.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" assertEquals(\"5\", model.getFilteredEmployeeList().get(0).getTasks().getTasks());","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" UnassignTaskCommand utc \u003d new UnassignTaskCommand(5, 1);","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" utc.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" assertEquals(\"\", model.getFilteredEmployeeList().get(0).getTasks().getTasks());","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"BryanL2303":40}},{"path":"src/test/java/seedu/address/logic/commands/UnmarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnmarkCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" model.addTask(validTask);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand mc \u003d new MarkCommand(123);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" mc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"Completed\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand umc \u003d new UnmarkCommand(123);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" umc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"In Progress\");","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"johnyoozhengxian":32}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TASK_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" Employee expectedEmployee \u003d new EmployeeBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"BryanL2303"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedEmployee));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" Employee expectedEmployeeMultipleTags \u003d new EmployeeBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":64,"author":{"gitId":"BryanL2303"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"BryanL2303"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" new AddCommand(expectedEmployeeMultipleTags));","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" String validExpectedEmployeeString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" validExpectedEmployeeString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"BryanL2303"},"content":" + validExpectedEmployeeString,","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedEmployeeString,","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, validExpectedEmployeeString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, validExpectedEmployeeString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, validExpectedEmployeeString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, validExpectedEmployeeString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" Employee expectedEmployee \u003d new EmployeeBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"BryanL2303"},"content":" new AddCommand(expectedEmployee));","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"BryanL2303"},"content":" + TASK_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"BryanL2303"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"BryanL2303"},"content":" + TASK_DESC_BOB , Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"BryanL2303":9,"gavin331":26,"-":162}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" Model m1 \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" Model m2 \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(5);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" AddTaskCommand atc \u003d parser.parse(\"testing \");","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" AddTaskCommand atc2 \u003d new AddTaskCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" new Task(new TaskName(\"testing\"), new TaskId(5), new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" atc.execute(m1);","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" atc2.execute(m2);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" assertTrue(m1.equals(m2));","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" public void test2() {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" AddTaskCommand atc \u003d parser.parse(\"\");","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" assertEquals(e.getMessage(), \"Invalid command format! \\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" + \"task: Adds a task to TaskMasterPro. Parameters: DESCRIPTION \\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" + \"Example: task meeting\");","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":40,"gavin331":1,"johnyoozhengxian":2}},{"path":"src/test/java/seedu/address/logic/parser/AssignTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.AssignTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":"public class AssignTaskCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" private AssignTaskCommandParser parser \u003d new AssignTaskCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" Employee validEmployee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" model.addEmployee(validEmployee); // id of 1","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" model.addTask(new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" AssignTaskCommand atc \u003d parser.parse(\"123 1\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":" atc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" assertEquals(\"123\", model.getFilteredEmployeeList().get(0).getTasks().getTasks());","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":4,"johnyoozhengxian":33}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"BryanL2303":1,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" Model m \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" m.addTask(new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" DeleteTaskCommand dtc \u003d parser.parse(\"123\");","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" assertEquals(1, m.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" dtc.execute(m);","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" assertEquals(0, m.getFilteredTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" public void test2() throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" parser.parse(\"\");","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" assertEquals(e.getMessage(), \"Invalid command format! \\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" + \"deletetask: Removes the task identified by the taskID used in the displayed task list.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"azumieflare"},"content":" + \"Parameters: taskID (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" + \"Example: deletetask 1\");","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":42,"johnyoozhengxian":1}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Employee} being edited,","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_SECOND_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_THIRD_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":161,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":200,"author":{"gitId":"gavin331"},"content":" Index targetIndex \u003d INDEX_THIRD_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"gavin331":23,"-":185}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"gavin331":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/FindTasksCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.FindTasksCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public class FindTasksCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" private FindTasksCommandParser parser \u003d new FindTasksCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" FindTasksCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" public void parse_validArgs_returnsFindTasksCommand() {","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" FindTasksCommand expectedFindTasksCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" new FindTasksCommand(new TaskNameContainsKeywordsPredicate(Arrays.asList(\"project\", \"meeting\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" assertParseSuccess(parser, \"project meeting\", expectedFindTasksCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" assertParseSuccess(parser, \" \\n project \\n \\t meeting \\t\", expectedFindTasksCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"gavin331":36}},{"path":"src/test/java/seedu/address/logic/parser/MarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"public class MarkCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":" private MarkCommandParser parser \u003d new MarkCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" model.addTask(new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand mc \u003d parser.parse(\"123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"johnyoozhengxian"},"content":" mc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"Completed\");","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"johnyoozhengxian":28}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" private static final String VALID_PHONE \u003d \"91234567\";","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" assertEquals(INDEX_FIRST_EMPLOYEE, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" assertEquals(INDEX_FIRST_EMPLOYEE, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"azumieflare":1,"gavin331":7,"-":188}},{"path":"src/test/java/seedu/address/logic/parser/TaskMasterProParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EMPLOYEE;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EditEmployeeDescriptorBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"public class TaskMasterProParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" private final TaskMasterProParser parser \u003d new TaskMasterProParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(EmployeeUtil.getAddCommand(employee));","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" assertEquals(new AddCommand(employee), command);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"BryanL2303"},"content":" DeleteCommand.COMMAND_WORD + \" \" + \u00271\u0027);","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" assertEquals(new DeleteCommand(1), command);","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" EditEmployeeDescriptor descriptor \u003d new EditEmployeeDescriptorBuilder(employee).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" + INDEX_FIRST_EMPLOYEE.getOneBased() + \" \" + EmployeeUtil.getEditEmployeeDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" assertEquals(new EditCommand(INDEX_FIRST_EMPLOYEE, descriptor), command);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"BryanL2303":2,"gavin331":16,"-":83}},{"path":"src/test/java/seedu/address/logic/parser/UnmarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"johnyoozhengxian"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.UnmarkCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"johnyoozhengxian"},"content":"public class UnmarkCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"johnyoozhengxian"},"content":" private MarkCommandParser parser \u003d new MarkCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"johnyoozhengxian"},"content":" private UnmarkCommandParser parser1 \u003d new UnmarkCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"johnyoozhengxian"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"johnyoozhengxian"},"content":" public void test() throws ParseException, CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"johnyoozhengxian"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" model.addTask(new Task(new TaskName(\"Test\"), new TaskId(123), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"johnyoozhengxian"},"content":" MarkCommand mc \u003d parser.parse(\"123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" mc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"Completed\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"johnyoozhengxian"},"content":" UnmarkCommand umc \u003d parser1.parse(\"123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"johnyoozhengxian"},"content":" umc.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" assertTrue(model.getFilteredTaskList().get(0).getTaskStatus().toString() \u003d\u003d \"In Progress\");","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"johnyoozhengxian"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"BryanL2303":3,"johnyoozhengxian":35}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_EMPLOYEES;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BENSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.TaskMasterProBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" assertEquals(new TaskMasterPro(), new TaskMasterPro(modelManager.getTaskMasterPro()));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" userPrefs.setTaskMasterProFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" userPrefs.setTaskMasterProFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setTaskMasterProFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath_validPath_setsTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" modelManager.setTaskMasterProFilePath(path);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" assertEquals(path, modelManager.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasEmployee(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeNotInTaskMasterPro_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" assertFalse(modelManager.hasEmployee(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeInTaskMasterPro_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" modelManager.addEmployee(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" assertTrue(modelManager.hasEmployee(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" public void getFilteredEmployeeList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredEmployeeList().remove(0));","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" TaskMasterPro taskMasterPro \u003d new TaskMasterProBuilder().withEmployee(ALICE).withEmployee(BENSON).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" TaskMasterPro differentTaskMasterPro \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" modelManager \u003d new ModelManager(taskMasterPro, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(taskMasterPro, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" // different taskMasterPro -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" assertFalse(modelManager.equals(new ModelManager(differentTaskMasterPro, userPrefs)));","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"azumieflare"},"content":" String[] keywords \u003d ALICE.getName().split(\"\\\\s+\");","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" modelManager.updateFilteredEmployeeList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" assertFalse(modelManager.equals(new ModelManager(taskMasterPro, userPrefs)));","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" modelManager.updateFilteredEmployeeList(PREDICATE_SHOW_ALL_EMPLOYEES);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" differentUserPrefs.setTaskMasterProFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" assertFalse(modelManager.equals(new ModelManager(taskMasterPro, differentUserPrefs)));","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"azumieflare":1,"gavin331":33,"-":98}},{"path":"src/test/java/seedu/address/model/TaskMasterProTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.DuplicateEmployeeException;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"public class TaskMasterProTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private final TaskMasterPro taskMasterPro \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" assertEquals(Collections.emptyList(), taskMasterPro.getEmployeeList());","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e taskMasterPro.resetData(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" public void resetData_withValidReadOnlyTaskMasterPro_replacesData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" TaskMasterPro newData \u003d getTypicalTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" taskMasterPro.resetData(newData);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" assertEquals(newData, taskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" public void resetData_withDuplicateEmployees_throwsDuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" // Two employees with the same identity fields","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e newEmployees \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" TaskMasterProStub newData \u003d new TaskMasterProStub(newEmployees);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" assertThrows(DuplicateEmployeeException.class, () -\u003e taskMasterPro.resetData(newData));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e taskMasterPro.hasEmployee(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeNotInTaskMasterPro_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertFalse(taskMasterPro.hasEmployee(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeInTaskMasterPro_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" assertTrue(taskMasterPro.hasEmployee(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" public void hasEmployee_employeeWithSameIdentityFieldsInTaskMasterPro_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" assertTrue(taskMasterPro.hasEmployee(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" public void getEmployeeList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e taskMasterPro.getEmployeeList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" String expected \u003d TaskMasterPro.class.getCanonicalName()","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"azumieflare"},"content":" + \"{Employees\u003d\" + taskMasterPro.getEmployeeList() + \"}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" assertEquals(expected, taskMasterPro.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" * A stub ReadOnlyTaskMasterPro whose employees list can violate interface constraints.","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" private static class TaskMasterProStub implements ReadOnlyTaskMasterPro {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" private final ObservableList\u003cEmployee\u003e employees \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" TaskMasterProStub(Collection\u003cEmployee\u003e employees) {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" this.employees.setAll(employees);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" public ObservableList\u003cEmployee\u003e getEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" return employees;","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"azumieflare"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"azumieflare"},"content":" public ObservableList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"azumieflare"},"content":" return null;","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"azumieflare":7,"gavin331":41,"-":66}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public void setTaskMasterProFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setTaskMasterProFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"gavin331":2,"-":19}},{"path":"src/test/java/seedu/address/model/employee/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"gavin331":1,"-":55}},{"path":"src/test/java/seedu/address/model/employee/AssignedTasksTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"public class AssignedTasksTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" assertThrows(NullPointerException.class, () -\u003e new AssignedTasks(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" public void isValidAssignedTasks() {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" // null assignedTasks","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" assertThrows(NullPointerException.class, () -\u003e AssignedTasks.isValidTask(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" // valid assignedTasks","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedTasks.isValidTask(\"\")); // empty string","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedTasks.isValidTask(\"1\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedTasks.isValidTask(\"1 2\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedTasks.isValidTask(\"1 2 3\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" public void equals() {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" AssignedTasks assignedTasks \u003d new AssignedTasks(\"1\");","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" assertTrue(assignedTasks.equals(new AssignedTasks(\"1\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" assertTrue(assignedTasks.equals(assignedTasks));","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedTasks.equals(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedTasks.equals(5.0f));","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedTasks.equals(new AssignedTasks(\"1 2\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"BryanL2303":46}},{"path":"src/test/java/seedu/address/model/employee/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"gavin331":1,"-":87}},{"path":"src/test/java/seedu/address/model/employee/EmployeeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"public class EmployeeTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" Employee employee \u003d new EmployeeBuilder().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e employee.getTags().remove(0));","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" public void isSameEmployee() {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" assertTrue(ALICE.isSameEmployee(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" assertFalse(ALICE.isSameEmployee(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" assertTrue(ALICE.isSameEmployee(editedAlice));","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" editedAlice \u003d new EmployeeBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" assertFalse(ALICE.isSameEmployee(editedAlice));","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" Employee editedBob \u003d new EmployeeBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" assertFalse(BOB.isSameEmployee(editedBob));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" editedBob \u003d new EmployeeBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" assertFalse(BOB.isSameEmployee(editedBob));","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" Employee aliceCopy \u003d new EmployeeBuilder(ALICE).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" editedAlice \u003d new EmployeeBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" editedAlice \u003d new EmployeeBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":89,"author":{"gitId":"BryanL2303"},"content":" //editedAlice \u003d new EmployeeBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"BryanL2303"},"content":" //assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"BryanL2303"},"content":" String expected \u003d Employee.class.getCanonicalName() + \"{employeeId\u003d\" + ALICE.getEmployeeId() + \", name\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"BryanL2303"},"content":" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"johnyoozhengxian"},"content":" + ALICE.getAddress() + \", tasks\u003d\" + ALICE.getTasks() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"BryanL2303":4,"gavin331":24,"-":71,"johnyoozhengxian":1}},{"path":"src/test/java/seedu/address/model/employee/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(new EmployeeBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(new EmployeeBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(new EmployeeBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(new EmployeeBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(new EmployeeBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(new EmployeeBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"azumieflare"},"content":" assertFalse(predicate.test(new EmployeeBuilder().withName(\"Alice\").withPhone(\"91234567\")","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"azumieflare":1,"gavin331":9,"-":75}},{"path":"src/test/java/seedu/address/model/employee/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"gavin331":1,"-":59}},{"path":"src/test/java/seedu/address/model/employee/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" assertTrue(Phone.isValidPhone(\"91231234\")); // exactly 8 numbers","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" assertTrue(Phone.isValidPhone(\"63121534\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" assertTrue(Phone.isValidPhone(\"86666123\")); // long phone numbers","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"azumieflare"},"content":" Phone phone \u003d new Phone(\"91234567\");","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" assertTrue(phone.equals(new Phone(\"91234567\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"azumieflare"},"content":" assertFalse(phone.equals(new Phone(\"91238412\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"azumieflare":6,"gavin331":1,"-":53}},{"path":"src/test/java/seedu/address/model/employee/UniqueEmployeeListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.DuplicateEmployeeException;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.exceptions.EmployeeNotFoundException;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.EmployeeBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"public class UniqueEmployeeListTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" private final UniqueEmployeeList uniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public void contains_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.contains(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public void contains_employeeNotInList_returnsFalse() {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" assertFalse(uniqueEmployeeList.contains(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public void contains_employeeInList_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" assertTrue(uniqueEmployeeList.contains(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" public void contains_employeeWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" .build();","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" assertTrue(uniqueEmployeeList.contains(editedAlice));","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public void add_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.add(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public void add_duplicateEmployee_throwsDuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" assertThrows(DuplicateEmployeeException.class, () -\u003e uniqueEmployeeList.add(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" public void setEmployee_nullTargetEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.setEmployee(null, ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" public void setEmployee_nullEditedEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.setEmployee(ALICE, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" public void setEmployee_targetEmployeeNotInList_throwsEmployeeNotFoundException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" assertThrows(EmployeeNotFoundException.class, () -\u003e uniqueEmployeeList.setEmployee(ALICE, ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" public void setEmployee_editedEmployeeIsSameEmployee_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployee(ALICE, ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" public void setEmployee_editedEmployeeHasSameIdentity_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" Employee editedAlice \u003d new EmployeeBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" .build();","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployee(ALICE, editedAlice);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(editedAlice);","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" public void setEmployee_editedEmployeeHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployee(ALICE, BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" public void setEmployee_editedEmployeeHasNonUniqueIdentity_throwsDuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" assertThrows(DuplicateEmployeeException.class, () -\u003e uniqueEmployeeList.setEmployee(ALICE, BOB));","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":" public void remove_nullEmployee_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.remove(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" public void remove_employeeDoesNotExist_throwsEmployeeNotFoundException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" assertThrows(EmployeeNotFoundException.class, () -\u003e uniqueEmployeeList.remove(ALICE));","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" public void remove_existingEmployee_removesEmployee() {","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.remove(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" public void setEmployees_nullUniqueEmployeeList_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.setEmployees((UniqueEmployeeList) null));","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" public void setEmployees_uniqueEmployeeList_replacesOwnListWithProvidedUniqueEmployeeList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployees(expectedUniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" public void setEmployees_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueEmployeeList.setEmployees((List\u003cEmployee\u003e) null));","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" public void setEmployees_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.add(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e employeeList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"gavin331"},"content":" uniqueEmployeeList.setEmployees(employeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" UniqueEmployeeList expectedUniqueEmployeeList \u003d new UniqueEmployeeList();","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" expectedUniqueEmployeeList.add(BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":" assertEquals(expectedUniqueEmployeeList, uniqueEmployeeList);","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"gavin331"},"content":" public void setEmployees_listWithDuplicateEmployees_throwsDuplicateEmployeeException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"gavin331"},"content":" List\u003cEmployee\u003e listWithDuplicateEmployees \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"gavin331"},"content":" assertThrows(DuplicateEmployeeException.class, () -\u003e uniqueEmployeeList","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"gavin331"},"content":" .setEmployees(listWithDuplicateEmployees));","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":167,"author":{"gitId":"gavin331"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"gavin331"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"gavin331"},"content":" -\u003e uniqueEmployeeList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"gavin331"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"gavin331"},"content":" assertEquals(uniqueEmployeeList.asUnmodifiableObservableList().toString(), uniqueEmployeeList.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"gavin331":176}},{"path":"src/test/java/seedu/address/model/task/AssignedEmployeesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"BryanL2303"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"BryanL2303"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"BryanL2303"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"public class AssignedEmployeesTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" assertThrows(NullPointerException.class, () -\u003e new AssignedEmployees(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"BryanL2303"},"content":" public void isValidAssignedEmployees() {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"BryanL2303"},"content":" // null assignedEmployees","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" assertThrows(NullPointerException.class, () -\u003e AssignedEmployees.isValidEmployee(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"BryanL2303"},"content":" // valid assignedEmployees","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedEmployees.isValidEmployee(\"\")); // empty string","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedEmployees.isValidEmployee(\"1\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedEmployees.isValidEmployee(\"1 2\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"BryanL2303"},"content":" assertTrue(AssignedEmployees.isValidEmployee(\"1 2 3\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"BryanL2303"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"BryanL2303"},"content":" public void equals() {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"BryanL2303"},"content":" AssignedEmployees assignedEmployees \u003d new AssignedEmployees(\"1\");","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"BryanL2303"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"BryanL2303"},"content":" assertTrue(assignedEmployees.equals(new AssignedEmployees(\"1\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"BryanL2303"},"content":" assertTrue(assignedEmployees.equals(assignedEmployees));","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedEmployees.equals(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"BryanL2303"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedEmployees.equals(5.0f));","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"BryanL2303"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"BryanL2303"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"BryanL2303"},"content":" assertFalse(assignedEmployees.equals(new AssignedEmployees(\"1 2\")));","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"BryanL2303"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"BryanL2303"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"BryanL2303":46}},{"path":"src/test/java/seedu/address/model/task/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.exceptions.TaskNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"public class TaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":" private final TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":" private final Task task \u003d new Task(new TaskName(\"Test\"), new TaskId(5), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public void execute_addRemoveTaskList_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" taskList.add(task);","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" assertTrue(taskList.contains(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" taskList.remove(task);","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" assertFalse(taskList.contains(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"azumieflare"},"content":" public void execute_taskListToString_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"azumieflare"},"content":" assertEquals(taskList.asUnmodifiableObservableList().toString(), taskList.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":" public void execute_removeFromEmptyTaskList_exception() {","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" taskList.remove(task);","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"azumieflare"},"content":" } catch (TaskNotFoundException e) {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" assertEquals(e.getMessage(), null);","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":34}},{"path":"src/test/java/seedu/address/model/task/TaskNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"public class TaskNameContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"project\");","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"project\", \"meeting\");","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" // different employee -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" public void test_taskNameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" Task testTask \u003d new Task(new TaskName(\"project meeting\"), new TaskId(2), new TaskStatus(false),","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" // One keyword","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"project\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"project\", \"meeting\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"project\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"pRoJEct\", \"mEeTing\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" assertTrue(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" Task testTask \u003d new Task(new TaskName(\"project meeting\"), new TaskId(2), new TaskStatus(false),","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" new AssignedEmployees(\"John\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" // Zero keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(List.of(\"assignment\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" // Keywords match TaskId, TaskStatus and AssignedEmployees, but does not match TaskName","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2\", \"In\", \"Progress\", \"John\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" assertFalse(predicate.test(testTask));","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" String expected \u003d TaskNameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"gavin331":90}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"public class TaskTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":" public void execute_taskList_success() {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"BryanL2303"},"content":" Task validTask \u003d new Task(new TaskName(\"Test\"), new TaskId(2), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"azumieflare"},"content":" assertTrue(validTask.getName().equals(\"Test\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(100);","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":" assertTrue(validTask.getTaskId() \u003d\u003d 2);","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" assertTrue(validTask.getTaskStatus().toString().equals(\"In Progress\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" Task.incrementTaskId();","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"BryanL2303"},"content":" Task validTask2 \u003d new Task(new TaskName(\"Test\"), new TaskId(Task.getUniversalId()), new TaskStatus(false),","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"BryanL2303"},"content":" new AssignedEmployees(\"\"));","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" assertTrue(validTask2.getTaskId() \u003d\u003d 101);","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"BryanL2303":4,"azumieflare":18}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedEmployeeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static seedu.address.storage.JsonAdaptedEmployee.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.BENSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class JsonAdaptedEmployeeTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" private static final String VALID_TASKS \u003d BENSON.getTasks().toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public void toModelType_validEmployeeDetails_returnsEmployee() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(BENSON);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" assertEquals(BENSON, employee.toModelType());","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"johnyoozhengxian"},"content":" 1, INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(1, null, VALID_PHONE,","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"johnyoozhengxian"},"content":" 1, VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(1, VALID_NAME, null,","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"johnyoozhengxian"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" 1, VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(1, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"johnyoozhengxian"},"content":" null, VALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"johnyoozhengxian"},"content":" 1, VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedEmployee employee \u003d new JsonAdaptedEmployee(1, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"johnyoozhengxian"},"content":" null, VALID_TASKS, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, expectedMessage, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" JsonAdaptedEmployee employee \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"johnyoozhengxian"},"content":" new JsonAdaptedEmployee(","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"johnyoozhengxian"},"content":" 1, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS, invalidTags);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, employee::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"BryanL2303":4,"gavin331":24,"-":76,"johnyoozhengxian":15}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"azumieflare"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"azumieflare"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"azumieflare"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"azumieflare"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"azumieflare"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.AssignedEmployees;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskId;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"azumieflare"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"BryanL2303"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"azumieflare"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"azumieflare"},"content":" public void execute_noTaskInput_exception() {","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"azumieflare"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(null, 123, \"In Progress\", \"\");","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"azumieflare"},"content":" assertThrows(IllegalValueException.class, String.format(JsonAdaptedTask.MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"azumieflare"},"content":" TaskName.class.getSimpleName()), task::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"azumieflare"},"content":" public void execute_errorTaskInput_exception() {","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(new Task(new TaskName(null), new TaskId(123),","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"BryanL2303"},"content":" new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"azumieflare"},"content":" assertThrows(IllegalValueException.class, String.format(JsonAdaptedTask.MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"azumieflare"},"content":" TaskName.class.getSimpleName()), task::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"azumieflare"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"azumieflare"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"azumieflare"},"content":" public void execute_taskCreationEqual_success() throws IllegalValueException {","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedTask task \u003d new JsonAdaptedTask(new Task(new TaskName(\"Test\"), new TaskId(123),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"BryanL2303"},"content":" new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" Task.setUniversalTaskId(123);","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"BryanL2303"},"content":" JsonAdaptedTask task2 \u003d new JsonAdaptedTask(new Task(new TaskName(\"Test\"), new TaskId(Task.getUniversalId()),","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"BryanL2303"},"content":" new TaskStatus(false), new AssignedEmployees(\"\")));","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" assertEquals(task.toModelType().toString(), task2.toModelType().toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"BryanL2303":8,"azumieflare":32}},{"path":"src/test/java/seedu/address/storage/JsonSerializableTaskMasterProTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.testutil.TypicalEmployees;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"public class JsonSerializableTaskMasterProTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableTaskMasterProTest\");","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" private static final Path TYPICAL_EMPLOYEES_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalEmployeesTaskMasterPro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" private static final Path INVALID_EMPLOYEE_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidEmployeeTaskMasterPro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" private static final Path DUPLICATE_EMPLOYEE_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateEmployeeTaskMasterPro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public void toModelType_typicalEmployeesFile_success() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_EMPLOYEES_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" TaskMasterPro taskMasterProFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" TaskMasterPro typicalEmployeesTaskMasterPro \u003d TypicalEmployees.getTypicalTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" assertEquals(taskMasterProFromFile, typicalEmployeesTaskMasterPro);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" public void toModelType_invalidEmployeeFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro dataFromFile \u003d JsonUtil.readJsonFile(INVALID_EMPLOYEE_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public void toModelType_duplicateEmployees_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_EMPLOYEE_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" JsonSerializableTaskMasterPro.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalValueException.class, JsonSerializableTaskMasterPro.MESSAGE_DUPLICATE_EMPLOYEE,","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"gavin331":20,"-":26}},{"path":"src/test/java/seedu/address/storage/JsonTaskMasterProStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.HOON;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.IDA;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"public class JsonTaskMasterProStorageTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonTaskMasterProStorageTest\");","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" @TempDir","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" public void readTaskMasterPro_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e readTaskMasterPro(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" private java.util.Optional\u003cReadOnlyTaskMasterPro\u003e readTaskMasterPro(String filePath) throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" return new JsonTaskMasterProStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" .readTaskMasterPro(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" : null;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" assertFalse(readTaskMasterPro(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskMasterPro(\"notJsonFormatTaskMasterPro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public void readTaskMasterPro_invalidEmployeeTaskMasterPro_throwDataLoadingException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskMasterPro(\"invalidEmployeeTaskMasterPro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" public void readTaskMasterPro_invalidAndValidEmployeeTaskMasterPro_throwDataLoadingException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" assertThrows(DataLoadingException.class, () -\u003e readTaskMasterPro(\"invalidAndValidEmployeeTaskMasterPro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" public void readAndSaveTaskMasterPro_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" Path filePath \u003d testFolder.resolve(\"TempTaskMasterPro.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" TaskMasterPro original \u003d getTypicalTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" JsonTaskMasterProStorage jsonTaskMasterProStorage \u003d new JsonTaskMasterProStorage(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" jsonTaskMasterProStorage.saveTaskMasterPro(original, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro readBack \u003d jsonTaskMasterProStorage.readTaskMasterPro(filePath).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" assertEquals(original, new TaskMasterPro(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" original.addEmployee(HOON);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" original.removeEmployee(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" jsonTaskMasterProStorage.saveTaskMasterPro(original, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" readBack \u003d jsonTaskMasterProStorage.readTaskMasterPro(filePath).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" assertEquals(original, new TaskMasterPro(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" original.addEmployee(IDA);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" jsonTaskMasterProStorage.saveTaskMasterPro(original); // file path not specified","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" readBack \u003d jsonTaskMasterProStorage.readTaskMasterPro().get(); // file path not specified","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" assertEquals(original, new TaskMasterPro(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro_nullTaskMasterPro_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskMasterPro(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" * Saves {@code taskMasterPro} at the specified {@code filePath}.","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" private void saveTaskMasterPro(ReadOnlyTaskMasterPro taskMasterPro, String filePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" new JsonTaskMasterProStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" .saveTaskMasterPro(taskMasterPro, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" public void saveTaskMasterPro_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskMasterPro(new TaskMasterPro(), null));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gavin331":112}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" userPrefs.setTaskMasterProFilePath(Paths.get(\"taskmasterpro.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"gavin331":1,"-":122}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static seedu.address.testutil.TypicalEmployees.getTypicalTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.ReadOnlyTaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" JsonTaskMasterProStorage taskMasterProStorage \u003d new JsonTaskMasterProStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" storageManager \u003d new StorageManager(taskMasterProStorage, userPrefsStorage);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" public void taskMasterProReadSave() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * {@link JsonTaskMasterProStorage} class.","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonTaskMasterProStorageTest} class.","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" TaskMasterPro original \u003d getTypicalTaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" storageManager.saveTaskMasterPro(original);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" ReadOnlyTaskMasterPro retrieved \u003d storageManager.readTaskMasterPro().get();","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" assertEquals(original, new TaskMasterPro(retrieved));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public void getTaskMasterProFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" assertNotNull(storageManager.getTaskMasterProFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":14,"-":54}},{"path":"src/test/java/seedu/address/testutil/EditEmployeeDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand.EditEmployeeDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * A utility class to help with building EditEmployeeDescriptor objects.","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class EditEmployeeDescriptorBuilder {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" private EditCommand.EditEmployeeDescriptor descriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder() {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder(EditCommand.EditEmployeeDescriptor descriptor) {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" this.descriptor \u003d new EditEmployeeDescriptor(descriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * Returns an {@code EditEmployeeDescriptor} with fields containing {@code employee}\u0027s details","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" descriptor \u003d new EditCommand.EditEmployeeDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" descriptor.setName(new Name(employee.getName()));","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"azumieflare"},"content":" descriptor.setPhone(new Phone(employee.getPhone()));","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"azumieflare"},"content":" descriptor.setEmail(new Email(employee.getEmail()));","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"azumieflare"},"content":" descriptor.setAddress(new Address(employee.getAddress()));","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"BryanL2303"},"content":" descriptor.setTasks(employee.getTasks());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" descriptor.setTags(employee.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Name} of the {@code EditEmployeeDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Phone} of the {@code EditEmployeeDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Email} of the {@code EditEmployeeDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Address} of the {@code EditEmployeeDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"johnyoozhengxian"},"content":" * Sets the tasks assigned to the employee in the edit descriptor using the provided string.","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"johnyoozhengxian"},"content":" * @param tasks A string containing the tasks to be assigned to the employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"johnyoozhengxian"},"content":" * @return This {@code EditEmployeeDescriptorBuilder} instance for method chaining.","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"johnyoozhengxian"},"content":" public EditEmployeeDescriptorBuilder withTasks(String tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"johnyoozhengxian"},"content":" descriptor.setTasks(new AssignedTasks(tasks));","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"johnyoozhengxian"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditEmployeeDescriptor}","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" * that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" public EditEmployeeDescriptor build() {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" return descriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":4,"gavin331":79,"johnyoozhengxian":19}},{"path":"src/test/java/seedu/address/testutil/EmployeeBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.AssignedTasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.EmployeeId;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import seedu.address.model.employee.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * A utility class to help with building Employee objects.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"public class EmployeeBuilder {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"BryanL2303"},"content":" public static final String DEFAULT_TASKS \u003d \"\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" private Name name;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private Phone phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" private Email email;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" private Address address;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" private AssignedTasks tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" * Creates a {@code EmployeeBuilder} with the default details.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder() {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"johnyoozhengxian"},"content":" tasks \u003d new AssignedTasks(DEFAULT_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" * Initializes the EmployeeBuilder with the data of {@code employeeToCopy}.","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder(Employee employeeToCopy) {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" name \u003d new Name(employeeToCopy.getName());","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" phone \u003d new Phone(employeeToCopy.getPhone());","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" email \u003d new Email(employeeToCopy.getEmail());","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"azumieflare"},"content":" address \u003d new Address(employeeToCopy.getAddress());","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"johnyoozhengxian"},"content":" tasks \u003d employeeToCopy.getTasks();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" tags \u003d new HashSet\u003c\u003e(employeeToCopy.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Name} of the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withName(String name) {","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Address} of the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withAddress(String address) {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Phone} of the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" * Sets the {@code Email} of the {@code Employee} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":" public EmployeeBuilder withEmail(String email) {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"johnyoozhengxian"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"johnyoozhengxian"},"content":" * Sets the tasks assigned to the employee using the provided string.","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"johnyoozhengxian"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"johnyoozhengxian"},"content":" * @param tasks A string containing the tasks to be assigned to the employee.","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"johnyoozhengxian"},"content":" * @return This {@code EmployeeBuilder} instance for method chaining.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"johnyoozhengxian"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"johnyoozhengxian"},"content":" public EmployeeBuilder withTasks(String tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"johnyoozhengxian"},"content":" this.tasks \u003d new AssignedTasks(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"johnyoozhengxian"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"johnyoozhengxian"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" public Employee build() {","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"johnyoozhengxian"},"content":" return new Employee(new EmployeeId(1), name, phone, email, address, tasks, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"BryanL2303":1,"azumieflare":4,"gavin331":86,"johnyoozhengxian":22}},{"path":"src/test/java/seedu/address/testutil/EmployeeUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASKS;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * A utility class for Employee.","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class EmployeeUtil {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" * Returns an add command string for adding the {@code employee}.","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" public static String getAddCommand(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" return AddCommand.COMMAND_WORD + \" \" + getEmployeeDetails(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * Returns the part of command string for the given {@code employee}\u0027s details.","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public static String getEmployeeDetails(Employee employee) {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"azumieflare"},"content":" sb.append(PREFIX_NAME + employee.getName() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"azumieflare"},"content":" sb.append(PREFIX_PHONE + employee.getPhone() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"azumieflare"},"content":" sb.append(PREFIX_EMAIL + employee.getEmail() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"azumieflare"},"content":" sb.append(PREFIX_ADDRESS + employee.getAddress() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" employee.getTags().stream().forEach(","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" * Returns the part of command string for the given {@code EditEmployeeDescriptor}\u0027s details.","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" public static String getEditEmployeeDescriptorDetails(EditCommand.EditEmployeeDescriptor descriptor) {","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"azumieflare"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name).append(\" \"));","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone).append(\" \"));","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"azumieflare"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email).append(\" \"));","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address).append(\" \"));","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"BryanL2303"},"content":" descriptor.getTasks().ifPresent(tasks -\u003e sb.append(PREFIX_TASKS).append(tasks.getTasks()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"BryanL2303":2,"azumieflare":8,"gavin331":12,"-":42}},{"path":"src/test/java/seedu/address/testutil/TaskMasterProBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" * A utility class to help with building TaskMasterPro objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" * {@code TaskMasterPro ab \u003d new TaskMasterProBuilder().withEmployee(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"public class TaskMasterProBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" private TaskMasterPro taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" public TaskMasterProBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" taskMasterPro \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public TaskMasterProBuilder(TaskMasterPro taskMasterPro) {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" this.taskMasterPro \u003d taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * Adds a new {@code Employee} to the {@code TaskMasterPro} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public TaskMasterProBuilder withEmployee(Employee employee) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" taskMasterPro.addEmployee(employee);","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" public TaskMasterPro build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" return taskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"gavin331":34}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" * Returns the middle index of the employee in the {@code model}\u0027s employee list.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" return Index.fromOneBased(model.getFilteredEmployeeList().size() / 2);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" * Returns the last index of the employee in the {@code model}\u0027s employee list.","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" return Index.fromOneBased(model.getFilteredEmployeeList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" * Returns the employee in the {@code model}\u0027s employee list at {@code index}.","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" public static Employee getEmployee(Model model, Index index) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" return model.getFilteredEmployeeList().get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gavin331":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalEmployees.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"johnyoozhengxian"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASKS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"BryanL2303"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASKS_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"johnyoozhengxian"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.TaskMasterPro;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"import seedu.address.model.employee.Employee;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * A utility class containing a list of {@code Employee} objects to be used in tests.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"public class TypicalEmployees {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" public static final Employee ALICE \u003d new EmployeeBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"johnyoozhengxian"},"content":" .withTasks(\"3 6\")","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" public static final Employee BENSON \u003d new EmployeeBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"johnyoozhengxian"},"content":" .withTasks(\"3 6\")","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" public static final Employee CARL \u003d new EmployeeBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public static final Employee DANIEL \u003d new EmployeeBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTasks(\"3 6\").withTags(\"friends\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"azumieflare"},"content":" public static final Employee ELLE \u003d new EmployeeBuilder().withName(\"Elle Meyer\").withPhone(\"94822244\")","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"azumieflare"},"content":" public static final Employee FIONA \u003d new EmployeeBuilder().withName(\"Fiona Kunz\").withPhone(\"94824277\")","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"azumieflare"},"content":" public static final Employee GEORGE \u003d new EmployeeBuilder().withName(\"George Best\").withPhone(\"94824422\")","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":50,"author":{"gitId":"azumieflare"},"content":" public static final Employee HOON \u003d new EmployeeBuilder().withName(\"Hoon Meier\").withPhone(\"84824244\")","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"azumieflare"},"content":" public static final Employee IDA \u003d new EmployeeBuilder().withName(\"Ida Mueller\").withPhone(\"84821311\")","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withTasks(\"3 6\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" // Manually added - Employee\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public static final Employee AMY \u003d new EmployeeBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"johnyoozhengxian"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTasks(VALID_TASKS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"johnyoozhengxian"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" public static final Employee BOB \u003d new EmployeeBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"BryanL2303"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASKS_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"BryanL2303"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" private TypicalEmployees() {} // prevents instantiation","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" * Returns an {@code TaskMasterPro} with all the typical employees.","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" public static TaskMasterPro getTypicalTaskMasterPro() {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" TaskMasterPro ab \u003d new TaskMasterPro();","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" for (Employee employee : getTypicalEmployees()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" ab.addEmployee(employee);","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" public static List\u003cEmployee\u003e getTypicalEmployees() {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"BryanL2303":3,"azumieflare":5,"gavin331":18,"-":32,"johnyoozhengxian":23}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" public static final Index INDEX_FIRST_EMPLOYEE \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" public static final Index INDEX_SECOND_EMPLOYEE \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public static final Index INDEX_THIRD_EMPLOYEE \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"gavin331":3,"-":9}}] diff --git a/AY2324S2-CS2103T-T15-4_tp_master/commits.json b/AY2324S2-CS2103T-T15-4_tp_master/commits.json index f9f60887..034dd560 100644 --- a/AY2324S2-CS2103T-T15-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-T15-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"BryanL2303":[{"date":"2024-03-04","commitResults":[{"hash":"20c336ac4bacc6f4724d2005eda13f413f80f0ca","isMergeCommit":false,"messageTitle":"Add Bryan portfolio and image","messageBody":"Added my image png file.\nUpdated my own profile in AboutUs.md and included a portfolio page under teams folder bryanlee.md.\n","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":16}}},{"hash":"b1bedd86195b412852747fd4e1951a430c13a2ac","isMergeCommit":false,"messageTitle":"Stylecheck correction","messageBody":"Got rid of trailing whitespaces and include a blankline eof.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"0d0f746cf177265d021a8bfa690b75db80594ab7","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Only left the following features from the initial features:\n1. clear\n2. help\n3. exit\n\nAdded descriptions for the commands to add/list/delete tasks\nAdded them to the command summary as well.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":75}}}]},{"date":"2024-03-05","commitResults":[{"hash":"a4856c24899ded53d9f0f8721cecad47bd13a80f","isMergeCommit":true,"messageTitle":"Merge pull request #14 from azumieflare/branch-README","messageBody":"Looks good, thanks.","fileTypesAndContributionMap":{}},{"hash":"0a88ce0596f2b76fddf71ccfb5d2ed1a15d03508","isMergeCommit":true,"messageTitle":"Merge pull request #13 from azumieflare/branch-AboutUs","messageBody":"Add profile for John Chan","fileTypesAndContributionMap":{}},{"hash":"ded6d09c0d45d0bd3f7584ca825a9f9875e92e3a","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"Added all user stories for v1.2\nAdded use cases relevant for v1.2\n\nAll other segments still requires updates, they are merely templates\ngiven to us.\n","fileTypesAndContributionMap":{"docs":{"insertions":78,"deletions":17}}},{"hash":"b33e892b59f9207e20fdd5e815069e728bbd190f","isMergeCommit":false,"messageTitle":"Update image name","messageBody":"Changed name of image file to github handle for tracking purposes\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"4f1fcf52d032d0f51b98977d996c8c7916562bb2","isMergeCommit":true,"messageTitle":"Merge pull request #18 from gavin331/1-update-aboutus-page","messageBody":"Update AboutUs.md with Gavin\u0027s profile","fileTypesAndContributionMap":{}},{"hash":"3d5120b3c6a7ff7ed0991fe6eafc30fb65545592","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 5-update-readme-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"836eaacce85329b54581198c48ac3b3756fe95e1","isMergeCommit":true,"messageTitle":"Merge pull request #21 from gavin331/gavin331-8-update-dg","messageBody":"Add use case for marking and unmarking a task","fileTypesAndContributionMap":{}},{"hash":"60c908163841eebd99c9115ae894ab9839884041","isMergeCommit":true,"messageTitle":"Merge pull request #19 from gavin331/gavin-7-update-user-guide","messageBody":"Add employee functions to UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"4558e908fe2e005012b4ad7c78098d34e3a436a0","isMergeCommit":true,"messageTitle":"Merge pull request #27 from johnyoozhengxian/update-aboutus-page","messageBody":"Add AboutUs","fileTypesAndContributionMap":{}},{"hash":"0ae7eabf7cb8466c559c308a917f20436d502c11","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"Trailing whitespace caused CI failure.","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e9fc98552a6a22b3b33f726be1b34f52912de7ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 1-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b71585c3183a10f94fd44bdfa3b852eae0b6a976","isMergeCommit":true,"messageTitle":"Merge pull request #29 from AY2324S2-CS2103T-T15-4/7-update-user-guide","messageBody":"Close for v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"5685731453d0ea4b3c060c810728f11a2b5b2f46","isMergeCommit":false,"messageTitle":"Update index.md for project website","messageBody":"The main page of the project has not been update.\r\n\r\nKept things similar to the template for AB3, updated the name as well as the sources of the CI and codecov.","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-03-12","commitResults":[{"hash":"b89fb6fc936309841f543bd847740dcb860c1793","isMergeCommit":true,"messageTitle":"Merge pull request #44 from gavin331/32-refactor-the-template-code","messageBody":"Refactored person/Person to employee/Employee","fileTypesAndContributionMap":{}},{"hash":"d872fa016bfca0157414bcb71a043eb64997eed5","isMergeCommit":true,"messageTitle":"Merge pull request #45 from gavin331/refactor-addressbook","messageBody":"Refactor addressbook","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"49e53cf9d40b27ddecff8785ebe1ab3ec27b0796","isMergeCommit":true,"messageTitle":"Merge pull request #49 from AY2324S2-CS2103T-T15-4/32-refactor-the-template-code","messageBody":"32 refactor the template code","fileTypesAndContributionMap":{}},{"hash":"7b086e34bb3e4016ff9d8caa8620c5d425322e1c","isMergeCommit":true,"messageTitle":"Merge pull request #50 from AY2324S2-CS2103T-T15-4/master","messageBody":"Updating branch","fileTypesAndContributionMap":{}},{"hash":"fbd9fecf2ab6e20769eb0c5a75ea7943c46bb027","isMergeCommit":true,"messageTitle":"Merge pull request #48 from azumieflare/branch-Tasks","messageBody":"Tasks","fileTypesAndContributionMap":{}},{"hash":"a92a3ad88ca264d44b95d220f48065fb5f1555d5","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"Updating branch","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"6907126bbd80b02fa687fd4b6b9513302019e09d","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-T15-4/51-update-employee-functions","messageBody":"Update fork","fileTypesAndContributionMap":{}},{"hash":"d7f2d063db377aafdbad6e161a6683cf3b8f8810","isMergeCommit":false,"messageTitle":"Update add command to generate id","messageBody":"The model will display the employee id\nThe storage will store the employee id as well as the global id counter\n","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":42},"test-code":{"insertions":11,"deletions":15}}},{"hash":"a2b4563026ac926cfb508b35bb47cdf297b6f781","isMergeCommit":false,"messageTitle":"Correct checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":4}}},{"hash":"c15592e8a839aee5f0b961ceb4fe1dc3b09add42","isMergeCommit":false,"messageTitle":"Final checkstyle correction","messageBody":"Did not run build before pushing\n\nmy bad\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":13,"deletions":6}}},{"hash":"baf3fb72dfe647caf56ca605de39e3ed64a7f290","isMergeCommit":true,"messageTitle":"Merge pull request #56 from BryanL2303/51-update-employee-functions","messageBody":"Update add command to generate employee id","fileTypesAndContributionMap":{}},{"hash":"34aa4bab7da66268aefdf6f1f436f4d9f12775ac","isMergeCommit":false,"messageTitle":"Updated delete command","messageBody":"Instead of using employee index, use the employeeId instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":16},"test-code":{"insertions":17,"deletions":18}}},{"hash":"53d0e537fd4cfd0f5a245e6b0383ab89e7fe9a98","isMergeCommit":true,"messageTitle":"Merge pull request #58 from BryanL2303/51-update-employee-functions","messageBody":"Updated delete command","fileTypesAndContributionMap":{}},{"hash":"04ec8f27056b22fd981c65d5f670f73c8fd4f6a1","isMergeCommit":true,"messageTitle":"Merge pull request #59 from AY2324S2-CS2103T-T15-4/51-update-employee-functions","messageBody":"Update branch","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"a1b2b32d9a8ff2c65eaf85d037f87f31f763c3ba","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"Update Fork","fileTypesAndContributionMap":{}},{"hash":"cd67a7a31f2cb788782e1043c365a4520fcaafd4","isMergeCommit":false,"messageTitle":"Fix failing CI","messageBody":"CI was failing due to test cases not being properly updated.\n\nFixed all checkstyles as well as test cases all passed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":4},"test-code":{"insertions":38,"deletions":25}}},{"hash":"266382a4f45bd72bd432c075adc012603b66a2ed","isMergeCommit":true,"messageTitle":"Merge pull request #74 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Fixing Failing CI","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"a8b12540d75116351f27aa538a430d8b06dce3c6","isMergeCommit":false,"messageTitle":"Fixed bug with storage","messageBody":"The assignment of tasks will leaving spaced in the JSON file\ninconsistently which causes bugs after a few assignments and\nunassignments.\n\nGot rid of all trailing whitespaces and the blank space infront of the\nstring. Assignment and unassignment of tasks now saves into the JSON\nfile consistently.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"e91f0b3f702626852a5abd76f79ca4e3ef208730","isMergeCommit":false,"messageTitle":"Update Sample Employees Data","messageBody":"The employees were initialized with the trailing whitespace for assigned\ntasks. Removed trailing whitespace to align with previous commit\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"d9c47970f3ebec99dbb4810a4d71005ec9183ec3","isMergeCommit":true,"messageTitle":"Merge pull request #76 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Fixed bug with storage","fileTypesAndContributionMap":{}},{"hash":"1caf082aeac20c783203c0bc4b0d445011aeb4ed","isMergeCommit":true,"messageTitle":"Merge pull request #77 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"Merge all complete Task features","fileTypesAndContributionMap":{}},{"hash":"3155495255b90b6e1a9c146c4076fdccbbe2f6cc","isMergeCommit":true,"messageTitle":"Merge pull request #4 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Merge changes to Master","fileTypesAndContributionMap":{}},{"hash":"013eb5c5c9cfcc315db94d858a3e42d62645c204","isMergeCommit":false,"messageTitle":"Update GUI and list functions","messageBody":"The ui now shows employees and tasks individually instead of splitting\nthe small screen in half.\n\nThe list and listtask command are now properly implemented and does\nsomething.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":128,"deletions":30}}},{"hash":"eccb2cb49d7bdae1e6efd2cc131cbb315de210aa","isMergeCommit":true,"messageTitle":"Merge pull request #80 from BryanL2303/79-enhance-gui","messageBody":"Updated GUI and list/listtask functions","fileTypesAndContributionMap":{}},{"hash":"d140903512ced61884d2b31df4920b4f3dae920a","isMergeCommit":false,"messageTitle":"Fixing checkstyle error","messageBody":"IntelliJ keeps automatically using * and for some reason the CI is\noverly strict about using .* even though it is necessary in certain\ncases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1}}},{"hash":"c118ea6ff9a0b406c657e6e5b8f49430603b8d53","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"The test cases for commands has to be updated since the constructor for\nCommandResult has been updated.\n\nFixed checkstyle violations\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6},"other":{"insertions":7,"deletions":4},"test-code":{"insertions":8,"deletions":7}}},{"hash":"6cd4a716ac03ff2082d24eee9bb0db267e3aba59","isMergeCommit":true,"messageTitle":"Merge pull request #81 from BryanL2303/79-enhance-gui","messageBody":"Fixing checkstyle error","fileTypesAndContributionMap":{}},{"hash":"af6ce50b752e6351584b9c2ae1baaf846fc17d27","isMergeCommit":true,"messageTitle":"Merge pull request #5 from BryanL2303/79-enhance-gui","messageBody":"GUI has been enhanced with list/listtasks","fileTypesAndContributionMap":{}},{"hash":"1bf09b12a4fe6418db8a33581d77585be70c9268","isMergeCommit":false,"messageTitle":"Corrected mistake in AddCommand","messageBody":"Previously when fixing the test cases I accidentally made it compulsory\nfor users to key in the assignedtasks. I have reverted those mistakes\nand also updated the test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6},"test-code":{"insertions":14,"deletions":18}}},{"hash":"3db8feffa93b7c029de7f843a040e14a71777db6","isMergeCommit":true,"messageTitle":"Merge pull request #82 from AY2324S2-CS2103T-T15-4/79-enhance-gui","messageBody":"Updated GUI and list/listtasks functions","fileTypesAndContributionMap":{}},{"hash":"e10c70c53336aa6c6b3d7a0b20ef815a618249e7","isMergeCommit":true,"messageTitle":"Merge pull request #83 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Reverted my mistake in AddCommand","fileTypesAndContributionMap":{}},{"hash":"236ff9f75dc1167bb3f7e246dc0fd874a12ad63b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 47-add-in-task-with-all-minimum-features","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ea1e14e7b7c0c3a480f057211c2268e03ef01b8","isMergeCommit":false,"messageTitle":"Update UML function names","messageBody":"Some function names are not correct\n\nUpdated it based on the function name in the Java class itself.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5a5a013872a7ddd51186e794d609a6128f1cb341","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"Adding in Tasks to Employees\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"3e0728b51ed0e71dac24fcabd0d9413491249be6","isMergeCommit":true,"messageTitle":"Merge pull request #6 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Update UML and correct AddCommand","fileTypesAndContributionMap":{}},{"hash":"0bdbab9042a72c72607c3de3965b7537bd73c6a0","isMergeCommit":true,"messageTitle":"Merge pull request #84 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"Revert my mistakes in AddCommandParser","fileTypesAndContributionMap":{}},{"hash":"6d426a83263925faef2bcc4e2fa327ef3f9302c4","isMergeCommit":true,"messageTitle":"Merge pull request #85 from AY2324S2-CS2103T-T15-4/master","messageBody":"Keep branch up to date","fileTypesAndContributionMap":{}},{"hash":"e1d5070d50ab8e908cc4ceea26c3e471fbe6ccaf","isMergeCommit":true,"messageTitle":"Merge pull request #86 from BryanL2303/master","messageBody":"Update some UML diagrams","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4849d64b1a65c76428738a575e58681796efbf41","isMergeCommit":true,"messageTitle":"Merge pull request #88 from azumieflare/master","messageBody":"Update UML diagrams and modified GUI","fileTypesAndContributionMap":{}},{"hash":"a2798246d02f3cd02e0e367a390e7de55a73adb9","isMergeCommit":true,"messageTitle":"Merge pull request #87 from gavin331/gavin331-update-puml","messageBody":"Add sequence diagram for AssignTask command to DG.","fileTypesAndContributionMap":{}},{"hash":"657d623fe4e73cad3eab238677fc6c120b52cf7b","isMergeCommit":true,"messageTitle":"Merge pull request #90 from AY2324S2-CS2103T-T15-4/78-update-dg-with-uml-diagrams","messageBody":"Merging branch with updates to UML diagram","fileTypesAndContributionMap":{}},{"hash":"56b517dda4767294a965b4032d3dd51a3010e2fa","isMergeCommit":true,"messageTitle":"Merge pull request #8 from AY2324S2-CS2103T-T15-4/master","messageBody":"Update Fork","fileTypesAndContributionMap":{}},{"hash":"9e7b413da6386cf4677b0fa11acbfe8aef872ebe","isMergeCommit":false,"messageTitle":"Update help link to UG","messageBody":"The help function pointed to a non existent link.\n\nLink has been updated to the current github html page.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"abb52199aa0d4659c0246a7a8f58bccefef6cd30","isMergeCommit":true,"messageTitle":"Merge pull request #91 from BryanL2303/master","messageBody":"Update link to UG in help function","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"2ceddca75691043d39ee6413d6d78fd36f6f5bd8","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2324S2-CS2103T-T15-4/master","messageBody":"Update fork","fileTypesAndContributionMap":{}},{"hash":"85b44a4cade2edb3d74bbe41962708fe2d382245","isMergeCommit":false,"messageTitle":"Update AssignedTasks","messageBody":"The storage now uses the hashtable on top of the existing String\n\nThe String is still necessary for transition between loading and storing\ninto the JSON file. Problem being that we cannot initiate the hashtable\nuntil all Employees and Tasks has been created and added to\nTaskMasterPro, so we need the String as the placeholder.\n\nAll functions aside from loading and saving should make use of this\nhashtable for ease.\n\nUI has been updated for the tasks assigned to not just show the String\ntasks, but to iterate through the hashtable and display all tasks with\ntheir ids and names.\n\nThe storage files were also updated to facilitate the initialisation of\nthe hashtable when loading files from the JSON file.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":13}}},{"hash":"800f1d32435f12bdb2a6d57f8f5756c335205661","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"Fixing checkstyle errors\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"b5e5f5c9defa92e357b24367f0beaee05af41a26","isMergeCommit":false,"messageTitle":"Update assign and unassign functions","messageBody":"There were 2 functions for assigning and unassigning, both were called\none after the other because they serve the same function. The functions\nhas been combined into 1.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":39}}},{"hash":"83e87e217f6c2b172d2059816d9f4c04a712942e","isMergeCommit":true,"messageTitle":"Merge pull request #100 from BryanL2303/master","messageBody":"Updated AssignedTasks with hashtable","fileTypesAndContributionMap":{}},{"hash":"7665fa4baba4959ecd5f769db4b0aa1d18fc4c41","isMergeCommit":false,"messageTitle":"Update clear function","messageBody":"Resets both universal employee and task id back to 1 when the command is\nrun.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"d4bec26a7375402e0f530630a094cb57087807ac","isMergeCommit":true,"messageTitle":"Merge pull request #102 from BryanL2303/master","messageBody":"Update clear function","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"bf3a49b3a0589bd2e6856949b27c10743d59c219","isMergeCommit":false,"messageTitle":"Added AssignedEmployees to Task","messageBody":"AssignedEmployees in Task functions just like AssignedTasks in Employee.\n\nWhenever a task is assigned or unassigned both AssignedEmployees and\nAssignedTasks of the Task and Employee involved will be updated.\n\nThe UI for Task has also been updated to display the Employee ID and\nname of the employees that are assigned to the task.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":318,"deletions":11},"test-code":{"insertions":44,"deletions":18}}},{"hash":"8aa3f14930139fd88711851bb75fcbca74fa9311","isMergeCommit":true,"messageTitle":"Merge pull request #106 from AY2324S2-CS2103T-T15-4/65-fixing-non-functional-mistakes-with-tasks-branch","messageBody":"65 fixing non functional mistakes with tasks branch","fileTypesAndContributionMap":{}},{"hash":"2af9d6cfc07f64ee3b409b382a56ec4f0dd38e2d","isMergeCommit":true,"messageTitle":"Merge pull request #107 from BryanL2303/master","messageBody":"Added AssignedEmployees to Task","fileTypesAndContributionMap":{}},{"hash":"e13db171b1c665ded4e647b14c6e9663dcfad222","isMergeCommit":false,"messageTitle":"Update delete commands","messageBody":"When deleting employee or task, also remove all assignments to it.\n\nExample, employee 1 is assigned to task 2 and 3.\nEmployee 1 is deleted, both task 2 and task 3 will be updated to not\nshow an assignment to employee 1 anymore.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"0b6a920141440c67500c3b9b74f8a298234352bb","isMergeCommit":true,"messageTitle":"Merge pull request #108 from BryanL2303/master","messageBody":"Update delete commands","fileTypesAndContributionMap":{}},{"hash":"35b4f59dd49e6e6aeb9a6d49128ef5467b794615","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 99-update-ui-to-give-clearer-information","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"c85daabc7d32faf6e703a7aa01cc9ac1a842d4b6","isMergeCommit":true,"messageTitle":"Merge pull request #109 from AY2324S2-CS2103T-T15-4/99-update-ui-to-give-clearer-information","messageBody":"Updating UI To Show Employees Assigned To Tasks","fileTypesAndContributionMap":{}},{"hash":"e1e08f7d42d354d6871c0b637d0af0609b9f51eb","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2324S2-CS2103T-T15-4/97-update-dg-implementations-section","messageBody":"Use fork branch to PR","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"5d18f0815b38e55276ed885dd5d79c20bea09eb2","isMergeCommit":false,"messageTitle":"Add AssignTask/UnassignTask into DG","messageBody":"Update the implementation section with new features.\n","fileTypesAndContributionMap":{"docs":{"insertions":188,"deletions":0}}},{"hash":"864fa9ab5c45841feb606fe7316845439a82fa9d","isMergeCommit":true,"messageTitle":"Merge pull request #112 from BryanL2303/8-update-dg","messageBody":"Add AssignTask/UnassignTask to DG","fileTypesAndContributionMap":{}},{"hash":"28c04ce9fd229a885c7cf5a2e7ebda757b41d0f1","isMergeCommit":false,"messageTitle":"Correct Mistake under AssignedTasks Feature","messageBody":"The design considerations was repeated, it has been corrected","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"8c2bcfdcff49fa374221e2df0083758c4601ee25","isMergeCommit":true,"messageTitle":"Merge pull request #117 from AY2324S2-CS2103T-T15-4/97-update-dg-implementations-section","messageBody":"Update DG Implementations","fileTypesAndContributionMap":{}},{"hash":"f267e6645ec93f62d5cef75bbc850c39c786f859","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 110-add-findtasks-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8c7d7b0bd68f922c13603a7c129efd499b0b74bb","isMergeCommit":true,"messageTitle":"Merge pull request #115 from AY2324S2-CS2103T-T15-4/110-add-findtasks-command","messageBody":"110 add findtasks command","tags":["v1.3"],"fileTypesAndContributionMap":{}},{"hash":"6c4d47e174591468b95b16ced3a0d197bf2071ee","isMergeCommit":true,"messageTitle":"Merge pull request #11 from AY2324S2-CS2103T-T15-4/master","messageBody":"Update Fork","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"0bc89823ba664c62b2a35ffc605c2542f8bf6698","isMergeCommit":false,"messageTitle":"Fix User Guide Introduction","messageBody":"As per the feedback given, gave a more enthusiastic greeting to the user and a short guide on how to use the user guide. Also slightly describes the target user.","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4ff41925cdb41081967c943d59c78bbc4eee7ea0","isMergeCommit":false,"messageTitle":"Fix User Guide Features","messageBody":"The table at the bottom mentions removetask when our app uses unassigntask. This command is also missing from features list after assigntask.\r\n\r\nThe table has been fixed and also added unassigntask to the features list\r\n\r\nRemoved save command and listassignments commands from the table at the bottom. Both of these command are not necessary.","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":3}}}]},{"date":"2024-03-31","commitResults":[{"hash":"5d54a638d878607638396d078ec13f2fcc1cd684","isMergeCommit":false,"messageTitle":"Fix Javadoc Errors","messageBody":"Javadoc can now be generated without errors.\n\nWarnings still exist.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":7}}},{"hash":"b91ff894e3658e18ca6022ed68b60f90785ddc42","isMergeCommit":false,"messageTitle":"Fix JavaDoc Convention Error","messageBody":"Leaving space before params\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}}]},{"date":"2024-04-01","commitResults":[{"hash":"e7726ba65a488a4852bc759ea823ebe6296a4611","isMergeCommit":true,"messageTitle":"Merge pull request #119 from BryanL2303/master","messageBody":"Fixing JavaDoc Conventions","fileTypesAndContributionMap":{}},{"hash":"fdd0d34c4b90a07e92debd20ee42cbefdcacf161","isMergeCommit":true,"messageTitle":"Merge pull request #120 from AY2324S2-CS2103T-T15-4/master","messageBody":"Keep Branch Updated","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"c7173003f6e7d083893e7bef2b0216c9b80bfdae","isMergeCommit":false,"messageTitle":"Update JavaDoc and Getter","messageBody":"Include getter in TaskId and EmployeeId. Also added spaced in JavaDoc to\nconform with other functions.\n\nRealised that Law of Demeter is violated in AB code to begin with in all\nthe Employee model sub classes.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":25}}},{"hash":"11ac0c8331382af7ddb53984ea5758ee619229ce","isMergeCommit":false,"messageTitle":"Fixed CI","messageBody":"Accidentally removed a space.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"72f1c25e3809de4fcd371371dda80fb612ebfc9d","isMergeCommit":false,"messageTitle":"Add Test Cases","messageBody":"Still missing test cases for AssignedEmployees.\n","fileTypesAndContributionMap":{"test-code":{"insertions":84,"deletions":0}}},{"hash":"53755a8a1827445e2db11ab4c8de315b8a153d51","isMergeCommit":true,"messageTitle":"Merge pull request #13 from AY2324S2-CS2103T-T15-4/122-add-test-cases","messageBody":"122 add test cases","fileTypesAndContributionMap":{}},{"hash":"73f9f0fd00dc15aa31be863cdaa27bb9b902e5c3","isMergeCommit":false,"messageTitle":"Add Test Case","messageBody":"Added more test cases.\n","fileTypesAndContributionMap":{"test-code":{"insertions":49,"deletions":1}}},{"hash":"130a038c28588d008a6268d2a158d9b1d2bb9683","isMergeCommit":true,"messageTitle":"Merge pull request #121 from BryanL2303/master","messageBody":"Update JavaDoc and Getter","fileTypesAndContributionMap":{}},{"hash":"2fdb4803969d0016d5f89e8335cd94a734bf1923","isMergeCommit":true,"messageTitle":"Merge pull request #124 from gavin331/master","messageBody":"Refactor address book to TaskMasterPro","fileTypesAndContributionMap":{}},{"hash":"74a3f716a534b364ef8898db497b30bd1fd17421","isMergeCommit":true,"messageTitle":"Merge pull request #126 from AY2324S2-CS2103T-T15-4/master","messageBody":"Keep Branch up to date","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"c54d0d82d6d4c2aec745f7b746ed571ffa0fa3dc","isMergeCommit":true,"messageTitle":"Merge pull request #125 from gavin331/gavin331-add-test-cases","messageBody":"Gavin331 add test cases","fileTypesAndContributionMap":{}},{"hash":"9915c0d4d3ee14d03a70e9fc55dcc410138806e8","isMergeCommit":true,"messageTitle":"Merge pull request #127 from AY2324S2-CS2103T-T15-4/master","messageBody":"Keep Branch up to date","fileTypesAndContributionMap":{}},{"hash":"74afec811900d27a5cabc548031d893dcf81c963","isMergeCommit":true,"messageTitle":"Merge pull request #14 from AY2324S2-CS2103T-T15-4/104-fix-issues-with-ug","messageBody":"Keep fork updated","fileTypesAndContributionMap":{}},{"hash":"909901bd2fe05d4efd89a617949f568445d1b50a","isMergeCommit":false,"messageTitle":"Updating User Guide","messageBody":"Fixed the table of contents\n\nUpdated the image of the help command with the current link\nAdded illustration to show where the employee id would be\n\nThe index page was referencing the wrong SE-EDU project due to\nrefactoring, it has been reverted.\n","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":7}}},{"hash":"83de0a2fef5faa60aab65ee50a5a37672bd76f21","isMergeCommit":true,"messageTitle":"Merge pull request #128 from BryanL2303/master","messageBody":"Updated UG","fileTypesAndContributionMap":{}},{"hash":"83f7dfa1cc65af1f4ecb0ae70b2bb9b12da06c9f","isMergeCommit":false,"messageTitle":"Remove misinformation","messageBody":"Remove the prefixes from assigntask and unassigntask","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"d6c524793977eebba3aa30d9062dc46a3afb8a14","isMergeCommit":true,"messageTitle":"Merge pull request #130 from azumieflare/branch-CodeStyle","messageBody":"Code style changes","fileTypesAndContributionMap":{}},{"hash":"672a89f11bd1ea34c2e40a12d5fed4e03f8f61dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 118-fixing-code-design","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4eaf430eb15fa75380ede76ad4f1f7512d8404f6","isMergeCommit":true,"messageTitle":"Merge pull request #15 from AY2324S2-CS2103T-T15-4/118-fixing-code-design","messageBody":"Keep fork up to date","fileTypesAndContributionMap":{}},{"hash":"730699246e91be4921b6e006e00bcf5f301d43b0","isMergeCommit":false,"messageTitle":"Added Assignments to Sample Data","messageBody":"Added assignments if sample data is initiated.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":1}}},{"hash":"1d516cd532d3786d361566e324f5a3a2c402bc7a","isMergeCommit":true,"messageTitle":"Merge pull request #131 from AY2324S2-CS2103T-T15-4/122-add-test-cases","messageBody":"Added Test Cases For New Functions","fileTypesAndContributionMap":{}},{"hash":"8e859c6547d6a216eac08b610cd3f6704f722fea","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 104-fix-issues-with-ug","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ace8e986236fb8e3b5ec3b075139f2bde88861cc","isMergeCommit":true,"messageTitle":"Merge pull request #129 from AY2324S2-CS2103T-T15-4/104-fix-issues-with-ug","messageBody":"Updated UG","fileTypesAndContributionMap":{}},{"hash":"9b0bcb2a4df94de5c5930d793dbed51d4df3d1b3","isMergeCommit":false,"messageTitle":"Fixed Checkstyles","messageBody":"Fixed Checkstyles\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"c6c04e285a5f7d33a0188ccb1bccfe5b4fe7f002","isMergeCommit":false,"messageTitle":"Update AssignTaskSequence Model","messageBody":"Add activation bars that were missing.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"c1514166bdb9249a158098ba514ee9270af6f7f9","isMergeCommit":true,"messageTitle":"Merge pull request #132 from BryanL2303/master","messageBody":"Add Assignments to Sample Data","fileTypesAndContributionMap":{}},{"hash":"d48e60a7063a7b45ba9bcbaf74c71bdc551d22e3","isMergeCommit":true,"messageTitle":"Merge pull request #16 from AY2324S2-CS2103T-T15-4/master","messageBody":"Update fork","fileTypesAndContributionMap":{}},{"hash":"c67b66723d7d1b89cc4d9d34d33825dd4b98f44c","isMergeCommit":false,"messageTitle":"Delete Functions Affects Ui","messageBody":"The ui will now switch to the respective lists when something from that\nlist is deleted.\n\nFor 2 reasons:\n1. If an employee has been deleted it makes sense to show\nthe list of employees to check that it is in fact gone.\n2. This fixes the issue where a task might be deleted and it will still\n be visually on the screen if users were looking at the list of\n employees with that task assigned to them.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"d650633496f90ac95811802c913d2e7a077ad568","isMergeCommit":true,"messageTitle":"Merge pull request #133 from BryanL2303/master","messageBody":"Delete Commands Affects Ui","fileTypesAndContributionMap":{}},{"hash":"8372a975ff24761dcb4d2c1bdd29af258faa9ed0","isMergeCommit":true,"messageTitle":"Merge pull request #134 from AY2324S2-CS2103T-T15-4/118-fixing-code-design","messageBody":"Code Design and Miscellaneous Bugs","fileTypesAndContributionMap":{}},{"hash":"c69cd9c35dc132f800a4a4c892ec1871ef43e2ec","isMergeCommit":false,"messageTitle":"Final Update to UserGuide","messageBody":"Added missing functions, added more clarifications for saving and editing data file.\r\n\r\nAdded missing values in toc and command summary at the end","fileTypesAndContributionMap":{"docs":{"insertions":71,"deletions":21}}}]}],"azumieflare":[{"date":"2024-03-05","commitResults":[{"hash":"d647c7f4f40d9b9743aa9e42a29b6675915d1133","isMergeCommit":false,"messageTitle":"Edit about us","messageBody":"Updated self profile.\n","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":5}}},{"hash":"04b8660becaab6301fdb925dd243b65242036404","isMergeCommit":false,"messageTitle":"Edit README.md","messageBody":"Updated details of the app.\n","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":11}}},{"hash":"bbe0a84623d81418e7997852c75729d2d09972e4","isMergeCommit":false,"messageTitle":"Undo changes","messageBody":"Removed updates done to AboutUs to isolate all\nchanges to README to this branch.\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":53}}},{"hash":"76935bcd649ba859b6933608cf19a72e65b72a78","isMergeCommit":false,"messageTitle":"Undo changes","messageBody":"Removed updates done.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":62}}},{"hash":"63ba72b8e9df486f13ad08ea73e825ad568357aa","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Updated details of the app.\n","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":11}}},{"hash":"6985d7a051cf367ff433d7fa41f19fac3c089554","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"Updated self profile.\n","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":6}}},{"hash":"b52a462171b993fd0a5107f466840a84e13d60c0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"Fixed EOF error.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"85c5c7eb7b0a9b6afc05525f4241631ae91166c1","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"Fixed EOF error.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"25d998b936655a4de4200fb2f087ea18b190e72e","isMergeCommit":true,"messageTitle":"Merge pull request #31 from AY2324S2-CS2103T-T15-4/1-update-aboutus-page","messageBody":"Merge AboutUs page for v1.1","fileTypesAndContributionMap":{}},{"hash":"50261fb4cc2955dc29aac52a5b8679ba86489772","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 8-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa0f4c1ec993bc5d571545977ac03f57a6b9831b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 7-update-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5ffd3a754edbce36809a124db2e2aa4d8e2e151a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from AY2324S2-CS2103T-T15-4/8-update-dg","messageBody":"Close DG for v1.1","fileTypesAndContributionMap":{}},{"hash":"89794d44100e63504679a19084e9e2311175cff7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 7-update-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"343879f3cac8aa237a006d332a30af01aac2c2df","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Added missing commands","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"2cb1f9bf8886ee03f3b93df351bc71184b14a9ba","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"Updated product scope.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}},{"hash":"3b4c02aca92d5f89e00d116ea55bd762b636028b","isMergeCommit":true,"messageTitle":"Merge pull request #34 from azumieflare/branch-DG","messageBody":"Branch dg","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"cc2b5ecb3092fc878aad63f1b779d6a735f19046","isMergeCommit":false,"messageTitle":"Add Task","messageBody":"Added functionality for adding tasks and save/load.\n\nGUI also updated to reflect tasks.\n\nRemoving of tasks and taskID will be added in a\nlater commit.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":516,"deletions":2}}},{"hash":"589bb8cb9c6057709e7e3817db6008d9277ac36c","isMergeCommit":false,"messageTitle":"Remove Task","messageBody":"Added functionality for removing tasks.\n\nLeft with adding taskID.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":0}}},{"hash":"916ec338c1d1c8b495035fa1034ce7617bd9a857","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"Updated Stubs to implement added abstract methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"186b225505af58b7d2613f86765147217a1a680f","isMergeCommit":false,"messageTitle":"Add taskId to task","messageBody":"Updated add and remove task to consider taskId\ninstead of absolute index.\n\nTaskId also persists throughout sessions\nincluding restarting the app.\n\nMaybe should add a command to reset taskId?\n","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":30},"other":{"insertions":22,"deletions":20},"test-code":{"insertions":1,"deletions":1}}},{"hash":"be41c8cc8b0e7d3296ed812ceb1a0d363e92b01e","isMergeCommit":false,"messageTitle":"Fix existing test case bugs","messageBody":"Also fixed some checkstyle issues.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":9}}},{"hash":"a71aec8fdeb6b8d383c07350a07904eb3da6b177","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"Added test cases to cover the new Task features.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10},"test-code":{"insertions":146,"deletions":0}}},{"hash":"ddb5bcb05c9312cd4d8135cbd5aaf58a53245e5e","isMergeCommit":true,"messageTitle":"Merge conflicts","messageBody":"Fixed all merge conflicts after refactoring.\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"ffaa746801cf2aff80c2e40bf448857ded44cf07","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0b2b13b1d7d64ddc8d45966a117d6f0a4eae089f","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"Added several test cases to increase code coverage.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0},"test-code":{"insertions":77,"deletions":1}}},{"hash":"584a0964ef21f3f82ce589f6fdcdd4d4e2fb98ca","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"Added several more test cases to increase code coverage.\n","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":16}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0453fe8673490f2827ac4a649e60cf3349550587","isMergeCommit":false,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"bb95d28793f76b9bca5b41ad1965a85570a54ccd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Tasks\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3f36407a2fb44e68850a68420e09eefce73a6a28","isMergeCommit":false,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":6,"deletions":6}}},{"hash":"1bf7534771d1e6492571c6bc16f5a2878b5a0bf6","isMergeCommit":true,"messageTitle":"Merge pull request #62 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"47 add in task with all minimum features","fileTypesAndContributionMap":{}},{"hash":"4b6646341e8d212284836793f6105626e7ce1365","isMergeCommit":true,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"db887e79a6b1ed2d473060d65fc9f4ba85dc2b98","isMergeCommit":true,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4484e8621a4a158548428c3fb29e1a5084ae5377","isMergeCommit":true,"messageTitle":"Merge pull request #63 from azumieflare/branch-Tasks","messageBody":"Added test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"7526f03112c1054cc9157d7c71b26a3a45e3c490","isMergeCommit":false,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b1c7cb358f3f98581e4db92ecfd0a66bdbedf43a","isMergeCommit":true,"messageTitle":"Merge pull request #68 from azumieflare/branch-Tasks","messageBody":"Fix minor errors","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"283ec8bc07ae62595ffa37e6f7b283f8268cb9b6","isMergeCommit":false,"messageTitle":"Modify GUI","messageBody":"Combined both StackPane into one for easier access.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":23}}},{"hash":"5c7f8ddab6774ece090f3c1e1591c9e3bb269bce","isMergeCommit":false,"messageTitle":"Update UML Diagrams","messageBody":"Updated BetterModelClassDiagram.puml,\n ModelClassDiagram.puml and UiClassDiagram.puml\n to reflect new class Task.\n","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":5}}},{"hash":"71e1ab8e7212f170d138dfe4ce172ebfce46f80d","isMergeCommit":false,"messageTitle":"Fix variable names","messageBody":"Changed some variable names for better consistency.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}},{"hash":"ea159412b9d7510817ab2378cd53ae53ff283a7f","isMergeCommit":true,"messageTitle":"Merge pull request #89 from azumieflare/master","messageBody":"Fix variable names","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"cbd5a917453dcd137a618561803cb75cd5bb353e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Added implementation details for add/remove tasks,\nalong with UML diagrams through an example usage scenario.\n\nAlso updated build.gradle to enable assertions.\n","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0},"docs":{"insertions":221,"deletions":1}}},{"hash":"d5c0a8b62c5d09039da4d20519c3f931945fab74","isMergeCommit":false,"messageTitle":"Fix minor typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"7208c3dfb8018010ab471af2cc6f315c30506e08","isMergeCommit":false,"messageTitle":"Fix minor typo","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-04-03","commitResults":[{"hash":"e2d18e9f6b38742eb4d784e6512494fbd11ea9da","isMergeCommit":false,"messageTitle":"Fix minor typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"8d3562cd8db2a76d2170c4d30ce82730b7189a23","isMergeCommit":false,"messageTitle":"Update code style","messageBody":"There are many instances of law of demeter being\nviolated. These are fixed and respective files\nare updated to reflect the changes.\n\nSeveral instance of arrow-styled codes are also\nfixed.\n\nToDo: Update SampleDataUtil.java to include\nautomatic assigning of tasks to employees.\n\nCan also consider handling of initial error\nsave file.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":223,"deletions":156},"docs":{"insertions":0,"deletions":88},"test-code":{"insertions":37,"deletions":37}}},{"hash":"7403af5f84c4fe2e52a3af9274717621b340afea","isMergeCommit":true,"messageTitle":"Merge with existing branch","messageBody":"Fix merge conflicts.\n","fileTypesAndContributionMap":{}},{"hash":"5da9b3fcdc582d6f4bfd61adc90afbc7784bfbd3","isMergeCommit":false,"messageTitle":"Minor fix for formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-04-04","commitResults":[{"hash":"ad1362f98dd1a3835593e21c0d83e956259e1f4e","isMergeCommit":false,"messageTitle":"Update regex and fix bugs","messageBody":"Update regex for phone to take in exactly 8\n digits and should start with 6, 8 or 9.\n\n EditCommand.java also fixed to use EmployeeId\n instead of displayed index.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":4}}},{"hash":"5fbfe716981106a9c108c318824ac16d1d744b3a","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"Update all test cases to reflect previous changes.\n","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":18}}},{"hash":"dcf1f24e5c1c2b53bae26c300d1e16270621f4c0","isMergeCommit":true,"messageTitle":"Merge pull request #141 from azumieflare/master","messageBody":"Fix minor bugs","fileTypesAndContributionMap":{}},{"hash":"b140cea7bb8de1772b2270fa2fd4046af9c8d13d","isMergeCommit":false,"messageTitle":"Update EditCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"fcb19c69edaa16dd19f54d4acde65ea53d2b7ae4","isMergeCommit":true,"messageTitle":"Merge pull request #142 from AY2324S2-CS2103T-T15-4/Minor-bug-fixes","messageBody":"Minor bug fixes","tags":["v1.3.1"],"fileTypesAndContributionMap":{}}]}],"gavin331":[{"date":"2024-03-05","commitResults":[{"hash":"84d0974fd880fe1cc7606f217a72ae3dac757b62","isMergeCommit":true,"messageTitle":"Merge pull request #10 from BryanL2303/1-update-aboutus-page","messageBody":"Add profile for Bryan","fileTypesAndContributionMap":{}},{"hash":"c6190f8875b9b6e9135b75b7e936f173ae8ac7af","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":16}}},{"hash":"4f047714a2758b58b760a2243234d7216be1ac4b","isMergeCommit":true,"messageTitle":"Merge branch \u00271-update-aboutus-page\u0027 into 1-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a5e938cc448ad1a6ecc447de1c1c18722d6471d2","isMergeCommit":true,"messageTitle":"Fix merge conflict in aboutus.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f438e87d9594b131c98f1b4d6eea6359112a36a0","isMergeCommit":true,"messageTitle":"Merge pull request #11 from BryanL2303/7-update-user-guide","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"e41f536708b723b838e647f9b39ddbb858421534","isMergeCommit":false,"messageTitle":"Add employee functions to UserGuide.md","messageBody":"Add \u0027adding employee\u0027, \u0027listing employees\u0027, \u0027deleting employee\u0027\nto the userguide. Also, I renamed parts of the code where we used\n\u0027address book\u0027 to \u0027TaskMasterPro\u0027.\n","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":12}}},{"hash":"bc95f46bc916b883fd0ba3f968419482a0114e67","isMergeCommit":true,"messageTitle":"Merge pull request #15 from AY2324S2-CS2103T-T15-4/5-update-readme-page","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"9019491d8737a75914331b26bae6aab9ad5de208","isMergeCommit":true,"messageTitle":"Merge pull request #16 from BryanL2303/8-update-dg","messageBody":"Update user stories and cases","fileTypesAndContributionMap":{}},{"hash":"9dd830944d442e2bcd68a3fc171021abdebaf8e3","isMergeCommit":false,"messageTitle":"Add use case for marking and unmarking a task","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"cf7a1e1288e064190019d60533018509c4dba410","isMergeCommit":true,"messageTitle":"Merge pull request #36 from AY2324S2-CS2103T-T15-4/8-update-dg","messageBody":"8 update dg","fileTypesAndContributionMap":{}},{"hash":"4dff5e5498c0cada0c69f951ce8550172726078e","isMergeCommit":false,"messageTitle":"Update NFR in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"ed2313bb1c10989b98ae25fab4cfa551e0713616","isMergeCommit":true,"messageTitle":"Merge pull request #37 from gavin331/35-add-nfr-to-dg","messageBody":"Update NFR in DG","fileTypesAndContributionMap":{}},{"hash":"d7e0dddca61cc70cc634ccae9cf0dd25a11eceda","isMergeCommit":true,"messageTitle":"Merge pull request #38 from AY2324S2-CS2103T-T15-4/35-add-nfr-to-dg","messageBody":"35 add nfr to dg","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"348ec5e7d78d9378ee89c94cf9eba70f527fa658","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"74ee1432cf7d1bde89fa39a6cf7e9548cdc53a07","isMergeCommit":false,"messageTitle":"Refactor person/Person into employee/Employee","messageBody":"Refactor addressbook into TaskMasterPro has not been done\nat this point.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":443,"deletions":444},"other":{"insertions":196,"deletions":193},"docs":{"insertions":98,"deletions":98},"test-code":{"insertions":730,"deletions":724}}}]},{"date":"2024-03-12","commitResults":[{"hash":"68fbf893a5286c401e543e896a18d4fce4019ee1","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4},"test-code":{"insertions":5,"deletions":4}}},{"hash":"4e3eeebd88fea516111fb201a7699c31e41a4fee","isMergeCommit":false,"messageTitle":"Refactor addressbook into TaskMasterPro","messageBody":"There are some parts which I did not refactor. For example,\nacknowledgements to the original addressbook project and\nthe content in the logs.\n\nThe other parts are mostly refactored but since there are\nquite a number of files involved, do look out for potential\nerrors or portions which should not have been refactored.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":234,"deletions":233},"other":{"insertions":76,"deletions":75},"docs":{"insertions":77,"deletions":77},"test-code":{"insertions":240,"deletions":238}}}]},{"date":"2024-03-19","commitResults":[{"hash":"80a4e8fa9ec142b3996bdf125be58ca6067745a6","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"a9aff7ee23308559ac622dfb3a7188f8659a6bab","isMergeCommit":false,"messageTitle":"Add sequence diagram for assigntask command","messageBody":"The separate sequence diagram to illustrate the details of the ref\nblock has not been implemented yet.\n","fileTypesAndContributionMap":{"docs":{"insertions":72,"deletions":0}}},{"hash":"59b240d15f26c9b63e859f2fa08b3ab6160be792","isMergeCommit":false,"messageTitle":"Add AssignTask sequence diagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"c039616a40a90471039762e288f7f7100051e958","isMergeCommit":false,"messageTitle":"Fix minor error to show object name","messageBody":"Initially, it was :AssignTaskCommand. I corrected it to\na:AssignTaskCommand.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"812c5bb145a8051ec347a8524bde25f0219c05a9","isMergeCommit":false,"messageTitle":"Add sequence diagram for the ref block","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":1}}}]},{"date":"2024-03-24","commitResults":[{"hash":"55dcb3c31ca8eb4fccba3bad0a0506d3adb6c389","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8eb6f3164a5969b2f14f6fe1f9d3ce2e1f368031","isMergeCommit":false,"messageTitle":"Fix minor error in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"c8df21c86233fdb752d48262adb30a3465aa3496","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gavin331/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4f5949321df346d428d47045ce2abe58f4fa4d6e","isMergeCommit":true,"messageTitle":"Merge pull request #101 from gavin331/master","messageBody":"Updated UG ","fileTypesAndContributionMap":{}},{"hash":"3cd69e0171b3d5163dc3677b87a93f038393d037","isMergeCommit":false,"messageTitle":"Refactor to TaskMasterPro in TaskMasterPro.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}}]},{"date":"2024-03-25","commitResults":[{"hash":"7f7dc48c380824456800c3e88b12cddd61521a99","isMergeCommit":true,"messageTitle":"Merge pull request #98 from azumieflare/master","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"32cf78ce34506b4f9a8909595f9415d2bf5157be","isMergeCommit":true,"messageTitle":"Merge pull request #103 from gavin331/65-fixing-non-functional-mistakes-with-tasks-branch","messageBody":"Refactor to TaskMasterPro in TaskMasterPro.java","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"5497687db0ea996127b9264432e540f3097a6b06","isMergeCommit":false,"messageTitle":"Add findtasks feature","messageBody":"The findtasks feature works similarly to the find command for the\nemployees. The UG and DG have also been updated to include the\nfindtasks feature. Also updated the UI to show the employee/task\npanels whenever we run find or findtasks. Lastly, some minor\nrefactoring was done.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":4},"docs":{"insertions":35,"deletions":18}}},{"hash":"879be9acf5ae7f0e55709c87592756898ed6de23","isMergeCommit":false,"messageTitle":"Remove TODO comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-27","commitResults":[{"hash":"4c1bea0706dfcda41d8a5c7fa0c1636802332857","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/97-update-dg-implementations-section\u0027 into gavin331-97-update-dg-implementations-section","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"962e1db9e855bbfc6203cbb44e9bf7e3c6701454","isMergeCommit":false,"messageTitle":"Add findtasks implementation in DG","messageBody":"This is still in progress.\n","fileTypesAndContributionMap":{"docs":{"insertions":106,"deletions":0}}},{"hash":"a6fc6e496a213e5cfd619d0fab38affb16420356","isMergeCommit":false,"messageTitle":"Add Findtasks activity diagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":4}}},{"hash":"0b04624ae15f3650414b956deca68f254e927834","isMergeCommit":true,"messageTitle":"Merge pull request #111 from gavin331/110-add-findtasks-command","messageBody":"110 add findtasks command","fileTypesAndContributionMap":{}},{"hash":"895411ffd2816df0a9f42484f167fb90a20e8bcc","isMergeCommit":false,"messageTitle":"Fix EOF and whitespace errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"b4b6a20c1f008547ea07622aa121f7963cd00781","isMergeCommit":true,"messageTitle":"Merge pull request #113 from gavin331/gavin331-97-update-dg-implementations-section","messageBody":"Gavin331 97 update dg implementations section","fileTypesAndContributionMap":{}},{"hash":"99364f0347ddb8c7128f47e6eec730b0c3783f7e","isMergeCommit":false,"messageTitle":"Add testcases for findtasks command.","messageBody":"FindTasksCommandParser and the predicate for findtasks\nhave been tested. The FindTasksCommand have not been tested\nyet because the getTypicalTaskMasterPro() currently does not\ninclude pre-build tasks.\n","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":0}}},{"hash":"aee61bca262ab2280455b9c1037a723646ae4437","isMergeCommit":true,"messageTitle":"Merge pull request #114 from gavin331/110-add-findtasks-command","messageBody":"Add testcases for findtasks command.","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"3e82832aa5b1396d9aedc0ee6a50b6567bdbd897","isMergeCommit":false,"messageTitle":"Refactor address book to TaskMasterPro","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":40},"docs":{"insertions":16,"deletions":16},"test-code":{"insertions":7,"deletions":7}}},{"hash":"dca4768b9d3fbe4d47a06ef3d22e85b15e973d45","isMergeCommit":false,"messageTitle":"Add testcases for FindTasksCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":103,"deletions":0}}},{"hash":"9f6278d8289d9c5685302f2080dba0cf009dbd94","isMergeCommit":true,"messageTitle":"Merge pull request #123 from BryanL2303/122-add-test-cases","messageBody":"Adding tests","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"80160ce0d0f9ac146fb181d8b29247a3291cf7f7","isMergeCommit":false,"messageTitle":"remove outdated seq diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":6}}},{"hash":"29a9c12daa03484258ff1a04d0bb18ab68c3cd52","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into gavin_remove_outdated_seqdiagram","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"76a4d484b3dc62c8138bac6998bc5b637b8f1960","isMergeCommit":true,"messageTitle":"Merge pull request #135 from gavin331/gavin_remove_outdated_seqdiagram","messageBody":"remove outdated seq diagram","fileTypesAndContributionMap":{}},{"hash":"1cb5f833caf51e953bc5b1ce9fb481bc2ee98438","isMergeCommit":true,"messageTitle":"Merge pull request #140 from AY2324S2-CS2103T-T15-4/Final-Update-to-UG","messageBody":"Final Update to UserGuide","fileTypesAndContributionMap":{}}]}],"johnyoozhengxian":[{"date":"2024-03-06","commitResults":[{"hash":"f0055421a56a53954ec4cf42f72fb17046e06401","isMergeCommit":false,"messageTitle":"Add AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":0}}},{"hash":"2822ac4fff874b07776eca15eacbd33bff00eeba","isMergeCommit":false,"messageTitle":"Add UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":0}}},{"hash":"f79813bb662d879ef9fb37c0bb5c0e4cfd4fe2bd","isMergeCommit":true,"messageTitle":"Merge branch \u00271-update-aboutus-page\u0027 into update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e0457053ee64c493975e77818c54c20c87be9979","isMergeCommit":true,"messageTitle":"Merge pull request #28 from johnyoozhengxian/update-ug","messageBody":"Add UG","fileTypesAndContributionMap":{}},{"hash":"c0e02c3ffa515310761697163248f75498898d3b","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b1a19f35800f84c1fa7851eebeda25908269aff4","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"28f75d466ae14ec5bc45b923c9ac20b2ec53477e","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-08","commitResults":[{"hash":"294ba90c1a852f97f1394e30ba9db292feb990cf","isMergeCommit":false,"messageTitle":"Add UserGuide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":9},"other":{"insertions":3,"deletions":3},"docs":{"insertions":1,"deletions":1}}},{"hash":"c232d0a09104590ab010ef3d7a5efa244e2ad244","isMergeCommit":false,"messageTitle":"Add UserGuide with changes","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":3}}},{"hash":"c1c1fb6dd922877243fdb93cf61e0c76086681c1","isMergeCommit":false,"messageTitle":"Add UserGuide with changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"bc409503e678b7f9ae1b38fd913651ac38cc8908","isMergeCommit":false,"messageTitle":"Add UserGuide with changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":30}}},{"hash":"1571b0f4f75a29010e74d34ea62e50020aae0637","isMergeCommit":true,"messageTitle":"Merge pull request #40 from johnyoozhengxian/update-ug","messageBody":"Add UserGuide","fileTypesAndContributionMap":{}},{"hash":"1596f5e7e67dd4dbc21b2eca635eceaa7cf029a4","isMergeCommit":true,"messageTitle":"Merge pull request #41 from AY2324S2-CS2103T-T15-4/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"ddd07673d1696137fe9a3ca05566d05487355e7d","isMergeCommit":false,"messageTitle":"add mark/unmark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":452,"deletions":21}}},{"hash":"5be9c0d959232bbd6ddfce15701016e9a5c4affa","isMergeCommit":false,"messageTitle":"Add Assign Task to Employees","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":58},"test-code":{"insertions":265,"deletions":52}}},{"hash":"6f745518cff3b1e7fed583ca34eb6b5f81dd2d16","isMergeCommit":false,"messageTitle":"Implement CheckStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":174,"deletions":59},"test-code":{"insertions":77,"deletions":37}}},{"hash":"d4e4024519f1fb257501bd9fa4d8f5dab6ac2908","isMergeCommit":true,"messageTitle":"Merge branch \u002747-add-in-task-with-all-minimum-features\u0027 into update-checkstyle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"96cb49a1ef21e27356cf74f8b7d8dc11c7153772","isMergeCommit":true,"messageTitle":"Merge pull request #72 from johnyoozhengxian/update-checkstyle","messageBody":"Update checkstyle, mark task, unmark task and Assign Task to a Person","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"6b47be2d4d9cffa43dae63709a4fe138c68ced68","isMergeCommit":false,"messageTitle":"Add Unassign Commands and change code to allow empty AssignedTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":174,"deletions":15},"other":{"insertions":1,"deletions":1}}},{"hash":"019442b3c61151a32c65472f11e1c926eb2c9c85","isMergeCommit":false,"messageTitle":"Add UnassignTask and changed a bit of assigntask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d57bd5a850977344f84e1a21bc6f51e55e07b68a","isMergeCommit":true,"messageTitle":"Merge pull request #73 from johnyoozhengxian/add-unassigntask","messageBody":"Add unassigntask","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"617ade9c9ab9efac341c147766bffe60e7dec98b","isMergeCommit":false,"messageTitle":"Add UML for mark","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":103,"deletions":1}}},{"hash":"f60a16f3e123ee2ad8ce37c53da0df31d2d92a92","isMergeCommit":true,"messageTitle":"Merge pull request #92 from johnyoozhengxian/add-uml","messageBody":"Add uml","fileTypesAndContributionMap":{}},{"hash":"e57b8fd12e6766511a84fa079288e1c72f3f4812","isMergeCommit":true,"messageTitle":"Merge pull request #93 from AY2324S2-CS2103T-T15-4/78-update-dg-with-uml-diagrams","messageBody":"78 update dg with uml diagrams","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"3675089a7a67c4086af5ae797d81756d71f69a80","isMergeCommit":false,"messageTitle":"Add unmark in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":133,"deletions":3}}},{"hash":"ea84a5c27ee2652d86540ccc91e65415778525d7","isMergeCommit":true,"messageTitle":"Merge pull request #116 from johnyoozhengxian/2-update-dg","messageBody":"Add unmark in DG","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"fd9eb34d88c1a0a5e536396efc36b82ca5725845","isMergeCommit":false,"messageTitle":"test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"other":{"insertions":1,"deletions":0}}},{"hash":"a2173a6cb6c3fdbadc234cdddfb1bccba9a28c35","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027ori/master\u0027 into refactor-test-case","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cd939ce0cf307bc4a59f562c6856961d0aa1ed9d","isMergeCommit":false,"messageTitle":"Edit UserGuide, remove grammar errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"34e7f25fb0cea6bbedfffcbc860ffa1edc2185e1","isMergeCommit":true,"messageTitle":"Merge pull request #136 from johnyoozhengxian/adjust-ug","messageBody":"Adjust ug","fileTypesAndContributionMap":{}},{"hash":"1da1388cb786199cc00cbc20ee0b1c2d5394d014","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":1}}},{"hash":"51945eb621e089d6ce6b949d697ee21203412435","isMergeCommit":false,"messageTitle":"Remove something extra","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":1}}},{"hash":"a571cfb656c6f5ffb676a39ef1c087b9b08b713f","isMergeCommit":true,"messageTitle":"Merge pull request #139 from AY2324S2-CS2103T-T15-4/104-fix-issues-with-ug","messageBody":"104 fix issues with ug","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"BryanL2303":{"docs":383,"functional-code":755,"test-code":231,"other":1},"azumieflare":{"docs":429,"functional-code":883,"test-code":317,"other":4},"gavin331":{"docs":500,"functional-code":851,"test-code":1255,"other":1},"johnyoozhengxian":{"docs":323,"functional-code":689,"test-code":297}},"authorContributionVariance":{"BryanL2303":9863.645,"azumieflare":33552.92,"gavin331":231615.47,"johnyoozhengxian":38875.574},"authorDisplayNameMap":{"BryanL2303":"CS2103T-T15-4 BRYA.. YIN","azumieflare":"CS2103T-T15-4 CHAN..JOHN","gavin331":"CS2103T-T15-4 GAVI.. WEI","johnyoozhengxian":"CS2103T-T15-4 JOHN..XIAN"}} +{"authorDailyContributionsMap":{"BryanL2303":[{"date":"2024-03-04","commitResults":[{"hash":"20c336ac4bacc6f4724d2005eda13f413f80f0ca","isMergeCommit":false,"messageTitle":"Add Bryan portfolio and image","messageBody":"Added my image png file.\nUpdated my own profile in AboutUs.md and included a portfolio page under teams folder bryanlee.md.\n","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":16}}},{"hash":"b1bedd86195b412852747fd4e1951a430c13a2ac","isMergeCommit":false,"messageTitle":"Stylecheck correction","messageBody":"Got rid of trailing whitespaces and include a blankline eof.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"0d0f746cf177265d021a8bfa690b75db80594ab7","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Only left the following features from the initial features:\n1. clear\n2. help\n3. exit\n\nAdded descriptions for the commands to add/list/delete tasks\nAdded them to the command summary as well.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":75}}}]},{"date":"2024-03-05","commitResults":[{"hash":"a4856c24899ded53d9f0f8721cecad47bd13a80f","isMergeCommit":true,"messageTitle":"Merge pull request #14 from azumieflare/branch-README","messageBody":"Looks good, thanks.","fileTypesAndContributionMap":{}},{"hash":"0a88ce0596f2b76fddf71ccfb5d2ed1a15d03508","isMergeCommit":true,"messageTitle":"Merge pull request #13 from azumieflare/branch-AboutUs","messageBody":"Add profile for John Chan","fileTypesAndContributionMap":{}},{"hash":"ded6d09c0d45d0bd3f7584ca825a9f9875e92e3a","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"Added all user stories for v1.2\nAdded use cases relevant for v1.2\n\nAll other segments still requires updates, they are merely templates\ngiven to us.\n","fileTypesAndContributionMap":{"docs":{"insertions":78,"deletions":17}}},{"hash":"b33e892b59f9207e20fdd5e815069e728bbd190f","isMergeCommit":false,"messageTitle":"Update image name","messageBody":"Changed name of image file to github handle for tracking purposes\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"4f1fcf52d032d0f51b98977d996c8c7916562bb2","isMergeCommit":true,"messageTitle":"Merge pull request #18 from gavin331/1-update-aboutus-page","messageBody":"Update AboutUs.md with Gavin\u0027s profile","fileTypesAndContributionMap":{}},{"hash":"3d5120b3c6a7ff7ed0991fe6eafc30fb65545592","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 5-update-readme-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"836eaacce85329b54581198c48ac3b3756fe95e1","isMergeCommit":true,"messageTitle":"Merge pull request #21 from gavin331/gavin331-8-update-dg","messageBody":"Add use case for marking and unmarking a task","fileTypesAndContributionMap":{}},{"hash":"60c908163841eebd99c9115ae894ab9839884041","isMergeCommit":true,"messageTitle":"Merge pull request #19 from gavin331/gavin-7-update-user-guide","messageBody":"Add employee functions to UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"4558e908fe2e005012b4ad7c78098d34e3a436a0","isMergeCommit":true,"messageTitle":"Merge pull request #27 from johnyoozhengxian/update-aboutus-page","messageBody":"Add AboutUs","fileTypesAndContributionMap":{}},{"hash":"0ae7eabf7cb8466c559c308a917f20436d502c11","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"Trailing whitespace caused CI failure.","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e9fc98552a6a22b3b33f726be1b34f52912de7ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 1-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b71585c3183a10f94fd44bdfa3b852eae0b6a976","isMergeCommit":true,"messageTitle":"Merge pull request #29 from AY2324S2-CS2103T-T15-4/7-update-user-guide","messageBody":"Close for v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"5685731453d0ea4b3c060c810728f11a2b5b2f46","isMergeCommit":false,"messageTitle":"Update index.md for project website","messageBody":"The main page of the project has not been update.\r\n\r\nKept things similar to the template for AB3, updated the name as well as the sources of the CI and codecov.","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-03-12","commitResults":[{"hash":"b89fb6fc936309841f543bd847740dcb860c1793","isMergeCommit":true,"messageTitle":"Merge pull request #44 from gavin331/32-refactor-the-template-code","messageBody":"Refactored person/Person to employee/Employee","fileTypesAndContributionMap":{}},{"hash":"d872fa016bfca0157414bcb71a043eb64997eed5","isMergeCommit":true,"messageTitle":"Merge pull request #45 from gavin331/refactor-addressbook","messageBody":"Refactor addressbook","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"49e53cf9d40b27ddecff8785ebe1ab3ec27b0796","isMergeCommit":true,"messageTitle":"Merge pull request #49 from AY2324S2-CS2103T-T15-4/32-refactor-the-template-code","messageBody":"32 refactor the template code","fileTypesAndContributionMap":{}},{"hash":"7b086e34bb3e4016ff9d8caa8620c5d425322e1c","isMergeCommit":true,"messageTitle":"Merge pull request #50 from AY2324S2-CS2103T-T15-4/master","messageBody":"Updating branch","fileTypesAndContributionMap":{}},{"hash":"fbd9fecf2ab6e20769eb0c5a75ea7943c46bb027","isMergeCommit":true,"messageTitle":"Merge pull request #48 from azumieflare/branch-Tasks","messageBody":"Tasks","fileTypesAndContributionMap":{}},{"hash":"a92a3ad88ca264d44b95d220f48065fb5f1555d5","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"Updating branch","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"6907126bbd80b02fa687fd4b6b9513302019e09d","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-T15-4/51-update-employee-functions","messageBody":"Update fork","fileTypesAndContributionMap":{}},{"hash":"d7f2d063db377aafdbad6e161a6683cf3b8f8810","isMergeCommit":false,"messageTitle":"Update add command to generate id","messageBody":"The model will display the employee id\nThe storage will store the employee id as well as the global id counter\n","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":42},"test-code":{"insertions":11,"deletions":15}}},{"hash":"a2b4563026ac926cfb508b35bb47cdf297b6f781","isMergeCommit":false,"messageTitle":"Correct checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":4}}},{"hash":"c15592e8a839aee5f0b961ceb4fe1dc3b09add42","isMergeCommit":false,"messageTitle":"Final checkstyle correction","messageBody":"Did not run build before pushing\n\nmy bad\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":13,"deletions":6}}},{"hash":"baf3fb72dfe647caf56ca605de39e3ed64a7f290","isMergeCommit":true,"messageTitle":"Merge pull request #56 from BryanL2303/51-update-employee-functions","messageBody":"Update add command to generate employee id","fileTypesAndContributionMap":{}},{"hash":"34aa4bab7da66268aefdf6f1f436f4d9f12775ac","isMergeCommit":false,"messageTitle":"Updated delete command","messageBody":"Instead of using employee index, use the employeeId instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":16},"test-code":{"insertions":17,"deletions":18}}},{"hash":"53d0e537fd4cfd0f5a245e6b0383ab89e7fe9a98","isMergeCommit":true,"messageTitle":"Merge pull request #58 from BryanL2303/51-update-employee-functions","messageBody":"Updated delete command","fileTypesAndContributionMap":{}},{"hash":"04ec8f27056b22fd981c65d5f670f73c8fd4f6a1","isMergeCommit":true,"messageTitle":"Merge pull request #59 from AY2324S2-CS2103T-T15-4/51-update-employee-functions","messageBody":"Update branch","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"a1b2b32d9a8ff2c65eaf85d037f87f31f763c3ba","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"Update Fork","fileTypesAndContributionMap":{}},{"hash":"cd67a7a31f2cb788782e1043c365a4520fcaafd4","isMergeCommit":false,"messageTitle":"Fix failing CI","messageBody":"CI was failing due to test cases not being properly updated.\n\nFixed all checkstyles as well as test cases all passed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":4},"test-code":{"insertions":38,"deletions":25}}},{"hash":"266382a4f45bd72bd432c075adc012603b66a2ed","isMergeCommit":true,"messageTitle":"Merge pull request #74 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Fixing Failing CI","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"a8b12540d75116351f27aa538a430d8b06dce3c6","isMergeCommit":false,"messageTitle":"Fixed bug with storage","messageBody":"The assignment of tasks will leaving spaced in the JSON file\ninconsistently which causes bugs after a few assignments and\nunassignments.\n\nGot rid of all trailing whitespaces and the blank space infront of the\nstring. Assignment and unassignment of tasks now saves into the JSON\nfile consistently.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"e91f0b3f702626852a5abd76f79ca4e3ef208730","isMergeCommit":false,"messageTitle":"Update Sample Employees Data","messageBody":"The employees were initialized with the trailing whitespace for assigned\ntasks. Removed trailing whitespace to align with previous commit\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"d9c47970f3ebec99dbb4810a4d71005ec9183ec3","isMergeCommit":true,"messageTitle":"Merge pull request #76 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Fixed bug with storage","fileTypesAndContributionMap":{}},{"hash":"1caf082aeac20c783203c0bc4b0d445011aeb4ed","isMergeCommit":true,"messageTitle":"Merge pull request #77 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"Merge all complete Task features","fileTypesAndContributionMap":{}},{"hash":"3155495255b90b6e1a9c146c4076fdccbbe2f6cc","isMergeCommit":true,"messageTitle":"Merge pull request #4 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Merge changes to Master","fileTypesAndContributionMap":{}},{"hash":"013eb5c5c9cfcc315db94d858a3e42d62645c204","isMergeCommit":false,"messageTitle":"Update GUI and list functions","messageBody":"The ui now shows employees and tasks individually instead of splitting\nthe small screen in half.\n\nThe list and listtask command are now properly implemented and does\nsomething.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":128,"deletions":30}}},{"hash":"eccb2cb49d7bdae1e6efd2cc131cbb315de210aa","isMergeCommit":true,"messageTitle":"Merge pull request #80 from BryanL2303/79-enhance-gui","messageBody":"Updated GUI and list/listtask functions","fileTypesAndContributionMap":{}},{"hash":"d140903512ced61884d2b31df4920b4f3dae920a","isMergeCommit":false,"messageTitle":"Fixing checkstyle error","messageBody":"IntelliJ keeps automatically using * and for some reason the CI is\noverly strict about using .* even though it is necessary in certain\ncases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1}}},{"hash":"c118ea6ff9a0b406c657e6e5b8f49430603b8d53","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"The test cases for commands has to be updated since the constructor for\nCommandResult has been updated.\n\nFixed checkstyle violations\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6},"other":{"insertions":7,"deletions":4},"test-code":{"insertions":8,"deletions":7}}},{"hash":"6cd4a716ac03ff2082d24eee9bb0db267e3aba59","isMergeCommit":true,"messageTitle":"Merge pull request #81 from BryanL2303/79-enhance-gui","messageBody":"Fixing checkstyle error","fileTypesAndContributionMap":{}},{"hash":"af6ce50b752e6351584b9c2ae1baaf846fc17d27","isMergeCommit":true,"messageTitle":"Merge pull request #5 from BryanL2303/79-enhance-gui","messageBody":"GUI has been enhanced with list/listtasks","fileTypesAndContributionMap":{}},{"hash":"1bf09b12a4fe6418db8a33581d77585be70c9268","isMergeCommit":false,"messageTitle":"Corrected mistake in AddCommand","messageBody":"Previously when fixing the test cases I accidentally made it compulsory\nfor users to key in the assignedtasks. I have reverted those mistakes\nand also updated the test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6},"test-code":{"insertions":14,"deletions":18}}},{"hash":"3db8feffa93b7c029de7f843a040e14a71777db6","isMergeCommit":true,"messageTitle":"Merge pull request #82 from AY2324S2-CS2103T-T15-4/79-enhance-gui","messageBody":"Updated GUI and list/listtasks functions","fileTypesAndContributionMap":{}},{"hash":"e10c70c53336aa6c6b3d7a0b20ef815a618249e7","isMergeCommit":true,"messageTitle":"Merge pull request #83 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Reverted my mistake in AddCommand","fileTypesAndContributionMap":{}},{"hash":"236ff9f75dc1167bb3f7e246dc0fd874a12ad63b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 47-add-in-task-with-all-minimum-features","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8ea1e14e7b7c0c3a480f057211c2268e03ef01b8","isMergeCommit":false,"messageTitle":"Update UML function names","messageBody":"Some function names are not correct\n\nUpdated it based on the function name in the Java class itself.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5a5a013872a7ddd51186e794d609a6128f1cb341","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"Adding in Tasks to Employees\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"3e0728b51ed0e71dac24fcabd0d9413491249be6","isMergeCommit":true,"messageTitle":"Merge pull request #6 from BryanL2303/47-add-in-task-with-all-minimum-features","messageBody":"Update UML and correct AddCommand","fileTypesAndContributionMap":{}},{"hash":"0bdbab9042a72c72607c3de3965b7537bd73c6a0","isMergeCommit":true,"messageTitle":"Merge pull request #84 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"Revert my mistakes in AddCommandParser","fileTypesAndContributionMap":{}},{"hash":"6d426a83263925faef2bcc4e2fa327ef3f9302c4","isMergeCommit":true,"messageTitle":"Merge pull request #85 from AY2324S2-CS2103T-T15-4/master","messageBody":"Keep branch up to date","fileTypesAndContributionMap":{}},{"hash":"e1d5070d50ab8e908cc4ceea26c3e471fbe6ccaf","isMergeCommit":true,"messageTitle":"Merge pull request #86 from BryanL2303/master","messageBody":"Update some UML diagrams","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4849d64b1a65c76428738a575e58681796efbf41","isMergeCommit":true,"messageTitle":"Merge pull request #88 from azumieflare/master","messageBody":"Update UML diagrams and modified GUI","fileTypesAndContributionMap":{}},{"hash":"a2798246d02f3cd02e0e367a390e7de55a73adb9","isMergeCommit":true,"messageTitle":"Merge pull request #87 from gavin331/gavin331-update-puml","messageBody":"Add sequence diagram for AssignTask command to DG.","fileTypesAndContributionMap":{}},{"hash":"657d623fe4e73cad3eab238677fc6c120b52cf7b","isMergeCommit":true,"messageTitle":"Merge pull request #90 from AY2324S2-CS2103T-T15-4/78-update-dg-with-uml-diagrams","messageBody":"Merging branch with updates to UML diagram","fileTypesAndContributionMap":{}},{"hash":"56b517dda4767294a965b4032d3dd51a3010e2fa","isMergeCommit":true,"messageTitle":"Merge pull request #8 from AY2324S2-CS2103T-T15-4/master","messageBody":"Update Fork","fileTypesAndContributionMap":{}},{"hash":"9e7b413da6386cf4677b0fa11acbfe8aef872ebe","isMergeCommit":false,"messageTitle":"Update help link to UG","messageBody":"The help function pointed to a non existent link.\n\nLink has been updated to the current github html page.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"abb52199aa0d4659c0246a7a8f58bccefef6cd30","isMergeCommit":true,"messageTitle":"Merge pull request #91 from BryanL2303/master","messageBody":"Update link to UG in help function","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"2ceddca75691043d39ee6413d6d78fd36f6f5bd8","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2324S2-CS2103T-T15-4/master","messageBody":"Update fork","fileTypesAndContributionMap":{}},{"hash":"85b44a4cade2edb3d74bbe41962708fe2d382245","isMergeCommit":false,"messageTitle":"Update AssignedTasks","messageBody":"The storage now uses the hashtable on top of the existing String\n\nThe String is still necessary for transition between loading and storing\ninto the JSON file. Problem being that we cannot initiate the hashtable\nuntil all Employees and Tasks has been created and added to\nTaskMasterPro, so we need the String as the placeholder.\n\nAll functions aside from loading and saving should make use of this\nhashtable for ease.\n\nUI has been updated for the tasks assigned to not just show the String\ntasks, but to iterate through the hashtable and display all tasks with\ntheir ids and names.\n\nThe storage files were also updated to facilitate the initialisation of\nthe hashtable when loading files from the JSON file.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":13}}},{"hash":"800f1d32435f12bdb2a6d57f8f5756c335205661","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"Fixing checkstyle errors\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"b5e5f5c9defa92e357b24367f0beaee05af41a26","isMergeCommit":false,"messageTitle":"Update assign and unassign functions","messageBody":"There were 2 functions for assigning and unassigning, both were called\none after the other because they serve the same function. The functions\nhas been combined into 1.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":39}}},{"hash":"83e87e217f6c2b172d2059816d9f4c04a712942e","isMergeCommit":true,"messageTitle":"Merge pull request #100 from BryanL2303/master","messageBody":"Updated AssignedTasks with hashtable","fileTypesAndContributionMap":{}},{"hash":"7665fa4baba4959ecd5f769db4b0aa1d18fc4c41","isMergeCommit":false,"messageTitle":"Update clear function","messageBody":"Resets both universal employee and task id back to 1 when the command is\nrun.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"d4bec26a7375402e0f530630a094cb57087807ac","isMergeCommit":true,"messageTitle":"Merge pull request #102 from BryanL2303/master","messageBody":"Update clear function","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"bf3a49b3a0589bd2e6856949b27c10743d59c219","isMergeCommit":false,"messageTitle":"Added AssignedEmployees to Task","messageBody":"AssignedEmployees in Task functions just like AssignedTasks in Employee.\n\nWhenever a task is assigned or unassigned both AssignedEmployees and\nAssignedTasks of the Task and Employee involved will be updated.\n\nThe UI for Task has also been updated to display the Employee ID and\nname of the employees that are assigned to the task.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":318,"deletions":11},"test-code":{"insertions":44,"deletions":18}}},{"hash":"8aa3f14930139fd88711851bb75fcbca74fa9311","isMergeCommit":true,"messageTitle":"Merge pull request #106 from AY2324S2-CS2103T-T15-4/65-fixing-non-functional-mistakes-with-tasks-branch","messageBody":"65 fixing non functional mistakes with tasks branch","fileTypesAndContributionMap":{}},{"hash":"2af9d6cfc07f64ee3b409b382a56ec4f0dd38e2d","isMergeCommit":true,"messageTitle":"Merge pull request #107 from BryanL2303/master","messageBody":"Added AssignedEmployees to Task","fileTypesAndContributionMap":{}},{"hash":"e13db171b1c665ded4e647b14c6e9663dcfad222","isMergeCommit":false,"messageTitle":"Update delete commands","messageBody":"When deleting employee or task, also remove all assignments to it.\n\nExample, employee 1 is assigned to task 2 and 3.\nEmployee 1 is deleted, both task 2 and task 3 will be updated to not\nshow an assignment to employee 1 anymore.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"0b6a920141440c67500c3b9b74f8a298234352bb","isMergeCommit":true,"messageTitle":"Merge pull request #108 from BryanL2303/master","messageBody":"Update delete commands","fileTypesAndContributionMap":{}},{"hash":"35b4f59dd49e6e6aeb9a6d49128ef5467b794615","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 99-update-ui-to-give-clearer-information","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"c85daabc7d32faf6e703a7aa01cc9ac1a842d4b6","isMergeCommit":true,"messageTitle":"Merge pull request #109 from AY2324S2-CS2103T-T15-4/99-update-ui-to-give-clearer-information","messageBody":"Updating UI To Show Employees Assigned To Tasks","fileTypesAndContributionMap":{}},{"hash":"e1e08f7d42d354d6871c0b637d0af0609b9f51eb","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2324S2-CS2103T-T15-4/97-update-dg-implementations-section","messageBody":"Use fork branch to PR","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"5d18f0815b38e55276ed885dd5d79c20bea09eb2","isMergeCommit":false,"messageTitle":"Add AssignTask/UnassignTask into DG","messageBody":"Update the implementation section with new features.\n","fileTypesAndContributionMap":{"docs":{"insertions":188,"deletions":0}}},{"hash":"864fa9ab5c45841feb606fe7316845439a82fa9d","isMergeCommit":true,"messageTitle":"Merge pull request #112 from BryanL2303/8-update-dg","messageBody":"Add AssignTask/UnassignTask to DG","fileTypesAndContributionMap":{}},{"hash":"28c04ce9fd229a885c7cf5a2e7ebda757b41d0f1","isMergeCommit":false,"messageTitle":"Correct Mistake under AssignedTasks Feature","messageBody":"The design considerations was repeated, it has been corrected","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"8c2bcfdcff49fa374221e2df0083758c4601ee25","isMergeCommit":true,"messageTitle":"Merge pull request #117 from AY2324S2-CS2103T-T15-4/97-update-dg-implementations-section","messageBody":"Update DG Implementations","fileTypesAndContributionMap":{}},{"hash":"f267e6645ec93f62d5cef75bbc850c39c786f859","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 110-add-findtasks-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8c7d7b0bd68f922c13603a7c129efd499b0b74bb","isMergeCommit":true,"messageTitle":"Merge pull request #115 from AY2324S2-CS2103T-T15-4/110-add-findtasks-command","messageBody":"110 add findtasks command","tags":["v1.3"],"fileTypesAndContributionMap":{}},{"hash":"6c4d47e174591468b95b16ced3a0d197bf2071ee","isMergeCommit":true,"messageTitle":"Merge pull request #11 from AY2324S2-CS2103T-T15-4/master","messageBody":"Update Fork","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"0bc89823ba664c62b2a35ffc605c2542f8bf6698","isMergeCommit":false,"messageTitle":"Fix User Guide Introduction","messageBody":"As per the feedback given, gave a more enthusiastic greeting to the user and a short guide on how to use the user guide. Also slightly describes the target user.","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4ff41925cdb41081967c943d59c78bbc4eee7ea0","isMergeCommit":false,"messageTitle":"Fix User Guide Features","messageBody":"The table at the bottom mentions removetask when our app uses unassigntask. This command is also missing from features list after assigntask.\r\n\r\nThe table has been fixed and also added unassigntask to the features list\r\n\r\nRemoved save command and listassignments commands from the table at the bottom. Both of these command are not necessary.","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":3}}}]},{"date":"2024-03-31","commitResults":[{"hash":"5d54a638d878607638396d078ec13f2fcc1cd684","isMergeCommit":false,"messageTitle":"Fix Javadoc Errors","messageBody":"Javadoc can now be generated without errors.\n\nWarnings still exist.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":7}}},{"hash":"b91ff894e3658e18ca6022ed68b60f90785ddc42","isMergeCommit":false,"messageTitle":"Fix JavaDoc Convention Error","messageBody":"Leaving space before params\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}}]},{"date":"2024-04-01","commitResults":[{"hash":"e7726ba65a488a4852bc759ea823ebe6296a4611","isMergeCommit":true,"messageTitle":"Merge pull request #119 from BryanL2303/master","messageBody":"Fixing JavaDoc Conventions","fileTypesAndContributionMap":{}},{"hash":"fdd0d34c4b90a07e92debd20ee42cbefdcacf161","isMergeCommit":true,"messageTitle":"Merge pull request #120 from AY2324S2-CS2103T-T15-4/master","messageBody":"Keep Branch Updated","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"c7173003f6e7d083893e7bef2b0216c9b80bfdae","isMergeCommit":false,"messageTitle":"Update JavaDoc and Getter","messageBody":"Include getter in TaskId and EmployeeId. Also added spaced in JavaDoc to\nconform with other functions.\n\nRealised that Law of Demeter is violated in AB code to begin with in all\nthe Employee model sub classes.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":25}}},{"hash":"11ac0c8331382af7ddb53984ea5758ee619229ce","isMergeCommit":false,"messageTitle":"Fixed CI","messageBody":"Accidentally removed a space.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"72f1c25e3809de4fcd371371dda80fb612ebfc9d","isMergeCommit":false,"messageTitle":"Add Test Cases","messageBody":"Still missing test cases for AssignedEmployees.\n","fileTypesAndContributionMap":{"test-code":{"insertions":84,"deletions":0}}},{"hash":"53755a8a1827445e2db11ab4c8de315b8a153d51","isMergeCommit":true,"messageTitle":"Merge pull request #13 from AY2324S2-CS2103T-T15-4/122-add-test-cases","messageBody":"122 add test cases","fileTypesAndContributionMap":{}},{"hash":"73f9f0fd00dc15aa31be863cdaa27bb9b902e5c3","isMergeCommit":false,"messageTitle":"Add Test Case","messageBody":"Added more test cases.\n","fileTypesAndContributionMap":{"test-code":{"insertions":49,"deletions":1}}},{"hash":"130a038c28588d008a6268d2a158d9b1d2bb9683","isMergeCommit":true,"messageTitle":"Merge pull request #121 from BryanL2303/master","messageBody":"Update JavaDoc and Getter","fileTypesAndContributionMap":{}},{"hash":"2fdb4803969d0016d5f89e8335cd94a734bf1923","isMergeCommit":true,"messageTitle":"Merge pull request #124 from gavin331/master","messageBody":"Refactor address book to TaskMasterPro","fileTypesAndContributionMap":{}},{"hash":"74a3f716a534b364ef8898db497b30bd1fd17421","isMergeCommit":true,"messageTitle":"Merge pull request #126 from AY2324S2-CS2103T-T15-4/master","messageBody":"Keep Branch up to date","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"c54d0d82d6d4c2aec745f7b746ed571ffa0fa3dc","isMergeCommit":true,"messageTitle":"Merge pull request #125 from gavin331/gavin331-add-test-cases","messageBody":"Gavin331 add test cases","fileTypesAndContributionMap":{}},{"hash":"9915c0d4d3ee14d03a70e9fc55dcc410138806e8","isMergeCommit":true,"messageTitle":"Merge pull request #127 from AY2324S2-CS2103T-T15-4/master","messageBody":"Keep Branch up to date","fileTypesAndContributionMap":{}},{"hash":"74afec811900d27a5cabc548031d893dcf81c963","isMergeCommit":true,"messageTitle":"Merge pull request #14 from AY2324S2-CS2103T-T15-4/104-fix-issues-with-ug","messageBody":"Keep fork updated","fileTypesAndContributionMap":{}},{"hash":"909901bd2fe05d4efd89a617949f568445d1b50a","isMergeCommit":false,"messageTitle":"Updating User Guide","messageBody":"Fixed the table of contents\n\nUpdated the image of the help command with the current link\nAdded illustration to show where the employee id would be\n\nThe index page was referencing the wrong SE-EDU project due to\nrefactoring, it has been reverted.\n","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":7}}},{"hash":"83de0a2fef5faa60aab65ee50a5a37672bd76f21","isMergeCommit":true,"messageTitle":"Merge pull request #128 from BryanL2303/master","messageBody":"Updated UG","fileTypesAndContributionMap":{}},{"hash":"83f7dfa1cc65af1f4ecb0ae70b2bb9b12da06c9f","isMergeCommit":false,"messageTitle":"Remove misinformation","messageBody":"Remove the prefixes from assigntask and unassigntask","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"d6c524793977eebba3aa30d9062dc46a3afb8a14","isMergeCommit":true,"messageTitle":"Merge pull request #130 from azumieflare/branch-CodeStyle","messageBody":"Code style changes","fileTypesAndContributionMap":{}},{"hash":"672a89f11bd1ea34c2e40a12d5fed4e03f8f61dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 118-fixing-code-design","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4eaf430eb15fa75380ede76ad4f1f7512d8404f6","isMergeCommit":true,"messageTitle":"Merge pull request #15 from AY2324S2-CS2103T-T15-4/118-fixing-code-design","messageBody":"Keep fork up to date","fileTypesAndContributionMap":{}},{"hash":"730699246e91be4921b6e006e00bcf5f301d43b0","isMergeCommit":false,"messageTitle":"Added Assignments to Sample Data","messageBody":"Added assignments if sample data is initiated.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":1}}},{"hash":"1d516cd532d3786d361566e324f5a3a2c402bc7a","isMergeCommit":true,"messageTitle":"Merge pull request #131 from AY2324S2-CS2103T-T15-4/122-add-test-cases","messageBody":"Added Test Cases For New Functions","fileTypesAndContributionMap":{}},{"hash":"8e859c6547d6a216eac08b610cd3f6704f722fea","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 104-fix-issues-with-ug","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ace8e986236fb8e3b5ec3b075139f2bde88861cc","isMergeCommit":true,"messageTitle":"Merge pull request #129 from AY2324S2-CS2103T-T15-4/104-fix-issues-with-ug","messageBody":"Updated UG","fileTypesAndContributionMap":{}},{"hash":"9b0bcb2a4df94de5c5930d793dbed51d4df3d1b3","isMergeCommit":false,"messageTitle":"Fixed Checkstyles","messageBody":"Fixed Checkstyles\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"c6c04e285a5f7d33a0188ccb1bccfe5b4fe7f002","isMergeCommit":false,"messageTitle":"Update AssignTaskSequence Model","messageBody":"Add activation bars that were missing.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"c1514166bdb9249a158098ba514ee9270af6f7f9","isMergeCommit":true,"messageTitle":"Merge pull request #132 from BryanL2303/master","messageBody":"Add Assignments to Sample Data","fileTypesAndContributionMap":{}},{"hash":"d48e60a7063a7b45ba9bcbaf74c71bdc551d22e3","isMergeCommit":true,"messageTitle":"Merge pull request #16 from AY2324S2-CS2103T-T15-4/master","messageBody":"Update fork","fileTypesAndContributionMap":{}},{"hash":"c67b66723d7d1b89cc4d9d34d33825dd4b98f44c","isMergeCommit":false,"messageTitle":"Delete Functions Affects Ui","messageBody":"The ui will now switch to the respective lists when something from that\nlist is deleted.\n\nFor 2 reasons:\n1. If an employee has been deleted it makes sense to show\nthe list of employees to check that it is in fact gone.\n2. This fixes the issue where a task might be deleted and it will still\n be visually on the screen if users were looking at the list of\n employees with that task assigned to them.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"d650633496f90ac95811802c913d2e7a077ad568","isMergeCommit":true,"messageTitle":"Merge pull request #133 from BryanL2303/master","messageBody":"Delete Commands Affects Ui","fileTypesAndContributionMap":{}},{"hash":"8372a975ff24761dcb4d2c1bdd29af258faa9ed0","isMergeCommit":true,"messageTitle":"Merge pull request #134 from AY2324S2-CS2103T-T15-4/118-fixing-code-design","messageBody":"Code Design and Miscellaneous Bugs","fileTypesAndContributionMap":{}},{"hash":"c69cd9c35dc132f800a4a4c892ec1871ef43e2ec","isMergeCommit":false,"messageTitle":"Final Update to UserGuide","messageBody":"Added missing functions, added more clarifications for saving and editing data file.\r\n\r\nAdded missing values in toc and command summary at the end","fileTypesAndContributionMap":{"docs":{"insertions":71,"deletions":21}}}]}],"azumieflare":[{"date":"2024-03-05","commitResults":[{"hash":"d647c7f4f40d9b9743aa9e42a29b6675915d1133","isMergeCommit":false,"messageTitle":"Edit about us","messageBody":"Updated self profile.\n","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":5}}},{"hash":"04b8660becaab6301fdb925dd243b65242036404","isMergeCommit":false,"messageTitle":"Edit README.md","messageBody":"Updated details of the app.\n","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":11}}},{"hash":"bbe0a84623d81418e7997852c75729d2d09972e4","isMergeCommit":false,"messageTitle":"Undo changes","messageBody":"Removed updates done to AboutUs to isolate all\nchanges to README to this branch.\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":53}}},{"hash":"76935bcd649ba859b6933608cf19a72e65b72a78","isMergeCommit":false,"messageTitle":"Undo changes","messageBody":"Removed updates done.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":62}}},{"hash":"63ba72b8e9df486f13ad08ea73e825ad568357aa","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Updated details of the app.\n","fileTypesAndContributionMap":{"docs":{"insertions":62,"deletions":11}}},{"hash":"6985d7a051cf367ff433d7fa41f19fac3c089554","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"Updated self profile.\n","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":6}}},{"hash":"b52a462171b993fd0a5107f466840a84e13d60c0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"Fixed EOF error.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"85c5c7eb7b0a9b6afc05525f4241631ae91166c1","isMergeCommit":false,"messageTitle":"Edit AboutUs.md","messageBody":"Fixed EOF error.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"25d998b936655a4de4200fb2f087ea18b190e72e","isMergeCommit":true,"messageTitle":"Merge pull request #31 from AY2324S2-CS2103T-T15-4/1-update-aboutus-page","messageBody":"Merge AboutUs page for v1.1","fileTypesAndContributionMap":{}},{"hash":"50261fb4cc2955dc29aac52a5b8679ba86489772","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 8-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa0f4c1ec993bc5d571545977ac03f57a6b9831b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 7-update-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5ffd3a754edbce36809a124db2e2aa4d8e2e151a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from AY2324S2-CS2103T-T15-4/8-update-dg","messageBody":"Close DG for v1.1","fileTypesAndContributionMap":{}},{"hash":"89794d44100e63504679a19084e9e2311175cff7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into 7-update-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"343879f3cac8aa237a006d332a30af01aac2c2df","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Added missing commands","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"2cb1f9bf8886ee03f3b93df351bc71184b14a9ba","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"Updated product scope.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}},{"hash":"3b4c02aca92d5f89e00d116ea55bd762b636028b","isMergeCommit":true,"messageTitle":"Merge pull request #34 from azumieflare/branch-DG","messageBody":"Branch dg","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"cc2b5ecb3092fc878aad63f1b779d6a735f19046","isMergeCommit":false,"messageTitle":"Add Task","messageBody":"Added functionality for adding tasks and save/load.\n\nGUI also updated to reflect tasks.\n\nRemoving of tasks and taskID will be added in a\nlater commit.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":516,"deletions":2}}},{"hash":"589bb8cb9c6057709e7e3817db6008d9277ac36c","isMergeCommit":false,"messageTitle":"Remove Task","messageBody":"Added functionality for removing tasks.\n\nLeft with adding taskID.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":0}}},{"hash":"916ec338c1d1c8b495035fa1034ce7617bd9a857","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"Updated Stubs to implement added abstract methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"186b225505af58b7d2613f86765147217a1a680f","isMergeCommit":false,"messageTitle":"Add taskId to task","messageBody":"Updated add and remove task to consider taskId\ninstead of absolute index.\n\nTaskId also persists throughout sessions\nincluding restarting the app.\n\nMaybe should add a command to reset taskId?\n","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":30},"other":{"insertions":22,"deletions":20},"test-code":{"insertions":1,"deletions":1}}},{"hash":"be41c8cc8b0e7d3296ed812ceb1a0d363e92b01e","isMergeCommit":false,"messageTitle":"Fix existing test case bugs","messageBody":"Also fixed some checkstyle issues.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":9}}},{"hash":"a71aec8fdeb6b8d383c07350a07904eb3da6b177","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"Added test cases to cover the new Task features.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10},"test-code":{"insertions":146,"deletions":0}}},{"hash":"ddb5bcb05c9312cd4d8135cbd5aaf58a53245e5e","isMergeCommit":true,"messageTitle":"Merge conflicts","messageBody":"Fixed all merge conflicts after refactoring.\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"ffaa746801cf2aff80c2e40bf448857ded44cf07","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0b2b13b1d7d64ddc8d45966a117d6f0a4eae089f","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"Added several test cases to increase code coverage.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0},"test-code":{"insertions":77,"deletions":1}}},{"hash":"584a0964ef21f3f82ce589f6fdcdd4d4e2fb98ca","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"Added several more test cases to increase code coverage.\n","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":16}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0453fe8673490f2827ac4a649e60cf3349550587","isMergeCommit":false,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"bb95d28793f76b9bca5b41ad1965a85570a54ccd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Tasks\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3f36407a2fb44e68850a68420e09eefce73a6a28","isMergeCommit":false,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":6,"deletions":6}}},{"hash":"1bf7534771d1e6492571c6bc16f5a2878b5a0bf6","isMergeCommit":true,"messageTitle":"Merge pull request #62 from AY2324S2-CS2103T-T15-4/47-add-in-task-with-all-minimum-features","messageBody":"47 add in task with all minimum features","fileTypesAndContributionMap":{}},{"hash":"4b6646341e8d212284836793f6105626e7ce1365","isMergeCommit":true,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"db887e79a6b1ed2d473060d65fc9f4ba85dc2b98","isMergeCommit":true,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4484e8621a4a158548428c3fb29e1a5084ae5377","isMergeCommit":true,"messageTitle":"Merge pull request #63 from azumieflare/branch-Tasks","messageBody":"Added test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"7526f03112c1054cc9157d7c71b26a3a45e3c490","isMergeCommit":false,"messageTitle":"Fix minor errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b1c7cb358f3f98581e4db92ecfd0a66bdbedf43a","isMergeCommit":true,"messageTitle":"Merge pull request #68 from azumieflare/branch-Tasks","messageBody":"Fix minor errors","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"283ec8bc07ae62595ffa37e6f7b283f8268cb9b6","isMergeCommit":false,"messageTitle":"Modify GUI","messageBody":"Combined both StackPane into one for easier access.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":23}}},{"hash":"5c7f8ddab6774ece090f3c1e1591c9e3bb269bce","isMergeCommit":false,"messageTitle":"Update UML Diagrams","messageBody":"Updated BetterModelClassDiagram.puml,\n ModelClassDiagram.puml and UiClassDiagram.puml\n to reflect new class Task.\n","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":5}}},{"hash":"71e1ab8e7212f170d138dfe4ce172ebfce46f80d","isMergeCommit":false,"messageTitle":"Fix variable names","messageBody":"Changed some variable names for better consistency.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}},{"hash":"ea159412b9d7510817ab2378cd53ae53ff283a7f","isMergeCommit":true,"messageTitle":"Merge pull request #89 from azumieflare/master","messageBody":"Fix variable names","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"cbd5a917453dcd137a618561803cb75cd5bb353e","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Added implementation details for add/remove tasks,\nalong with UML diagrams through an example usage scenario.\n\nAlso updated build.gradle to enable assertions.\n","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0},"docs":{"insertions":221,"deletions":1}}},{"hash":"d5c0a8b62c5d09039da4d20519c3f931945fab74","isMergeCommit":false,"messageTitle":"Fix minor typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"7208c3dfb8018010ab471af2cc6f315c30506e08","isMergeCommit":false,"messageTitle":"Fix minor typo","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-04-03","commitResults":[{"hash":"e2d18e9f6b38742eb4d784e6512494fbd11ea9da","isMergeCommit":false,"messageTitle":"Fix minor typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"8d3562cd8db2a76d2170c4d30ce82730b7189a23","isMergeCommit":false,"messageTitle":"Update code style","messageBody":"There are many instances of law of demeter being\nviolated. These are fixed and respective files\nare updated to reflect the changes.\n\nSeveral instance of arrow-styled codes are also\nfixed.\n\nToDo: Update SampleDataUtil.java to include\nautomatic assigning of tasks to employees.\n\nCan also consider handling of initial error\nsave file.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":223,"deletions":156},"docs":{"insertions":0,"deletions":88},"test-code":{"insertions":37,"deletions":37}}},{"hash":"7403af5f84c4fe2e52a3af9274717621b340afea","isMergeCommit":true,"messageTitle":"Merge with existing branch","messageBody":"Fix merge conflicts.\n","fileTypesAndContributionMap":{}},{"hash":"5da9b3fcdc582d6f4bfd61adc90afbc7784bfbd3","isMergeCommit":false,"messageTitle":"Minor fix for formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-04-04","commitResults":[{"hash":"ad1362f98dd1a3835593e21c0d83e956259e1f4e","isMergeCommit":false,"messageTitle":"Update regex and fix bugs","messageBody":"Update regex for phone to take in exactly 8\n digits and should start with 6, 8 or 9.\n\n EditCommand.java also fixed to use EmployeeId\n instead of displayed index.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":4}}},{"hash":"5fbfe716981106a9c108c318824ac16d1d744b3a","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"Update all test cases to reflect previous changes.\n","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":18}}},{"hash":"dcf1f24e5c1c2b53bae26c300d1e16270621f4c0","isMergeCommit":true,"messageTitle":"Merge pull request #141 from azumieflare/master","messageBody":"Fix minor bugs","fileTypesAndContributionMap":{}},{"hash":"b140cea7bb8de1772b2270fa2fd4046af9c8d13d","isMergeCommit":false,"messageTitle":"Update EditCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"fcb19c69edaa16dd19f54d4acde65ea53d2b7ae4","isMergeCommit":true,"messageTitle":"Merge pull request #142 from AY2324S2-CS2103T-T15-4/Minor-bug-fixes","messageBody":"Minor bug fixes","tags":["v1.3.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"182faf01296e7fd15d5fe3c4151b8b8606bce1be","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":14}}}]}],"gavin331":[{"date":"2024-03-05","commitResults":[{"hash":"84d0974fd880fe1cc7606f217a72ae3dac757b62","isMergeCommit":true,"messageTitle":"Merge pull request #10 from BryanL2303/1-update-aboutus-page","messageBody":"Add profile for Bryan","fileTypesAndContributionMap":{}},{"hash":"c6190f8875b9b6e9135b75b7e936f173ae8ac7af","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":16}}},{"hash":"4f047714a2758b58b760a2243234d7216be1ac4b","isMergeCommit":true,"messageTitle":"Merge branch \u00271-update-aboutus-page\u0027 into 1-update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a5e938cc448ad1a6ecc447de1c1c18722d6471d2","isMergeCommit":true,"messageTitle":"Fix merge conflict in aboutus.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f438e87d9594b131c98f1b4d6eea6359112a36a0","isMergeCommit":true,"messageTitle":"Merge pull request #11 from BryanL2303/7-update-user-guide","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"e41f536708b723b838e647f9b39ddbb858421534","isMergeCommit":false,"messageTitle":"Add employee functions to UserGuide.md","messageBody":"Add \u0027adding employee\u0027, \u0027listing employees\u0027, \u0027deleting employee\u0027\nto the userguide. Also, I renamed parts of the code where we used\n\u0027address book\u0027 to \u0027TaskMasterPro\u0027.\n","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":12}}},{"hash":"bc95f46bc916b883fd0ba3f968419482a0114e67","isMergeCommit":true,"messageTitle":"Merge pull request #15 from AY2324S2-CS2103T-T15-4/5-update-readme-page","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"9019491d8737a75914331b26bae6aab9ad5de208","isMergeCommit":true,"messageTitle":"Merge pull request #16 from BryanL2303/8-update-dg","messageBody":"Update user stories and cases","fileTypesAndContributionMap":{}},{"hash":"9dd830944d442e2bcd68a3fc171021abdebaf8e3","isMergeCommit":false,"messageTitle":"Add use case for marking and unmarking a task","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"cf7a1e1288e064190019d60533018509c4dba410","isMergeCommit":true,"messageTitle":"Merge pull request #36 from AY2324S2-CS2103T-T15-4/8-update-dg","messageBody":"8 update dg","fileTypesAndContributionMap":{}},{"hash":"4dff5e5498c0cada0c69f951ce8550172726078e","isMergeCommit":false,"messageTitle":"Update NFR in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"ed2313bb1c10989b98ae25fab4cfa551e0713616","isMergeCommit":true,"messageTitle":"Merge pull request #37 from gavin331/35-add-nfr-to-dg","messageBody":"Update NFR in DG","fileTypesAndContributionMap":{}},{"hash":"d7e0dddca61cc70cc634ccae9cf0dd25a11eceda","isMergeCommit":true,"messageTitle":"Merge pull request #38 from AY2324S2-CS2103T-T15-4/35-add-nfr-to-dg","messageBody":"35 add nfr to dg","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"348ec5e7d78d9378ee89c94cf9eba70f527fa658","isMergeCommit":true,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"74ee1432cf7d1bde89fa39a6cf7e9548cdc53a07","isMergeCommit":false,"messageTitle":"Refactor person/Person into employee/Employee","messageBody":"Refactor addressbook into TaskMasterPro has not been done\nat this point.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":443,"deletions":444},"other":{"insertions":196,"deletions":193},"docs":{"insertions":98,"deletions":98},"test-code":{"insertions":730,"deletions":724}}}]},{"date":"2024-03-12","commitResults":[{"hash":"68fbf893a5286c401e543e896a18d4fce4019ee1","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4},"test-code":{"insertions":5,"deletions":4}}},{"hash":"4e3eeebd88fea516111fb201a7699c31e41a4fee","isMergeCommit":false,"messageTitle":"Refactor addressbook into TaskMasterPro","messageBody":"There are some parts which I did not refactor. For example,\nacknowledgements to the original addressbook project and\nthe content in the logs.\n\nThe other parts are mostly refactored but since there are\nquite a number of files involved, do look out for potential\nerrors or portions which should not have been refactored.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":234,"deletions":233},"other":{"insertions":76,"deletions":75},"docs":{"insertions":77,"deletions":77},"test-code":{"insertions":240,"deletions":238}}}]},{"date":"2024-03-19","commitResults":[{"hash":"80a4e8fa9ec142b3996bdf125be58ca6067745a6","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"a9aff7ee23308559ac622dfb3a7188f8659a6bab","isMergeCommit":false,"messageTitle":"Add sequence diagram for assigntask command","messageBody":"The separate sequence diagram to illustrate the details of the ref\nblock has not been implemented yet.\n","fileTypesAndContributionMap":{"docs":{"insertions":72,"deletions":0}}},{"hash":"59b240d15f26c9b63e859f2fa08b3ab6160be792","isMergeCommit":false,"messageTitle":"Add AssignTask sequence diagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"c039616a40a90471039762e288f7f7100051e958","isMergeCommit":false,"messageTitle":"Fix minor error to show object name","messageBody":"Initially, it was :AssignTaskCommand. I corrected it to\na:AssignTaskCommand.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"812c5bb145a8051ec347a8524bde25f0219c05a9","isMergeCommit":false,"messageTitle":"Add sequence diagram for the ref block","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":1}}}]},{"date":"2024-03-24","commitResults":[{"hash":"55dcb3c31ca8eb4fccba3bad0a0506d3adb6c389","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8eb6f3164a5969b2f14f6fe1f9d3ce2e1f368031","isMergeCommit":false,"messageTitle":"Fix minor error in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"c8df21c86233fdb752d48262adb30a3465aa3496","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gavin331/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4f5949321df346d428d47045ce2abe58f4fa4d6e","isMergeCommit":true,"messageTitle":"Merge pull request #101 from gavin331/master","messageBody":"Updated UG ","fileTypesAndContributionMap":{}},{"hash":"3cd69e0171b3d5163dc3677b87a93f038393d037","isMergeCommit":false,"messageTitle":"Refactor to TaskMasterPro in TaskMasterPro.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}}]},{"date":"2024-03-25","commitResults":[{"hash":"7f7dc48c380824456800c3e88b12cddd61521a99","isMergeCommit":true,"messageTitle":"Merge pull request #98 from azumieflare/master","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"32cf78ce34506b4f9a8909595f9415d2bf5157be","isMergeCommit":true,"messageTitle":"Merge pull request #103 from gavin331/65-fixing-non-functional-mistakes-with-tasks-branch","messageBody":"Refactor to TaskMasterPro in TaskMasterPro.java","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"5497687db0ea996127b9264432e540f3097a6b06","isMergeCommit":false,"messageTitle":"Add findtasks feature","messageBody":"The findtasks feature works similarly to the find command for the\nemployees. The UG and DG have also been updated to include the\nfindtasks feature. Also updated the UI to show the employee/task\npanels whenever we run find or findtasks. Lastly, some minor\nrefactoring was done.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":4},"docs":{"insertions":35,"deletions":18}}},{"hash":"879be9acf5ae7f0e55709c87592756898ed6de23","isMergeCommit":false,"messageTitle":"Remove TODO comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-27","commitResults":[{"hash":"4c1bea0706dfcda41d8a5c7fa0c1636802332857","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/97-update-dg-implementations-section\u0027 into gavin331-97-update-dg-implementations-section","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"962e1db9e855bbfc6203cbb44e9bf7e3c6701454","isMergeCommit":false,"messageTitle":"Add findtasks implementation in DG","messageBody":"This is still in progress.\n","fileTypesAndContributionMap":{"docs":{"insertions":106,"deletions":0}}},{"hash":"a6fc6e496a213e5cfd619d0fab38affb16420356","isMergeCommit":false,"messageTitle":"Add Findtasks activity diagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":4}}},{"hash":"0b04624ae15f3650414b956deca68f254e927834","isMergeCommit":true,"messageTitle":"Merge pull request #111 from gavin331/110-add-findtasks-command","messageBody":"110 add findtasks command","fileTypesAndContributionMap":{}},{"hash":"895411ffd2816df0a9f42484f167fb90a20e8bcc","isMergeCommit":false,"messageTitle":"Fix EOF and whitespace errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"b4b6a20c1f008547ea07622aa121f7963cd00781","isMergeCommit":true,"messageTitle":"Merge pull request #113 from gavin331/gavin331-97-update-dg-implementations-section","messageBody":"Gavin331 97 update dg implementations section","fileTypesAndContributionMap":{}},{"hash":"99364f0347ddb8c7128f47e6eec730b0c3783f7e","isMergeCommit":false,"messageTitle":"Add testcases for findtasks command.","messageBody":"FindTasksCommandParser and the predicate for findtasks\nhave been tested. The FindTasksCommand have not been tested\nyet because the getTypicalTaskMasterPro() currently does not\ninclude pre-build tasks.\n","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":0}}},{"hash":"aee61bca262ab2280455b9c1037a723646ae4437","isMergeCommit":true,"messageTitle":"Merge pull request #114 from gavin331/110-add-findtasks-command","messageBody":"Add testcases for findtasks command.","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"3e82832aa5b1396d9aedc0ee6a50b6567bdbd897","isMergeCommit":false,"messageTitle":"Refactor address book to TaskMasterPro","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":40},"docs":{"insertions":16,"deletions":16},"test-code":{"insertions":7,"deletions":7}}},{"hash":"dca4768b9d3fbe4d47a06ef3d22e85b15e973d45","isMergeCommit":false,"messageTitle":"Add testcases for FindTasksCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":103,"deletions":0}}},{"hash":"9f6278d8289d9c5685302f2080dba0cf009dbd94","isMergeCommit":true,"messageTitle":"Merge pull request #123 from BryanL2303/122-add-test-cases","messageBody":"Adding tests","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"80160ce0d0f9ac146fb181d8b29247a3291cf7f7","isMergeCommit":false,"messageTitle":"remove outdated seq diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":6}}},{"hash":"29a9c12daa03484258ff1a04d0bb18ab68c3cd52","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into gavin_remove_outdated_seqdiagram","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"76a4d484b3dc62c8138bac6998bc5b637b8f1960","isMergeCommit":true,"messageTitle":"Merge pull request #135 from gavin331/gavin_remove_outdated_seqdiagram","messageBody":"remove outdated seq diagram","fileTypesAndContributionMap":{}},{"hash":"1cb5f833caf51e953bc5b1ce9fb481bc2ee98438","isMergeCommit":true,"messageTitle":"Merge pull request #140 from AY2324S2-CS2103T-T15-4/Final-Update-to-UG","messageBody":"Final Update to UserGuide","fileTypesAndContributionMap":{}}]}],"johnyoozhengxian":[{"date":"2024-03-06","commitResults":[{"hash":"f0055421a56a53954ec4cf42f72fb17046e06401","isMergeCommit":false,"messageTitle":"Add AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":0}}},{"hash":"2822ac4fff874b07776eca15eacbd33bff00eeba","isMergeCommit":false,"messageTitle":"Add UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":0}}},{"hash":"f79813bb662d879ef9fb37c0bb5c0e4cfd4fe2bd","isMergeCommit":true,"messageTitle":"Merge branch \u00271-update-aboutus-page\u0027 into update-aboutus-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e0457053ee64c493975e77818c54c20c87be9979","isMergeCommit":true,"messageTitle":"Merge pull request #28 from johnyoozhengxian/update-ug","messageBody":"Add UG","fileTypesAndContributionMap":{}},{"hash":"c0e02c3ffa515310761697163248f75498898d3b","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b1a19f35800f84c1fa7851eebeda25908269aff4","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"28f75d466ae14ec5bc45b923c9ac20b2ec53477e","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-08","commitResults":[{"hash":"294ba90c1a852f97f1394e30ba9db292feb990cf","isMergeCommit":false,"messageTitle":"Add UserGuide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":9},"other":{"insertions":3,"deletions":3},"docs":{"insertions":1,"deletions":1}}},{"hash":"c232d0a09104590ab010ef3d7a5efa244e2ad244","isMergeCommit":false,"messageTitle":"Add UserGuide with changes","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":3}}},{"hash":"c1c1fb6dd922877243fdb93cf61e0c76086681c1","isMergeCommit":false,"messageTitle":"Add UserGuide with changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"bc409503e678b7f9ae1b38fd913651ac38cc8908","isMergeCommit":false,"messageTitle":"Add UserGuide with changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":30}}},{"hash":"1571b0f4f75a29010e74d34ea62e50020aae0637","isMergeCommit":true,"messageTitle":"Merge pull request #40 from johnyoozhengxian/update-ug","messageBody":"Add UserGuide","fileTypesAndContributionMap":{}},{"hash":"1596f5e7e67dd4dbc21b2eca635eceaa7cf029a4","isMergeCommit":true,"messageTitle":"Merge pull request #41 from AY2324S2-CS2103T-T15-4/update-user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"ddd07673d1696137fe9a3ca05566d05487355e7d","isMergeCommit":false,"messageTitle":"add mark/unmark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":452,"deletions":21}}},{"hash":"5be9c0d959232bbd6ddfce15701016e9a5c4affa","isMergeCommit":false,"messageTitle":"Add Assign Task to Employees","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":58},"test-code":{"insertions":265,"deletions":52}}},{"hash":"6f745518cff3b1e7fed583ca34eb6b5f81dd2d16","isMergeCommit":false,"messageTitle":"Implement CheckStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":174,"deletions":59},"test-code":{"insertions":77,"deletions":37}}},{"hash":"d4e4024519f1fb257501bd9fa4d8f5dab6ac2908","isMergeCommit":true,"messageTitle":"Merge branch \u002747-add-in-task-with-all-minimum-features\u0027 into update-checkstyle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"96cb49a1ef21e27356cf74f8b7d8dc11c7153772","isMergeCommit":true,"messageTitle":"Merge pull request #72 from johnyoozhengxian/update-checkstyle","messageBody":"Update checkstyle, mark task, unmark task and Assign Task to a Person","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"6b47be2d4d9cffa43dae63709a4fe138c68ced68","isMergeCommit":false,"messageTitle":"Add Unassign Commands and change code to allow empty AssignedTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":174,"deletions":15},"other":{"insertions":1,"deletions":1}}},{"hash":"019442b3c61151a32c65472f11e1c926eb2c9c85","isMergeCommit":false,"messageTitle":"Add UnassignTask and changed a bit of assigntask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d57bd5a850977344f84e1a21bc6f51e55e07b68a","isMergeCommit":true,"messageTitle":"Merge pull request #73 from johnyoozhengxian/add-unassigntask","messageBody":"Add unassigntask","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"617ade9c9ab9efac341c147766bffe60e7dec98b","isMergeCommit":false,"messageTitle":"Add UML for mark","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":103,"deletions":1}}},{"hash":"f60a16f3e123ee2ad8ce37c53da0df31d2d92a92","isMergeCommit":true,"messageTitle":"Merge pull request #92 from johnyoozhengxian/add-uml","messageBody":"Add uml","fileTypesAndContributionMap":{}},{"hash":"e57b8fd12e6766511a84fa079288e1c72f3f4812","isMergeCommit":true,"messageTitle":"Merge pull request #93 from AY2324S2-CS2103T-T15-4/78-update-dg-with-uml-diagrams","messageBody":"78 update dg with uml diagrams","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"3675089a7a67c4086af5ae797d81756d71f69a80","isMergeCommit":false,"messageTitle":"Add unmark in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":133,"deletions":3}}},{"hash":"ea84a5c27ee2652d86540ccc91e65415778525d7","isMergeCommit":true,"messageTitle":"Merge pull request #116 from johnyoozhengxian/2-update-dg","messageBody":"Add unmark in DG","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"fd9eb34d88c1a0a5e536396efc36b82ca5725845","isMergeCommit":false,"messageTitle":"test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"other":{"insertions":1,"deletions":0}}},{"hash":"a2173a6cb6c3fdbadc234cdddfb1bccba9a28c35","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027ori/master\u0027 into refactor-test-case","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cd939ce0cf307bc4a59f562c6856961d0aa1ed9d","isMergeCommit":false,"messageTitle":"Edit UserGuide, remove grammar errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"34e7f25fb0cea6bbedfffcbc860ffa1edc2185e1","isMergeCommit":true,"messageTitle":"Merge pull request #136 from johnyoozhengxian/adjust-ug","messageBody":"Adjust ug","fileTypesAndContributionMap":{}},{"hash":"1da1388cb786199cc00cbc20ee0b1c2d5394d014","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":1}}},{"hash":"51945eb621e089d6ce6b949d697ee21203412435","isMergeCommit":false,"messageTitle":"Remove something extra","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":1}}},{"hash":"a571cfb656c6f5ffb676a39ef1c087b9b08b713f","isMergeCommit":true,"messageTitle":"Merge pull request #139 from AY2324S2-CS2103T-T15-4/104-fix-issues-with-ug","messageBody":"104 fix issues with ug","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"BryanL2303":{"docs":380,"functional-code":755,"test-code":231,"other":1},"azumieflare":{"docs":434,"functional-code":883,"test-code":317,"other":4},"gavin331":{"docs":503,"functional-code":851,"test-code":1255,"other":1},"johnyoozhengxian":{"docs":323,"functional-code":689,"test-code":297}},"authorContributionVariance":{"BryanL2303":9698.121,"azumieflare":32794.38,"gavin331":226584.89,"johnyoozhengxian":38018.98},"authorDisplayNameMap":{"BryanL2303":"CS2103T-T15-4 BRYA.. YIN","azumieflare":"CS2103T-T15-4 CHAN..JOHN","gavin331":"CS2103T-T15-4 GAVI.. WEI","johnyoozhengxian":"CS2103T-T15-4 JOHN..XIAN"}} diff --git a/AY2324S2-CS2103T-T16-2_tp_master/authorship.json b/AY2324S2-CS2103T-T16-2_tp_master/authorship.json index b2d1ffde..32ce6937 100644 --- a/AY2324S2-CS2103T-T16-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T16-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-T16-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-T16-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"# FriendFolio","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"## Description","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"* The project simulates an ongoing software project for a desktop application (called _FriendFolio_) used for managing","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" contact details.","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC)","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":3,"zhekaiii":9}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" implementation group: \u0027com.google.zxing\u0027, name: \u0027core\u0027, version: \u00273.3.2\u0027","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" archiveFileName \u003d \u0027friendfolio.jar\u0027","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"run {","lastModifiedDate":"2024-03-28"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-28"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"-":71,"zhekaiii":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":"zhekaiii"},"content":"### Lim Zhekai","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"\u003cimg src\u003d\"images/zhekaiii.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"[[github](https://github.com/zhekaiii)]","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"[[portfolio](team/zhekaiii.md)]","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"* Role: Developer","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"* Responsibilities: Code Reviews \u0026 Backend","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"### Alvin Ng","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"\u003cimg src\u003d\"images/alvinnzz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"[[github](http://github.com/alvinnzz)]","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"[[portfolio](team/alvinnzz.md)]","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":"### Oon Jie Rui","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":"\u003cimg src\u003d\"images/jerryo3.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":"[[github](https://github.com/jerryo3)]","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":"[[portfolio](team/jerryo3.md)]","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"### Newton Koh","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":"\u003cimg src\u003d\"images/newtonkoh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":"[[github](http://github.com/newtonkoh)]","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":"[[portfolio](team/newtonkoh.md)]","lastModifiedDate":"2024-03-12"},{"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: UI","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"alvinnzz":5,"NewtonKoh":4,"JerryO3":5,"-":30,"zhekaiii":6}},{"path":"docs/DevOps.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: DevOps guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" outdated*.\u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" * `./gradlew test`— Runs all tests","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * `./gradlew clean test`— Cleans the project and runs tests","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":"data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"about the coverage of your tests.","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"check the code coverage levels periodically and take corrective actions if the coverage level falls below desired","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":"levels.","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"To enable Codecov for forks of this project, follow the steps given","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":56,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"files used in the build process, these repository-wide checks cover all files in the repository. They check for","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":"repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":"as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root","lastModifiedDate":"2024-03-25"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":"directory:","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" the rest.","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":83,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":"1. Update the version number","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" in [`MainApp.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" created.","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"-":64,"zhekaiii":30}},{"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":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"[//]: # (* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well})","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"* https://github.com/poonchuanan/Python-PayNow-QR-Code-Generator was referred to for the format of PayNow QR codes as","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" well as the CRC-16 algorithm.","lastModifiedDate":"2024-03-28"},{"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":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"and edit diagrams.","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":"**`Main`** (consisting of","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"classes [`Main`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/Main.java)","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"and [`MainApp`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/MainApp.java)) is","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"in charge of the app launch and shut down.","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"the command `delete 1`.","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"NewtonKoh"},"content":"The UI component has been enhanced with the addition of a new `DisplayCard` element. This element is responsible for","lastModifiedDate":"2024-03-28"},{"lineNumber":87,"author":{"gitId":"NewtonKoh"},"content":"displaying the currently selected contact\u0027s detailed information, enhancing the user experience by providing a more","lastModifiedDate":"2024-03-28"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":"interactive and comprehensive view of contact details.","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":"The **API** of this component is specified","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":"in [`Ui.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":"The UI consists of a `MainWindow` that is made up of parts","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":"e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc, and the newly added `DisplayCard`.","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":"All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":"between classes that represent parts of the visible GUI.","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":"are in the `src/main/resources/view` folder. For example, the layout of","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":"the [`MainWindow`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":"is specified","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":"in [`MainWindow.fxml`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"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":110,"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":111,"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":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":"**","lastModifiedDate":"2024-03-28"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":"API** : [`Logic.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-28"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":"call as an example.","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"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":128,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"zhekaiii"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"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":137,"author":{"gitId":"zhekaiii"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"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":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":141,"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":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" a `Command` object.","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":"Directly executing commands without user input:","lastModifiedDate":"2024-03-28"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":"* The application has instances where some function might be performed on a button click instead of a user input.","lastModifiedDate":"2024-03-28"},{"lineNumber":157,"author":{"gitId":"NewtonKoh"},"content":"* In such cases, the flow bypasses the need to parse a user input, and we directly pass a `Command` object into","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":" the `Logic` class to be executed.","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":160,"author":{"gitId":"NewtonKoh"},"content":"The following sequence diagram illustrates how the components interact with each other when a user clicks on a button to","lastModifiedDate":"2024-03-28"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":"reset the debt they have with a specific `Person`.","lastModifiedDate":"2024-03-28"},{"lineNumber":162,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":"![Interactions for when a ResetDebtCommand is manually executed](images/ResetDebtSequenceDiagram.png)","lastModifiedDate":"2024-03-28"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"NewtonKoh"},"content":"**","lastModifiedDate":"2024-03-28"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":"API** : [`Model.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-28"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"NewtonKoh"},"content":"* stores a separate _sorted_ list of `Person` objects (e.g., results of a sort query) which is then used to construct","lastModifiedDate":"2024-03-28"},{"lineNumber":177,"author":{"gitId":"NewtonKoh"},"content":" the filtered list below","lastModifiedDate":"2024-03-28"},{"lineNumber":178,"author":{"gitId":"NewtonKoh"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-28"},{"lineNumber":179,"author":{"gitId":"NewtonKoh"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-28"},{"lineNumber":180,"author":{"gitId":"NewtonKoh"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-28"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":" a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"NewtonKoh"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-03-28"},{"lineNumber":184,"author":{"gitId":"NewtonKoh"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-03-28"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"NewtonKoh"},"content":"**","lastModifiedDate":"2024-03-28"},{"lineNumber":195,"author":{"gitId":"NewtonKoh"},"content":"API** : [`Storage.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-28"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":199,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"zhekaiii"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"zhekaiii"},"content":" objects.","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"zhekaiii"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"zhekaiii"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"zhekaiii"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"zhekaiii"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"JerryO3"},"content":"### Filter feature","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"JerryO3"},"content":"FriendFolio can filter contacts by tags, days available (in a week) and by name.","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"JerryO3"},"content":"Filter commands can also specify whether the filter is any-match or all-match with respect to the keywords using ","lastModifiedDate":"2024-04-04"},{"lineNumber":222,"author":{"gitId":"JerryO3"},"content":"the `--all` flag (it is by default any-match).","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":224,"author":{"gitId":"JerryO3"},"content":"Note that the `--all` flag is implemented using ArgumentMultimap, and it must be placed at the end of the command, ","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"JerryO3"},"content":"for example:","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":227,"author":{"gitId":"JerryO3"},"content":"`filter tag friends colleagues --all`","lastModifiedDate":"2024-04-04"},{"lineNumber":228,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":229,"author":{"gitId":"JerryO3"},"content":"Any text after `--all` is not parsed, but will produce the same result as the above command instead of throwing an error.","lastModifiedDate":"2024-04-04"},{"lineNumber":230,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":231,"author":{"gitId":"JerryO3"},"content":"To reduce code duplication, an abstract Filter class extracts identical methods of all 3 commands. Each command now inherits","lastModifiedDate":"2024-03-29"},{"lineNumber":232,"author":{"gitId":"JerryO3"},"content":"from Filter, and has their own error messages and command specific information. They also set the predicate to the ","lastModifiedDate":"2024-03-29"},{"lineNumber":233,"author":{"gitId":"JerryO3"},"content":"appropriate type on initialization using the setPredicate function provided in Filter.","lastModifiedDate":"2024-03-29"},{"lineNumber":234,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":235,"author":{"gitId":"JerryO3"},"content":"Refer to the below class diagram to visualize the relationships between Filter, inheriting filter commands and predicates.","lastModifiedDate":"2024-03-29"},{"lineNumber":236,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"JerryO3"},"content":"\u003cimg src\u003d\"images/FilterClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"JerryO3"},"content":"## FriendFolio Predicates","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"JerryO3"},"content":"Predicates in FriendFolio take in both a list of keywords to match, and a boolean to handle the all-match condition.","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"NewtonKoh"},"content":"### Remark Command","lastModifiedDate":"2024-03-28"},{"lineNumber":244,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":245,"author":{"gitId":"NewtonKoh"},"content":"#### Introduction","lastModifiedDate":"2024-03-28"},{"lineNumber":246,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":247,"author":{"gitId":"NewtonKoh"},"content":"The Remark Command allows users to add or remove remarks for a person in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":248,"author":{"gitId":"NewtonKoh"},"content":"This feature enhances the app\u0027s usability by enabling users to store additional information about a contact that doesn\u0027t","lastModifiedDate":"2024-03-28"},{"lineNumber":249,"author":{"gitId":"NewtonKoh"},"content":"fit into the standard fields like name, phone, or email.","lastModifiedDate":"2024-03-28"},{"lineNumber":250,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":251,"author":{"gitId":"NewtonKoh"},"content":"#### Implementation","lastModifiedDate":"2024-03-28"},{"lineNumber":252,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":253,"author":{"gitId":"NewtonKoh"},"content":"The RemarkCommand is implemented in the following steps:","lastModifiedDate":"2024-03-28"},{"lineNumber":254,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":255,"author":{"gitId":"NewtonKoh"},"content":"1. The user inputs a command in the format remark `INDEX r/REMARK`, where `INDEX` is the position of the person in the","lastModifiedDate":"2024-03-28"},{"lineNumber":256,"author":{"gitId":"NewtonKoh"},"content":" current","lastModifiedDate":"2024-03-28"},{"lineNumber":257,"author":{"gitId":"NewtonKoh"},"content":" list, and `REMARK` is the new remark for the person.","lastModifiedDate":"2024-03-28"},{"lineNumber":258,"author":{"gitId":"NewtonKoh"},"content":"2. The AddressBookParser parses the input and creates a new `RemarkCommand` object.","lastModifiedDate":"2024-03-28"},{"lineNumber":259,"author":{"gitId":"NewtonKoh"},"content":" The `RemarkCommand` executes by:","lastModifiedDate":"2024-03-28"},{"lineNumber":260,"author":{"gitId":"NewtonKoh"},"content":" - Retrieving the person to edit from the model based on the index.","lastModifiedDate":"2024-03-28"},{"lineNumber":261,"author":{"gitId":"NewtonKoh"},"content":" - Creating a new Person object with the updated remark and other details unchanged.","lastModifiedDate":"2024-03-28"},{"lineNumber":262,"author":{"gitId":"NewtonKoh"},"content":" - Replacing the old person object in the model with the updated one.","lastModifiedDate":"2024-03-28"},{"lineNumber":263,"author":{"gitId":"NewtonKoh"},"content":"3. The UI is then updated to display the person\u0027s details with the new remark.","lastModifiedDate":"2024-03-28"},{"lineNumber":264,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":265,"author":{"gitId":"NewtonKoh"},"content":"This implementation ensures that the app\u0027s performance is unaffected by the addition of remarks, as it reuses the","lastModifiedDate":"2024-03-28"},{"lineNumber":266,"author":{"gitId":"NewtonKoh"},"content":"existing infrastructure for modifying person details.","lastModifiedDate":"2024-03-28"},{"lineNumber":267,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":268,"author":{"gitId":"NewtonKoh"},"content":"#### Alternatives Considered","lastModifiedDate":"2024-03-28"},{"lineNumber":269,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":270,"author":{"gitId":"NewtonKoh"},"content":"1. Storing Remarks Separately: Initially considered storing remarks in a separate map with the Person as the key.","lastModifiedDate":"2024-03-28"},{"lineNumber":271,"author":{"gitId":"NewtonKoh"},"content":" This approach was discarded because it complicated the model\u0027s state management and increased the risk of data","lastModifiedDate":"2024-03-28"},{"lineNumber":272,"author":{"gitId":"NewtonKoh"},"content":" inconsistency.","lastModifiedDate":"2024-03-28"},{"lineNumber":273,"author":{"gitId":"NewtonKoh"},"content":"2. Extending Person Model: Another option was to extend the Person model to include remarks as a mandatory field.","lastModifiedDate":"2024-03-28"},{"lineNumber":274,"author":{"gitId":"NewtonKoh"},"content":" However, this was not ideal as remarks are optional and should not affect the creation of Person objects.","lastModifiedDate":"2024-03-28"},{"lineNumber":275,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":276,"author":{"gitId":"NewtonKoh"},"content":"#### UML Diagram","lastModifiedDate":"2024-03-28"},{"lineNumber":277,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":278,"author":{"gitId":"NewtonKoh"},"content":"To illustrate the interaction between components for the remark command, a sequence diagram is provided:","lastModifiedDate":"2024-03-28"},{"lineNumber":279,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":280,"author":{"gitId":"NewtonKoh"},"content":"\u003cimg src\u003d\"images/RemarkCommandSequenceDiagram.png\" width\u003d\"700\"/\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":281,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":282,"author":{"gitId":"alvinnzz"},"content":"### Split Command","lastModifiedDate":"2024-03-25"},{"lineNumber":283,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":284,"author":{"gitId":"alvinnzz"},"content":"#### Implementation Overview","lastModifiedDate":"2024-03-30"},{"lineNumber":285,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":286,"author":{"gitId":"alvinnzz"},"content":"After the `AddressBookParser` identifies that the user\u0027s input is calling the `split` command word, it creates a","lastModifiedDate":"2024-03-25"},{"lineNumber":287,"author":{"gitId":"alvinnzz"},"content":"`SplitCommandParser`. The `SplitCommandParser` then parses the user\u0027s input and creates a new `SplitCommand`","lastModifiedDate":"2024-03-25"},{"lineNumber":288,"author":{"gitId":"alvinnzz"},"content":"containing at least one `Index`. The `SplitCommand` is then executed by `Logic Manager`, which updates the","lastModifiedDate":"2024-03-25"},{"lineNumber":289,"author":{"gitId":"alvinnzz"},"content":"`MoneyOwed` attribute in `Person`. A `CommandResult` which stores the message of the outcome of split command is","lastModifiedDate":"2024-03-25"},{"lineNumber":290,"author":{"gitId":"alvinnzz"},"content":"then returned. Part of the class diagram is shown below.","lastModifiedDate":"2024-03-25"},{"lineNumber":291,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":292,"author":{"gitId":"alvinnzz"},"content":"\u003cimg src\u003d\"images/SplitClassDiagram.png\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":293,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":294,"author":{"gitId":"alvinnzz"},"content":"The following activity diagram sums up the workflow of what happens when the user keys in a split command.","lastModifiedDate":"2024-03-28"},{"lineNumber":295,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":296,"author":{"gitId":"alvinnzz"},"content":"\u003cimg src\u003d\"images/SplitActivityDiagram.png\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":297,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":298,"author":{"gitId":"alvinnzz"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-30"},{"lineNumber":299,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":300,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":301,"author":{"gitId":"zhekaiii"},"content":"### PayNow","lastModifiedDate":"2024-03-28"},{"lineNumber":302,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":303,"author":{"gitId":"NewtonKoh"},"content":"PayNow QR codes are basically encoded string, further encoded into a QR code. The string follow a specific format and","lastModifiedDate":"2024-03-28"},{"lineNumber":304,"author":{"gitId":"NewtonKoh"},"content":"can be generated offline. The specifications of the format have been referenced","lastModifiedDate":"2024-03-28"},{"lineNumber":305,"author":{"gitId":"NewtonKoh"},"content":"from [this repo](https://github.com/poonchuanan/Python-PayNow-QR-Code-Generator).","lastModifiedDate":"2024-03-28"},{"lineNumber":306,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":307,"author":{"gitId":"NewtonKoh"},"content":"Basically, the string represents an object (similar to JSON) and it contains \"fields\" (similar to JSON attributes). In","lastModifiedDate":"2024-03-28"},{"lineNumber":308,"author":{"gitId":"NewtonKoh"},"content":"one of the required fields is a nested object.","lastModifiedDate":"2024-03-28"},{"lineNumber":309,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":310,"author":{"gitId":"zhekaiii"},"content":"The class diagram is as such:","lastModifiedDate":"2024-03-28"},{"lineNumber":311,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":312,"author":{"gitId":"zhekaiii"},"content":"![PayNow Code modelling](images/PayNowDiagram.png)","lastModifiedDate":"2024-03-28"},{"lineNumber":313,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":314,"author":{"gitId":"NewtonKoh"},"content":"`PayNowPayload` is the aforementioned representation of an object. One `PayNowPayload` can contain","lastModifiedDate":"2024-03-28"},{"lineNumber":315,"author":{"gitId":"NewtonKoh"},"content":"multiple `PaynowField`s.","lastModifiedDate":"2024-03-28"},{"lineNumber":316,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":317,"author":{"gitId":"NewtonKoh"},"content":"`PayNowCode` is what we encode into the QR code that we can then scan. One of the fields contain","lastModifiedDate":"2024-03-28"},{"lineNumber":318,"author":{"gitId":"NewtonKoh"},"content":"a `MerchantAccountInformation`, which is also a `PayNowPayload` itself (which is the nested object that had been","lastModifiedDate":"2024-03-28"},{"lineNumber":319,"author":{"gitId":"NewtonKoh"},"content":"mentioned above).","lastModifiedDate":"2024-03-28"},{"lineNumber":320,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":321,"author":{"gitId":"NewtonKoh"},"content":"We then call PayNowCode\u0027s static method, passing in a phone number and an initial amount (that will be autofilled when","lastModifiedDate":"2024-03-28"},{"lineNumber":322,"author":{"gitId":"NewtonKoh"},"content":"users scan the QR code with their banking application), to generate the QR code.","lastModifiedDate":"2024-03-28"},{"lineNumber":323,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":324,"author":{"gitId":"zhekaiii"},"content":"[//]: # ([insert next UML here])","lastModifiedDate":"2024-03-28"},{"lineNumber":325,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":326,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"zhekaiii"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-03-13"},{"lineNumber":331,"author":{"gitId":"zhekaiii"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-03-13"},{"lineNumber":332,"author":{"gitId":"zhekaiii"},"content":"following operations:","lastModifiedDate":"2024-03-13"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"zhekaiii"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-03-13"},{"lineNumber":335,"author":{"gitId":"zhekaiii"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-03-13"},{"lineNumber":336,"author":{"gitId":"zhekaiii"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-13"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"zhekaiii"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()`","lastModifiedDate":"2024-03-13"},{"lineNumber":339,"author":{"gitId":"zhekaiii"},"content":"and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-03-13"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"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":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"zhekaiii"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-13"},{"lineNumber":344,"author":{"gitId":"zhekaiii"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-13"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"zhekaiii"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command","lastModifiedDate":"2024-03-13"},{"lineNumber":349,"author":{"gitId":"zhekaiii"},"content":"calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes","lastModifiedDate":"2024-03-13"},{"lineNumber":350,"author":{"gitId":"zhekaiii"},"content":"to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book","lastModifiedDate":"2024-03-13"},{"lineNumber":351,"author":{"gitId":"zhekaiii"},"content":"state.","lastModifiedDate":"2024-03-13"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"zhekaiii"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also","lastModifiedDate":"2024-03-13"},{"lineNumber":356,"author":{"gitId":"zhekaiii"},"content":"calls `Model#commitAddressBook()`, causing another modified address book state to be saved into","lastModifiedDate":"2024-03-13"},{"lineNumber":357,"author":{"gitId":"zhekaiii"},"content":"the `addressBookStateList`.","lastModifiedDate":"2024-03-13"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"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":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"zhekaiii"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing","lastModifiedDate":"2024-03-13"},{"lineNumber":366,"author":{"gitId":"zhekaiii"},"content":"the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer`","lastModifiedDate":"2024-03-13"},{"lineNumber":367,"author":{"gitId":"zhekaiii"},"content":"once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-13"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"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":372,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"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":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":386,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":388,"author":{"gitId":"zhekaiii"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-03-13"},{"lineNumber":389,"author":{"gitId":"zhekaiii"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-03-13"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"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":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"zhekaiii"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such","lastModifiedDate":"2024-03-13"},{"lineNumber":396,"author":{"gitId":"zhekaiii"},"content":"as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`.","lastModifiedDate":"2024-03-13"},{"lineNumber":397,"author":{"gitId":"zhekaiii"},"content":"Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-13"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"zhekaiii"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-03-13"},{"lineNumber":402,"author":{"gitId":"zhekaiii"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-03-13"},{"lineNumber":403,"author":{"gitId":"zhekaiii"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-03-13"},{"lineNumber":404,"author":{"gitId":"zhekaiii"},"content":"desktop applications follow.","lastModifiedDate":"2024-03-13"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":438,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":439,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":440,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"JerryO3"},"content":"NUS students who want to coordinate weekly meetup sessions for meals/activities","lastModifiedDate":"2024-03-11"},{"lineNumber":451,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":452,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":456,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"JerryO3"},"content":"* would like to know who is available on a particular day of the week","lastModifiedDate":"2024-03-11"},{"lineNumber":458,"author":{"gitId":"JerryO3"},"content":"* would like to know how much he owes to/is owed by his contacts","lastModifiedDate":"2024-03-11"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"zhekaiii"},"content":"**Value proposition**: FriendFolio tailors the contact management experience just for students. It streamlines","lastModifiedDate":"2024-03-13"},{"lineNumber":461,"author":{"gitId":"zhekaiii"},"content":"connections, enhances academic collaborations, and fosters a vibrant community within their reach. FriendFolio elevates","lastModifiedDate":"2024-03-13"},{"lineNumber":462,"author":{"gitId":"zhekaiii"},"content":"the networking game, making every interaction meaningful.","lastModifiedDate":"2024-03-13"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"JerryO3"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ | Notes |","lastModifiedDate":"2024-03-11"},{"lineNumber":469,"author":{"gitId":"zhekaiii"},"content":"|----------|--------------------------------------------|-------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------------------------|","lastModifiedDate":"2024-03-13"},{"lineNumber":470,"author":{"gitId":"JerryO3"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | |","lastModifiedDate":"2024-03-11"},{"lineNumber":471,"author":{"gitId":"JerryO3"},"content":"| `* * *` | user | add a new person | | |","lastModifiedDate":"2024-03-11"},{"lineNumber":472,"author":{"gitId":"JerryO3"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need | |","lastModifiedDate":"2024-03-11"},{"lineNumber":473,"author":{"gitId":"JerryO3"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | |","lastModifiedDate":"2024-03-11"},{"lineNumber":474,"author":{"gitId":"JerryO3"},"content":"| `* * *` | user | view person\u0027s information | | |","lastModifiedDate":"2024-03-11"},{"lineNumber":475,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | |","lastModifiedDate":"2024-03-11"},{"lineNumber":476,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store days that my contacts are in school | see who is free to meet up | |","lastModifiedDate":"2024-03-11"},{"lineNumber":477,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store the phone numbers of our contacts | be able to call our contacts | |","lastModifiedDate":"2024-03-11"},{"lineNumber":478,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store address | be able to visit them | |","lastModifiedDate":"2024-03-11"},{"lineNumber":479,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store tags | be able to store miscellaneous information about them | |","lastModifiedDate":"2024-03-11"},{"lineNumber":480,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store email | email them | |","lastModifiedDate":"2024-03-11"},{"lineNumber":481,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store money owed | remember who owes me money | |","lastModifiedDate":"2024-03-11"},{"lineNumber":482,"author":{"gitId":"JerryO3"},"content":"| `* *` | forgetful user | store birthdays of my contacts | not forget when their birthdays are | |","lastModifiedDate":"2024-03-11"},{"lineNumber":483,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store uncategorized information under a field | remember other information that may not be captured in the existing list of fields | “newton doesn’t eat beef” |","lastModifiedDate":"2024-03-11"},{"lineNumber":484,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | edit person\u0027s information | correct mistakes made when I added the contact | |","lastModifiedDate":"2024-03-11"},{"lineNumber":485,"author":{"gitId":"JerryO3"},"content":"| `* *` | user with many persons in the address book | sort persons by name | locate a person easily | |","lastModifiedDate":"2024-03-11"},{"lineNumber":486,"author":{"gitId":"JerryO3"},"content":"| `*` | user | filter contacts by tags | find contacts of specific categories such as family, friends | |","lastModifiedDate":"2024-03-11"},{"lineNumber":487,"author":{"gitId":"JerryO3"},"content":"| `*` | user | update money owed | | |","lastModifiedDate":"2024-03-11"},{"lineNumber":488,"author":{"gitId":"JerryO3"},"content":"| `*` | user | sort contacts by money owed | look at who owes me the most money | |","lastModifiedDate":"2024-03-11"},{"lineNumber":489,"author":{"gitId":"JerryO3"},"content":"| `*` | user | sort contacts by birthdays | remember to wish the person for his birthday | |","lastModifiedDate":"2024-03-11"},{"lineNumber":490,"author":{"gitId":"JerryO3"},"content":"| `*` | user | filter contacts by days that my contacts are in school | see who is free to meet up more easily | |","lastModifiedDate":"2024-03-11"},{"lineNumber":491,"author":{"gitId":"JerryO3"},"content":"| `*` | user | be warned of creating contacts with duplicate phone numbers | to avoid making duplicate contacts | |","lastModifiedDate":"2024-03-11"},{"lineNumber":492,"author":{"gitId":"JerryO3"},"content":"| `*` | user | share/export my contacts | back them up or share them with others | |","lastModifiedDate":"2024-03-11"},{"lineNumber":493,"author":{"gitId":"JerryO3"},"content":"| `*` | user | store profile pictures of my contacts | quickly identify and remember my contact | |","lastModifiedDate":"2024-03-11"},{"lineNumber":494,"author":{"gitId":"JerryO3"},"content":"| `*` | user | see what is the total amount owed to me/i owe to my contacts | start paying up/ asking others to pay stuff for me | |","lastModifiedDate":"2024-03-11"},{"lineNumber":495,"author":{"gitId":"JerryO3"},"content":"| `*` | experienced user | use quick keyboard shortcuts to perform all the implemented functions above | use the address book more efficiently | |","lastModifiedDate":"2024-03-11"},{"lineNumber":496,"author":{"gitId":"JerryO3"},"content":"| `*` | new user | input contact information into multiple separate input fields (instead of entering one command) | i can avoid making mistakes by not being familiar with the command format | |","lastModifiedDate":"2024-03-11"},{"lineNumber":497,"author":{"gitId":"JerryO3"},"content":"| `*` | user | pin starred contacts at the top of the address book | quickly access my favorite contacts | |","lastModifiedDate":"2024-03-11"},{"lineNumber":498,"author":{"gitId":"JerryO3"},"content":"| `*` | user | access my search history on the search bar | quickly access recent searches | |","lastModifiedDate":"2024-03-11"},{"lineNumber":499,"author":{"gitId":"JerryO3"},"content":"| `*` | user | store incomplete contacts as drafts | return to my incomplete contacts to finish them up after any disruption without losing existing keyed-in information | |","lastModifiedDate":"2024-03-11"},{"lineNumber":500,"author":{"gitId":"JerryO3"},"content":"| `*` | user | access my desired contacts via autocomplete in the search bar | efficiently access my contacts in the address book | |","lastModifiedDate":"2024-03-11"},{"lineNumber":501,"author":{"gitId":"JerryO3"},"content":"| `*` | experienced user | add multiple contacts with one input | efficiently use the address book | |","lastModifiedDate":"2024-03-11"},{"lineNumber":502,"author":{"gitId":"JerryO3"},"content":"| `*` | user | remove starred contacts from the top of the address book | remove contacts i no longer want to pin | |","lastModifiedDate":"2024-03-11"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":504,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"zhekaiii"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified","lastModifiedDate":"2024-03-13"},{"lineNumber":509,"author":{"gitId":"zhekaiii"},"content":"otherwise)","lastModifiedDate":"2024-03-13"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":512,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":513,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Add Contact**","lastModifiedDate":"2024-03-12"},{"lineNumber":514,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":515,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User is logged into the system.","lastModifiedDate":"2024-03-12"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"NewtonKoh"},"content":"1. User selects the option to add a new contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":520,"author":{"gitId":"NewtonKoh"},"content":"2. User enters the contact\u0027s name, phone number, and any other optional information.","lastModifiedDate":"2024-03-12"},{"lineNumber":521,"author":{"gitId":"NewtonKoh"},"content":"3. System validates the provided information.","lastModifiedDate":"2024-03-12"},{"lineNumber":522,"author":{"gitId":"NewtonKoh"},"content":"4. System adds the new contact to the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":523,"author":{"gitId":"NewtonKoh"},"content":"5. System displays a confirmation message.","lastModifiedDate":"2024-03-12"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** A new contact is added to the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":526,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":527,"author":{"gitId":"NewtonKoh"},"content":"***Alternate Flows:*** If the information fails validation, the system notifies the user and requests correct data.","lastModifiedDate":"2024-03-12"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":529,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":530,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":531,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Delete Contact**","lastModifiedDate":"2024-03-12"},{"lineNumber":532,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":533,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User is logged into the system and the address book contains at least one contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":535,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":537,"author":{"gitId":"NewtonKoh"},"content":"1. User requests a list of contacts and selects one to delete.","lastModifiedDate":"2024-03-12"},{"lineNumber":538,"author":{"gitId":"NewtonKoh"},"content":"2. System requests confirmation for deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":539,"author":{"gitId":"NewtonKoh"},"content":"3. User confirms.","lastModifiedDate":"2024-03-12"},{"lineNumber":540,"author":{"gitId":"NewtonKoh"},"content":"4. System deletes the selected contact from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":541,"author":{"gitId":"NewtonKoh"},"content":"5. System displays a confirmation message.","lastModifiedDate":"2024-03-12"},{"lineNumber":542,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":543,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The selected contact is removed from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":544,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":545,"author":{"gitId":"NewtonKoh"},"content":"***Alternate Flows:*** If the user cancels the deletion, no action is taken.","lastModifiedDate":"2024-03-12"},{"lineNumber":546,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":547,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":548,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":549,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Edit Contact**","lastModifiedDate":"2024-03-12"},{"lineNumber":550,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":551,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User is logged into the system and the address book contains at least one contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":552,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":553,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":554,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":555,"author":{"gitId":"NewtonKoh"},"content":"1. User requests to edit a contact and selects one from the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":556,"author":{"gitId":"NewtonKoh"},"content":"2. System displays the selected contact’s current information.","lastModifiedDate":"2024-03-12"},{"lineNumber":557,"author":{"gitId":"NewtonKoh"},"content":"3. User updates the necessary information.","lastModifiedDate":"2024-03-12"},{"lineNumber":558,"author":{"gitId":"NewtonKoh"},"content":"4. System validates the updated information.","lastModifiedDate":"2024-03-12"},{"lineNumber":559,"author":{"gitId":"NewtonKoh"},"content":"5. System updates the contact details in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":560,"author":{"gitId":"NewtonKoh"},"content":"6. System displays a confirmation message.","lastModifiedDate":"2024-03-12"},{"lineNumber":561,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":562,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The selected contact\u0027s information is updated in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":563,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":564,"author":{"gitId":"zhekaiii"},"content":"***Alternate Flows:*** If the updated information fails validation, the system notifies the user and requests correct","lastModifiedDate":"2024-03-13"},{"lineNumber":565,"author":{"gitId":"zhekaiii"},"content":"data.","lastModifiedDate":"2024-03-13"},{"lineNumber":566,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":567,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":568,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":569,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Phone Number**","lastModifiedDate":"2024-03-12"},{"lineNumber":570,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":571,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":572,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":573,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":574,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":575,"author":{"gitId":"NewtonKoh"},"content":"1. User provides a phone number for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":576,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the phone number format.","lastModifiedDate":"2024-03-12"},{"lineNumber":577,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the phone number with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":578,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":579,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s phone number is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":580,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":581,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":582,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":583,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: View Contacts**","lastModifiedDate":"2024-03-12"},{"lineNumber":584,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":585,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User is logged into the system.","lastModifiedDate":"2024-03-12"},{"lineNumber":586,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":587,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":588,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":589,"author":{"gitId":"NewtonKoh"},"content":"1. User selects the option to view contacts.","lastModifiedDate":"2024-03-12"},{"lineNumber":590,"author":{"gitId":"NewtonKoh"},"content":"2. System retrieves and displays all contacts from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":591,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":592,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** User views the list of all contacts in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":593,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":594,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":595,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":596,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Address**","lastModifiedDate":"2024-03-12"},{"lineNumber":597,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":598,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":599,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":600,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":601,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":602,"author":{"gitId":"NewtonKoh"},"content":"1. User provides an address for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":603,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the address format.","lastModifiedDate":"2024-03-12"},{"lineNumber":604,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the address with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":605,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":606,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s address is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":607,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":608,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":609,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":610,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Tags**","lastModifiedDate":"2024-03-12"},{"lineNumber":611,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":612,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":613,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":614,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":615,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":616,"author":{"gitId":"NewtonKoh"},"content":"1. User provides one or more tags for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":617,"author":{"gitId":"NewtonKoh"},"content":"2. System stores the tags with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":618,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":619,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s tags are stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":620,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":621,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":622,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":623,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Email**","lastModifiedDate":"2024-03-12"},{"lineNumber":624,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":625,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":626,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":627,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":628,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":629,"author":{"gitId":"NewtonKoh"},"content":"1. User provides an email address for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":630,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the email format.","lastModifiedDate":"2024-03-12"},{"lineNumber":631,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the email with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":632,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":633,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s email address is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":634,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":635,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":636,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":637,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Money Owed**","lastModifiedDate":"2024-03-12"},{"lineNumber":638,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":639,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":640,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":641,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":642,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":643,"author":{"gitId":"NewtonKoh"},"content":"1. User provides an amount of money owed for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":644,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the money format.","lastModifiedDate":"2024-03-12"},{"lineNumber":645,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the money owed information with the contact’s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":646,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":647,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s money owed information is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":648,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":649,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":650,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":651,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Birthday**","lastModifiedDate":"2024-03-12"},{"lineNumber":652,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":653,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":654,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":655,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":656,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":657,"author":{"gitId":"NewtonKoh"},"content":"1. User provides a birthday for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":658,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the birthday format.","lastModifiedDate":"2024-03-12"},{"lineNumber":659,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the birthday with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":660,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":661,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s birthday is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":662,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":663,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":664,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":665,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Remarks**","lastModifiedDate":"2024-03-12"},{"lineNumber":666,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":667,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":668,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":669,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":670,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":671,"author":{"gitId":"NewtonKoh"},"content":"1. User provides some remarks for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":672,"author":{"gitId":"NewtonKoh"},"content":"2. System stores the remarks with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":673,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":674,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s remarks are stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":675,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":676,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":678,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":680,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":682,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":684,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":685,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":686,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":687,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":688,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":689,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":690,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":692,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":693,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":694,"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":695,"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":696,"author":{"gitId":"zhekaiii"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-03-13"},{"lineNumber":697,"author":{"gitId":"zhekaiii"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-13"},{"lineNumber":698,"author":{"gitId":"zhekaiii"},"content":"4. Should remain functional in the event that the user types in an invalid command.","lastModifiedDate":"2024-03-13"},{"lineNumber":699,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":700,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":702,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":704,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":705,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":706,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":707,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":709,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":710,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":711,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":713,"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":714,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":715,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":716,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":717,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":718,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":719,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":720,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":721,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":722,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":723,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":724,"author":{"gitId":"zhekaiii"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-03-13"},{"lineNumber":725,"author":{"gitId":"zhekaiii"},"content":" optimum.","lastModifiedDate":"2024-03-13"},{"lineNumber":726,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":727,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":728,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":729,"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":730,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":731,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":732,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":733,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":734,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":735,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":736,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":737,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":738,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":739,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":740,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":741,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":742,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":743,"author":{"gitId":"zhekaiii"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-03-13"},{"lineNumber":744,"author":{"gitId":"zhekaiii"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-13"},{"lineNumber":745,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":746,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":747,"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":748,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":749,"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":750,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":751,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":752,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":753,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":754,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":755,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":756,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":757,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":758,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":759,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":760,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"NewtonKoh":232,"alvinnzz":19,"JerryO3":62,"-":331,"zhekaiii":116}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"title: Using FriendFolio","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"***Welcome to FriendFolio!***","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"Congratulations on joining the FriendFolio community! We\u0027re thrilled to have you on board. FriendFolio isn\u0027t just your","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"ordinary address book; it\u0027s your ultimate companion for staying organized, managing finances between friends, and","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"syncing up with your buddies\u0027 school schedules effortlessly.","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"This user guide is designed to help you navigate every feature of FriendFolio with ease, ensuring you make the most","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"out of your experience. So sit back, relax, and let\u0027s dive into the exciting world of FriendFolio!","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"Happy organizing,","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"The FriendFolio Dev Team","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"***Why This User Guide Matters***","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"While FriendFolio is designed to be intuitive and user-friendly, taking a few moments to familiarize yourself with this","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"guide will significantly enhance your overall experience. Here\u0027s why:","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"**Unlock Hidden Features**: Uncover useful FriendFolio features that go beyond your everyday address book app and","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"leverage FriendFolio to its full potential.","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"**Streamline Your Experience**: Find useful tips to streamline your FriendFolio experience and navigate the app","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":"effortlessly, saving time and frustration.","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"**Maximize Efficiency**: Gain valuable insights and best practices to ensure FriendFolio maximizes efficiency in your","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":"social interactions.","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":"In essence, this user guide isn\u0027t just a manual – it\u0027s your key to unlocking the full potential of FriendFolio and","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":"revolutionizing the way you connect with friends. So don\u0027t overlook its importance; dive in, explore, and elevate your","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"FriendFolio experience today!","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":"***A Quick Overview***","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"FriendFolio is a **desktop CLI (Command Line Interface)-optimized app** with intuitive GUI (Graphical User Interface)","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":"elements for managing contacts which can **track both your finances** and your **friends’ availabilities**, with a","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":"singular focus of streamlining student life by simplifying tasks like splitting bills between friends, ensuring users","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":"can effortlessly manage their finances and social engagements.","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":"**Table of Contents:**","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"1. [Getting Started](#getting-started)","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"2. [Useful Features](#features)","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" 1. [User Interface Overview](#user-interface-overview)","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" 2. [Command Overview](#command-overview)","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" 1. [`Help` Command](#viewing-help-help)","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" 2. [`Add` Command](#adding-a-person-add)","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" 3. [`List` Command](#listing-all-persons-list)","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" 4. [`Edit` Command](#editing-a-person-edit)","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" 5. [`Delete` Command](#deleting-a-person-delete)","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" 6. [`Filter` Command](#filtering-based-on-selected-attributes--filter)","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" 7. [`Lend` Command](#lending-an-amount--lend)","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" 8. [`Split` Command](#splitting-an-amount-owed-split)","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" 9. [`Sort` Command](#sorting-contacts-sort)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" 10. [`Pay` Command](#generating-payment-qr-code--pay)","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" 11. [`Clear` Command](#clearing-all-entries-clear)","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" 12. [`Remark` Command](#adding-or-editing-a-remark-remark)","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" 13. [`Exit` Command](#exiting-the-program-exit)","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" 4. [Saving Data Files](#saving-the-data)","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" 5. [Editing Data Files](#editing-the-data-file)","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" 6. Exporting Data (Coming soon)","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":"3. [FAQs](#faq)","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":"4. [Known Issues](#known-issues)","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":"5. [Command Summary](#command-summary)","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":"## Getting Started","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":"2. Download the latest `addressbook.jar` from [here](https://github.com/AY2324S2-CS2103T-T16-2/tp/releases).","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar`","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" open the help window.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe`","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" to the Address Book.","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":"### User Interface Overview","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":"When you launch FriendFolio, you will be greeted with some key information on the dashboard. Let\u0027s walk you through some","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":"of the components in the dashboard!","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":"![Breakdown of Ui](images/UiBreakdown.png)","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":"**Dashboard:**","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"zhekaiii"},"content":"The dashboard gives you an overview of your day. Here are the components of the dashboard.","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":"* The dashboard displays the current time so that you do not have to dart your eyes elsewhere to find out what time it","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"NewtonKoh"},"content":" currently is.","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"NewtonKoh"},"content":"* FriendFolio tells you the number of contacts you have so that you have a sensing of how many contacts you have. The","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":" more, the merrier!","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"NewtonKoh"},"content":"* There is a graph to show you how much you are owed, and how much you owe others. At one glance, you can find out if","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" you need to transfer anyone money, or if you need to chase anyone for payment.","lastModifiedDate":"2024-04-05"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":"* FriendFolio tells you who is available today, so you know if your friends are free to meet you for a meal, or if they","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":" are free to discuss that one group project you all might have been procrastinating on.","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":"**Command Line Interface:**","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":"* At the top of the screen is the command line interface. You can type in commands into the command box and the command","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":" results will be displayed in the box above!","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":"**Contact List:**","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":"* On the left is where you can see your contacts. Clicking on these cards will replace the dashboard with more detailed","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" information the contact that you clicked on. You can unselect the contact by pressing on the `Esc` key.","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" ![Ui of contact information displayed](images/UiContactClicked.png)","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":"## Command Overview","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"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":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" e.g. `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":"* Items that start with `--` are flags that you can use to achieve slightly different outcomes than the default.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" Any redundant text after the flag will be ignored.","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" e.g. `--all`","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"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":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":"* Redundant text/parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`)","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"NewtonKoh"},"content":" will be","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" ignored.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"zhekaiii"},"content":" as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"### Viewing help: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"zhekaiii"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":"Adds a person to the address book. Note that birthdays follow the following format: `dd/mm/yyyy`","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"alvinnzz"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… [b/BIRTHDAY] [$/MONEY_OWED]​`","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"zhekaiii"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/15/02/1999`","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Listing all persons: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"alvinnzz"},"content":"* You can use the `list` command after a `find` command to get back the original list of contacts.","lastModifiedDate":"2024-03-30"},{"lineNumber":198,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":199,"author":{"gitId":"-"},"content":"### Editing a person: `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"zhekaiii"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… [b/BIRTHDAY] [$/MONEYOWED]​`","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"zhekaiii"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"zhekaiii"},"content":" The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"zhekaiii"},"content":"* When editing tags, the existing tags of the person will be removed i.e. adding of tags is not cumulative.","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"zhekaiii"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567`","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"zhekaiii"},"content":" and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"### Deleting a person: `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"alvinnzz"},"content":"### Filtering based on selected attributes: `filter`","lastModifiedDate":"2024-04-03"},{"lineNumber":235,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":236,"author":{"gitId":"JerryO3"},"content":"Filters out the contacts that contain any or all of the keywords.","lastModifiedDate":"2024-04-04"},{"lineNumber":237,"author":{"gitId":"JerryO3"},"content":"You can choose to filter by day available, by name or by tags, and specify if the returned contacts should match any","lastModifiedDate":"2024-04-04"},{"lineNumber":238,"author":{"gitId":"JerryO3"},"content":"or all of the keywords specified using the `--all` optional flag at the end of the command.","lastModifiedDate":"2024-04-04"},{"lineNumber":239,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":240,"author":{"gitId":"alvinnzz"},"content":"Format:","lastModifiedDate":"2024-04-03"},{"lineNumber":241,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"zhekaiii"},"content":"1. `filter tag TAG_NAME... [--all]`","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"zhekaiii"},"content":"2. `filter name PERSON_NAME... [--all]`","lastModifiedDate":"2024-04-04"},{"lineNumber":244,"author":{"gitId":"zhekaiii"},"content":"3. `filter day DAY... [--all]`","lastModifiedDate":"2024-04-04"},{"lineNumber":245,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":246,"author":{"gitId":"alvinnzz"},"content":"* **At least one** keyword `tag`, `name` or `day` needs to be used.","lastModifiedDate":"2024-04-03"},{"lineNumber":247,"author":{"gitId":"JerryO3"},"content":"* If multiple `TAG_NAME`, `PERSON_NAME` or `DAY` is used, the default result","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"alvinnzz"},"content":" returned will be all matching contacts to any of the keywords.","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"zhekaiii"},"content":"* If the `--all` flag is provided, only contacts that match all the keywords will be shown.","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"zhekaiii"},"content":" * Note that any text provided after the flag will be ignored!","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":252,"author":{"gitId":"alvinnzz"},"content":"Examples:","lastModifiedDate":"2024-04-03"},{"lineNumber":253,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"alvinnzz"},"content":"* `filter tag friend` returns all the contacts that has the tag \"friend\" attached to them.","lastModifiedDate":"2024-04-03"},{"lineNumber":255,"author":{"gitId":"alvinnzz"},"content":"* `filter day wednesday friday` returns all the contacts that are available on Wednesday","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"alvinnzz"},"content":" or Friday or both.","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"zhekaiii"},"content":"* `filter day monday tuesday --all` returns all the contacts that are available on both Monday and Tuesday.","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"alvinnzz"},"content":"### Lending an amount: `lend`","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"alvinnzz"},"content":"Lend an amount of money and accumulate it to current amount owed of a person","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"alvinnzz"},"content":"using the displayed index from the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"alvinnzz"},"content":"Format: `lend INDEX $/MONEY_OWED`","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"alvinnzz"},"content":"* Using positive MONEY_OWED means you are lending money to the person,","lastModifiedDate":"2024-04-04"},{"lineNumber":267,"author":{"gitId":"alvinnzz"},"content":" while using negative MONEY_OWED means you are borrowing from the person.","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"alvinnzz"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"alvinnzz"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"alvinnzz"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"alvinnzz"},"content":"* If the first person in the displayed list owes me $3 now,","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"alvinnzz"},"content":" * `lend 1 $/2` \u0026#8594; first person owes me $5 now","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"alvinnzz"},"content":" * `lend 1 $/-1.50` \u0026#8594; first person owes me $0.50 now","lastModifiedDate":"2024-04-04"},{"lineNumber":276,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":277,"author":{"gitId":"alvinnzz"},"content":"### Splitting an amount owed: `split`","lastModifiedDate":"2024-03-25"},{"lineNumber":278,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":279,"author":{"gitId":"alvinnzz"},"content":"Splits the sum of money owed among you and a group of person using the displayed","lastModifiedDate":"2024-03-30"},{"lineNumber":280,"author":{"gitId":"alvinnzz"},"content":"index from the address book, assuming you paid for a bill.","lastModifiedDate":"2024-04-04"},{"lineNumber":281,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":282,"author":{"gitId":"alvinnzz"},"content":"Format: `split INDEX [INDEX]... $/MONEY_OWED`","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":284,"author":{"gitId":"alvinnzz"},"content":"* MONEY_OWED should have **at most 2 decimal places**.","lastModifiedDate":"2024-04-04"},{"lineNumber":285,"author":{"gitId":"alvinnzz"},"content":"* There must be **at least 1 index**.","lastModifiedDate":"2024-04-03"},{"lineNumber":286,"author":{"gitId":"alvinnzz"},"content":"* The amount will be evenly distributed among you and the group of people with index mentioned","lastModifiedDate":"2024-03-30"},{"lineNumber":287,"author":{"gitId":"alvinnzz"},"content":" and the split amount will be added on to their current amount of money owed.","lastModifiedDate":"2024-03-30"},{"lineNumber":288,"author":{"gitId":"alvinnzz"},"content":"* The amount after splitting should be at least $0.01.","lastModifiedDate":"2024-04-04"},{"lineNumber":289,"author":{"gitId":"alvinnzz"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-25"},{"lineNumber":290,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":291,"author":{"gitId":"alvinnzz"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":292,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":293,"author":{"gitId":"alvinnzz"},"content":"* `split 1 2 $/6.60` will split $6.60 evenly among you and two more people which is","lastModifiedDate":"2024-03-30"},{"lineNumber":294,"author":{"gitId":"alvinnzz"},"content":" adding $2.20 to the amount owed of the person at index 1 and 2.","lastModifiedDate":"2024-03-30"},{"lineNumber":295,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":296,"author":{"gitId":"zhekaiii"},"content":"### Sorting contacts: `sort`","lastModifiedDate":"2024-03-26"},{"lineNumber":297,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":298,"author":{"gitId":"zhekaiii"},"content":"Sorts your contacts in one of three sorting methods:","lastModifiedDate":"2024-03-26"},{"lineNumber":299,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":300,"author":{"gitId":"zhekaiii"},"content":"1. Name (`name`)","lastModifiedDate":"2024-03-26"},{"lineNumber":301,"author":{"gitId":"zhekaiii"},"content":"2. Birthday (`birthday`)","lastModifiedDate":"2024-03-26"},{"lineNumber":302,"author":{"gitId":"zhekaiii"},"content":"3. Money Owed (`money`)","lastModifiedDate":"2024-03-26"},{"lineNumber":303,"author":{"gitId":"zhekaiii"},"content":"4. Default (`clear`)","lastModifiedDate":"2024-03-26"},{"lineNumber":304,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":305,"author":{"gitId":"zhekaiii"},"content":"Format: `sort SORT_METHOD`","lastModifiedDate":"2024-03-26"},{"lineNumber":306,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":307,"author":{"gitId":"zhekaiii"},"content":"* `SORT_METHOD` should be one of four keywords listed above.","lastModifiedDate":"2024-03-26"},{"lineNumber":308,"author":{"gitId":"zhekaiii"},"content":"* Sorting by name sorts contacts by alphabetical order.","lastModifiedDate":"2024-03-26"},{"lineNumber":309,"author":{"gitId":"NewtonKoh"},"content":"* Sorting by birthday arranges contacts based on their closest birthdays, with those having upcoming birthdays appearing","lastModifiedDate":"2024-04-05"},{"lineNumber":310,"author":{"gitId":"NewtonKoh"},"content":" first. Contacts without saved birthday information are placed at the end of the sorted list.","lastModifiedDate":"2024-04-05"},{"lineNumber":311,"author":{"gitId":"NewtonKoh"},"content":"* Sorting by money owed will prioritize contacts based on the amount owed, with those owed the most money appearing","lastModifiedDate":"2024-04-05"},{"lineNumber":312,"author":{"gitId":"NewtonKoh"},"content":" first, followed by those who owe you the most. Contacts with no money owed to or by them will be placed at the end of","lastModifiedDate":"2024-04-05"},{"lineNumber":313,"author":{"gitId":"NewtonKoh"},"content":" the list.","lastModifiedDate":"2024-04-05"},{"lineNumber":314,"author":{"gitId":"zhekaiii"},"content":"* The default sorting method lists your contacts in order of when you added them into FriendFolio.","lastModifiedDate":"2024-03-26"},{"lineNumber":315,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":316,"author":{"gitId":"alvinnzz"},"content":"### Generating payment QR code: `pay`","lastModifiedDate":"2024-03-30"},{"lineNumber":317,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":318,"author":{"gitId":"alvinnzz"},"content":"Generates a payment QR code for index selected from the displayed list.","lastModifiedDate":"2024-03-30"},{"lineNumber":319,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":320,"author":{"gitId":"alvinnzz"},"content":"Format: `pay INDEX`","lastModifiedDate":"2024-03-30"},{"lineNumber":321,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":322,"author":{"gitId":"alvinnzz"},"content":"* You can use this command on contacts whom you owe money to, scanning the","lastModifiedDate":"2024-03-30"},{"lineNumber":323,"author":{"gitId":"alvinnzz"},"content":" QR code to pay them back.","lastModifiedDate":"2024-03-30"},{"lineNumber":324,"author":{"gitId":"alvinnzz"},"content":"* The index chosen should have a valid Singaporean number.","lastModifiedDate":"2024-03-30"},{"lineNumber":325,"author":{"gitId":"alvinnzz"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-30"},{"lineNumber":326,"author":{"gitId":"alvinnzz"},"content":"* The index should be within the range of the displayed person list.","lastModifiedDate":"2024-03-30"},{"lineNumber":327,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":328,"author":{"gitId":"alvinnzz"},"content":"Examples:","lastModifiedDate":"2024-03-30"},{"lineNumber":329,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":330,"author":{"gitId":"alvinnzz"},"content":"* `pay 3` will generate a QR code for the third person in the displayed person list.","lastModifiedDate":"2024-03-30"},{"lineNumber":331,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":332,"author":{"gitId":"-"},"content":"### Clearing all entries: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"NewtonKoh"},"content":"### **Adding or Editing a Remark: `remark`**","lastModifiedDate":"2024-04-05"},{"lineNumber":339,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":340,"author":{"gitId":"NewtonKoh"},"content":"Edits the remark of a person identified by the index number used in the last person listing. Any existing remark will be","lastModifiedDate":"2024-04-05"},{"lineNumber":341,"author":{"gitId":"NewtonKoh"},"content":"overwritten by the input.","lastModifiedDate":"2024-04-05"},{"lineNumber":342,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":343,"author":{"gitId":"NewtonKoh"},"content":"Format: `remark INDEX r/[REMARK]`","lastModifiedDate":"2024-04-05"},{"lineNumber":344,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":345,"author":{"gitId":"NewtonKoh"},"content":"Parameters:","lastModifiedDate":"2024-04-05"},{"lineNumber":346,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":347,"author":{"gitId":"NewtonKoh"},"content":"- `INDEX`: The index number shown in the displayed person list. Must be a positive integer.","lastModifiedDate":"2024-04-05"},{"lineNumber":348,"author":{"gitId":"NewtonKoh"},"content":"- `r/[REMARK]`: The remark to add or edit for the person. If no remark is desired, leave this blank to remove any","lastModifiedDate":"2024-04-05"},{"lineNumber":349,"author":{"gitId":"NewtonKoh"},"content":" existing remarks.","lastModifiedDate":"2024-04-05"},{"lineNumber":350,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":351,"author":{"gitId":"NewtonKoh"},"content":"Example:","lastModifiedDate":"2024-04-05"},{"lineNumber":352,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":353,"author":{"gitId":"NewtonKoh"},"content":"- `remark 1 r/Likes to swim.` This command edits the remark of the first person in the list to \"Likes to swim.\"","lastModifiedDate":"2024-04-05"},{"lineNumber":354,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":355,"author":{"gitId":"-"},"content":"### Exiting the program: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"zhekaiii"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to","lastModifiedDate":"2024-03-13"},{"lineNumber":364,"author":{"gitId":"zhekaiii"},"content":"save manually.","lastModifiedDate":"2024-03-13"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":368,"author":{"gitId":"zhekaiii"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are","lastModifiedDate":"2024-03-13"},{"lineNumber":369,"author":{"gitId":"zhekaiii"},"content":"welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":371,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":372,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook 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-02-09"},{"lineNumber":373,"author":{"gitId":"zhekaiii"},"content":"Furthermore, certain edits can cause the AddressBook 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-13"},{"lineNumber":374,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"zhekaiii"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains","lastModifiedDate":"2024-03-13"},{"lineNumber":386,"author":{"gitId":"zhekaiii"},"content":"the data of your previous AddressBook home folder.","lastModifiedDate":"2024-03-13"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":392,"author":{"gitId":"zhekaiii"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only","lastModifiedDate":"2024-03-13"},{"lineNumber":393,"author":{"gitId":"zhekaiii"},"content":" the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the","lastModifiedDate":"2024-03-13"},{"lineNumber":394,"author":{"gitId":"zhekaiii"},"content":" application before running the application again.","lastModifiedDate":"2024-03-13"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":396,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":398,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"zhekaiii"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-13"},{"lineNumber":401,"author":{"gitId":"alvinnzz"},"content":"|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-04"},{"lineNumber":402,"author":{"gitId":"alvinnzz"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG] [$/MONEY_OWED] [b/BIRTHDAY]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-04-04"},{"lineNumber":403,"author":{"gitId":"zhekaiii"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-13"},{"lineNumber":404,"author":{"gitId":"zhekaiii"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-13"},{"lineNumber":405,"author":{"gitId":"alvinnzz"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [$/MONEY_OWED] [b/BIRTHDAY] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-04-04"},{"lineNumber":406,"author":{"gitId":"alvinnzz"},"content":"| **Exit** | `exit` |","lastModifiedDate":"2024-04-03"},{"lineNumber":407,"author":{"gitId":"alvinnzz"},"content":"| **Filter** | `filter ATTRIBUTE KEYWORD`\u003cbr\u003e e.g., `filter day wednesday friday`, `filter tag family` |","lastModifiedDate":"2024-04-04"},{"lineNumber":408,"author":{"gitId":"alvinnzz"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-04-03"},{"lineNumber":409,"author":{"gitId":"alvinnzz"},"content":"| **Lend** | `lend INDEX $/MONEY_OWED`\u003cbr\u003e e.g., `lend 1 $/2.50`, `lend 2 $-1.65` |","lastModifiedDate":"2024-04-04"},{"lineNumber":410,"author":{"gitId":"alvinnzz"},"content":"| **List** | `list` |","lastModifiedDate":"2024-04-03"},{"lineNumber":411,"author":{"gitId":"alvinnzz"},"content":"| **Pay** | `pay INDEX`\u003cbr\u003e e.g., `pay 3` |","lastModifiedDate":"2024-04-03"},{"lineNumber":412,"author":{"gitId":"zhekaiii"},"content":"| **Sort** | `sort SORT_METHOD`\u003cbr\u003e e.g., `sort birthday` |","lastModifiedDate":"2024-03-26"},{"lineNumber":413,"author":{"gitId":"zhekaiii"},"content":"| **Split** | `split INDEX [INDEX]… $/MONEY_OWED` \u003cbr\u003e e.g., `split 1 2 $/20.10` |","lastModifiedDate":"2024-03-26"},{"lineNumber":414,"author":{"gitId":"NewtonKoh"},"content":"| **Remark** | `remark INDEX r/[REMARK]` \u003cbr\u003e e.g., `remark 1 r/Likes to swim.` |","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"NewtonKoh":56,"alvinnzz":76,"JerryO3":24,"-":149,"zhekaiii":109}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","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":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","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":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","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":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":246,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","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":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":267,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":268,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":269,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":270,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":271,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":272,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":273,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":276,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":281,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"zhekaiii"},"content":" content: \"FriendFolio\";","lastModifiedDate":"2024-03-27"},{"lineNumber":285,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":287,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"-":283,"zhekaiii":5}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e Remark","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e Birthday","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e MoneyOwed","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":21,"zhekaiii":3}},{"path":"docs/diagrams/FilterClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"abstract class Command","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"abstract class Filter","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"interface Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"left to right direction","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"skinparam groupInheritance 2","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"Command \u003c|-- Filter","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"Filter \u003c|-- FilterNameCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"Filter \u003c|-- FilterTagCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"Filter \u003c|-- FilterDayCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"Filter --\u003e \"1\" Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"PersonHasTagPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":"NameContainsKeywordsPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"PersonAvailableOnDayPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"FilterNameCommand o--\u003e \"1\" NameContainsKeywordsPredicate","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":"FilterTagCommand o--\u003e \"1\" PersonHasTagPredicate","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"FilterDayCommand o--\u003e \"1\" PersonAvailableOnDayPredicate","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"JerryO3":29}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"Class Remark","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"Class Birthday","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"Class MoneyOwed","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e Remark","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e Birthday","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e MoneyOwed","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":54,"zhekaiii":6}},{"path":"docs/diagrams/RemarkCommandSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"@startuml","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"!include style.puml","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"participant \":UI\" as UI UI_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"participant \":Logic\" as Logic LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"participant \":AddressBookParser\" as Parser LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"participant \":RemarkCommand\" as RemarkCmd LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"UI -[UI_COLOR]\u003e Logic : execute(\"remark 1 r/Likes to swim.\")","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"activate Logic LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"Logic -[LOGIC_COLOR]\u003e Parser : parseCommand(\"remark 1 r/Likes to swim.\")","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"activate Parser LOGIC_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":"Parser -[LOGIC_COLOR]\u003e RemarkCmd : new(index, remark)","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"activate RemarkCmd LOGIC_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":"Logic -[LOGIC_COLOR]\u003e RemarkCmd : execute()","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":"RemarkCmd -[LOGIC_COLOR]\u003e Model : setPerson(personToEdit, editedPerson)","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"activate Model MODEL_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"Model -[MODEL_COLOR]\u003e RemarkCmd : personUpdated","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"deactivate Model","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"RemarkCmd -[LOGIC_COLOR]\u003e Logic : CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"deactivate RemarkCmd","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"Logic -[LOGIC_COLOR]\u003e UI : displayResult","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"deactivate Logic","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":"@enduml","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"NewtonKoh":33}},{"path":"docs/diagrams/ResetDebtSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"@startuml","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"!include style.puml","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"box Ui UI_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"participant \":PaymentWindow\" as PaymentWindow UI_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"participant \":MainWindow\" as MainWindow UI_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"end box","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"participant \"command:ResetDebtCommand\" as ResetDebtCommand LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"end box","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"end box","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"[-\u003e PaymentWindow : button click","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"activate PaymentWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"PaymentWindow -\u003e MainWindow : onResetDebt()","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"activate MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"create ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"MainWindow -\u003e ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"activate ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"ResetDebtCommand -\u003e MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"deactivate ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"MainWindow -\u003e MainWindow : execute(command)","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"activate MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"MainWindow -\u003e LogicManager : execute(command)","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"activate LogicManager","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":"LogicManager -\u003e ResetDebtCommand : execute(command)","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"activate ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"ResetDebtCommand -\u003e Model : resetDebt(person)","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":"activate Model","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":"Model --\u003e ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"deactivate Model","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"create CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"ResetDebtCommand -\u003e CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"activate CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"CommandResult --\u003e ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"ResetDebtCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"deactivate ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":"LogicManager --\u003e MainWindow : r","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"MainWindow --\u003e MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"deactivate MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":"MainWindow --\u003e PaymentWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"deactivate MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"[\u003c--PaymentWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":"deactivate PaymentWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":"@enduml","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"zhekaiii":69}},{"path":"docs/diagrams/SplitActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"@startuml","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"skin rose","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"start","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":": User enters a split command;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":": SplitCommandParser parses the user input and checks if input is valid;","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"switch ()","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"case([the split command is valid])","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":" : Creates a SplitCommand which is executed by the LogicManager;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":" : Splits the total amount among the number of people;","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":" switch()","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" case([Index in range])","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" : Updates Person in FilterPersonList to have the updated amount owed;","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" : Updates the FilterPersonList in the Model;","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" case([else])","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" : Throws an error;","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" endswitch","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"case([else])","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" : Throws an error;","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"endswitch","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"stop","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"@enduml","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"alvinnzz":27}},{"path":"docs/diagrams/SplitClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"@startuml","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"!include style.puml","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"Package Split as SplitPackage\u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"Class LogicManager","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"Class AddressBookParser","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"Class SplitCommandParser","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"Class SplitCommand","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"Class Index","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"Class CommandResult","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"LogicManager -down-\u003e \"1\" SplitCommand : executes \u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"LogicManager -right-\u003e \"1\" AddressBookParser","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"AddressBookParser ..\u003e SplitCommandParser : creates \u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"SplitCommand -right-\u003e \"1..*\" MoneyOwed","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"SplitCommandParser ..\u003e SplitCommand : creates \u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"SplitCommand -right-\u003e \"1..*\" Index","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"SplitCommand ..down\u003e CommandResult : generates \u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"MoneyOwed -[hidden]down-\u003e Index","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":"@enduml","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"alvinnzz":28}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":"PersonListPanel -down-\u003e \"0..1\" DisplayCard","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":"DisplayCard --|\u003e UiPart","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"DisplayCard ..\u003e Model","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"NewtonKoh":3,"-":60}},{"path":"docs/diagrams/paynow/PayNow.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"!include ../style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"skinparam arrowColor MODEL_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"skinparam classBackgroundColor MODEL_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"Class \"{abstract}\\nPayNowPayload\" as PayNowPayload","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"Class PayNowCode {","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" +{static}generateQrCode(String, float)","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"Class MerchantAccountInformation","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"Class PayNowField {","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" -int id","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" -Object value","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"show PayNowField fields","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"show PayNowCode methods","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"PayNowPayload *--\u003e \"fields\" PayNowField","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"MerchantAccountInformation --|\u003e PayNowPayload","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"PayNowCode --|\u003e PayNowPayload","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"PayNowCode .. MerchantAccountInformation","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":24}},{"path":"docs/index.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: FriendFolio","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-T16-2/tp)","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"**FriendFolio is a desktop application for managing your contact details.** While it has a GUI, most of the user","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"* If you are interested in using FriendFolio, head over to the [_Quick Start_ section of the **User Guide","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" **](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"* If you are interested about developing FriendFolio, the [**Developer Guide**](DeveloperGuide.html) is a good place to","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" start.","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"* Libraries","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"-":12,"zhekaiii":10}},{"path":"docs/team/alvinnzz.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"---","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"layout: page","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"title: Alvin Ng\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"---","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"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-11"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" by using the redo command.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" analysis of design alternatives. The implementation too was challenging as it required changes to existing","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" commands.","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":"* **Project management**:","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" * User Guide:","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":"* **Community**:","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":"* **Tools**:","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"alvinnzz":39,"zhekaiii":14}},{"path":"docs/team/jerryo3.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"layout: page","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"title: Jie Rui\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"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-12"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" by using the redo command.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" analysis of design alternatives. The implementation too was challenging as it required changes to existing","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"* **Project management**:","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" * User Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":"* **Community**:","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":"* **Tools**:","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"NewtonKoh":53}},{"path":"docs/team/newtonkoh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"layout: page","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"title: Newton\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"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-12"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" by using the redo command.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" analysis of design alternatives. The implementation too was challenging as it required changes to existing","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"* **Project management**:","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" * User Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":"* **Community**:","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":"* **Tools**:","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"NewtonKoh":53}},{"path":"docs/team/zhekaiii.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"---","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"layout: page","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"title: Zhekai\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"---","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"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-11"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" by using the redo command.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" analysis of design alternatives. The implementation too was challenging as it required changes to existing","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" commands.","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"* **Project management**:","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" * User Guide:","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":"* **Community**:","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"* **Tools**:","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"zhekaiii":53}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"Let\u0027s walk you through the implementation of a new command —`remark`.","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"edit it if required. The command should have the following format:","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command`","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"the `ResultDisplay`.","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"a `CommandResult` with an accompanying message.","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":"recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"instance of `RemarkCommand`.","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"You can refer to the changes in","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do.","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":"Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"progress.","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":"change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":"our code is functioning as intended.","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":"Your code should look something","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":"like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594)","lastModifiedDate":"2024-03-25"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":"after you are done.","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser`","lastModifiedDate":"2024-03-25"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":"interface.","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"zhekaiii"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"zhekaiii"},"content":"provided for the function to understand what it does.","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance","lastModifiedDate":"2024-03-25"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":"of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s","lastModifiedDate":"2024-03-25"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":"look through `ArgumentMultimap` :","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"zhekaiii"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at","lastModifiedDate":"2024-03-25"},{"lineNumber":198,"author":{"gitId":"zhekaiii"},"content":"existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2024-03-25"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"zhekaiii"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and","lastModifiedDate":"2024-03-25"},{"lineNumber":210,"author":{"gitId":"zhekaiii"},"content":"create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2024-03-25"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":223,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2024-03-25"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"zhekaiii"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the","lastModifiedDate":"2024-03-25"},{"lineNumber":246,"author":{"gitId":"zhekaiii"},"content":"in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is","lastModifiedDate":"2024-03-25"},{"lineNumber":247,"author":{"gitId":"zhekaiii"},"content":"implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark`","lastModifiedDate":"2024-03-25"},{"lineNumber":248,"author":{"gitId":"zhekaiii"},"content":"class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2024-03-25"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"zhekaiii"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can","lastModifiedDate":"2024-03-25"},{"lineNumber":253,"author":{"gitId":"zhekaiii"},"content":"reuse a significant bit of code.","lastModifiedDate":"2024-03-25"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"zhekaiii"},"content":"A copy-paste and search-replace later, you should have something","lastModifiedDate":"2024-03-25"},{"lineNumber":256,"author":{"gitId":"zhekaiii"},"content":"like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece).","lastModifiedDate":"2024-03-25"},{"lineNumber":257,"author":{"gitId":"zhekaiii"},"content":"Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2024-03-25"},{"lineNumber":258,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"zhekaiii"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These","lastModifiedDate":"2024-03-25"},{"lineNumber":263,"author":{"gitId":"zhekaiii"},"content":"should be relatively simple changes.","lastModifiedDate":"2024-03-25"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"zhekaiii"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each","lastModifiedDate":"2024-03-25"},{"lineNumber":268,"author":{"gitId":"zhekaiii"},"content":"person.","lastModifiedDate":"2024-03-25"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"zhekaiii"},"content":"Simply add the following","lastModifiedDate":"2024-03-25"},{"lineNumber":271,"author":{"gitId":"zhekaiii"},"content":"to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-25"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"zhekaiii"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like","lastModifiedDate":"2024-03-25"},{"lineNumber":281,"author":{"gitId":"zhekaiii"},"content":"Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2024-03-25"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"zhekaiii"},"content":"Then insert the following","lastModifiedDate":"2024-03-25"},{"lineNumber":284,"author":{"gitId":"zhekaiii"},"content":"into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2024-03-25"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"zhekaiii"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors","lastModifiedDate":"2024-03-25"},{"lineNumber":303,"author":{"gitId":"zhekaiii"},"content":"accordingly to store our new addition.","lastModifiedDate":"2024-03-25"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"zhekaiii"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use","lastModifiedDate":"2024-03-25"},{"lineNumber":308,"author":{"gitId":"zhekaiii"},"content":"the updated `Person`!","lastModifiedDate":"2024-03-25"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"zhekaiii"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and","lastModifiedDate":"2024-03-25"},{"lineNumber":317,"author":{"gitId":"zhekaiii"},"content":"check that you have got everything in order!","lastModifiedDate":"2024-03-25"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"zhekaiii"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson.","lastModifiedDate":"2024-03-25"},{"lineNumber":322,"author":{"gitId":"zhekaiii"},"content":"Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2024-03-25"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"zhekaiii"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not","lastModifiedDate":"2024-03-25"},{"lineNumber":329,"author":{"gitId":"zhekaiii"},"content":"doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-25"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2024-03-25"},{"lineNumber":334,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"zhekaiii"},"content":"Just","lastModifiedDate":"2024-03-25"},{"lineNumber":341,"author":{"gitId":"zhekaiii"},"content":"add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2024-03-25"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"zhekaiii"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However,","lastModifiedDate":"2024-03-25"},{"lineNumber":357,"author":{"gitId":"zhekaiii"},"content":"this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the","lastModifiedDate":"2024-03-25"},{"lineNumber":358,"author":{"gitId":"zhekaiii"},"content":"last few steps.","lastModifiedDate":"2024-03-25"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"zhekaiii"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in","lastModifiedDate":"2024-03-25"},{"lineNumber":363,"author":{"gitId":"zhekaiii"},"content":"a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2024-03-25"},{"lineNumber":364,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":383,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":384,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":394,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":395,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":405,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":407,"author":{"gitId":"zhekaiii"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code","lastModifiedDate":"2024-03-25"},{"lineNumber":408,"author":{"gitId":"zhekaiii"},"content":"bases where a change might lead to unintended behavior.","lastModifiedDate":"2024-03-25"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":410,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":412,"author":{"gitId":"zhekaiii"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would","lastModifiedDate":"2024-03-25"},{"lineNumber":413,"author":{"gitId":"zhekaiii"},"content":"be like the test cases","lastModifiedDate":"2024-03-25"},{"lineNumber":414,"author":{"gitId":"zhekaiii"},"content":"in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01).","lastModifiedDate":"2024-03-25"},{"lineNumber":415,"author":{"gitId":"zhekaiii"},"content":"Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next","lastModifiedDate":"2024-03-25"},{"lineNumber":416,"author":{"gitId":"zhekaiii"},"content":"section.","lastModifiedDate":"2024-03-25"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":418,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":420,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":422,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":423,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":425,"author":{"gitId":"zhekaiii"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring","lastModifiedDate":"2024-03-25"},{"lineNumber":426,"author":{"gitId":"zhekaiii"},"content":"up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2024-03-25"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":428,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":430,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":432,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":434,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":436,"author":{"gitId":"zhekaiii"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the","lastModifiedDate":"2024-03-25"},{"lineNumber":437,"author":{"gitId":"zhekaiii"},"content":"expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the","lastModifiedDate":"2024-03-25"},{"lineNumber":438,"author":{"gitId":"zhekaiii"},"content":"best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2024-03-25"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":440,"author":{"gitId":"zhekaiii"},"content":"You should end up with a test that looks something","lastModifiedDate":"2024-03-25"},{"lineNumber":441,"author":{"gitId":"zhekaiii"},"content":"like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2024-03-25"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":443,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":445,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"-":361,"zhekaiii":84}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" public static final Version VERSION \u003d new Version(1, 2, 1, true);","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" //Font.loadFont(getClass().getResourceAsStream(\"/fonts/SF-Pro.ttf\"), 12);","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NewtonKoh":1,"-":185,"zhekaiii":1}},{"path":"src/main/java/seedu/address/commons/util/AnimationUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import javafx.animation.FadeTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import javafx.animation.TranslateTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" * Utility methods for animations","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"public class AnimationUtil {","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" private static final double MOVE_DURATION \u003d 200;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" private static final double MOVE_INITIAL \u003d 500;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" private static final double MOVE_POP \u003d 20;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" private static final double FADE_DURATION \u003d 300;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" private static final double FADE_INITIAL \u003d 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" private static final double FADE_ULTIMATE \u003d 1;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public static TranslateTransition getBounceBackTransition(Node node) {","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" double originalPosition \u003d node.getTranslateX();","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" TranslateTransition bounceBackTransition \u003d new TranslateTransition(Duration.millis(MOVE_DURATION), node);","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.setFromX(originalPosition - MOVE_POP);","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.setToX(originalPosition);","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.setDelay(Duration.millis(MOVE_DURATION));","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" return bounceBackTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" public static FadeTransition getFadeInTransition(Node node) {","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" FadeTransition fadeInTransition \u003d new FadeTransition(Duration.millis(FADE_DURATION), node);","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" fadeInTransition.setFromValue(FADE_INITIAL);","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" fadeInTransition.setToValue(FADE_ULTIMATE);","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" return fadeInTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" public static TranslateTransition getMoveTransition(Node node) {","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" double originalPosition \u003d node.getTranslateX();","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" TranslateTransition moveTransition \u003d new TranslateTransition(Duration.millis(MOVE_DURATION), node);","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" moveTransition.setFromX(originalPosition + MOVE_INITIAL);","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" moveTransition.setToX(originalPosition - MOVE_POP);","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" return moveTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"zhekaiii":42}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" * Directly executes the command and returns the result.","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" * @param command The command to be executed.","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" * @return the result of the command execution.","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" CommandResult execute(Command command) throws CommandException;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" * Returns an unmodifiable view of the filtered list of persons","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"NewtonKoh":2,"-":49,"zhekaiii":14}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" return execute(command);","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" public CommandResult execute(Command command) throws CommandException {","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" CommandResult commandResult \u003d command.execute(model);","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" return model.getSortedPersonList();","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"NewtonKoh":5,"-":86,"zhekaiii":6}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_SORTED_OVERVIEW \u003d \"List has been sorted by %s.\";","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_SORT_CLEARED \u003d \"List has been sorted by default order.\";","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_INVALID_SORT_TYPE \u003d \"%s is not a valid sort type!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_INVALID_MOBILE \u003d \"The person must have a Singaporean number\"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" + \" (8-digit number starting with 8 or 9).\";","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":52,"zhekaiii":6}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_BIRTHDAY + \"BIRTHDAY] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_MONEY_OWED + \"AMOUNT_OWED] \"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_DAYS_AVAILABLE + \"DAY]...\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"24.50 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" + PREFIX_DAYS_AVAILABLE + \"THURSDAY\";","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)))","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(toAdd));","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alvinnzz":2,"JerryO3":3,"-":81,"zhekaiii":7}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Help information should be shown to the user.","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" * The application should exit.","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" * Used for showing QR code for the person to be paid.","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" private final Person personToPay;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * Used for setting the UI to display the person at the current index. If an invalid","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" * index is given, UI will display the HomeCard instead.","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private final Integer personToShow;","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" public CommandResult(","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" String feedbackToUser, boolean showHelp, boolean exit, Person personToPay, Integer personToShow) {","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" this.personToPay \u003d personToPay;","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" this.personToShow \u003d personToShow;","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser}, {@code showHelp}","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" * and {@code exit}, and other fields set to their default value.","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" this(feedbackToUser, showHelp, exit, null, null);","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" public CommandResult(String feedbackToUser, Person personToPay) {","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" this(feedbackToUser, false, false, personToPay, null);","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" this(feedbackToUser, false, false, null, null);","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" public boolean isShowPayment() {","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" return personToPay !\u003d null;","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" public Person getPersonToPay() {","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" return personToPay;","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" public Integer getPersonToShow() {","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" return personToShow;","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" * Returns a new {@code CommandResult} with the personToShow set to the provided index.","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" public CommandResult withPersonToShow(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" feedbackToUser,","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" showHelp,","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" exit,","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" personToPay,","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" index","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit","lastModifiedDate":"2024-03-27"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 Objects.equals(personToPay, otherCommandResult.personToPay)","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 Objects.equals(personToShow, otherCommandResult.personToShow);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" return Objects.hash(feedbackToUser, showHelp, exit, personToPay, personToShow);","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" .add(\"personToPay\", personToPay)","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" .add(\"personToShow\", personToShow)","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":76,"zhekaiii":66}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_BIRTHDAY + \"BIRTHDAY] \"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_MONEY_OWED + \"MONEY_OWED]\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_DAYS_AVAILABLE + \"DAY]...\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" Remark updatedRemark \u003d personToEdit.getRemark(); // edit command does not allow editing remarks","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" Birthday updatedBirthday \u003d editPersonDescriptor.getBirthday().orElse(personToEdit.getBirthday());","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed updatedMoneyOwed \u003d editPersonDescriptor.getMoneyOwed().orElse(personToEdit.getMoneyOwed());","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e updatedDaysAvailable \u003d editPersonDescriptor","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" .getDaysAvailable().orElse(personToEdit.getDaysAvailable());","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" return new Person(updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" updatedAddress, updatedRemark, updatedTags, updatedBirthday, updatedMoneyOwed, updatedDaysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)))","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(editedPerson));","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" private Birthday birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"alvinnzz"},"content":" private MoneyOwed moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"JerryO3"},"content":" private Set\u003cDay\u003e daysAvailable;","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":176,"author":{"gitId":"zhekaiii"},"content":" setBirthday(toCopy.birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"alvinnzz"},"content":" setMoneyOwed(toCopy.moneyOwed);","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"JerryO3"},"content":" setDaysAvailable(toCopy.daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":" public Optional\u003cBirthday\u003e getBirthday() {","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":" return Optional.ofNullable(birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"zhekaiii"},"content":" public void setBirthday(Birthday birthday) {","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"JerryO3"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, birthday, moneyOwed, daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-27"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"alvinnzz"},"content":" public Optional\u003cMoneyOwed\u003e getMoneyOwed() {","lastModifiedDate":"2024-03-14"},{"lineNumber":229,"author":{"gitId":"alvinnzz"},"content":" return Optional.ofNullable(moneyOwed);","lastModifiedDate":"2024-03-14"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"zhekaiii"},"content":" public void setMoneyOwed(MoneyOwed moneyOwed) {","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"zhekaiii"},"content":" this.moneyOwed \u003d moneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":234,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":235,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-04-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":249,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":250,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-04-02"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":253,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":254,"author":{"gitId":"JerryO3"},"content":" * Returns an unmodifiable days set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-25"},{"lineNumber":255,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-25"},{"lineNumber":256,"author":{"gitId":"JerryO3"},"content":" * Returns {@code Optional#empty()} if {@code dayAvailable} is null.","lastModifiedDate":"2024-03-25"},{"lineNumber":257,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":258,"author":{"gitId":"JerryO3"},"content":" public Optional\u003cSet\u003cDay\u003e\u003e getDaysAvailable() {","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"JerryO3"},"content":" return (daysAvailable !\u003d null) ? Optional.of(Collections.unmodifiableSet(daysAvailable)) : Optional.empty();","lastModifiedDate":"2024-03-24"},{"lineNumber":260,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":261,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":262,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":263,"author":{"gitId":"zhekaiii"},"content":" * Sets {@code daysAvailable} to this object\u0027s {@code daysAvailable}.","lastModifiedDate":"2024-04-02"},{"lineNumber":264,"author":{"gitId":"zhekaiii"},"content":" * A defensive copy of {@code daysAvailable} is used internally.","lastModifiedDate":"2024-04-02"},{"lineNumber":265,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":266,"author":{"gitId":"zhekaiii"},"content":" public void setDaysAvailable(Set\u003cDay\u003e daysAvailable) {","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"zhekaiii"},"content":" this.daysAvailable \u003d (daysAvailable !\u003d null) ? new HashSet\u003c\u003e(daysAvailable) : null;","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":282,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":286,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-13"},{"lineNumber":287,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 Objects.equals(birthday, otherEditPersonDescriptor.birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":288,"author":{"gitId":"JerryO3"},"content":" \u0026\u0026 Objects.equals(moneyOwed, otherEditPersonDescriptor.moneyOwed)","lastModifiedDate":"2024-03-24"},{"lineNumber":289,"author":{"gitId":"JerryO3"},"content":" \u0026\u0026 Objects.equals(daysAvailable, otherEditPersonDescriptor.daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":290,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"zhekaiii"},"content":" .add(\"birthday\", birthday)","lastModifiedDate":"2024-03-16"},{"lineNumber":300,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":301,"author":{"gitId":"alvinnzz"},"content":" .add(\"moneyOwed\", moneyOwed)","lastModifiedDate":"2024-03-20"},{"lineNumber":302,"author":{"gitId":"JerryO3"},"content":" .add(\"daysAvailable\", daysAvailable)","lastModifiedDate":"2024-03-24"},{"lineNumber":303,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"alvinnzz":8,"JerryO3":19,"-":228,"zhekaiii":51}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" * A common superclass for all filter commands that have the same logic, but filter using","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" * different predicates.","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"public abstract class FilterCommand extends Command {","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters the contact list according to one of the \"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" + \"two possible fields: days and tags and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" + \"Parameters: filter TYPE [KEYWORDS]... [--all]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" + \"Example 1: \" + COMMAND_WORD + \" tag student\"","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" + \"Example 2: \" + COMMAND_WORD + \" day monday tuesday --all\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" * Helps subclasses of filter to set appropriate predicates to filter for different","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" * fields.","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" * @param predicate to be assigned to filter object","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" public FilterCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()))","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" FilterCommand otherFilterCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" return predicate.equals(otherFilterCommand.predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" public String toString() {","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":" .toString();","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":62,"zhekaiii":6}},{"path":"src/main/java/seedu/address/logic/commands/FilterDayCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonAvailableOnDayPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":" * Filters and lists all persons in address book who are available on any of the given days of the week.","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":" * Day matching is case-insensitive.","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"public class FilterDayCommand extends FilterCommand {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" public static final String TYPE \u003d \"day\";","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters for all persons whose availabilities\"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" + \" include any of the specified days and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" + \"Parameters: filter day [days of the week]...\\n\"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + TYPE + \" monday\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" * Returns a new FilterDayCommand object that takes in a PersonAvailableOnDayPredicate","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" * to update the filtered list","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" * @param predicate","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" public FilterDayCommand(PersonAvailableOnDayPredicate predicate) {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" super(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":26}},{"path":"src/main/java/seedu/address/logic/commands/FilterNameCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"public class FilterNameCommand extends FilterCommand {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" public static final String TYPE \u003d \"name\";","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" + \"Parameters: KEYWORD... [--all]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + TYPE + \" alice bob charlie\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" public FilterNameCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" super(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"JerryO3":7,"-":12,"zhekaiii":2}},{"path":"src/main/java/seedu/address/logic/commands/FilterTagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":" * Filters and lists all persons in address book who are tagged by any of the argument keywords.","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"public class FilterTagCommand extends FilterCommand {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" public static final String TYPE \u003d \"tag\";","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters for all persons whose tags include any of \"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" + \"the specified keywords and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + TYPE + \" student\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" * Returns a new FilterTagCommand object that takes in a PersonHasTagPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" * to update the filtered list","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" * @param predicate","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" public FilterTagCommand(PersonHasTagPredicate predicate) {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" super(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":26}},{"path":"src/main/java/seedu/address/logic/commands/LendCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" * Lend an amount of money on top of current amount to a person identified","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" * using the displayed index from the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"public class LendCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" public static final String COMMAND_WORD \u003d \"lend\";","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_LENT_PERSON_SUCCESS \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" \"Lend to person %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_MISSING_AMOUNT \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" \"Please enter an amount that you want to lend!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" + \": Lend an amount of money on top of the current amount owed of a person \"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" + \"using the displayed index from the address book.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"MONEY_OWED \"","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"4.50\";","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" private final MoneyOwed amountToLend;","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" * Returns a new LendCommand object that takes in an Index object","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" * and a MoneyOwed object.","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" * @param targetIndex","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" * @param amountToLend","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" public LendCommand(Index targetIndex, MoneyOwed amountToLend) {","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(amountToLend);","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" this.amountToLend \u003d amountToLend;","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" Person personToLend \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":" Person lentPerson \u003d new Person(","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" personToLend.getName(), personToLend.getPhone(), personToLend.getEmail(),","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" personToLend.getAddress(), personToLend.getRemark(), personToLend.getTags(),","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" personToLend.getBirthday(),","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" personToLend.getMoneyOwed().addAmountOwed(amountToLend.getAmount()),","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" personToLend.getDaysAvailable());","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"alvinnzz"},"content":" model.setPerson(personToLend, lentPerson);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_LENT_PERSON_SUCCESS, Messages.format(lentPerson)))","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":" .withPersonToShow(model.findIndex(lentPerson));","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"alvinnzz"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":" if (!(other instanceof LendCommand)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"alvinnzz"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"alvinnzz"},"content":" LendCommand otherLendCommand \u003d (LendCommand) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" return targetIndex.equals(otherLendCommand.targetIndex)","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 amountToLend.equals(otherLendCommand.amountToLend);","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" .add(\"amountToLend\", amountToLend)","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" .toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"alvinnzz":97}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(MESSAGE_SUCCESS)","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":23,"zhekaiii":2}},{"path":"src/main/java/seedu/address/logic/commands/PayCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_MOBILE;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.List;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" * Generates a QR code and shows it to the user if the person has a valid Singapore phone number.","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * The QR code can be scanned by a banking application to transfer money to the person.","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"public class PayCommand extends Command {","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public static final String COMMAND_WORD \u003d \"pay\";","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" + \": Generates a PayNow QR code for the person identified by the index number used \"","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" + \"in the displayed person list. The person must have a valid Singapore phone number.\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_GENERATE_QR_SUCCESS \u003d \"Generated QR code for Person: %1$s\";","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" public PayCommand(Index targetIndex) {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" Person personToPay \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" if (!personToPay.getPhone().isSingaporeanNumber()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" throw new CommandException(MESSAGE_INVALID_MOBILE);","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_GENERATE_QR_SUCCESS, Messages.format(personToPay)),","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" personToPay)","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(personToPay));","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" if (!(other instanceof PayCommand)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" PayCommand otherCommand \u003d (PayCommand) other;","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" return Objects.equals(targetIndex, otherCommand.targetIndex);","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":75}},{"path":"src/main/java/seedu/address/logic/commands/RemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" private final Index index;","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" * @param index index of the contact","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" * @param remark string representing remark of contact","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" public RemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" requireAllNonNull(index, remark.toString());","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-07"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"NewtonKoh"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(), personToEdit.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" remark, personToEdit.getTags(), personToEdit.getBirthday(), personToEdit.getMoneyOwed(),","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" personToEdit.getDaysAvailable());","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(generateSuccessMessage(editedPerson))","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(editedPerson));","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" return true;","lastModifiedDate":"2024-03-07"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-07"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2024-03-07"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" return false;","lastModifiedDate":"2024-03-07"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2024-03-07"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-07"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":86,"author":{"gitId":"NewtonKoh"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-07"},{"lineNumber":87,"author":{"gitId":"NewtonKoh"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-07"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-07"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"NewtonKoh"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-07"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-03-07"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-03-07"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"NewtonKoh":89,"alvinnzz":1,"JerryO3":2,"zhekaiii":2}},{"path":"src/main/java/seedu/address/logic/commands/ResetDebtCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" * Resets the moneyOwed of a Person to 0. This is called by a button click instead of a CLI command.","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"public class ResetDebtCommand extends Command {","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" public static final String PERSON_NOT_FOUND_MESSAGE \u003d \"The person with the number %s cannot be\"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" + \" found in the address book!\";","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public static final String RESET_SUCCESS_MESSAGE \u003d \"Reset money owed to %s to $0.\";","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" private final Person originalPerson;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public ResetDebtCommand(Person originalPerson) {","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" this.originalPerson \u003d originalPerson;","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" private Person resetPersonDebt(Person person) {","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" return new Person(person.getName(), person.getPhone(), person.getEmail(),","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" person.getAddress(), person.getRemark(), person.getTags(), person.getBirthday(), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" person.getDaysAvailable());","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" Optional\u003cPerson\u003e personMaybe \u003d model.findPerson(","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" person -\u003e person.getPhone().equals(originalPerson.getPhone()));","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" Person person;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" person \u003d personMaybe.get();","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" throw new CommandException(String.format(PERSON_NOT_FOUND_MESSAGE, originalPerson.getPhone()));","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" if (person.getMoneyOwed().moneyOwed \u003d\u003d 0) {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(String.format(RESET_SUCCESS_MESSAGE, person.getName()))","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(person));","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" Person editedPerson \u003d resetPersonDebt(person);","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" model.setPerson(person, editedPerson);","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" int personIndex \u003d model.findIndex(editedPerson);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" CommandResult result \u003d new CommandResult(String.format(RESET_SUCCESS_MESSAGE, person.getName()));","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" if (personIndex \u003d\u003d Model.INVALID_PERSON_INDEX) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" return result;","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" return result.withPersonToShow(personIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" if (!(other instanceof ResetDebtCommand)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand otherCommand \u003d (ResetDebtCommand) other;","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" return Objects.equals(originalPerson, otherCommand.originalPerson);","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" .add(\"originalPerson\", originalPerson)","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":2,"zhekaiii":72}},{"path":"src/main/java/seedu/address/logic/commands/SortCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_SORT_CLEARED;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.exceptions.InvalidSortTypeException;","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * Sorts the address book in some specified order.","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"public class SortCommand extends Command {","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public static final String COMMAND_WORD \u003d \"sort\";","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sorts your contacts according\"","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" + \"to the specified sorting method.\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" + \"Available methods:\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" + \"1. name\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" + \"2. birthday\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" + \"3. money\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" + \"3. clear\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" + \"Example: \" + COMMAND_WORD + \" birthday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_SORT_TYPE \u003d \"birthday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" public static final String NAME_SORT_TYPE \u003d \"name\";","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" public static final String MONEY_SORT_TYPE \u003d \"money\";","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" public static final String CLEAR_SORT_TYPE \u003d \"clear\";","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private final String sortType;","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" private final Comparator\u003cPerson\u003e personComparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" * Returns a new SortCommand object that takes in a {@code Comparator\u003cPerson\u003e} to","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" * sort the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" public SortCommand(String sortType) throws InvalidSortTypeException {","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" switch (sortType.toLowerCase()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" case BIRTHDAY_SORT_TYPE:","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" this.personComparator \u003d Birthday.BIRTHDAY_COMPARATOR;","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" break;","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" case NAME_SORT_TYPE:","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" this.personComparator \u003d Name.NAME_COMPARATOR;","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" break;","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" case MONEY_SORT_TYPE:","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" this.personComparator \u003d MoneyOwed.MONEY_COMPARATOR;","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" break;","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" case CLEAR_SORT_TYPE:","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" this.personComparator \u003d null;","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" break;","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" default:","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidSortTypeException(sortType);","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" this.sortType \u003d sortType;","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" model.updatePersonComparator(personComparator);","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" personComparator \u003d\u003d null","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" ? MESSAGE_SORT_CLEARED","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" : String.format(","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" Messages.MESSAGE_SORTED_OVERVIEW, sortType","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" )","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" if (!(other instanceof SortCommand)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" SortCommand otherSort \u003d (SortCommand) other;","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" if (!Objects.equals(sortType, otherSort.sortType)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" return Objects.equals(personComparator, otherSort.personComparator);","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" .add(\"sortType\", sortType)","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"zhekaiii":99}},{"path":"src/main/java/seedu/address/logic/commands/SplitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import java.util.List;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" * Splits the sum of money owed among user and a group of people using the displayed","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" * index from the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"public class SplitCommand extends Command {","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" public static final String COMMAND_WORD \u003d \"split\";","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" public static final Float MINIMUM_SPLIT_AMOUNT \u003d (float) 0.01;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_INVALID_AMOUNT \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" \"Amount after splitting should be more than $0.01!\";","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_MISSING_AMOUNT \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" \"Please enter an amount that you want to split!\";","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" + \": Splits the sum of money owed among you and a group of people \"","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" + \"using the displayed index from the address book.\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" + \"Parameters: at least one INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"MONEY_OWED \"","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2 \"","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"4.50\";","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" private final List\u003cIndex\u003e indexListToSplit;","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" private final MoneyOwed totalOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" * Returns a new SplitCommand object that takes in a list of index","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" * and a MoneyOwed object.","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" * @param indexListToSplit","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" * @param totalOwed","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" public SplitCommand(List\u003cIndex\u003e indexListToSplit, MoneyOwed totalOwed) {","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" this.indexListToSplit \u003d indexListToSplit;","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" this.totalOwed \u003d totalOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" * Splits the total amount of a group of people.","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" * @param totalAmount","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" * @param numPeople","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" * @return the split amount","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" public static Float getSplitAmount(Float totalAmount, int numPeople) {","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" String splitAmountRounded \u003d String.format(\"%.2f\", totalAmount / numPeople);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" Float splitAmount \u003d Float.parseFloat(splitAmountRounded);","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" return splitAmount;","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" * Checks if the index list is valid.","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" * @param indexList","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":" * @param sizeOfLastShownList","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"alvinnzz"},"content":" * @return true if each index in index list is valid.","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" public static boolean hasValidIndexList(List\u003cIndex\u003e indexList, int sizeOfLastShownList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":" for (Index index : indexList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":" if (index.getZeroBased() \u003e\u003d sizeOfLastShownList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"alvinnzz"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"alvinnzz"},"content":" Float splitAmount \u003d getSplitAmount(totalOwed.getAmount(), indexListToSplit.size() + 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"alvinnzz"},"content":" if (splitAmount \u003c MINIMUM_SPLIT_AMOUNT) {","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"alvinnzz"},"content":" throw new CommandException(MESSAGE_INVALID_AMOUNT);","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":" if (!hasValidIndexList(indexListToSplit, lastShownList.size())) {","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" for (Index index : indexListToSplit) {","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" personToEdit.getAddress(), personToEdit.getRemark(), personToEdit.getTags(),","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" personToEdit.getBirthday(), personToEdit.getMoneyOwed().addAmountOwed(splitAmount),","lastModifiedDate":"2024-03-29"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":" personToEdit.getDaysAvailable());","lastModifiedDate":"2024-03-29"},{"lineNumber":98,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":99,"author":{"gitId":"alvinnzz"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"alvinnzz"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"alvinnzz"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-25"},{"lineNumber":104,"author":{"gitId":"alvinnzz"},"content":" String.format(\"$%s has been split among you and %d more people!\",","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":" totalOwed, indexListToSplit.size()));","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"alvinnzz"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-03-25"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":113,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"alvinnzz"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-25"},{"lineNumber":115,"author":{"gitId":"alvinnzz"},"content":" if (!(other instanceof SplitCommand)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":116,"author":{"gitId":"alvinnzz"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":117,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":118,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":119,"author":{"gitId":"alvinnzz"},"content":" SplitCommand otherSplitCommand \u003d (SplitCommand) other;","lastModifiedDate":"2024-03-25"},{"lineNumber":120,"author":{"gitId":"alvinnzz"},"content":" return indexListToSplit.equals(otherSplitCommand.indexListToSplit)","lastModifiedDate":"2024-03-25"},{"lineNumber":121,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 totalOwed.equals(otherSplitCommand.totalOwed);","lastModifiedDate":"2024-03-25"},{"lineNumber":122,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":123,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":124,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":125,"author":{"gitId":"alvinnzz"},"content":" public String toString() {","lastModifiedDate":"2024-03-25"},{"lineNumber":126,"author":{"gitId":"alvinnzz"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-25"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":" .add(\"indexListToSplit\", indexListToSplit)","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"alvinnzz"},"content":" .add(\"totalOwed\", totalOwed)","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"alvinnzz"},"content":" .toString();","lastModifiedDate":"2024-03-25"},{"lineNumber":130,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"alvinnzz":125,"JerryO3":2,"zhekaiii":4}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" PREFIX_BIRTHDAY, PREFIX_MONEY_OWED, PREFIX_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" Remark remark \u003d new Remark(\"\"); // add command does not allow adding remarks straight away","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" Birthday birthday \u003d ParserUtil.parseBirthday(argMultimap.getValue(PREFIX_BIRTHDAY).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed moneyOwed \u003d ParserUtil.parseMoneyOwed(argMultimap.getValue(PREFIX_MONEY_OWED).orElse(\"0\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e daysAvailable \u003d ParserUtil.parseDays(argMultimap.getAllValues(PREFIX_DAYS_AVAILABLE));","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" Person person \u003d new Person(name, phone, email, address, remark, tagList, birthday, moneyOwed, daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"alvinnzz":2,"NewtonKoh":1,"JerryO3":8,"-":59,"zhekaiii":4}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.LendCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.PayCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.SortCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.SplitCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" case RemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-07"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" return new RemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-07"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" case SortCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" return new SortCommandParser().parse(arguments);","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" case SplitCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" return new SplitCommandParser().parse(arguments);","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" case PayCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" return new PayCommandParser().parse(arguments);","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":" case LendCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"alvinnzz"},"content":" return new LendCommandParser().parse(arguments);","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alvinnzz":7,"NewtonKoh":3,"JerryO3":8,"-":82,"zhekaiii":6}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" * Prefixes mapped to their respective arguments","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" **/","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"-":77,"zhekaiii":3}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":" public static final Prefix PREFIX_MONEY_OWED \u003d new Prefix(\"$/\");","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" public static final Prefix PREFIX_BIRTHDAY \u003d new Prefix(\"b/\");","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":" public static final Prefix PREFIX_DAYS_AVAILABLE \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"alvinnzz":1,"NewtonKoh":1,"JerryO3":1,"-":15,"zhekaiii":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" PREFIX_ADDRESS, PREFIX_TAG, PREFIX_BIRTHDAY, PREFIX_MONEY_OWED, PREFIX_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" PREFIX_ADDRESS, PREFIX_BIRTHDAY, PREFIX_MONEY_OWED);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" if (argMultimap.getValue(PREFIX_BIRTHDAY).isPresent()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" editPersonDescriptor.setBirthday(ParserUtil.parseBirthday(argMultimap.getValue(PREFIX_BIRTHDAY).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" if (argMultimap.getValue(PREFIX_MONEY_OWED).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" editPersonDescriptor.setMoneyOwed(ParserUtil.parseMoneyOwed(argMultimap.getValue(PREFIX_MONEY_OWED).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" parseDaysAvailableForEdit(argMultimap.getAllValues(PREFIX_DAYS_AVAILABLE))","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" .ifPresent(editPersonDescriptor::setDaysAvailable);","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" private Optional\u003cSet\u003cDay\u003e\u003e parseDaysAvailableForEdit(Collection\u003cString\u003e days) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":" assert days !\u003d null;","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"JerryO3"},"content":" if (days.isEmpty()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"JerryO3"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"JerryO3"},"content":" Collection\u003cString\u003e daySet \u003d days.size() \u003d\u003d 1 \u0026\u0026 days.contains(\"\") ? Collections.emptySet() : days;","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"JerryO3"},"content":" return Optional.of(ParserUtil.parseDays(daySet));","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"alvinnzz":5,"JerryO3":15,"-":82,"zhekaiii":7}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterDayCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterNameCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterTagCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonAvailableOnDayPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private static final Prefix FLAG_ALL \u003d new Prefix(\"--all\");","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" * Parses the given {@code String} of arguments in the context of the FilterTagCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" * and returns a FilterTagCommand object for execution.","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":" String argsWithoutType \u003d \"\";","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" ArgumentTokenizer.tokenize(args, FLAG_ALL);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" boolean matchAll \u003d argMultimap.getValue(FLAG_ALL).isPresent();","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" trimmedArgs \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" if (trimmedArgs.toLowerCase().startsWith(FilterDayCommand.TYPE)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" argsWithoutType \u003d trimmedArgs.replaceFirst(FilterDayCommand.TYPE, \"\").trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" if (argsWithoutType.isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" FilterDayCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e getDays \u003d ParserUtil.parseDays(Arrays.asList(argsWithoutType.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" return new FilterDayCommand(new PersonAvailableOnDayPredicate(new ArrayList\u003c\u003e(getDays), matchAll));","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" if (trimmedArgs.toLowerCase().startsWith(FilterTagCommand.TYPE)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" argsWithoutType \u003d trimmedArgs.replaceFirst(FilterTagCommand.TYPE, \"\").trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" if (argsWithoutType.isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" Set\u003cTag\u003e tags \u003d ParserUtil.parseTags(Arrays.asList(argsWithoutType.split(\"\\\\s+\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" return new FilterTagCommand(new PersonHasTagPredicate(new ArrayList\u003c\u003e(tags), matchAll));","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" if (trimmedArgs.toLowerCase().startsWith(FilterNameCommand.TYPE)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" argsWithoutType \u003d trimmedArgs.replaceFirst(FilterNameCommand.TYPE, \"\").trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" if (argsWithoutType.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" return new FilterNameCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" new NameContainsKeywordsPredicate(List.of(argsWithoutType.split(\"\\\\s+\")), matchAll));","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":70,"zhekaiii":14}},{"path":"src/main/java/seedu/address/logic/parser/LendCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.LendCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":" * Parses input arguments and creates a new LendCommand object","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"public class LendCommandParser implements Parser\u003cLendCommand\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" * Parses the given {@code String} of arguments in the context of the LendCommand","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" * and returns a LendCommand object for execution.","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" public LendCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_MONEY_OWED);","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex;","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount;","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" targetIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE),","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" pe);","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" if (!argMultimap.getValue(PREFIX_MONEY_OWED).isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_MISSING_AMOUNT));","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" lentAmount \u003d ParserUtil.parseMoneyOwed(argMultimap.getValue(PREFIX_MONEY_OWED).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" return new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"alvinnzz":46}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"alvinnzz"},"content":" * Parses a {@code String moneyOwed} into a {@code MoneyOwed}.","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"alvinnzz"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"alvinnzz"},"content":" * @throws ParseException if the given {@code MoneyOwed} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"alvinnzz"},"content":" public static MoneyOwed parseMoneyOwed(String moneyOwed) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(moneyOwed);","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"alvinnzz"},"content":" String trimmedMoneyOwed \u003d moneyOwed.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" if (!MoneyOwed.isValidMoney(trimmedMoneyOwed)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(MoneyOwed.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"alvinnzz"},"content":" return new MoneyOwed(trimmedMoneyOwed);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" * Parses {@code String birthday} into a {@code Birthday}.","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" public static Birthday parseBirthday(String birthday) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" birthday \u003d birthday \u003d\u003d null ? \"\" : birthday;","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" String trimmedBirthday \u003d birthday.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" if (!Birthday.isValidBirthday(trimmedBirthday)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" throw new ParseException(Birthday.BIRTHDAY_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" return new Birthday(trimmedBirthday);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"JerryO3"},"content":" private static Day parseDay(String day) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"JerryO3"},"content":" requireNonNull(day);","lastModifiedDate":"2024-03-24"},{"lineNumber":158,"author":{"gitId":"JerryO3"},"content":" String trimmedTag \u003d day.trim();","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"JerryO3"},"content":" if (!Day.isValidDay(trimmedTag)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(Day.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"JerryO3"},"content":" return Day.getDay(day);","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"JerryO3"},"content":" * Takes a collection of Strings representing days of the week and","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"JerryO3"},"content":" * returns a Set representation of that.","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"JerryO3"},"content":" * @param days","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"JerryO3"},"content":" * @return Set representing some subset of the 7 days of the week.","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"JerryO3"},"content":" * @throws ParseException when any one of the given Strings in the days collection","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"JerryO3"},"content":" * cannot be mapped to a Day.","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"JerryO3"},"content":" public static Set\u003cDay\u003e parseDays(Collection\u003cString\u003e days) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"JerryO3"},"content":" requireNonNull(days);","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"JerryO3"},"content":" final Set\u003cDay\u003e daySet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"JerryO3"},"content":" for (String dayName : days) {","lastModifiedDate":"2024-03-24"},{"lineNumber":177,"author":{"gitId":"JerryO3"},"content":" daySet.add(parseDay(dayName));","lastModifiedDate":"2024-03-24"},{"lineNumber":178,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"JerryO3"},"content":" return daySet;","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"alvinnzz":15,"JerryO3":29,"-":124,"zhekaiii":13}},{"path":"src/main/java/seedu/address/logic/parser/PayCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.PayCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" * Parses the given {@code String} of arguments in the context of the PayCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" * and returns a PayCommand object for execution.","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"public class PayCommandParser implements Parser\u003cPayCommand\u003e {","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" public PayCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" return new PayCommand(index);","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PayCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":26}},{"path":"src/main/java/seedu/address/logic/parser/RemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" * Parser for the remark command","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"public class RemarkCommandParser implements Parser\u003cRemarkCommand\u003e {","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" * @param args argument to be parsed","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" * @return a RemarkCommand object for execution.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" Index index;","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" try {","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" Remark remark \u003d new Remark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"NewtonKoh":40}},{"path":"src/main/java/seedu/address/logic/parser/SortCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.SortCommand;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" * Parses input arguments and creates a new SortCommand object","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"public class SortCommandParser implements Parser\u003cSortCommand\u003e {","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" public SortCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" String sortType \u003d args.replaceFirst(SortCommand.COMMAND_WORD, \"\").trim();","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" if (sortType.isEmpty()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SortCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" return new SortCommand(sortType);","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"zhekaiii":22}},{"path":"src/main/java/seedu/address/logic/parser/SplitCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import java.util.List;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.SplitCommand;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":" * Parses input arguments and creates a new SplitCommand object","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"public class SplitCommandParser implements Parser\u003cSplitCommand\u003e {","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" * Parses the given {@code String} of arguments in the context of the SplitCommand","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" * and returns a SplitCommand object for execution.","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" public SplitCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_MONEY_OWED);","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" try {","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" String[] indexArray \u003d argMultimap.getPreamble().split(\" \");","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" for (String s : indexArray) {","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" indexList.add(ParserUtil.parseIndex(s));","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" if (argMultimap.getValue(PREFIX_MONEY_OWED).isPresent()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" totalOwed \u003d ParserUtil.parseMoneyOwed(argMultimap.getValue(PREFIX_MONEY_OWED).get());","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" } else {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_MISSING_AMOUNT));","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" return new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"alvinnzz":49}},{"path":"src/main/java/seedu/address/logic/paynow/MerchantAccountInformation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" * Represents a Merchant Account Information field within a PayNow QR Code.","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"public class MerchantAccountInformation extends PayNowPayload {","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" private static final String DOMAIN \u003d \"SG.PAYNOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" private static final int DOMAIN_ID \u003d 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" private static final int PROXY_TYPE_ID \u003d 1;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" private static final int MOBILE_NUM_PROXY \u003d 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" private static final int MOBILE_NO_ID \u003d 2;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" private static final String SG_COUNTRY_CODE \u003d \"+65\";","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" private static final int EDITABLE_ID \u003d 3;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" private static final int EDITABLE \u003d 1;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" protected MerchantAccountInformation(String phone) {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" super(","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(DOMAIN_ID, DOMAIN),","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(PROXY_TYPE_ID, MOBILE_NUM_PROXY),","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(MOBILE_NO_ID, SG_COUNTRY_CODE + phone),","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(EDITABLE_ID, EDITABLE)","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":24}},{"path":"src/main/java/seedu/address/logic/paynow/PayNowCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.io.ByteArrayInputStream;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" * Represents a PayNow code that when encoded into a string and converted into a QR Code,","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" * can be scanned using a banking application to automatically fill in a person\u0027s","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" * mobile number and amount.","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"public class PayNowCode extends PayNowPayload {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" private static final int PAYLOAD_FORMAT_INDICATOR_ID \u003d 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" private static final int POINT_OF_INITIATION_METHOD_ID \u003d 1;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" private static final int MERCHANT_ACCOUNT_INFORMATION_ID \u003d 26;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" private static final int MERCHANT_CATEGORY_CODE_ID \u003d 52;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" private static final int TRANSACTION_CURRENCY_ID \u003d 53;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" private static final int TRANSACTION_AMOUNT_ID \u003d 54;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" private static final int COUNTRY_CODE_ID \u003d 58;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" private static final int MERCHANT_NAME_ID \u003d 59;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" private static final int MERCHANT_CITY_ID \u003d 60;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" private static final int CRC_ID \u003d 63;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private static final int SG_CURRENCY_CODE \u003d 702;","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" private static final String NA_MERCHANT_CATEGORY \u003d \"0000\";","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField PAYLOAD_FORMAT_INDICATOR \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(PAYLOAD_FORMAT_INDICATOR_ID, \"01\");","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField POINT_OF_INITIATION_METHOD \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(POINT_OF_INITIATION_METHOD_ID, \"11\");","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField MERCHANT_CATEGORY_CODE \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(MERCHANT_CATEGORY_CODE_ID, NA_MERCHANT_CATEGORY);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField TRANSACTION_CURRENCY \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(TRANSACTION_CURRENCY_ID, SG_CURRENCY_CODE);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField COUNTRY_CODE \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(COUNTRY_CODE_ID, \"SG\");","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField MERCHANT_NAME \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(MERCHANT_NAME_ID, \"NA\");","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField MERCHANT_CITY \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(MERCHANT_CITY_ID, \"Singapore\");","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" private static final String PLACEHOLDER_CRC \u003d \"0000\";","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" private PayNowCode(PayNowField... fields) {","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" super(fields);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" * Generates a PayNow QR Code that users can scan with their banking apps which will","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" * automatically fill in the phone number and amount passed in as parameters.","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" public static ByteArrayInputStream generatePayNowQrCode(String phone, float amount)","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" throws WriterException, IOException {","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" PayNowField[] fields \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" new PayNowField[]{PAYLOAD_FORMAT_INDICATOR,","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" POINT_OF_INITIATION_METHOD,","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" MERCHANT_ACCOUNT_INFORMATION_ID, new MerchantAccountInformation(phone)),","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" MERCHANT_CATEGORY_CODE,","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" TRANSACTION_CURRENCY,","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(TRANSACTION_AMOUNT_ID, amount),","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" COUNTRY_CODE,","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" MERCHANT_NAME,","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" MERCHANT_CITY,","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(CRC_ID, PLACEHOLDER_CRC)};","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" String encodedFields \u003d Stream.of(fields)","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" .map(PayNowField::toString)","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" .reduce(\"\", (accumulator, encodedField) -\u003e accumulator + encodedField);","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" // Remove the placeholder CRC from the string","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" encodedFields \u003d encodedFields.substring(0, encodedFields.length() - PLACEHOLDER_CRC.length());","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" fields[fields.length - 1] \u003d new PayNowField(CRC_ID, computeCrc(encodedFields));","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" return QrGenerator.generateQrCode(new PayNowCode(fields).toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" private static String computeCrc(String payload) {","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" int crc \u003d 0xFFFF;","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" int msb \u003d crc \u003e\u003e 8;","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" int lsb \u003d crc \u0026 255;","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" for (char character : payload.toCharArray()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" int x \u003d character ^ msb;","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" x ^\u003d (x \u003e\u003e 4);","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" msb \u003d (lsb ^ (x \u003e\u003e 3) ^ (x \u003c\u003c 4)) \u0026 255;","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" lsb \u003d (x ^ (x \u003c\u003c 5)) \u0026 255;","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" crc \u003d (msb \u003c\u003c 8) + lsb;","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" return String.format(\"%04X\", crc);","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":89}},{"path":"src/main/java/seedu/address/logic/paynow/PayNowField.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" * Represents a field within a {@code PaynowCode}.","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"public final class PayNowField {","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" private final int id;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" private final Object value;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" * Returns a {@code PaynowField} with the id and the valye passed into the constructor.","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" public PayNowField(int id, Object value) {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" this.id \u003d id;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" String valueString \u003d value.toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" if (value instanceof Float) {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" valueString \u003d String.format(\"%.2f\", value);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" } else if (value instanceof Double) {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" valueString \u003d String.format(\"%.2f\", value);","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" return String.format(\"%02d\", id)","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" + String.format(\"%02d\", valueString.length())","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" + valueString;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":30}},{"path":"src/main/java/seedu/address/logic/paynow/PayNowPayload.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" * This class represents the string information to be encoded into a QR code","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" * such that users can scan with their banking applications and transfer money via PayNow.","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"public abstract class PayNowPayload {","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" private final PayNowField[] fields;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" protected PayNowPayload(PayNowField... fields) {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" this.fields \u003d new PayNowField[fields.length];","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" System.arraycopy(fields, 0, this.fields, 0, fields.length);","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" for (PayNowField field : fields) {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" stringBuilder.append(field.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" return stringBuilder.toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":23}},{"path":"src/main/java/seedu/address/logic/paynow/QrGenerator.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.awt.Color;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.awt.Graphics2D;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.awt.Image;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.awt.image.BufferedImage;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import java.io.ByteArrayInputStream;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import java.util.Hashtable;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import javax.imageio.ImageIO;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.BarcodeFormat;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.EncodeHintType;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.common.BitMatrix;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.qrcode.QRCodeWriter;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" * This helper class helps to generate a QR Code image given a string.","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"public class QrGenerator {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" private static final int QR_SIZE \u003d 400;","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private static final int LOGO_HEIGHT \u003d QR_SIZE / 6;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" private static final Color PAYNOW_COLOR \u003d Color.decode(\"#7a1b78\");","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" private static final String LOGO_PATH \u003d \"images/paynowlogo.png\";","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" private static void overlayLogo(Graphics2D graphics) throws IOException {","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" Image logo \u003d getLogo();","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" int startHeight \u003d (QR_SIZE - logo.getHeight(null)) / 2;","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" int startWidth \u003d (QR_SIZE - logo.getWidth(null)) / 2;","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" graphics.drawImage(logo, startWidth, startHeight, null);","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private static Image getLogo() throws IOException {","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" BufferedImage originalLogo \u003d ImageIO.read(ClassLoader.getSystemResourceAsStream(LOGO_PATH));","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" float scale \u003d (float) LOGO_HEIGHT / originalLogo.getHeight();","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" return originalLogo.getScaledInstance(","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" (int) (originalLogo.getWidth() * scale),","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" (int) (originalLogo.getHeight() * scale),","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" Image.SCALE_SMOOTH);","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" private static BitMatrix encodeText(String qrCodeText) throws WriterException {","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" // Create the ByteMatrix for the QR-Code that encodes the given String","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" Hashtable\u003cEncodeHintType, ErrorCorrectionLevel\u003e hintMap \u003d new Hashtable\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" QRCodeWriter qrCodeWriter \u003d new QRCodeWriter();","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" return qrCodeWriter.encode(qrCodeText, BarcodeFormat.QR_CODE, QR_SIZE, QR_SIZE, hintMap);","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" private static BufferedImage fillImageFromBitMatrix(BitMatrix bitMatrix) {","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" // Make the BufferedImage that are to hold the QRCode","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" int matrixWidth \u003d bitMatrix.getWidth();","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" int matrixHeight \u003d bitMatrix.getHeight();","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" BufferedImage image \u003d new BufferedImage(matrixWidth, matrixHeight, BufferedImage.TYPE_INT_RGB);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" image.createGraphics();","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" Graphics2D graphics \u003d (Graphics2D) image.getGraphics();","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" graphics.setColor(Color.WHITE);","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" graphics.fillRect(0, 0, matrixWidth, matrixHeight);","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" // Paint and save the image using the ByteMatrix","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" graphics.setColor(PAYNOW_COLOR);","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" for (int i \u003d 0; i \u003c matrixWidth; i++) {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" for (int j \u003d 0; j \u003c matrixWidth; j++) {","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" if (bitMatrix.get(i, j)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" graphics.fillRect(i, j, 1, 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" return image;","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" * Converts the given text into a QR Code and returns the Image.","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" public static ByteArrayInputStream generateQrCode(String qrCodeText) throws WriterException, IOException {","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" BitMatrix bitMatrix \u003d encodeText(qrCodeText);","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" BufferedImage image \u003d fillImageFromBitMatrix(bitMatrix);","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" overlayLogo((Graphics2D) image.getGraphics());","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" ByteArrayOutputStream os \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" ImageIO.write(image, \"jpeg\", os);","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" return new ByteArrayInputStream(os.toByteArray());","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":88}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" int INVALID_PERSON_INDEX \u003d -1;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" * Returns the AddressBook","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" * Returns an unmodifiable view of the filtered person list","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" void updatePersonComparator(Comparator\u003cPerson\u003e personComparator);","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" Optional\u003cPerson\u003e findPerson(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" int findIndex(Person person);","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"NewtonKoh":2,"-":78,"zhekaiii":25}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" private final SortedList\u003cPerson\u003e sortedPersons;","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" sortedPersons \u003d new SortedList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(sortedPersons);","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" return userPrefs;","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" return addressBook;","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" return sortedPersons;","lastModifiedDate":"2024-03-30"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" public void updatePersonComparator(Comparator\u003cPerson\u003e personComparator) {","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" sortedPersons.setComparator(personComparator);","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" public Optional\u003cPerson\u003e findPerson(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" return addressBook.getPersonList()","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" .stream()","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" .filter(predicate)","lastModifiedDate":"2024-03-27"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" .findAny();","lastModifiedDate":"2024-03-27"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" public int findIndex(Person person) {","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" return filteredPersons.indexOf(person);","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 sortedPersons.equals(otherModelManager.sortedPersons);","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NewtonKoh":5,"-":136,"zhekaiii":35}},{"path":"src/main/java/seedu/address/model/person/Birthday.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" * Represents a Person\u0027s birthday in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidBirthday(String)}","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"public class Birthday {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" \"Birthday should be in the format dd/mm/yyyy and should be before today\";","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_FORMAT \u003d \"dd/MM/yyyy\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" * This comparator will sort contacts with no birthdays to the back.","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" * Contacts with their next birthday closest to today will be put first.","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" public static final Comparator\u003cPerson\u003e BIRTHDAY_COMPARATOR \u003d (personA, personB) -\u003e {","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" if (personA.getBirthday().birthday \u003d\u003d null) {","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" return 1;","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" if (personB.getBirthday().birthday \u003d\u003d null) {","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" return -1;","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" LocalDate now \u003d LocalDate.now();","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" LocalDate nextABirthday \u003d personA.getBirthday().birthday.withYear(now.getYear());","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" if (nextABirthday.isBefore(now)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" nextABirthday \u003d nextABirthday.plusYears(1);","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" LocalDate nextBBirthday \u003d personB.getBirthday().birthday.withYear(now.getYear());","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" if (nextBBirthday.isBefore(now)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" nextBBirthday \u003d nextBBirthday.plusYears(1);","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" return nextABirthday.compareTo(nextBBirthday);","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" };","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public final LocalDate birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" * Constructs a {@code Birthday}.","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" * @param birthday A valid birthday, or an empty string.","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" public Birthday(String birthday) {","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(birthday);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" if (birthday.isBlank()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" return;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" checkArgument(isValidBirthday(birthday), BIRTHDAY_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d LocalDate.parse(birthday, DateTimeFormatter.ofPattern(BIRTHDAY_FORMAT));","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" * Returns true if a given string is a valid birthday.","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" public static boolean isValidBirthday(String test) {","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" if (test \u003d\u003d null || test.isBlank()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" test \u003d test.strip();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" LocalDate date \u003d LocalDate.parse(test, DateTimeFormatter.ofPattern(BIRTHDAY_FORMAT));","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" return date.format(DateTimeFormatter.ofPattern(BIRTHDAY_FORMAT)).equals(test)","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 date.isBefore(LocalDate.now());","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" return Optional.ofNullable(birthday).map(","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" birthdayObj -\u003e birthdayObj.format(DateTimeFormatter.ofPattern(","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" BIRTHDAY_FORMAT","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" ))).orElse(\"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" if (!(o instanceof Birthday)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" Birthday otherBirthday \u003d (Birthday) o;","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" return Objects.equals(birthday, otherBirthday.birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" return Objects.hash(birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"zhekaiii":105}},{"path":"src/main/java/seedu/address/model/person/Day.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":" * Day enumeration models the 7 days of the week within FriendFolio.","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":" * Since days of the week are distinct, a set of available days is","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":" * easily represented by a HashSet containing some subset of all possible","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":" * Day.","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"public enum Day {","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":" SUNDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" MONDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" TUESDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" WEDNESDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":" THURSDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":" FRIDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" SATURDAY;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" * Checks whether a String input matches the name of one of the days defined in the","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" * Day enum. Matching is not case-sensitive. This method should always be used before","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" * the getDay function to avoid null-handling requirements. isValidDay is decoupled from","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" * getDay only in tests.","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" * @param day","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":" * @return boolean representing if a match is found.","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Please enter a valid day of the week from the following: \"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" + getAllDaysAsString();","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" public static boolean isValidDay(String day) {","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" return Arrays.stream(Day.values()).anyMatch(x -\u003e x.toString().equalsIgnoreCase(day));","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" * Maps a String input to one of the days defined in the Day enum. Matching is not","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" * case-sensitive. While the output is null if no match, isValidDay method should","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" * be used to check if the string is valid first. getDay is decoupled from isValidDay","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" * only in tests.","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" * @param day","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" * @return Day whose name matches the String argument passed, or null if no match is found","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" public static Day getDay(String day) {","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" return Arrays.stream(Day.values())","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" .filter(x -\u003e x.toString().equalsIgnoreCase(day))","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" .reduce((x, y) -\u003e x)","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" .orElse(null);","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" * Helper function to return string containing all days in Day enum.","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" * @return String containing all days\u0027 names in Day enum, split by comma.","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" private static String getAllDaysAsString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" for (Day d: Day.values()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" s.append(d).append(\", \");","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" return s.toString().substring(0, s.length() - 2);","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" public String getShortForm() {","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" return this.name().substring(0, 3);","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"JerryO3":65}},{"path":"src/main/java/seedu/address/model/person/MoneyOwed.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":" * Represents a Person\u0027s money owed in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMoney(String)}","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"public class MoneyOwed {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":" \"Money Owed should be at most 2 decimal places in the following format \u0027xxx.xx\u0027 or \u0027-xxx.xx\u0027. \";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?:-)?\\\\d+(\\\\.\\\\d{0,2})?\";","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" public static final String NO_MONEY_OWED_MESSAGE \u003d \"You don\u0027t owe each other anything\";","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public static final String USER_OWES_MONEY_MESSAGE \u003d \"You owe $%s\";","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" public static final String PERSON_OWES_MONEY_MESSAGE \u003d \"Owes you $%s\";","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" * This comparator will sort contacts with no money owed to the back.","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" * Contacts that the user owes the most money to will be put first.","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" * Contacts who owes the most money will be put right after contacts that","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" * the user owes money to.","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" public static final Comparator\u003cPerson\u003e MONEY_COMPARATOR \u003d (personA, personB) -\u003e {","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" // If user owes personA money means personA.getMoneyOwed().moneyOwed \u003c 0. So sort in asc order.","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" if (personA.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" return Float.compare(personA.getMoneyOwed().moneyOwed, personB.getMoneyOwed().moneyOwed);","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" // personB moneyOwed \u003c 0 but personA moneyOwed \u003e\u003d 0. Put personB before personA.","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" if (personB.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" return 1;","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" // Both personA and personB \u003e\u003d 0. Put the larger one first.","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" return Float.compare(personB.getMoneyOwed().moneyOwed, personA.getMoneyOwed().moneyOwed);","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" };","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" public final Float moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" * Constructs a {@code MoneyOwed}.","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" * @param money A valid amount of money owed.","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" public MoneyOwed(String money) {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(money);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" checkArgument(isValidMoney(money), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" moneyOwed \u003d Float.parseFloat(money);","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" * Returns true if a given string is a valid money amount.","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" public static boolean isValidMoney(String test) {","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" if (test \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" * Returns true if a moneyOwed is negative.","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" public boolean userOwesMoney() {","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" return (moneyOwed \u003c 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" * Returns the amount of money owed.","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" public Float getAmount() {","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":" return this.moneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" * Returns the absolute amount of money owed.","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" public Float getAbsoluteAmount() {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" return Math.abs(this.moneyOwed);","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":" * Returns a MoneyOwed object with the new amount owed.","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":" public MoneyOwed addAmountOwed(Float addedAmount) {","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":" String replacedString \u003d String.valueOf(moneyOwed + addedAmount);","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" return new MoneyOwed(replacedString);","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" * Returns message to display on UI in String.","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":" public String getMessage() {","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"alvinnzz"},"content":" if (moneyOwed \u003d\u003d 0) {","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" return NO_MONEY_OWED_MESSAGE;","lastModifiedDate":"2024-03-27"},{"lineNumber":100,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" if (userOwesMoney()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" return String.format(USER_OWES_MONEY_MESSAGE, toString().substring(1));","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"alvinnzz"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" return String.format(PERSON_OWES_MONEY_MESSAGE, this);","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"alvinnzz"},"content":" return String.format(\"%.2f\", moneyOwed);","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"alvinnzz"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"alvinnzz"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"alvinnzz"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"alvinnzz"},"content":" if (!(other instanceof MoneyOwed)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"alvinnzz"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed otherName \u003d (MoneyOwed) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"alvinnzz"},"content":" return moneyOwed.equals(otherName.moneyOwed);","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"alvinnzz"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"alvinnzz"},"content":" return moneyOwed.hashCode();","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"alvinnzz":94,"zhekaiii":38}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public static final Comparator\u003cPerson\u003e NAME_COMPARATOR \u003d (personA, personB) -\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" personA.getName().fullName.compareToIgnoreCase(personB.getName().fullName);","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":67,"zhekaiii":5}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" private final Birthday birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" private final MoneyOwed moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" private final Set\u003cDay\u003e daysAvailable \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" Remark remark, Set\u003cTag\u003e tags, Birthday birthday, MoneyOwed moneyOwed, Set\u003cDay\u003e daysAvailable) {","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" this.moneyOwed \u003d moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" this.daysAvailable.addAll(daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" public MoneyOwed getMoneyOwed() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" return moneyOwed;","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" return remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" public Birthday getBirthday() {","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" return birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" public Set\u003cDay\u003e getDaysAvailable() {","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" return Collections.unmodifiableSet(daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 birthday.equals(otherPerson.birthday)","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"JerryO3"},"content":" \u0026\u0026 moneyOwed.equals(otherPerson.moneyOwed)","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"JerryO3"},"content":" \u0026\u0026 daysAvailable.equals(otherPerson.daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"JerryO3"},"content":" return Objects.hash(name, phone, email, address, tags, birthday, moneyOwed, daysAvailable);","lastModifiedDate":"2024-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"NewtonKoh"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" .add(\"birthday\", birthday)","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"alvinnzz"},"content":" .add(\"moneyOwed\", moneyOwed)","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"JerryO3"},"content":" .add(\"daysAvailable\", daysAvailable)","lastModifiedDate":"2024-03-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"NewtonKoh":7,"alvinnzz":9,"JerryO3":11,"-":115,"zhekaiii":7}},{"path":"src/main/java/seedu/address/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" * Returns true if the phone number is a valid Singaporean number, i.e. 8 digits starting","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" * with an 8 or a 9.","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" public boolean isSingaporeanNumber() {","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" return (this.value.startsWith(\"8\") || this.value.startsWith(\"9\")) \u0026\u0026 this.value.length() \u003d\u003d 8;","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":61,"zhekaiii":8}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"public class Remark {","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":" public final String value;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" * @param remark string representing the remark of a contact","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" value \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" public String toString() {","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" return value;","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"NewtonKoh":36}},{"path":"src/main/java/seedu/address/model/person/exceptions/InvalidSortTypeException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.model.person.exceptions;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_SORT_TYPE;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" * Signals that the user has typed in an invalid sort method.","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"public class InvalidSortTypeException extends ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" public InvalidSortTypeException(String type) {","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" super(String.format(MESSAGE_INVALID_SORT_TYPE, type));","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"zhekaiii":14}},{"path":"src/main/java/seedu/address/model/person/predicates/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" private final boolean matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Constructs a NameContainsKeywordsPredicate with the given keywords and a boolean","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * flag to indicate if we should match all or any.","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords, boolean matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" this.matchAll \u003d matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" this(keywords, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" Predicate\u003cString\u003e predicate \u003d keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" if (matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" return keywords.stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" .allMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" .anyMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords)","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 matchAll \u003d\u003d otherNameContainsKeywordsPredicate.matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" .add(\"keywords\", keywords)","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" .add(\"matchAll\", matchAll)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"JerryO3":2,"-":39,"zhekaiii":23}},{"path":"src/main/java/seedu/address/model/person/predicates/PersonAvailableOnDayPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" * Tests that a {@code Person}\u0027s {@code daysAvailable} matches any of the days given.","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"public class PersonAvailableOnDayPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" private final Collection\u003cDay\u003e daysAvailable;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" private final boolean matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Constructs a PersonAvailableOnDayPredicate with the given keywords and a boolean","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * flag to indicate if we should match all or any.","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" public PersonAvailableOnDayPredicate(Collection\u003cDay\u003e daysAvailable, boolean matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" this.daysAvailable \u003d daysAvailable;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" this.matchAll \u003d matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" public PersonAvailableOnDayPredicate(Collection\u003cDay\u003e daysAvailable) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" this(daysAvailable, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" Predicate\u003cDay\u003e predicate \u003d day -\u003e person.getDaysAvailable().contains(day);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" if (matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" return daysAvailable.stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" .allMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" return daysAvailable.stream()","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" .anyMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" if (!(other instanceof PersonAvailableOnDayPredicate)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate otherPersonAvailableOnDayPredicate \u003d (PersonAvailableOnDayPredicate) other;","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" return daysAvailable.equals(otherPersonAvailableOnDayPredicate.daysAvailable)","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 matchAll \u003d\u003d otherPersonAvailableOnDayPredicate.matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" public String toString() {","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" .add(\"keywords\", daysAvailable)","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" .add(\"matchAll\", matchAll)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":41,"zhekaiii":23}},{"path":"src/main/java/seedu/address/model/person/predicates/PersonHasTagPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" * Tests that a {@code Person}\u0027s {@code Tag}s matches any of the keywords given.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"public class PersonHasTagPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" private final List\u003cTag\u003e keywords;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" private final boolean matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * Constructs a PersonHasTagPredicate with the given keywords and a boolean","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" * flag to indicate if we should match all or any.","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public PersonHasTagPredicate(List\u003cTag\u003e keywords, boolean matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" this.matchAll \u003d matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" public PersonHasTagPredicate(List\u003cTag\u003e keywords) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" this(keywords, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" Predicate\u003cTag\u003e predicate \u003d keyword -\u003e person.getTags().contains(keyword);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" if (matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" return keywords.stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" .allMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" .anyMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" if (!(other instanceof PersonHasTagPredicate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate otherPersonHasTagPredicate \u003d (PersonHasTagPredicate) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" return keywords.equals(otherPersonHasTagPredicate.keywords)","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 matchAll \u003d\u003d otherPersonHasTagPredicate.matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" .add(\"keywords\", keywords)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" .add(\"matchAll\", matchAll)","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"JerryO3":42,"zhekaiii":23}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" return tagName.equalsIgnoreCase(otherTag.tagName);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" return tagName.toLowerCase().hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"JerryO3":2,"-":60}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), EMPTY_REMARK, getTagSet(\"friends\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" new Birthday(\"\"), new MoneyOwed(\"0\"), getDaysAvailableSet(\"tuesday\", \"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"colleagues\", \"friends\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"neighbours\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"family\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"classmates\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"colleagues\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" private static Set\u003cDay\u003e getDaysAvailableSet(String... strings) {","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" .map(Day::getDay)","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"NewtonKoh":7,"JerryO3":22,"-":48}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" private final String remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" private final String birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" private final String moneyOwed;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" private final Set\u003cDay\u003e daysAvailable \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" @JsonProperty(\"birthday\") String birthday,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" @JsonProperty(\"moneyOwed\") String moneyOwed,","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" @JsonProperty(\"daysAvailable\") Set\u003cDay\u003e daysAvailable) {","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" this.moneyOwed \u003d moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" if (daysAvailable !\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" this.daysAvailable.addAll(daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" birthday \u003d source.getBirthday().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":" moneyOwed \u003d source.getMoneyOwed().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" daysAvailable.addAll(source.getDaysAvailable());","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" @SuppressWarnings(\"checkstyle:Regexp\")","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" final Remark modelRemark \u003d new Remark(Optional.ofNullable(remark).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" if (!Birthday.isValidBirthday(birthday)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" throw new IllegalValueException(Birthday.BIRTHDAY_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" final Birthday modelBirthday \u003d new Birthday(Optional.ofNullable(birthday).orElse(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"alvinnzz"},"content":" if (!MoneyOwed.isValidMoney(moneyOwed)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"alvinnzz"},"content":" throw new IllegalValueException(MoneyOwed.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"alvinnzz"},"content":" final MoneyOwed modelMoneyOwed \u003d new MoneyOwed(Optional.ofNullable(moneyOwed).orElse(\"0\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"JerryO3"},"content":" final Set\u003cDay\u003e modelDaysAvailable \u003d new HashSet\u003c\u003e(daysAvailable);","lastModifiedDate":"2024-03-29"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"alvinnzz"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRemark,","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"JerryO3"},"content":" modelTags, modelBirthday, modelMoneyOwed, modelDaysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"alvinnzz":10,"NewtonKoh":6,"JerryO3":12,"-":107,"zhekaiii":14}},{"path":"src/main/java/seedu/address/ui/DisplayCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.FadeTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.TranslateTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.AnimationUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" * Displays a person\u0027s information","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"public class DisplayCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" private static final String FXML \u003d \"DisplayCard.fxml\";","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" private static final int IMAGE_SIZE \u003d 30;","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" public final Person person;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private final Image tagIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/tag_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" private final Image dayIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/day_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private final Image phoneIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/phone_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" private final Image addressIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/address_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" private final Image emailIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/email_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" private final Image birthdayIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/birthday_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" private final Image moneyIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/money_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition moveTransition \u003d AnimationUtil.getMoveTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition bounceBackTransition \u003d AnimationUtil.getBounceBackTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" private final FadeTransition fadeInTransition \u003d AnimationUtil.getFadeInTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" private Label name;","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" private Label phone;","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" private Label address;","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"NewtonKoh"},"content":" private Label email;","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":" private FlowPane tags;","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" private FlowPane daysAvailable;","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" private Label birthday;","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" private Label remark;","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" private Label moneyOwed;","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" private ImageView tagIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" private ImageView dayIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" private ImageView phoneIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" private ImageView addressIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" private ImageView emailIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" private ImageView birthdayIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" private ImageView moneyIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" * @param person Person information to be displayed on the card","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"NewtonKoh"},"content":" public DisplayCard(Person person) {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"NewtonKoh"},"content":" super(FXML);","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" setUpLabels(person);","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" setUpIcons();","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" playAnimation();","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" private void setUpLabels(Person person) {","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"NewtonKoh"},"content":" person.getTags().stream()","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" person.getDaysAvailable().stream()","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"NewtonKoh"},"content":" .sorted(Comparator.comparing(Enum::ordinal))","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" .forEach(day -\u003e daysAvailable.getChildren().add(new Label(day.getShortForm())));","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"NewtonKoh"},"content":" birthday.setText(person.getBirthday().toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" moneyOwed.setText(person.getMoneyOwed().getMessage());","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" private void setUpIcons() {","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":" tagIcon.setImage(tagIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":112,"author":{"gitId":"NewtonKoh"},"content":" dayIcon.setImage(dayIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":113,"author":{"gitId":"NewtonKoh"},"content":" phoneIcon.setImage(phoneIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":114,"author":{"gitId":"NewtonKoh"},"content":" addressIcon.setImage(addressIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":" emailIcon.setImage(emailIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":" birthdayIcon.setImage(birthdayIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":117,"author":{"gitId":"NewtonKoh"},"content":" moneyIcon.setImage(moneyIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":118,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" * Plays the card\u0027s animations","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" public void playAnimation() {","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"NewtonKoh"},"content":" fadeInTransition.playFromStart();","lastModifiedDate":"2024-03-30"},{"lineNumber":125,"author":{"gitId":"NewtonKoh"},"content":" moveTransition.playFromStart();","lastModifiedDate":"2024-03-30"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"NewtonKoh":96,"zhekaiii":32}},{"path":"src/main/java/seedu/address/ui/HomeCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.FadeTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.KeyFrame;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.Timeline;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.TranslateTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.chart.BarChart;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.chart.XYChart;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.AnimationUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"public class HomeCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" private static final String FXML \u003d \"HomeCard.fxml\";","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" private static final String MONEY_OWED_LABEL \u003d \"Money you owe\";","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" private static final String OWED_MONEY_LABEL \u003d \"Money owed to you\";","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" private static final double CATEGORY_GAP \u003d 120;","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" private static final double BAR_GAP \u003d 0;","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" private final DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" private final DateTimeFormatter secondFormatter \u003d DateTimeFormatter.ofPattern(\":ss\");","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" private final DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"EEEE, MMMM d\");","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private final ObservableList\u003cPerson\u003e personList;","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition moveTransition \u003d AnimationUtil.getMoveTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition bounceBackTransition \u003d AnimationUtil.getBounceBackTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" private final FadeTransition fadeInTransition \u003d AnimationUtil.getFadeInTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" *","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" private Label time;","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" private Label second;","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" private Label date;","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" private Label contactCount;","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":" private BarChart\u003cString, Number\u003e chart;","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" private ListView\u003cPerson\u003e availableList;","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" * Creates a {@code HomeCard} with the given Person List.","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" public HomeCard(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" super(FXML);","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" this.personList \u003d personList;","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" this.contactCount.setText(String.valueOf(personList.size()));","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" setUpTimeline();","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" setUpMoneyChart();","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" setUpAvailableTodayList();","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" playAnimation();","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" private void setUpMoneyChart() {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" XYChart.Series\u003cString, Number\u003e series \u003d new XYChart.Series\u003c\u003e();","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" series.getData().add(new XYChart.Data\u003c\u003e(MONEY_OWED_LABEL, getTotalDebt()));","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" series.getData().add(new XYChart.Data\u003c\u003e(OWED_MONEY_LABEL, getTotalCredit()));","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" chart.getData().add(series);","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" chart.setCategoryGap(CATEGORY_GAP);","lastModifiedDate":"2024-03-31"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" chart.setBarGap(BAR_GAP);","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" chart.setLegendVisible(false);","lastModifiedDate":"2024-03-31"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" * Sets up a 1-second interval to update the time card.","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":" private void setUpTimeline() {","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" time.setText(LocalDateTime.now().format(timeFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"NewtonKoh"},"content":" second.setText(LocalDateTime.now().format(secondFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" date.setText(LocalDateTime.now().format(dateFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" Timeline timeline \u003d new Timeline(new KeyFrame(Duration.seconds(1), event -\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":" LocalDateTime currentTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-30"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":" time.setText(currentTime.format(timeFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" second.setText(currentTime.format(secondFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" date.setText(currentTime.format(dateFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":" }));","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" timeline.setCycleCount(Timeline.INDEFINITE);","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"NewtonKoh"},"content":" timeline.play();","lastModifiedDate":"2024-03-30"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" * Sets up list of people who are available today.","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" private void setUpAvailableTodayList() {","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" availableList.setItems(getAvailableTodayList());","lastModifiedDate":"2024-03-30"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":" availableList.setCellFactory(listView -\u003e new AvailableTodayCell());","lastModifiedDate":"2024-03-30"},{"lineNumber":109,"author":{"gitId":"NewtonKoh"},"content":" availableList.setFocusTraversable(false);","lastModifiedDate":"2024-03-30"},{"lineNumber":110,"author":{"gitId":"NewtonKoh"},"content":" availableList.setMouseTransparent(true);","lastModifiedDate":"2024-03-30"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":112,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":113,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":114,"author":{"gitId":"NewtonKoh"},"content":" * @return List of people who are available today.","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":" public ObservableList\u003cPerson\u003e getAvailableTodayList() {","lastModifiedDate":"2024-03-30"},{"lineNumber":117,"author":{"gitId":"NewtonKoh"},"content":" DateTimeFormatter dayFormatter \u003d DateTimeFormatter.ofPattern(\"EEEE\");","lastModifiedDate":"2024-03-30"},{"lineNumber":118,"author":{"gitId":"NewtonKoh"},"content":" String today \u003d LocalDateTime.now().format(dayFormatter);","lastModifiedDate":"2024-03-30"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":" Day filterDay \u003d Day.getDay(today);","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" return personList.filtered(person -\u003e person.getDaysAvailable().contains(filterDay));","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":124,"author":{"gitId":"NewtonKoh"},"content":" * @return Get the amount of debt the user has","lastModifiedDate":"2024-03-30"},{"lineNumber":125,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":126,"author":{"gitId":"NewtonKoh"},"content":" public double getTotalDebt() {","lastModifiedDate":"2024-03-30"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":" double result \u003d 0.0;","lastModifiedDate":"2024-03-30"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":" for (Person person : personList) {","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"NewtonKoh"},"content":" if (person.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-03-31"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" result +\u003d person.getMoneyOwed().getAbsoluteAmount();","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" return result;","lastModifiedDate":"2024-03-30"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":137,"author":{"gitId":"NewtonKoh"},"content":" * @return Get the amount of credit the user has","lastModifiedDate":"2024-03-30"},{"lineNumber":138,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":139,"author":{"gitId":"NewtonKoh"},"content":" public double getTotalCredit() {","lastModifiedDate":"2024-03-30"},{"lineNumber":140,"author":{"gitId":"NewtonKoh"},"content":" double result \u003d 0.0;","lastModifiedDate":"2024-03-30"},{"lineNumber":141,"author":{"gitId":"NewtonKoh"},"content":" for (Person person : personList) {","lastModifiedDate":"2024-03-31"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" if (!person.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" result +\u003d person.getMoneyOwed().getAbsoluteAmount();","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":145,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":146,"author":{"gitId":"NewtonKoh"},"content":" return result;","lastModifiedDate":"2024-03-30"},{"lineNumber":147,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":148,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" * Play the card\u0027s animation","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" public void playAnimation() {","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" fadeInTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" moveTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" static class AvailableTodayCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":160,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2024-03-30"},{"lineNumber":162,"author":{"gitId":"NewtonKoh"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2024-03-30"},{"lineNumber":163,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":164,"author":{"gitId":"NewtonKoh"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2024-03-30"},{"lineNumber":165,"author":{"gitId":"NewtonKoh"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-30"},{"lineNumber":166,"author":{"gitId":"NewtonKoh"},"content":" setText(null);","lastModifiedDate":"2024-03-30"},{"lineNumber":167,"author":{"gitId":"NewtonKoh"},"content":" return;","lastModifiedDate":"2024-03-30"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":169,"author":{"gitId":"NewtonKoh"},"content":" MiniPersonCard personCard \u003d new MiniPersonCard(person);","lastModifiedDate":"2024-03-31"},{"lineNumber":170,"author":{"gitId":"NewtonKoh"},"content":" setGraphic(personCard.getRoot());","lastModifiedDate":"2024-03-30"},{"lineNumber":171,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":172,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":173,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"NewtonKoh":136,"zhekaiii":37}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import javafx.beans.binding.Bindings;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.input.KeyCode;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.ResetDebtCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" private static final Double PERSON_LIST_RATIO \u003d 0.25;","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" private static final Integer MINIMUM_HEIGHT \u003d 700;","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" private static final Integer MINIMUM_WIDTH \u003d 1000;","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" private Image logo \u003d new Image(this.getClass().getResourceAsStream(\"/images/friendfolio_logo.png\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" private PaymentWindow paymentWindow;","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" private ImageView logoImage;","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" setEscHandler();","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList(), logic.getSortedPersonList());","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" personListPanel.getPersonListView().prefWidthProperty().bind(Bindings.createDoubleBinding(()","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" -\u003e personListPanelPlaceholder.getScene().getWidth() * PERSON_LIST_RATIO,","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":" personListPanelPlaceholder.getScene().widthProperty()));","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":" personListPanelPlaceholder.getChildren().setAll(personListPanel.getRoot());","lastModifiedDate":"2024-03-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":138,"author":{"gitId":"NewtonKoh"},"content":" logoImage.setImage(logo);","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" private void setEscHandler() {","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" if (event.getCode() \u003d\u003d KeyCode.ESCAPE) {","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" personListPanel.resetHomeCard();","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" });","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":165,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":" primaryStage.setMinHeight(MINIMUM_HEIGHT);","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"NewtonKoh"},"content":" primaryStage.setMinWidth(MINIMUM_WIDTH);","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":193,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":198,"author":{"gitId":"zhekaiii"},"content":" if (paymentWindow !\u003d null) {","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"zhekaiii"},"content":" paymentWindow.hide();","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":203,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":204,"author":{"gitId":"zhekaiii"},"content":" private void handlePayment(Person person) {","lastModifiedDate":"2024-03-27"},{"lineNumber":205,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-27"},{"lineNumber":206,"author":{"gitId":"zhekaiii"},"content":" if (paymentWindow !\u003d null) {","lastModifiedDate":"2024-03-27"},{"lineNumber":207,"author":{"gitId":"zhekaiii"},"content":" paymentWindow.hide();","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":210,"author":{"gitId":"zhekaiii"},"content":" paymentWindow \u003d new PaymentWindow(person, () -\u003e {","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"zhekaiii"},"content":" paymentWindow.hide();","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"zhekaiii"},"content":" paymentWindow \u003d null;","lastModifiedDate":"2024-03-27"},{"lineNumber":213,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":214,"author":{"gitId":"zhekaiii"},"content":" execute(new ResetDebtCommand(person));","lastModifiedDate":"2024-03-27"},{"lineNumber":215,"author":{"gitId":"zhekaiii"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"zhekaiii"},"content":" return;","lastModifiedDate":"2024-03-27"},{"lineNumber":217,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":218,"author":{"gitId":"zhekaiii"},"content":" });","lastModifiedDate":"2024-03-27"},{"lineNumber":219,"author":{"gitId":"zhekaiii"},"content":" paymentWindow.show();","lastModifiedDate":"2024-03-27"},{"lineNumber":220,"author":{"gitId":"zhekaiii"},"content":" } catch (IOException | WriterException e) {","lastModifiedDate":"2024-03-28"},{"lineNumber":221,"author":{"gitId":"zhekaiii"},"content":" logger.info(\"An error occurred while trying to set up PaymentWindow: \" + e.getMessage());","lastModifiedDate":"2024-03-27"},{"lineNumber":222,"author":{"gitId":"zhekaiii"},"content":" resultDisplay.setFeedbackToUser(\"An error occurred while trying to set up PaymentWindow!\");","lastModifiedDate":"2024-03-28"},{"lineNumber":223,"author":{"gitId":"zhekaiii"},"content":" throw new RuntimeException(e.getMessage());","lastModifiedDate":"2024-03-28"},{"lineNumber":224,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":228,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":237,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":239,"author":{"gitId":"zhekaiii"},"content":" handleCommandResult(commandResult);","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2024-03-27"},{"lineNumber":241,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":242,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2024-03-27"},{"lineNumber":243,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":247,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":248,"author":{"gitId":"zhekaiii"},"content":" private CommandResult execute(Command command) throws CommandException {","lastModifiedDate":"2024-03-27"},{"lineNumber":249,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"zhekaiii"},"content":" CommandResult commandResult \u003d logic.execute(command);","lastModifiedDate":"2024-03-27"},{"lineNumber":251,"author":{"gitId":"zhekaiii"},"content":" handleCommandResult(commandResult);","lastModifiedDate":"2024-03-27"},{"lineNumber":252,"author":{"gitId":"zhekaiii"},"content":" return commandResult;","lastModifiedDate":"2024-03-27"},{"lineNumber":253,"author":{"gitId":"zhekaiii"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":254,"author":{"gitId":"zhekaiii"},"content":" logger.info(\"An error occurred while executing command: \" + command);","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"zhekaiii"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2024-03-27"},{"lineNumber":256,"author":{"gitId":"zhekaiii"},"content":" throw e;","lastModifiedDate":"2024-03-27"},{"lineNumber":257,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":258,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":259,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":260,"author":{"gitId":"zhekaiii"},"content":" private void handleCommandResult(CommandResult commandResult) {","lastModifiedDate":"2024-03-27"},{"lineNumber":261,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":262,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":263,"author":{"gitId":"zhekaiii"},"content":" if (commandResult.getPersonToShow() !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":264,"author":{"gitId":"zhekaiii"},"content":" personListPanel \u003d new PersonListPanel(","lastModifiedDate":"2024-04-02"},{"lineNumber":265,"author":{"gitId":"zhekaiii"},"content":" logic.getFilteredPersonList(), logic.getSortedPersonList(), commandResult.getPersonToShow());","lastModifiedDate":"2024-04-02"},{"lineNumber":266,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"zhekaiii"},"content":" personListPanel.getPersonListView().prefWidthProperty().bind(Bindings.createDoubleBinding(()","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"zhekaiii"},"content":" -\u003e personListPanelPlaceholder.getScene().getWidth() * PERSON_LIST_RATIO,","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"zhekaiii"},"content":" personListPanelPlaceholder.getScene().widthProperty()));","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"zhekaiii"},"content":" personListPanelPlaceholder.getChildren().setAll(personListPanel.getRoot());","lastModifiedDate":"2024-04-02"},{"lineNumber":271,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":273,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":274,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":277,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":278,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":281,"author":{"gitId":"zhekaiii"},"content":" if (commandResult.isShowPayment()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":282,"author":{"gitId":"zhekaiii"},"content":" assert (commandResult.getPersonToPay() !\u003d null);","lastModifiedDate":"2024-03-27"},{"lineNumber":283,"author":{"gitId":"zhekaiii"},"content":" handlePayment(commandResult.getPersonToPay());","lastModifiedDate":"2024-03-27"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"NewtonKoh":19,"-":193,"zhekaiii":74}},{"path":"src/main/java/seedu/address/ui/MiniPersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"public class MiniPersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" private static final String FXML \u003d \"MiniPersonCard.fxml\";","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" *","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" public final Person person;","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" private Label name;","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" private Label id;","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" private FlowPane tags;","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" * Creates a {@code MiniCard} with the given {@code Person}.","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" public MiniPersonCard(Person person) {","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" super(FXML);","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" person.getTags().stream()","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" public HBox getCardPane() {","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" return cardPane;","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"NewtonKoh":52,"zhekaiii":1}},{"path":"src/main/java/seedu/address/ui/PaymentWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.control.Tooltip;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.paynow.PayNowCode;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * Controller for the Payment window","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"public class PaymentWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" private static final String FXML \u003d \"PaymentWindow.fxml\";","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(PaymentWindow.class);","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" private static final String HELP_TOOLTIP_TEXT \u003d \"Open your banking application and scan this QR code to pay %s!\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" + \"Note that this QR code only works if the mobile number is registered to a bank account.\";","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" private final Runnable onResetDebt;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" private ImageView qrCode;","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private Button cancelButton;","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" private Button resetButton;","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private Tooltip helpTooltip;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" * Creates a new QrWindow.","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" * @param person The person whom the user is attempting to pay.","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" public PaymentWindow(Person person, Runnable onResetDebt) throws IOException, WriterException {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" super(FXML, new Stage());","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" this.onResetDebt \u003d onResetDebt;","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" Image image \u003d new Image(PayNowCode.generatePayNowQrCode(","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" person.getPhone().toString(),","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" Math.max(0, -person.getMoneyOwed().moneyOwed)));","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" qrCode.setImage(image);","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" if (!person.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" resetButton.setManaged(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" helpTooltip.setText(String.format(HELP_TOOLTIP_TEXT, person.getName()));","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" * Shows the payment window.","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" * @throws IllegalStateException \u003cul\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" public void show() {","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" logger.fine(\"Showing payment page.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" getRoot().show();","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" public void hide() {","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" public void onResetDebt() {","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" onResetDebt.run();","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":91}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.FadeTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.TranslateTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.AnimationUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition moveTransition \u003d AnimationUtil.getMoveTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition bounceBackTransition \u003d AnimationUtil.getBounceBackTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" private final FadeTransition fadeInTransition \u003d AnimationUtil.getFadeInTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" private Label moneyOwed;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" private FlowPane daysAvailable;","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" public PersonCard(Person person, int displayedIndex, boolean animate) {","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" moneyOwed.setText(person.getMoneyOwed().getMessage());","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" person.getDaysAvailable().stream()","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" .sorted(Comparator.comparing(Enum::ordinal))","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" .forEach(day -\u003e daysAvailable.getChildren().add(new Label(day.getShortForm())));","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" if (animate) {","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" playAnimation();","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" private void playAnimation() {","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" fadeInTransition.playFromStart();","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" moveTransition.playFromStart();","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" public HBox getCardPane() {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" return cardPane;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"NewtonKoh":12,"alvinnzz":2,"JerryO3":4,"-":51,"zhekaiii":7}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.ScaleTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.beans.binding.Bindings;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.Priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" private static final Integer PADDING_SIZE \u003d 80;","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" private VBox displayView;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" private HomeCard homeCard;","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList, ObservableList\u003cPerson\u003e sortedList) {","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" homeCard \u003d new HomeCard(sortedList);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" displayView.getChildren().setAll(homeCard.getRoot());","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" personListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" if (newValue \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" return;","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" setDisplayCard(newValue);","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" });","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList} and displays the {@code DisplayCard}","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" * for the person in the given index.","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList, ObservableList\u003cPerson\u003e sortedList, int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" this(personList, sortedList);","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" personListView.getSelectionModel().select(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" private void setDisplayCard(Person person) {","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" DisplayCard displayCard \u003d new DisplayCard(person);","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" displayView.getChildren().setAll(displayCard.getRoot());","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" VBox.setVgrow(displayCard.getRoot(), Priority.ALWAYS);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" public ListView\u003cPerson\u003e getPersonListView() {","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" return personListView;","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" * Resets the display view to display the home card. This is fired when the user","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" * presses the escape key.","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" public void resetHomeCard() {","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" displayView.getChildren().setAll(homeCard.getRoot());","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" personListView.getSelectionModel().clearSelection();","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" homeCard.playAnimation();","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" public int getSelectedIndex() {","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" return personListView.getSelectionModel().getSelectedIndex();","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":" private static final double HOVERED_SCALE \u003d 1.035; // Scale for hovered item","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" private static final double NORMAL_SCALE \u003d 1.0; // Normal scale","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":" private static final double SCALE_DURATION \u003d 200;","lastModifiedDate":"2024-03-30"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":" private ScaleTransition scaleUpTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" private ScaleTransition scaleDownTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" private boolean hasAnimation;","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" public PersonListViewCell() {","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"NewtonKoh"},"content":" this.hasAnimation \u003d true;","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" scaleUpTransition \u003d new ScaleTransition(Duration.millis(SCALE_DURATION), this);","lastModifiedDate":"2024-03-30"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":" scaleUpTransition.setToX(HOVERED_SCALE);","lastModifiedDate":"2024-03-30"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" scaleUpTransition.setToY(HOVERED_SCALE);","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"NewtonKoh"},"content":" scaleDownTransition \u003d new ScaleTransition(Duration.millis(SCALE_DURATION), this);","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" scaleDownTransition.setToX(NORMAL_SCALE);","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"NewtonKoh"},"content":" scaleDownTransition.setToY(NORMAL_SCALE);","lastModifiedDate":"2024-03-30"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":" setOnMouseEntered(e -\u003e scaleUpTransition.playFromStart());","lastModifiedDate":"2024-03-30"},{"lineNumber":109,"author":{"gitId":"NewtonKoh"},"content":" setOnMouseExited(e -\u003e scaleDownTransition.playFromStart());","lastModifiedDate":"2024-03-30"},{"lineNumber":110,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":" return;","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" PersonCard personCard \u003d new PersonCard(person, getIndex() + 1, getAnimateFlag());","lastModifiedDate":"2024-03-31"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":" setGraphic(personCard.getRoot());","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":" personCard.getCardPane().prefWidthProperty().bind(Bindings.createDoubleBinding((","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"NewtonKoh"},"content":" ) -\u003e personListView.getPrefWidth() - PADDING_SIZE, personListView.prefWidthProperty()));","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":" private boolean getAnimateFlag() {","lastModifiedDate":"2024-03-31"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":" if (hasAnimation) {","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":130,"author":{"gitId":"NewtonKoh"},"content":" hasAnimation \u003d false;","lastModifiedDate":"2024-03-31"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" return true;","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" return hasAnimation;","lastModifiedDate":"2024-03-31"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"NewtonKoh":54,"-":48,"zhekaiii":35}},{"path":"src/main/java/seedu/address/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Resource folder where FXML files are stored.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @see #UiPart(URL, T)","lastModifiedDate":"2017-11-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":77,"zhekaiii":16}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"@font-face {","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #e0e0e0;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":" background-color: #e0e0e0; /* Used in the default.html file */","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" -fx-control-inner-background: #d9d9d9;","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #d7d7d7;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color: #2daddc;","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-30"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #edfaff;","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 5, 0, 0, 3);","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"NewtonKoh"},"content":".list-cell:filled:hover #cardPane {","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color: rgb(168, 168, 168);","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":129,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":".amount-header {","lastModifiedDate":"2024-03-30"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-30"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 40px;","lastModifiedDate":"2024-03-30"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-30"},{"lineNumber":137,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":138,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":139,"author":{"gitId":"NewtonKoh"},"content":".time-big-label {","lastModifiedDate":"2024-03-30"},{"lineNumber":140,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-30"},{"lineNumber":141,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 60px;","lastModifiedDate":"2024-03-30"},{"lineNumber":142,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill:white;","lastModifiedDate":"2024-03-31"},{"lineNumber":143,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":144,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":145,"author":{"gitId":"NewtonKoh"},"content":".time-small-label {","lastModifiedDate":"2024-03-30"},{"lineNumber":146,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-30"},{"lineNumber":147,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 40px;","lastModifiedDate":"2024-03-30"},{"lineNumber":148,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":149,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":150,"author":{"gitId":"NewtonKoh"},"content":".display_big_label {","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 45px;","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"NewtonKoh"},"content":".display_small_bold_label {","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-weight:bold;","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"NewtonKoh"},"content":".display_small_label {","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"NewtonKoh"},"content":"/*this is for the command text background*/","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgba(118, 118, 118, 0.5);","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 15;","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 15;","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":190,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":191,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-26"},{"lineNumber":192,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius:20;","lastModifiedDate":"2024-03-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: linear-gradient(to bottom right, #7BD7E5, #1B96C0 50%, #7BE5D2);","lastModifiedDate":"2024-03-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":200,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":203,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":205,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":207,"author":{"gitId":"NewtonKoh"},"content":".result-display .content{","lastModifiedDate":"2024-03-26"},{"lineNumber":208,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":210,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":213,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":215,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":216,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: linear-gradient(to bottom right, #7BD7E5, #1B96C0 50%, #7BE5D2);","lastModifiedDate":"2024-03-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(128, 128, 128);","lastModifiedDate":"2024-03-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":241,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(128, 128, 128);","lastModifiedDate":"2024-03-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(128, 128, 128);","lastModifiedDate":"2024-03-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(128, 128, 128);","lastModifiedDate":"2024-03-26"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":341,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":343,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":344,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":345,"author":{"gitId":"NewtonKoh"},"content":".scroll-bar:vertical {","lastModifiedDate":"2024-03-26"},{"lineNumber":346,"author":{"gitId":"NewtonKoh"},"content":" -fx-pref-width: 15px;","lastModifiedDate":"2024-03-26"},{"lineNumber":347,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #cccccc;","lastModifiedDate":"2024-03-26"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":352,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-26"},{"lineNumber":353,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":355,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":360,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":361,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":362,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":366,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":368,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":369,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":370,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":372,"author":{"gitId":"NewtonKoh"},"content":"#miniPane {","lastModifiedDate":"2024-03-30"},{"lineNumber":373,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-30"},{"lineNumber":374,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":375,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":376,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":377,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-26"},{"lineNumber":378,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-26"},{"lineNumber":379,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.3;","lastModifiedDate":"2024-03-30"},{"lineNumber":380,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color:rgb(201, 201, 201);","lastModifiedDate":"2024-03-26"},{"lineNumber":381,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-26"},{"lineNumber":382,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":384,"author":{"gitId":"NewtonKoh"},"content":"#topPane{","lastModifiedDate":"2024-03-30"},{"lineNumber":385,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color: rgb(184, 184, 184);","lastModifiedDate":"2024-03-30"},{"lineNumber":386,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.8;","lastModifiedDate":"2024-03-30"},{"lineNumber":387,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":388,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":389,"author":{"gitId":"NewtonKoh"},"content":".white-pane {","lastModifiedDate":"2024-03-30"},{"lineNumber":390,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-26"},{"lineNumber":391,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":392,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.5;","lastModifiedDate":"2024-03-30"},{"lineNumber":393,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color:rgb(201, 201, 201);","lastModifiedDate":"2024-03-26"},{"lineNumber":394,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":395,"author":{"gitId":"NewtonKoh"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 5, 0, 0, 3);","lastModifiedDate":"2024-03-26"},{"lineNumber":396,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":398,"author":{"gitId":"NewtonKoh"},"content":"#notePane {","lastModifiedDate":"2024-03-31"},{"lineNumber":399,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(255, 249, 228);","lastModifiedDate":"2024-03-31"},{"lineNumber":400,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-31"},{"lineNumber":401,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.5;","lastModifiedDate":"2024-03-31"},{"lineNumber":402,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color:rgb(201, 201, 201);","lastModifiedDate":"2024-03-31"},{"lineNumber":403,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-31"},{"lineNumber":404,"author":{"gitId":"NewtonKoh"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 5, 0, 0, 3);","lastModifiedDate":"2024-03-31"},{"lineNumber":405,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-31"},{"lineNumber":406,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":407,"author":{"gitId":"NewtonKoh"},"content":"#contactAmount {","lastModifiedDate":"2024-03-30"},{"lineNumber":408,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 40px;","lastModifiedDate":"2024-03-30"},{"lineNumber":409,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":410,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":411,"author":{"gitId":"NewtonKoh"},"content":"#contactTop,","lastModifiedDate":"2024-03-30"},{"lineNumber":412,"author":{"gitId":"NewtonKoh"},"content":"#contactBottom,","lastModifiedDate":"2024-03-30"},{"lineNumber":413,"author":{"gitId":"NewtonKoh"},"content":"#contactAmount {","lastModifiedDate":"2024-03-30"},{"lineNumber":414,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":417,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":418,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":419,"author":{"gitId":"NewtonKoh"},"content":" /*-fx-text-fill: #F70D1A;*/","lastModifiedDate":"2024-03-26"},{"lineNumber":420,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":422,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":423,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":424,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":425,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":426,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":427,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":428,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":429,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":430,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":432,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":433,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":434,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":436,"author":{"gitId":"NewtonKoh"},"content":"/*this is for the result display block*/","lastModifiedDate":"2024-03-26"},{"lineNumber":437,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":438,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgba(116, 51, 163, 0.371);","lastModifiedDate":"2024-03-26"},{"lineNumber":439,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius:10;","lastModifiedDate":"2024-03-26"},{"lineNumber":440,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":441,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":442,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":443,"author":{"gitId":"NewtonKoh"},"content":"#resultDisplay .viewport {","lastModifiedDate":"2024-03-26"},{"lineNumber":444,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":445,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":446,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":447,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":448,"author":{"gitId":"NewtonKoh"},"content":"#resultDisplay {","lastModifiedDate":"2024-03-26"},{"lineNumber":449,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":450,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgba(50, 50, 50, 0.5);","lastModifiedDate":"2024-03-26"},{"lineNumber":451,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":452,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-26"},{"lineNumber":453,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius:20;","lastModifiedDate":"2024-03-26"},{"lineNumber":454,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":456,"author":{"gitId":"NewtonKoh"},"content":"#daysAvailable,","lastModifiedDate":"2024-03-30"},{"lineNumber":457,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":458,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":459,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":460,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":462,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":463,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":464,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #2658c4;","lastModifiedDate":"2024-03-30"},{"lineNumber":465,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":466,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":467,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":468,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":469,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":470,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":471,"author":{"gitId":"JerryO3"},"content":"#daysAvailable {","lastModifiedDate":"2024-03-24"},{"lineNumber":472,"author":{"gitId":"JerryO3"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-24"},{"lineNumber":473,"author":{"gitId":"JerryO3"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-24"},{"lineNumber":474,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":475,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":476,"author":{"gitId":"JerryO3"},"content":"#daysAvailable .label {","lastModifiedDate":"2024-03-24"},{"lineNumber":477,"author":{"gitId":"JerryO3"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-24"},{"lineNumber":478,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #7334a7;","lastModifiedDate":"2024-03-30"},{"lineNumber":479,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-24"},{"lineNumber":480,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-24"},{"lineNumber":481,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-24"},{"lineNumber":482,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-24"},{"lineNumber":483,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":484,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":485,"author":{"gitId":"NewtonKoh"},"content":"#mainPanel {","lastModifiedDate":"2024-03-30"},{"lineNumber":486,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #EFEFF4;","lastModifiedDate":"2024-03-30"},{"lineNumber":487,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":488,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":489,"author":{"gitId":"NewtonKoh"},"content":"#timePane {","lastModifiedDate":"2024-03-30"},{"lineNumber":490,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: linear-gradient(to bottom right, #269bad, #167798 50%, #57af9f);","lastModifiedDate":"2024-03-30"},{"lineNumber":491,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":492,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.5;","lastModifiedDate":"2024-03-30"},{"lineNumber":493,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color:rgb(201, 201, 201);","lastModifiedDate":"2024-03-30"},{"lineNumber":494,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":495,"author":{"gitId":"NewtonKoh"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 5, 0, 0, 3);","lastModifiedDate":"2024-03-30"},{"lineNumber":496,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":497,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":498,"author":{"gitId":"NewtonKoh"},"content":"#time,","lastModifiedDate":"2024-03-30"},{"lineNumber":499,"author":{"gitId":"NewtonKoh"},"content":"#second,","lastModifiedDate":"2024-03-30"},{"lineNumber":500,"author":{"gitId":"NewtonKoh"},"content":"#date {","lastModifiedDate":"2024-03-30"},{"lineNumber":501,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill:white;","lastModifiedDate":"2024-03-30"},{"lineNumber":502,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":503,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":504,"author":{"gitId":"NewtonKoh"},"content":"#date{","lastModifiedDate":"2024-03-30"},{"lineNumber":505,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":506,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":507,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":508,"author":{"gitId":"NewtonKoh"},"content":".chart-bar {","lastModifiedDate":"2024-03-30"},{"lineNumber":509,"author":{"gitId":"NewtonKoh"},"content":" -fx-bar-fill: rgb(110, 186, 221);","lastModifiedDate":"2024-03-30"},{"lineNumber":510,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: linear-gradient(to bottom right, #269bad, #167798 50%, #57af9f);","lastModifiedDate":"2024-03-30"},{"lineNumber":511,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":512,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":513,"author":{"gitId":"NewtonKoh"},"content":".axis {","lastModifiedDate":"2024-03-30"},{"lineNumber":514,"author":{"gitId":"NewtonKoh"},"content":" -fx-tick-label-font-size: 15;","lastModifiedDate":"2024-03-30"},{"lineNumber":515,"author":{"gitId":"NewtonKoh"},"content":" -fx-tick-label-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-30"},{"lineNumber":516,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"NewtonKoh":193,"JerryO3":8,"-":315}},{"path":"src/main/resources/view/DisplayCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"\u003cHBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"CENTER\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" minWidth\u003d\"300.0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"CENTER\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"75.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\" minWidth\u003d\"250.0\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"id\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel id\u003d\"name\" fx:id\u003d\"name\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_big_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$first\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"30.0\" top\u003d\"30.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"TOP_CENTER\" minHeight\u003d\"80.0\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"tagIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel alignment\u003d\"TOP_LEFT\" maxWidth\u003d\"130.0\"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"display_small_bold_label\" text\u003d\"Tags:\"","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" \u003cFlowPane fx:id\u003d\"tags\" alignment\u003d\"CENTER\" columnHalignment\u003d\"CENTER\"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" maxHeight\u003d\"200.0\" prefWrapLength\u003d\"100.0\" rowValignment\u003d\"TOP\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"25.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"TOP_CENTER\" minHeight\u003d\"80.0\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"dayIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel alignment\u003d\"TOP_LEFT\" maxWidth\u003d\"130.0\"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"display_small_bold_label\" text\u003d\"Days Available:\"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" \u003cFlowPane fx:id\u003d\"daysAvailable\" alignment\u003d\"CENTER\" columnHalignment\u003d\"CENTER\"","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" maxHeight\u003d\"200.0\" prefWrapLength\u003d\"100.0\" rowValignment\u003d\"TOP\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"NewtonKoh"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"50.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox minWidth\u003d\"500.0\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_bold_label\" text\u003d\"Contact Details\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets top\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":109,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":113,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Separator\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":114,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"7.5\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":117,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"phoneIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\" styleClass\u003d\"display_small_bold_label\"","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"Phone Number:\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":126,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"phone\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$phone\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"addressIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":137,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":138,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":139,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":140,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\"","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"display_small_bold_label\" text\u003d\"Address:\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"address\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$address\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":149,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"7.5\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"7.5\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":150,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"emailIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":156,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":157,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\" styleClass\u003d\"display_small_bold_label\"","lastModifiedDate":"2024-04-03"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"Email:\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"email\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$email\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"7.5\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"7.5\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":169,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":172,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"birthdayIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":175,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":176,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":177,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\"","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"display_small_bold_label\" text\u003d\"Birthday:\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":180,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"birthday\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$birthday\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"7.5\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"7.5\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":188,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":189,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":190,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":191,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"moneyIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":194,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":195,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":196,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":197,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\" styleClass\u003d\"display_small_bold_label\"","lastModifiedDate":"2024-04-03"},{"lineNumber":198,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"Money Owed\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":199,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":202,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":203,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"moneyOwed\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":204,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$moneyOwed\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"30.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"7.5\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":207,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":208,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":210,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"50.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":211,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":212,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":213,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox id\u003d\"notePane\" fx:id\u003d\"notePane\" maxWidth\u003d\"250.0\" minWidth\u003d\"250.0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":214,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":215,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_bold_label\" text\u003d\"Remark\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":216,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":217,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":218,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":219,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":220,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":221,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":222,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":223,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":224,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":225,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"remark\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":226,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$remark\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":227,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":228,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":229,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":230,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":231,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":232,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":233,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":234,"author":{"gitId":"NewtonKoh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":235,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":236,"author":{"gitId":"NewtonKoh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":237,"author":{"gitId":"NewtonKoh"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"NewtonKoh":186,"zhekaiii":51}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" -fx-text-fill: #ff534c !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":" -fx-background: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 20;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NewtonKoh":4,"-":15,"zhekaiii":1}},{"path":"src/main/resources/view/HomeCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.chart.BarChart?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.chart.CategoryAxis?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.chart.NumberAxis?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"\u003cVBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox fx:id\u003d\"timePane\" alignment\u003d\"CENTER_LEFT\" minWidth\u003d\"300.0\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"BOTTOM_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"40.0\" right\u003d\"40.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"time\" styleClass\u003d\"time-big-label\" text\u003d\"Time\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"second\" styleClass\u003d\"time-small-label\" text\u003d\"Second\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"8.0\" left\u003d\"5.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"date\" styleClass\u003d\"display_small_label\" text\u003d\"Date\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"40.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"30.0\" right\u003d\"100.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox fx:id\u003d\"contactAmountPane\" alignment\u003d\"CENTER\" minHeight\u003d\"150.0\" minWidth\u003d\"250.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_label\" text\u003d\"There are currently\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"contactCount\" styleClass\u003d\"amount-header\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"contacts on your FriendFolio\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"50.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox fx:id\u003d\"moneyPane\" alignment\u003d\"TOP_CENTER\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_bold_label\" text\u003d\"Financial Status\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" \u003cBarChart fx:id\u003d\"chart\" maxWidth\u003d\"400.0\" minWidth\u003d\"400.0\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":" \u003cxAxis\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" \u003cCategoryAxis maxWidth\u003d\"50.0\" side\u003d\"BOTTOM\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" \u003c/xAxis\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":" \u003cyAxis\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" \u003cNumberAxis side\u003d\"LEFT\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" \u003c/yAxis\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"30.0\" left\u003d\"20.0\" right\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" \u003c/BarChart\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"30.0\" right\u003d\"100.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"TOP_CENTER\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_bold_label\" text\u003d\"Available today\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" \u003cListView fx:id\u003d\"availableList\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"10.0\" right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"NewtonKoh"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"NewtonKoh":76,"zhekaiii":9}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"FriendFolio\"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\"/\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\"/\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox id\u003d\"topPane\" fillHeight\u003d\"false\" maxHeight\u003d\"300.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-color: linear-gradient(to bottom right, #7BD7E5, #1B96C0 50%, #7BE5D2);\"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-radius: 10; -fx-border-radius: 10;\" styleClass\u003d\"logo-view\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"logoImage\" fitHeight\u003d\"150.0\" fitWidth\u003d\"200.0\" pickOnBounds\u003d\"true\"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" preserveRatio\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"15.0\" right\u003d\"15.0\" top\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-radius: 20;\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" minWidth\u003d\"300.0\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"NewtonKoh":29,"-":44,"zhekaiii":15}},{"path":"src/main/resources/view/MiniPersonCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"\u003cVBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"TOP_CENTER\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox id\u003d\"miniPane\" fx:id\u003d\"miniPane\" alignment\u003d\"TOP_CENTER\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" \u003cGridPane alignment\u003d\"TOP_CENTER\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" \u003cRowConstraints/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets bottom\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" \u003cFlowPane fx:id\u003d\"tags\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets bottom\u003d\"5.0\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets left\u003d\"10.0\" right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" \u003cSeparator\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets left\u003d\"7.0\" right\u003d\"7.0\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" \u003c/Separator\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"zhekaiii":48}},{"path":"src/main/resources/view/PaymentWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":".payment-page-btn {","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" -fx-background-color: #1B96C0;","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" -fx-padding: 10;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" -fx-font-size: 16;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" -fx-pref-width: 150;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" -fx-cursor: hand;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":9}},{"path":"src/main/resources/view/PaymentWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Tooltip?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" resizable\u003d\"false\" title\u003d\"PayNow\" type\u003d\"javafx.stage.Stage\"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" \u003cURL value\u003d\"@PaymentWindow.css\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox style\u003d\"-fx-background-color: white; -fx-padding: 50; -fx-spacing: 20\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel contentDisplay\u003d\"GRAPHIC_ONLY\" style\u003d\"-fx-cursor: hand\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" \u003cgraphic\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fitHeight\u003d\"20\" fitWidth\u003d\"20\" style\u003d\"-fx-cursor: hand\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" \u003c/graphic\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" \u003ctooltip\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" \u003cTooltip fx:id\u003d\"helpTooltip\" showDelay\u003d\"0ms\" prefWidth\u003d\"300\" wrapText\u003d\"true\"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-font-size: 14\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" \u003c/tooltip\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"qrCode\" fitHeight\u003d\"400\" fitWidth\u003d\"400\" pickOnBounds\u003d\"true\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox style\u003d\"-fx-alignment: center\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" \u003cButton fx:id\u003d\"cancelButton\" text\u003d\"Close Window\" onMouseClicked\u003d\"#hide\"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"payment-page-btn\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" \u003cButton fx:id\u003d\"resetButton\" text\u003d\"Clear Debt\" onMouseClicked\u003d\"#onResetDebt\"","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"payment-page-btn\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003ctooltip\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" \u003cTooltip text\u003d\"Resets money owed to $0 and closes this window.\" showDelay\u003d\"0ms\"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-font-size: 14\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" \u003c/tooltip\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":49}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"\u003cHBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"CENTER\" fillHeight\u003d\"false\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" minWidth\u003d\"240.0\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\"/\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\"/\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" \u003cFlowPane fx:id\u003d\"tags\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" \u003cFlowPane fx:id\u003d\"daysAvailable\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"moneyOwed\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$moneyOwed\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" \u003cRowConstraints/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"NewtonKoh":25,"-":28,"zhekaiii":3}},{"path":"src/main/resources/view/PersonListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.effect.Blend?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"\u003cHBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" id\u003d\"mainPanel\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":" \u003cListView fx:id\u003d\"personListView\" minWidth\u003d\"300.0\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" \u003cSeparator orientation\u003d\"VERTICAL\" prefHeight\u003d\"200.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-border-width: 0; -fx-background-color: transparent; -fx-border-color: transparent;\"","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" HBox.hgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" \u003ceffect\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" \u003cBlend/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" \u003c/effect\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" \u003c/Separator\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox fx:id\u003d\"displayView\" alignment\u003d\"TOP_CENTER\" minWidth\u003d\"300.0\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"NewtonKoh":19,"-":5,"zhekaiii":6}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"\u003cStackPane xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" fx:id\u003d\"placeHolder\"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-radius: 20; -fx-border-radius: 20; -fx-background-color: transparent;\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-radius: 20; -fx-border-radius: 20; -fx-background-color: transparent;\"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"-":5,"zhekaiii":6}},{"path":"src/test/java/seedu/address/commons/util/AnimationUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"public class AnimationUtilTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" public void getBounceBackTransition() {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" Node node \u003d new VBox();","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" AnimationUtil.getBounceBackTransition(node);","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" public void getMoveTransition() {","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" Node node \u003d new VBox();","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" AnimationUtil.getMoveTransition(node);","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public void getFadeInTransition() {","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" Node node \u003d new VBox();","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" AnimationUtil.getFadeInTransition(node);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"zhekaiii":26}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MONEY_OWED_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"alvinnzz"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + BIRTHDAY_AMY + MONEY_OWED_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"alvinnzz":2,"-":174,"zhekaiii":6}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)))","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(validPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"-":47,"zhekaiii":2}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import java.util.List;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" assertEquals(List.of(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" assertEquals(addAliceCommand, addAliceCommand);","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" assertEquals(addAliceCommand, addAliceCommandCopy);","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(addAliceCommand, 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(addAliceCommand, null);","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(addAliceCommand, addBobCommand);","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-30"},{"lineNumber":159,"author":{"gitId":"NewtonKoh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-30"},{"lineNumber":160,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"zhekaiii"},"content":" public void updatePersonComparator(Comparator\u003cPerson\u003e personComparator) {","lastModifiedDate":"2024-03-25"},{"lineNumber":169,"author":{"gitId":"zhekaiii"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-25"},{"lineNumber":170,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":171,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":172,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" public Optional\u003cPerson\u003e findPerson(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-27"},{"lineNumber":174,"author":{"gitId":"zhekaiii"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":176,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":" public int findIndex(Person person) {","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" return Model.INVALID_PERSON_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":216,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"NewtonKoh":5,"-":191,"zhekaiii":29}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" // different personToPay value -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", AMY)));","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(commandResult.hashCode(),","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(commandResult.hashCode(),","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" // different personToPay value -\u003e returns different hashcode","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", AMY).hashCode());","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" + \", exit\u003d\" + commandResult.isExit()","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" + \", personToPay\u003d\" + commandResult.getPersonToPay()","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" + \", personToShow\u003d\" + commandResult.getPersonToShow() + \"}\";","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" public void isShowPayment() {","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\", AMY);","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" assertTrue(commandResult.isShowPayment());","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"-":60,"zhekaiii":20}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" public static final String VALID_REMARK_BOB \u003d \"Bob\u0027s remark\";","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" public static final String VALID_BIRTHDAY_AMY \u003d \"01/02/2001\";","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" public static final String VALID_BIRTHDAY_BOB \u003d \"02/03/2001\";","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" public static final String VALID_MONEY_OWED_AMY \u003d \"23.40\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" public static final String VALID_MONEY_OWED_BOB \u003d \"1.40\";","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" public static final String VALID_DAY_AVAILABLE_MONDAY \u003d \"monday\";","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" public static final String VALID_DAY_AVAILABLE_TUESDAY \u003d \"tuesday\";","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" public static final String VALID_MONEY_OWED_FOR_SPLIT_COMMAND \u003d \"20.40\";","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" public static final String VALID_MONEY_OWED_FOR_LEND_COMMAND \u003d \"12.80\";","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" public static final Float VALID_MONEY_OWED_FOR_LEND_COMMAND_IN_FLOAT \u003d (float) 12.80;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_AMY \u003d \" \" + PREFIX_BIRTHDAY + VALID_BIRTHDAY_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_BOB \u003d \" \" + PREFIX_BIRTHDAY + VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" public static final String MONEY_OWED_AMY \u003d \" \" + PREFIX_MONEY_OWED + VALID_MONEY_OWED_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":" public static final String MONEY_OWED_BOB \u003d \" \" + PREFIX_MONEY_OWED + VALID_MONEY_OWED_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" public static final String TAG_DESC_MONDAY \u003d \" \" + PREFIX_DAYS_AVAILABLE + VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" public static final String TAG_DESC_TUESDAY \u003d \" \" + PREFIX_DAYS_AVAILABLE + VALID_DAY_AVAILABLE_TUESDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" public static final String INVALID_MONEY_OWED_FOR_SPLIT_COMMAND \u003d \"0.01\"; // split amount should be at least 0.01;","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":" public static final String INVALID_DAY_DESC \u003d \" \" + PREFIX_DAYS_AVAILABLE + \"noneday\"; // not in enum values","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"NewtonKoh":1,"alvinnzz":8,"JerryO3":9,"-":128,"zhekaiii":5}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" public void execute_daysAvailableSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" .withTags(VALID_TAG_HUSBAND).withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY)","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" .build();","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"JerryO3"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()), editedPerson);","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"JerryO3":20,"-":180,"zhekaiii":28}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" // different days available -\u003e returns false","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", birthday\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" + editPersonDescriptor.getBirthday().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", moneyOwed\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" + editPersonDescriptor.getMoneyOwed().orElse(null) + \", daysAvailable\u003d\"","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" + editPersonDescriptor.getDaysAvailable().orElse(null) + \"}\";","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"alvinnzz":1,"JerryO3":7,"-":69,"zhekaiii":2}},{"path":"src/test/java/seedu/address/logic/commands/FilterNameCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" * Contains integration tests (interaction with the Model) for {@code FilterNameCommand}.","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":"public class FilterNameCommandTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand findFirstCommand \u003d new FilterNameCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand findSecondCommand \u003d new FilterNameCommand(secondPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand findFirstCommandCopy \u003d new FilterNameCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand command \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command,","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand command \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command,","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" public void execute_matchAllMultipleKeywords_personFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Carl\", true);","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" FilterNameCommand command \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command,","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(CARL), model.getFilteredPersonList());","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" public void execute_matchAllMultipleKeywords_noPersonFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\", true);","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" FilterNameCommand command \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command,","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":" assertEquals(List.of(), model.getFilteredPersonList());","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand filterNameCommand \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"JerryO3"},"content":" String expected \u003d FilterNameCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"JerryO3"},"content":" assertEquals(expected, filterNameCommand.toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput, boolean matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")), matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"JerryO3":11,"-":78,"zhekaiii":43}},{"path":"src/test/java/seedu/address/logic/commands/FilterTagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.JOHN;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"public class FilterTagCommandTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" public void equals() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" new PersonHasTagPredicate(TestUtil.stringsToTags(Collections.singletonList(\"first\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" new PersonHasTagPredicate(TestUtil.stringsToTags(Collections.singletonList(\"second\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand filterFirstCommand \u003d new FilterTagCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand filterSecondCommand \u003d new FilterTagCommand(secondPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommand));","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand findFirstCommandCopy \u003d new FilterTagCommand(firstPredicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" assertTrue(filterFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" assertFalse(filterFirstCommand.equals(1));","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" assertFalse(filterFirstCommand.equals(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" assertFalse(filterFirstCommand.equals(filterSecondCommand));","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" public void execute_zeroKeywords_noPersonFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" public void execute_oneKeywords_onePersonFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"TAs\");","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":" assertEquals(Arrays.asList(JOHN), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" public void execute_oneKeywords_multiplePersonsFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"friends\");","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" public void execute_multipleKeywords_onePersonFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"Acquaintances TAs CCA\");","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"JerryO3"},"content":" assertEquals(Arrays.asList(JOHN), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"JerryO3"},"content":" public void execute_multipleKeywords_multiplePersonsFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 4);","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"friends TAs CCA\");","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"JerryO3"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL, JOHN), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" public void execute_matchAllMultipleKeywords_personFound() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"friends owesMoney\", true);","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"JerryO3"},"content":" public void toStringMethod() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"keyword\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand filterTagCommand \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"JerryO3"},"content":" String expected \u003d FilterTagCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":145,"author":{"gitId":"JerryO3"},"content":" assertEquals(expected, filterTagCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"JerryO3"},"content":" * Parses {@code userInput} into a {@code PersonHasTagPredicate}.","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"JerryO3"},"content":" private PersonHasTagPredicate preparePredicate(String userInput) throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"JerryO3"},"content":" return new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(userInput.split(\"\\\\s+\"))));","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" private PersonHasTagPredicate preparePredicate(String userInput, boolean matchAll) throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" return new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(userInput.split(\"\\\\s+\"))), matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"JerryO3":115,"zhekaiii":43}},{"path":"src/test/java/seedu/address/logic/commands/LendCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND_IN_FLOAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"class LendCommandTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" public void execute_withInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" LendCommand lendCommand \u003d new LendCommand(invalidIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" assertCommandFailure(lendCommand, model, expectedMessage);","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" public void execute_withSuccess() {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" LendCommand lendCommand \u003d new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getName(), personInFilteredList.getPhone(), personInFilteredList.getEmail(),","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getAddress(), personInFilteredList.getRemark(), personInFilteredList.getTags(),","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getBirthday(),","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getMoneyOwed().addAmountOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND_IN_FLOAT),","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getDaysAvailable());","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" LendCommand.MESSAGE_LENT_PERSON_SUCCESS,","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" expectedModel.setPerson(personInFilteredList, editedPerson);","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" assertCommandSuccess(lendCommand,","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" model,","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" new CommandResult(expectedMessage).withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" expectedModel);","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" public void equals() {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" final LendCommand standardCommand \u003d new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed differentLentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" LendCommand commandWithSameValues \u003d new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"alvinnzz"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"alvinnzz"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"alvinnzz"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"alvinnzz"},"content":" // different types of command -\u003e returns false","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new LendCommand(INDEX_SECOND_PERSON, lentAmount)));","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" // different MoneyOwed -\u003e returns false","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new LendCommand(targetIndex, differentLentAmount)));","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"alvinnzz"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"alvinnzz"},"content":" LendCommand lendCommand \u003d new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"alvinnzz"},"content":" String expected \u003d LendCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"alvinnzz"},"content":" + \", amountToLend\u003d\"","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"alvinnzz"},"content":" + lentAmount + \"}\";","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"alvinnzz"},"content":" assertEquals(expected, lendCommand.toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"alvinnzz":105}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" new ListCommand(),","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(ListCommand.MESSAGE_SUCCESS).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" new ListCommand(),","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(ListCommand.MESSAGE_SUCCESS).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":37,"zhekaiii":10}},{"path":"src/test/java/seedu/address/logic/commands/PayCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_MOBILE;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":"public class PayCommandTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" public void execute_validIndex_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" Person personToPay \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" PayCommand payCommand \u003d new PayCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" String expectedMessage \u003d String.format(PayCommand.MESSAGE_GENERATE_QR_SUCCESS,","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" Messages.format(personToPay));","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" payCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage, personToPay).withPersonToShow(model.findIndex(personToPay)),","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" PayCommand payCommand \u003d new PayCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(payCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" PayCommand payCommand \u003d new PayCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(payCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" public void execute_nonSingaporeanNumber_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" final String[] invalidNumbers \u003d new String[]{\"72478212\",","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" \"82133\",","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" \"934234\"};","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(new PersonBuilder(AMY).withPhone(invalidNumbers[0]).build());","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(new PersonBuilder(BOB).withPhone(invalidNumbers[1]).build());","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(new PersonBuilder(CARL).withPhone(invalidNumbers[2]).build());","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" Model model \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(new PayCommand(INDEX_FIRST_PERSON), model, MESSAGE_INVALID_MOBILE);","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(new PayCommand(INDEX_SECOND_PERSON), model, MESSAGE_INVALID_MOBILE);","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(new PayCommand(INDEX_THIRD_PERSON), model, MESSAGE_INVALID_MOBILE);","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" PayCommand payFirstCommand \u003d new PayCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" PayCommand paySecondCommand \u003d new PayCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" assertEquals(payFirstCommand, payFirstCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" PayCommand payFirstCommandCopy \u003d new PayCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" assertEquals(payFirstCommand, payFirstCommandCopy);","lastModifiedDate":"2024-03-27"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(payFirstCommand, 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(payFirstCommand, null);","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(payFirstCommand, paySecondCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":" PayCommand payCommand \u003d new PayCommand(targetIndex);","lastModifiedDate":"2024-03-27"},{"lineNumber":114,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d PayCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"zhekaiii"},"content":" assertEquals(expected, payCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":116,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":117}},{"path":"src/test/java/seedu/address/logic/commands/RemarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"class RemarkCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" private static final String REMARK_STUB \u003d \"Some remark\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" public void execute_addRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON, new Remark(editedPerson.getRemark().value));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" remarkCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(model.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" public void execute_deleteRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(\"\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" new Remark(editedPerson.getRemark().toString()));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_DELETE_REMARK_SUCCESS, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" remarkCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(model.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" Person editedPerson \u003d new PersonBuilder(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()))","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" .withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON, new Remark(editedPerson.getRemark().value));","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" remarkCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(model.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(outOfBoundIndex, new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" assertCommandFailure(remarkCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"NewtonKoh"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"NewtonKoh"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"NewtonKoh"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(outOfBoundIndex, new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"NewtonKoh"},"content":" assertCommandFailure(remarkCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"NewtonKoh":99,"zhekaiii":15}},{"path":"src/test/java/seedu/address/logic/commands/ResetDebtCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"public class ResetDebtCommandTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public void execute_validPerson_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" // Benson owes money","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand command \u003d new ResetDebtCommand(BENSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" Person editedPerson \u003d new PersonBuilder(BENSON).withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" expectedModel.setPerson(BENSON, editedPerson);","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(String.format(ResetDebtCommand.RESET_SUCCESS_MESSAGE, BENSON.getName()))","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" // Alice doesn\u0027t owe money so don\u0027t need to replace her in the address book","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" command \u003d new ResetDebtCommand(ALICE);","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(String.format(ResetDebtCommand.RESET_SUCCESS_MESSAGE, ALICE.getName()))","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(ALICE)),","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" public void execute_personNotFound_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand command \u003d new ResetDebtCommand(AMY);","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(command, model, String.format(ResetDebtCommand.PERSON_NOT_FOUND_MESSAGE, AMY.getPhone()));","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand resetDebtFirstCommand \u003d new ResetDebtCommand(AMY);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand resetDebtSecondCommand \u003d new ResetDebtCommand(BOB);","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" assertEquals(resetDebtFirstCommand, resetDebtFirstCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand resetDebtFirstCommandCopy \u003d new ResetDebtCommand(AMY);","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" assertEquals(resetDebtFirstCommand, resetDebtFirstCommandCopy);","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(resetDebtFirstCommand, 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(resetDebtFirstCommand, null);","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(resetDebtFirstCommand, resetDebtSecondCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" Person person \u003d AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand resetDebtCommand \u003d new ResetDebtCommand(person);","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d ResetDebtCommand.class.getCanonicalName() + \"{originalPerson\u003d\" + person + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" assertEquals(expected, resetDebtCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":84}},{"path":"src/test/java/seedu/address/logic/commands/SortCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.SortCommand.NAME_SORT_TYPE;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.GEORGE;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.exceptions.InvalidSortTypeException;","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":"public class SortCommandTest {","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" public void constructor_invalidSortType_throwsInvalidSortTypeException() {","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" final String invalidSortType \u003d \"hello\";","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" assertThrows(InvalidSortTypeException.class, () -\u003e new SortCommand(invalidSortType));","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" public void constructor_validSortType_success() throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" new SortCommand(SortCommand.MONEY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" public void equals() throws InvalidSortTypeException {","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" SortCommand sortByBirthday \u003d new SortCommand(SortCommand.BIRTHDAY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" SortCommand sortByBirthdayCopy \u003d new SortCommand(SortCommand.BIRTHDAY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" SortCommand sortByName \u003d new SortCommand(NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" assertEquals(sortByBirthday, sortByBirthday);","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" assertEquals(sortByBirthday, sortByBirthdayCopy);","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" // different sorting methods -\u003e returns false","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(sortByBirthday, sortByName);","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(sortByBirthday, null);","lastModifiedDate":"2024-03-25"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" public void execute_sortByBirthday() throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" // This is the correct order after sorting","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" Person[] persons \u003d new Person[]{","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(ALICE)","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(LocalDate.now().withYear(1999).plusDays(1)","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" .format(DateTimeFormatter.ofPattern(Birthday.BIRTHDAY_FORMAT))).build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(BOB)","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(LocalDate.now().withYear(1990).plusDays(2)","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" .format(DateTimeFormatter.ofPattern(Birthday.BIRTHDAY_FORMAT))).build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(CARL)","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(LocalDate.now().withYear(1989).plusDays(-10)","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" .format(DateTimeFormatter.ofPattern(Birthday.BIRTHDAY_FORMAT))).build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(DANIEL)","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(LocalDate.now().withYear(2000).plusDays(-2)","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" .format(DateTimeFormatter.ofPattern(Birthday.BIRTHDAY_FORMAT))).build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(ELLE)","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"\").build(),","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(GEORGE)","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"\").build()","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" };","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" // Add to address book in random order","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[5]);","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[2]);","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[3]);","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[4]);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[0]);","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[1]);","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" final Model model \u003d new ModelManager(new AddressBook(addressBook), new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" final Model expectedModel \u003d new ModelManager(new AddressBook(addressBook), new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" final String expectedMessage \u003d String.format(Messages.MESSAGE_SORTED_OVERVIEW, SortCommand.BIRTHDAY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(Birthday.BIRTHDAY_COMPARATOR);","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" SortCommand command \u003d new SortCommand(SortCommand.BIRTHDAY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(persons), model.getFilteredPersonList());","lastModifiedDate":"2024-03-25"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" public void execute_sortByName() throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-25"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(BOB);","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(ELLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-25"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(CARL);","lastModifiedDate":"2024-03-25"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(DANIEL);","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":115,"author":{"gitId":"zhekaiii"},"content":" final Model model \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":116,"author":{"gitId":"zhekaiii"},"content":" final Model expectedModel \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":117,"author":{"gitId":"zhekaiii"},"content":" final String expectedMessage \u003d String.format(Messages.MESSAGE_SORTED_OVERVIEW, NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(Name.NAME_COMPARATOR);","lastModifiedDate":"2024-03-25"},{"lineNumber":119,"author":{"gitId":"zhekaiii"},"content":" SortCommand command \u003d new SortCommand(NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-25"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(ALICE, BOB, CARL, DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-25"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":" public void execute_sortByMoneyOwed() throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" // This is the correct order after sorting","lastModifiedDate":"2024-03-25"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" Person[] persons \u003d new Person[]{","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(ALICE).withMoneyOwed(\"-2\").build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(BOB).withMoneyOwed(\"-1.5\").build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(CARL).withMoneyOwed(\"4\").build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(HOON).withMoneyOwed(\"4\").build(),","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(DANIEL).withMoneyOwed(\"3\").build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(ELLE).withMoneyOwed(\"0\").build(),","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(GEORGE).withMoneyOwed(\"0\").build()","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" };","lastModifiedDate":"2024-03-25"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" // Add to address book in random order","lastModifiedDate":"2024-03-25"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-25"},{"lineNumber":139,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[4]);","lastModifiedDate":"2024-03-25"},{"lineNumber":140,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[2]);","lastModifiedDate":"2024-03-25"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[3]);","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[5]);","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[0]);","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[6]);","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[1]);","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" final Model model \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" final Model expectedModel \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" final String expectedMessage \u003d String.format(Messages.MESSAGE_SORTED_OVERVIEW, SortCommand.MONEY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(MoneyOwed.MONEY_COMPARATOR);","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" SortCommand command \u003d new SortCommand(SortCommand.MONEY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-25"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(persons), model.getFilteredPersonList());","lastModifiedDate":"2024-03-25"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" public void execute_clearSort() throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(BOB);","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(ELLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":161,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(CARL);","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(DANIEL);","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"zhekaiii"},"content":" final Model model \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":" final Model expectedModel \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"zhekaiii"},"content":" final String expectedSortMessage \u003d String.format(Messages.MESSAGE_SORTED_OVERVIEW, NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"zhekaiii"},"content":" final String expectedClearMessage \u003d Messages.MESSAGE_SORT_CLEARED;","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(Name.NAME_COMPARATOR);","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"zhekaiii"},"content":" SortCommand sortByNameCommand \u003d new SortCommand(NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(sortByNameCommand, model, expectedSortMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(ALICE, BOB, CARL, DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-26"},{"lineNumber":174,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":175,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(null);","lastModifiedDate":"2024-03-26"},{"lineNumber":176,"author":{"gitId":"zhekaiii"},"content":" SortCommand clearSortCommand \u003d new SortCommand(SortCommand.CLEAR_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":177,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(clearSortCommand, model, expectedClearMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(BOB, ELLE, ALICE, CARL, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-26"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"zhekaiii"},"content":" SortCommand command \u003d new SortCommand(NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d SortCommand.class.getCanonicalName() + \"{sortType\u003d\" + NAME_SORT_TYPE + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"zhekaiii"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"zhekaiii":187}},{"path":"src/test/java/seedu/address/logic/commands/SplitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MONEY_OWED_FOR_SPLIT_COMMAND;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"import java.util.List;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":"class SplitCommandTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" public void getSplitAmount_with_validArgs() {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" Float totalAmount \u003d (float) 10.20;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" int numPeople \u003d 2;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" Float expectedAmount \u003d (float) 5.10;","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" assertEquals(SplitCommand.getSplitAmount(totalAmount, numPeople), expectedAmount);","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" public void hasValidIndexList_withValidIndexList() {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" int sizeOfLastShownList \u003d 3;","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" assertTrue(SplitCommand.hasValidIndexList(indexList, sizeOfLastShownList));","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" public void hasValidIndexList_withInvalidIndexList() {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" int sizeOfLastShownList \u003d model.getFilteredPersonList().size();","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" Index invalidIndex \u003d Index.fromOneBased(sizeOfLastShownList + 1);","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e invalidIndexList \u003d Arrays.asList(INDEX_FIRST_PERSON, invalidIndex);","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" assertFalse(SplitCommand.hasValidIndexList(invalidIndexList, sizeOfLastShownList));","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" public void execute_withInvalidSplitAmount_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(INVALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" SplitCommand splitCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d SplitCommand.MESSAGE_INVALID_AMOUNT;","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" assertCommandFailure(splitCommand, model, expectedMessage);","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" public void execute_withInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(invalidIndex, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" SplitCommand splitCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" assertCommandFailure(splitCommand, model, expectedMessage);","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"alvinnzz"},"content":" public void execute_splitBetweenTwoUnfilteredList_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":" // Creating splitCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"alvinnzz"},"content":" SplitCommand splitCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" // Getting split amount for this split command","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":" Float splitAmount \u003d SplitCommand.getSplitAmount(totalOwed.getAmount(), indexList.size() + 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d String.format(\"$\" + VALID_MONEY_OWED_FOR_SPLIT_COMMAND","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":" + \" has been split among you and \" + indexList.size() + \" more people!\");","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" // Get the expected model for this split command","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":" Person first \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" Person second \u003d model.getFilteredPersonList().get(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" Person expectedFirst \u003d new Person(","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"alvinnzz"},"content":" first.getName(), first.getPhone(), first.getEmail(),","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":" first.getAddress(), first.getRemark(), first.getTags(),","lastModifiedDate":"2024-03-27"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":" first.getBirthday(), first.getMoneyOwed().addAmountOwed(splitAmount),","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" first.getDaysAvailable());","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"alvinnzz"},"content":" Person expectedSecond \u003d new Person(","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"alvinnzz"},"content":" second.getName(), second.getPhone(), second.getEmail(),","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"alvinnzz"},"content":" second.getAddress(), second.getRemark(), second.getTags(),","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"JerryO3"},"content":" second.getBirthday(), second.getMoneyOwed().addAmountOwed(splitAmount),","lastModifiedDate":"2024-03-29"},{"lineNumber":104,"author":{"gitId":"JerryO3"},"content":" second.getDaysAvailable());","lastModifiedDate":"2024-03-29"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), expectedFirst);","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"alvinnzz"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(1), expectedSecond);","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"alvinnzz"},"content":" assertCommandSuccess(splitCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":110,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":" void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":114,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"alvinnzz"},"content":" final SplitCommand standardCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":116,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e differentIndexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON, INDEX_THIRD_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":118,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed differentTotalOwed \u003d new MoneyOwed(\"40.30\");","lastModifiedDate":"2024-03-27"},{"lineNumber":119,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":120,"author":{"gitId":"alvinnzz"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":121,"author":{"gitId":"alvinnzz"},"content":" SplitCommand commandWithSameValues \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":122,"author":{"gitId":"alvinnzz"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":124,"author":{"gitId":"alvinnzz"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"alvinnzz"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":128,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"alvinnzz"},"content":" // different types of command -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"alvinnzz"},"content":" // different index list -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new SplitCommand(differentIndexList, totalOwed)));","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"alvinnzz"},"content":" // different MoneyOwed -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":137,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new SplitCommand(indexList, differentTotalOwed)));","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":139,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":140,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":141,"author":{"gitId":"alvinnzz"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":142,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":143,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"alvinnzz"},"content":" SplitCommand splitCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":145,"author":{"gitId":"alvinnzz"},"content":" String expected \u003d SplitCommand.class.getCanonicalName() + \"{indexListToSplit\u003d\" + indexList","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"alvinnzz"},"content":" + \", totalOwed\u003d\"","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"alvinnzz"},"content":" + totalOwed + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"alvinnzz"},"content":" assertEquals(expected, splitCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"alvinnzz":146,"JerryO3":4}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DAY_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MONEY_OWED_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MONEY_OWED_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_MONDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_TUESDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_TUESDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-25"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" .withDaysAvailable(VALID_DAY_AVAILABLE_TUESDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + BIRTHDAY_BOB + MONEY_OWED_BOB + TAG_DESC_TUESDAY,","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + BIRTHDAY_BOB + MONEY_OWED_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"JerryO3"},"content":" // multiple days - all accepted","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":" Person expectedPersonMultipleDays \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" .withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY, VALID_DAY_AVAILABLE_TUESDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + BIRTHDAY_BOB + MONEY_OWED_BOB + TAG_DESC_MONDAY","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" + TAG_DESC_TUESDAY,","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" new AddCommand(expectedPersonMultipleDays));","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"JerryO3"},"content":" Person expectedPersonNoTags \u003d new PersonBuilder(AMY).withTags().withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY)","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"JerryO3"},"content":" .build();","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"JerryO3"},"content":" + BIRTHDAY_AMY + MONEY_OWED_AMY + TAG_DESC_MONDAY,","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"JerryO3"},"content":" new AddCommand(expectedPersonNoTags));","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"JerryO3"},"content":" // zero daysAvailable","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"JerryO3"},"content":" Person expectedPersonNoDaysAvailable \u003d new PersonBuilder(AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"JerryO3"},"content":" + BIRTHDAY_AMY + MONEY_OWED_AMY + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"JerryO3"},"content":" new AddCommand(expectedPersonNoDaysAvailable));","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"JerryO3"},"content":" // invalid day","lastModifiedDate":"2024-03-25"},{"lineNumber":218,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-25"},{"lineNumber":219,"author":{"gitId":"JerryO3"},"content":" + TAG_DESC_HUSBAND + VALID_TAG_FRIEND + INVALID_DAY_DESC, Day.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":220,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"alvinnzz":2,"JerryO3":37,"-":190,"zhekaiii":1}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterDayCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterNameCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterTagCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.LendCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.PayCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.SortCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.SplitCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonAvailableOnDayPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand command \u003d (FilterNameCommand) parser.parseCommand(","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand.COMMAND_WORD + \" name \"","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand test \u003d new FilterNameCommand(new NameContainsKeywordsPredicate(keywords));","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" assertEquals(test , command);","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"JerryO3"},"content":" public void parseCommand_filterTags() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"JerryO3"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"JerryO3"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(FilterCommand.COMMAND_WORD","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"JerryO3"},"content":" + \" tag \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"JerryO3"},"content":" assertEquals(new FilterTagCommand(new PersonHasTagPredicate(TestUtil.stringsToTags(keywords))), command);","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":116,"author":{"gitId":"JerryO3"},"content":" public void parseCommand_filterDays() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"JerryO3"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"monday\", \"tuesday\", \"wednesday\");","lastModifiedDate":"2024-03-27"},{"lineNumber":118,"author":{"gitId":"JerryO3"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(FilterCommand.COMMAND_WORD","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"JerryO3"},"content":" + \" day \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-27"},{"lineNumber":120,"author":{"gitId":"JerryO3"},"content":" assertEquals(new FilterDayCommand(new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(keywords))),","lastModifiedDate":"2024-03-28"},{"lineNumber":121,"author":{"gitId":"JerryO3"},"content":" command);","lastModifiedDate":"2024-03-28"},{"lineNumber":122,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":124,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"alvinnzz"},"content":" public void parseCommand_split() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":128,"author":{"gitId":"alvinnzz"},"content":" SplitCommand command \u003d (SplitCommand) parser.parseCommand(SplitCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"alvinnzz"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"alvinnzz"},"content":" + INDEX_SECOND_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"alvinnzz"},"content":" + CliSyntax.PREFIX_MONEY_OWED","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"alvinnzz"},"content":" + CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"alvinnzz"},"content":" assertEquals(new SplitCommand(indexList, totalOwed), command);","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" assertThrows(","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" public void parseCommand_sort() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" SortCommand.COMMAND_WORD + \" \" + SortCommand.NAME_SORT_TYPE) instanceof SortCommand);","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" SortCommand.COMMAND_WORD + \" \" + SortCommand.BIRTHDAY_SORT_TYPE) instanceof SortCommand);","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" public void parseCommand_pay() throws ParseException {","lastModifiedDate":"2024-03-27"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":" assertTrue(","lastModifiedDate":"2024-03-27"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" parser.parseCommand(PayCommand.COMMAND_WORD + \" \" + 1) instanceof PayCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":162,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":163,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":164,"author":{"gitId":"alvinnzz"},"content":" public void parseCommand_lend() throws Exception {","lastModifiedDate":"2024-04-03"},{"lineNumber":165,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":166,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":167,"author":{"gitId":"alvinnzz"},"content":" LendCommand command \u003d (LendCommand) parser.parseCommand(LendCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"alvinnzz"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-04-03"},{"lineNumber":169,"author":{"gitId":"alvinnzz"},"content":" + CliSyntax.PREFIX_MONEY_OWED","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"alvinnzz"},"content":" + CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":171,"author":{"gitId":"alvinnzz"},"content":" assertEquals(new LendCommand(targetIndex, lentAmount), command);","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"alvinnzz":26,"JerryO3":34,"-":96,"zhekaiii":17}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DAY_DESC;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_MONDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" private static final String DAY_EMPTY \u003d \" \" + PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \"1\" + INVALID_DAY_DESC, Day.MESSAGE_CONSTRAINTS); // invalid day","lastModifiedDate":"2024-03-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":171,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":172,"author":{"gitId":"JerryO3"},"content":" // daysAvailable","lastModifiedDate":"2024-03-25"},{"lineNumber":173,"author":{"gitId":"JerryO3"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_MONDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"JerryO3"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"JerryO3"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":198,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":208,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":214,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":221,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":222,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":223,"author":{"gitId":"JerryO3"},"content":" public void parse_resetDays_success() {","lastModifiedDate":"2024-03-25"},{"lineNumber":224,"author":{"gitId":"JerryO3"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-25"},{"lineNumber":225,"author":{"gitId":"JerryO3"},"content":" String userInput \u003d targetIndex.getOneBased() + DAY_EMPTY;","lastModifiedDate":"2024-03-25"},{"lineNumber":226,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":227,"author":{"gitId":"JerryO3"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withDaysAvailable().build();","lastModifiedDate":"2024-03-25"},{"lineNumber":228,"author":{"gitId":"JerryO3"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-25"},{"lineNumber":229,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":230,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-25"},{"lineNumber":231,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":232,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"JerryO3":24,"-":208}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterDayCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterTagCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonAvailableOnDayPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" public void parse_validArgs_returnsFilterTagCommand() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand expectedFilterTagCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" new FilterTagCommand(new PersonHasTagPredicate(TestUtil","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" .stringsToTags(Arrays.asList(\"friends\", \"TAs\"))));","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"tag friends TAs\", expectedFilterTagCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"tag \\n friends \\n \\t TAs \\t\", expectedFilterTagCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" public void parse_caseInsensitiveArgs_returnsFilterTagCommand() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand expectedFilterTagCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" new FilterTagCommand(new PersonHasTagPredicate(TestUtil","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" .stringsToTags(Arrays.asList(\"friends\", \"TAs\"))));","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"tag friends TAs\", expectedFilterTagCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"tag \\n frieNDS \\n \\t TAs \\t\", expectedFilterTagCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" public void parse_validArgs_returnsFilterDayCommand() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" FilterDayCommand expectedFilterDayCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" new FilterDayCommand(new PersonAvailableOnDayPredicate(TestUtil","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" .stringsToDays(Arrays.asList(\"monday\", \"tuesday\"))));","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"day monday tuesday\", expectedFilterDayCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"day \\n monday \\n \\t tuesday \\t\", expectedFilterDayCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" public void parse_caseInsensitiveArgs_returnsFilterDayCommand() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":" FilterDayCommand expectedFilterDayCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" new FilterDayCommand(new PersonAvailableOnDayPredicate(TestUtil","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" .stringsToDays(Arrays.asList(\"monday\", \"tuesday\"))));","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"day moNday tUesday\", expectedFilterDayCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"day \\n mondAY \\n \\t tuEsday \\t\", expectedFilterDayCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" public void parse_emptyType_throwParseException() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \"monday tuesday\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"JerryO3"},"content":" FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":" public void parse_specifiedTypeTagNoArguments_throwParseException() throws Exception {","lastModifiedDate":"2024-03-28"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \"tag\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" public void parse_specifiedTypeDayNoArguments_throwParseException() throws Exception {","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \"day\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":" FilterDayCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"JerryO3":96}},{"path":"src/test/java/seedu/address/logic/parser/LendCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.LendCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"public class LendCommandParserTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" private LendCommandParser parser \u003d new LendCommandParser();","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" void parse_emptyArgs_throwsParseException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" // negative index","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"-5 $/22.40\",","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" // zero index","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"0 $/22.40\" + NAME_DESC_AMY,","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1 some random string\",","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" void parse_missingMoneyOwed_throwsParseException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_MISSING_AMOUNT));","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" public void parse_validArgs_returnsLendCommand() {","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" LendCommand expectedLendCommand \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" new LendCommand(INDEX_FIRST_PERSON, new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND));","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" assertParseSuccess(parser, \"1 $/12.80\", expectedLendCommand);","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" assertParseSuccess(parser, \" \\n 1 \\t $/12.80 \\t\", expectedLendCommand);","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"alvinnzz":57}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" private static final String VALID_DAY_1 \u003d \"monday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" private static final String VALID_DAY_2 \u003d \"monday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" private static final String INVALID_DAY \u003d \"noday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":201,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":202,"author":{"gitId":"JerryO3"},"content":" public void parseDays_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-25"},{"lineNumber":203,"author":{"gitId":"JerryO3"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDays(null));","lastModifiedDate":"2024-03-25"},{"lineNumber":204,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":205,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":206,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":207,"author":{"gitId":"JerryO3"},"content":" public void parseDays_collectionWithInvalidDays_throwsParseException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":208,"author":{"gitId":"JerryO3"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDays(Arrays.asList(VALID_DAY_1, INVALID_DAY)));","lastModifiedDate":"2024-03-25"},{"lineNumber":209,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":210,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":211,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":212,"author":{"gitId":"JerryO3"},"content":" public void parseDays_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-25"},{"lineNumber":213,"author":{"gitId":"JerryO3"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-25"},{"lineNumber":214,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":215,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":216,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":217,"author":{"gitId":"JerryO3"},"content":" public void parseDays_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2024-03-25"},{"lineNumber":218,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e actualDaySet \u003d ParserUtil.parseDays(Arrays.asList(VALID_DAY_1, VALID_DAY_2));","lastModifiedDate":"2024-03-29"},{"lineNumber":219,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e expectedDaySet \u003d new HashSet\u003c\u003e(Arrays.asList(Day.getDay(VALID_DAY_1), Day.getDay(VALID_DAY_2)));","lastModifiedDate":"2024-03-29"},{"lineNumber":220,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":221,"author":{"gitId":"JerryO3"},"content":" assertEquals(expectedDaySet, actualDaySet);","lastModifiedDate":"2024-03-25"},{"lineNumber":222,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"JerryO3":27,"-":196}},{"path":"src/test/java/seedu/address/logic/parser/PayCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.PayCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"public class PayCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" private PayCommandParser parser \u003d new PayCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" assertParseFailure(parser, \"pay\", String.format(","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, PayCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" assertParseFailure(parser, \"pay a\", String.format(","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, PayCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public void parse_validArgs_returnsPayCommand() {","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" assertParseSuccess(parser, \"1\", new PayCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":27}},{"path":"src/test/java/seedu/address/logic/parser/SortCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_SORT_TYPE;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.SortCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.exceptions.InvalidSortTypeException;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"public class SortCommandParserTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" private SortCommandParser parser \u003d new SortCommandParser();","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" public void parse_noArgs_throwsParseException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" assertParseFailure(parser, \"sort\",","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SortCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public void parse_invalidCommand_throwsInvalidSortTypeException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" String invalidSortType \u003d \"moolah\";","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" assertParseFailure(parser, SortCommand.COMMAND_WORD + \" \" + invalidSortType,","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_INVALID_SORT_TYPE, invalidSortType));","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" public void parse_validCommand_success() throws InvalidSortTypeException {","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" assertParseSuccess(parser, SortCommand.COMMAND_WORD + \" \" + SortCommand.BIRTHDAY_SORT_TYPE,","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" new SortCommand(SortCommand.BIRTHDAY_SORT_TYPE));","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":34}},{"path":"src/test/java/seedu/address/logic/parser/SplitCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.SplitCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"class SplitCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" private SplitCommandParser parser \u003d new SplitCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" void parse_emptyArgs_throwsParseException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" // negative index","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"-5 3 $/22.40\",","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" // zero index","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"0 3 $/22.40\" + NAME_DESC_AMY,","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1 some random string\",","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1 i/ string\",","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" void parse_missingMoneyOwed_throwsParseException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1 2\",","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_MISSING_AMOUNT));","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" public void parse_validArgs_returnsSplitCommand() {","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" SplitCommand expectedSplitCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" new SplitCommand(Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON),","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND));","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" assertParseSuccess(parser, \"1 2 $/20.40\", expectedSplitCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" assertParseSuccess(parser, \" \\n 1 2\\t $/20.40 \\t\", expectedSplitCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"alvinnzz":64}},{"path":"src/test/java/seedu/address/logic/paynow/MerchantAccountInformationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"public class MerchantAccountInformationTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" public void constructor_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" new MerchantAccountInformation(\"81472392\");","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" assertEquals(","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" new MerchantAccountInformation(\"81472392\").toString(),","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" \"0009SG.PAYNOW\"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" + \"01010\"","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" + \"0211+6581472392\"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" + \"03011\"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":23}},{"path":"src/test/java/seedu/address/logic/paynow/PayNowCodeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"public class PayNowCodeTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" public void generatePayNowQrCode_success() throws IOException, WriterException {","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" PayNowCode.generatePayNowQrCode(\"82371234\", 12.3F);","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":14}},{"path":"src/test/java/seedu/address/logic/paynow/PayNowFieldTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"public class PayNowFieldTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(0, \"01\").toString(), \"000201\");","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(1, \"11\").toString(), \"010211\");","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(2, (float) 1.2).toString(), \"02041.20\");","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(2, 1.2).toString(), \"02041.20\");","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(53, \"Singapore\").toString(), \"5309Singapore\");","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(62, \"\").toString(), \"6200\");","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":17}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"JerryO3":1,"-":131}},{"path":"src/test/java/seedu/address/model/person/BirthdayTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.model.person.Birthday.BIRTHDAY_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"public class BirthdayTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" public void constructor_invalidDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" String invalidDate \u003d \"asdf\";","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Birthday(invalidDate));","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public void constructor_dateAfterPresent_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" String futureDate \u003d LocalDate.now().plusDays(1).format(DateTimeFormatter.ofPattern(BIRTHDAY_FORMAT));","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Birthday(futureDate));","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" public void isValidBirthday() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" // invalid birthdays","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" assertFalse(Birthday.isValidBirthday(\"asdf\")); // non-date string","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" assertFalse(Birthday.isValidBirthday(\"31/02/1998\")); // invalid date","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" // valid addresses","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(null)); // null will be treated as no birthday","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\"\")); // empty strings treated as no birthday","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\" \")); // pure whitespace treated as no birthday","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\"01/02/1999\")); // valid date","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\" 01/02/1999 \")); // valid date with whitespaces","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\"29/02/2000\")); // leap year","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" Birthday birthday \u003d new Birthday(\"01/02/1999\");","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" assertEquals(birthday, new Birthday(\"01/02/1999\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" assertEquals(birthday, birthday);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(null, birthday);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(5.0f, birthday);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(birthday, new Birthday(\"02/03/1998\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"zhekaiii":63}},{"path":"src/test/java/seedu/address/model/person/DayTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"public class DayTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" public void isValidDay_validDay_true() {","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" assertTrue(Day.isValidDay(\"monday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" public void isValidDay_invalidDay_false() {","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" assertFalse(Day.isValidDay(\"day\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" public void getDayTest_validDay_monday() {","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" assertEquals(Day.getDay(\"monday\"), Day.MONDAY);","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" public void getDayTest_invalidDay_isNull() {","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" assertNull(Day.getDay(\"noday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"JerryO3":31}},{"path":"src/test/java/seedu/address/model/person/MoneyOwedTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.testutil.Assert;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"public class MoneyOwedTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new MoneyOwed(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" public void constructor_validMoneyString_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed moneyOwed \u003d new MoneyOwed(\"100.00\");","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" assertEquals(100.00f, moneyOwed.moneyOwed);","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" public void constructor_invalidMoneyString_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new MoneyOwed(\"abc\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" public void getMessage_noOwe() {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" MoneyOwed moneyOwed \u003d new MoneyOwed(\"0\");","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" assertEquals(moneyOwed.getMessage(), MoneyOwed.NO_MONEY_OWED_MESSAGE);","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" public void getMessage_userOwes() {","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" MoneyOwed moneyOwed \u003d new MoneyOwed(\"-12.5\");","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" assertEquals(moneyOwed.getMessage(), String.format(MoneyOwed.USER_OWES_MONEY_MESSAGE, \"12.50\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" public void getMessage_owesUser() {","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" MoneyOwed moneyOwed \u003d new MoneyOwed(\"5.40\");","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" assertEquals(moneyOwed.getMessage(), String.format(MoneyOwed.PERSON_OWES_MONEY_MESSAGE, \"5.40\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" public void getAmount() {","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"23.02\").getAmount(), 23.02f);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"-23.02\").getAmount(), -23.02f);","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" public void getAbsoluteAmount() {","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"23.02\").getAbsoluteAmount(), 23.02f);","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"-23.02\").getAbsoluteAmount(), 23.02f);","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"0\").getAbsoluteAmount(), 0f);","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"alvinnzz":28,"zhekaiii":30}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" // different days -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" // different birthday -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withBirthday(VALID_BIRTHDAY_BOB).build();","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" // different money owed -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMoneyOwed(VALID_MONEY_OWED_BOB).build();","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":" + \", remark\u003d\" + ALICE.getRemark() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"JerryO3"},"content":" + \", birthday\u003d\" + ALICE.getBirthday() + \", moneyOwed\u003d\" + ALICE.getMoneyOwed()","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"JerryO3"},"content":" + \", daysAvailable\u003d\" + ALICE.getDaysAvailable() + \"}\";","lastModifiedDate":"2024-03-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"alvinnzz":2,"JerryO3":8,"-":98,"zhekaiii":9}},{"path":"src/test/java/seedu/address/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" public void isSingaporeanNumber() {","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" assertTrue(new Phone(\"81236212\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" assertTrue(new Phone(\"97312382\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" assertFalse(new Phone(\"7234127\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" assertFalse(new Phone(\"88462\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" assertFalse(new Phone(\"943214\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"-":60,"zhekaiii":9}},{"path":"src/test/java/seedu/address/model/person/predicates/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" assertFalse(firstPredicate.equals(new NameContainsKeywordsPredicate(firstPredicateKeywordList, true)));","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" public void test_nameMatchAllKeywords() {","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" // One keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" NameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" // Multiple keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Lee\"), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Lee Alice\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" // Only one matching keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" boolean matchAll \u003d true;","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords, matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" + \"{keywords\u003d\" + keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" + \", matchAll\u003d\" + matchAll + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"JerryO3":1,"-":81,"zhekaiii":27}},{"path":"src/test/java/seedu/address/model/person/predicates/PersonAvailableOnDayPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"public class PersonAvailableOnDayPredicateTest {","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" public void equals() throws Exception {","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" List\u003cDay\u003e firstPredicateKeywordList \u003d TestUtil.stringsToDays(Collections.singletonList(\"monday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" List\u003cDay\u003e secondPredicateKeywordList \u003d TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate firstPredicate \u003d new PersonAvailableOnDayPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate secondPredicate \u003d new PersonAvailableOnDayPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate firstPredicateCopy \u003d new PersonAvailableOnDayPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" assertFalse(firstPredicate.equals(new PersonAvailableOnDayPredicate(firstPredicateKeywordList, true)));","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public void test_availabilityContainsKeywords_returnsTrue() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" // One keyword","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate predicate \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Collections.singletonList(\"monday\")));","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\")));","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\", \"tuesday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\")));","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"tuesday\", \"wednesday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" public void test_availabilityDoesNotContainKeywords_returnsFalse() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" // Zero keywords","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate predicate \u003d new PersonAvailableOnDayPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\")));","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withDaysAvailable(\"tuesday\", \"wednesday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" public void test_availabilityMatchAllKeywords() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" // One keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" PersonAvailableOnDayPredicate predicate \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Collections.singletonList(\"monday\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" // Multiple keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\", \"tuesday\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" // Only one matching keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" assertFalse(predicate.test(new PersonBuilder().withDaysAvailable(\"tuesday\", \"wednesday\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" public void toStringMethod() throws Exception {","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" List\u003cDay\u003e keywords \u003d TestUtil.stringsToDays(List.of(\"monday\", \"tuesday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" boolean matchAll \u003d true;","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" PersonAvailableOnDayPredicate predicate \u003d new PersonAvailableOnDayPredicate(keywords, matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d PersonAvailableOnDayPredicate.class.getCanonicalName()","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" + \"{keywords\u003d\" + keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" + \", matchAll\u003d\" + matchAll + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"JerryO3":75,"zhekaiii":25}},{"path":"src/test/java/seedu/address/model/person/predicates/PersonHasTagPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"public class PersonHasTagPredicateTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" public void equals() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" List\u003cTag\u003e firstPredicateKeywordList \u003d TestUtil.stringsToTags(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" List\u003cTag\u003e secondPredicateKeywordList \u003d TestUtil.stringsToTags(Arrays.asList(\"first\", \"second\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate firstPredicate \u003d new PersonHasTagPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate secondPredicate \u003d new PersonHasTagPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate firstPredicateCopy \u003d new PersonHasTagPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" assertFalse(firstPredicate.equals(new PersonHasTagPredicate(firstPredicateKeywordList, true)));","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public void test_tagContainsKeywords_returnsTrue() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" // One keyword","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" new PersonHasTagPredicate(TestUtil.stringsToTags(Collections.singletonList(\"friend\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"friend\", \"TA\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\", \"TA\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"friend\", \"CCA\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\", \"TA\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" public void test_tagDoesNotContainKeywords_returnsFalse() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" // Zero keywords","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d new PersonHasTagPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"TA\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\", \"CCA\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" // Keywords match phone, address, but does not match tags","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" Arrays.asList(\"12345\", \"Main\", \"Street\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\").withPhone(\"12345\")","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" .withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" public void test_tagMatchALlKeywords() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" // One keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" PersonHasTagPredicate predicate \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" new PersonHasTagPredicate(TestUtil.stringsToTags(Collections.singletonList(\"friend\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" // Multiple keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"friend\", \"TA\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\", \"TA\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" // Only one matching keyword, fails","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"friend\", \"CCA\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\", \"TA\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" public void toStringMethod() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":" List\u003cTag\u003e keywords \u003d TestUtil.stringsToTags(List.of(\"keyword1\", \"keyword2\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" boolean matchAll \u003d true;","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" PersonHasTagPredicate predicate \u003d new PersonHasTagPredicate(keywords, matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d PersonHasTagPredicate.class.getCanonicalName()","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" + \"{keywords\u003d\" + keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" + \", matchAll\u003d\" + matchAll + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"JerryO3"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"JerryO3":80,"zhekaiii":26}},{"path":"src/test/java/seedu/address/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2017-12-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" public void caseInsensitiveTest() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" assertEquals(new Tag(\"test\"), new Tag(\"TEST\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"JerryO3":5,"-":26}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" private static final String INVALID_BIRTHDAY \u003d \"sadfds\";","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" private static final String INVALID_MONEY_OWED \u003d \"abc\";","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" private static final String VALID_BIRTHDAY \u003d BENSON.getBirthday().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" private static final String VALID_MONEY_OWED \u003d BENSON.getMoneyOwed().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" private static final Set\u003cDay\u003e VALID_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" static {","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" try {","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" VALID_DAYS_AVAILABLE \u003d ParserUtil.parseDays(Arrays.asList(\"monday\", \"tuesday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":" VALID_ADDRESS, VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED,","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"JerryO3"},"content":" VALID_ADDRESS, VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED,","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"JerryO3"},"content":" VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"JerryO3"},"content":" INVALID_ADDRESS, VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED,","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"JerryO3"},"content":" VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"JerryO3"},"content":" VALID_ADDRESS, VALID_REMARK, invalidTags, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"JerryO3"},"content":" VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":141,"author":{"gitId":"alvinnzz"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" public void toModelType_invalidBirthday_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"alvinnzz"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_REMARK,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"JerryO3"},"content":" VALID_TAGS, INVALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"alvinnzz"},"content":" public void toModelType_invalidMoneyOwed_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"alvinnzz"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_REMARK,","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"JerryO3"},"content":" VALID_TAGS, VALID_BIRTHDAY, INVALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":160,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"JerryO3"},"content":" public void toModelType_emptyDaysAvailable_returnsPerson() throws Exception {","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"JerryO3"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"JerryO3"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_REMARK,","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"JerryO3"},"content":" VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, new HashSet\u003cDay\u003e());","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"JerryO3"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"alvinnzz":17,"NewtonKoh":1,"JerryO3":39,"-":101,"zhekaiii":9}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" descriptor.setBirthday(person.getBirthday());","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" descriptor.setMoneyOwed((person.getMoneyOwed()));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" descriptor.setDaysAvailable(person.getDaysAvailable());","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" * Parses the {@code days} into a {@code Set\u003cDay\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" public EditPersonDescriptorBuilder withDaysAvailable(String... days) {","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e daySet \u003d Stream.of(days).map(Day::getDay).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":" descriptor.setDaysAvailable(daySet);","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"alvinnzz":1,"JerryO3":11,"-":87,"zhekaiii":1}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" public static final String DEFAULT_MONEY_OWED \u003d \"0\";","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" public static final String DEFAULT_BIRTHDAY \u003d \"\";","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" public static final String DEFAULT_REMARK \u003d \"She likes aardvarks.\";","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" private Birthday birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" private MoneyOwed moneyOwed;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" private Set\u003cDay\u003e daysAvailable;","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" birthday \u003d new Birthday(DEFAULT_BIRTHDAY);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" moneyOwed \u003d new MoneyOwed(DEFAULT_MONEY_OWED);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" daysAvailable \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" birthday \u003d personToCopy.getBirthday();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" moneyOwed \u003d personToCopy.getMoneyOwed();","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":" daysAvailable \u003d personToCopy.getDaysAvailable();","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" * Parses the {@code days} into a {@code Set\u003cDay\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" public PersonBuilder withDaysAvailable(String... days) {","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":" this.daysAvailable \u003d Stream.of(days).map(Day::getDay).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" * Sets the {@code Birthday} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" public PersonBuilder withBirthday(String birthday) {","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d new Birthday(birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"NewtonKoh"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"alvinnzz"},"content":" * Sets the {@code MoneyOwed} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"alvinnzz"},"content":" public PersonBuilder withMoneyOwed(String moneyOwed) {","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"alvinnzz"},"content":" this.moneyOwed \u003d new MoneyOwed(moneyOwed);","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"alvinnzz"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":146,"author":{"gitId":"JerryO3"},"content":" return new Person(name, phone, email, address, remark, tags, birthday, moneyOwed, daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"alvinnzz":12,"NewtonKoh":12,"JerryO3":18,"-":95,"zhekaiii":12}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" sb.append(PREFIX_BIRTHDAY + person.getBirthday().toString() + \" \");","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" sb.append(PREFIX_MONEY_OWED + person.getMoneyOwed().toString() + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" person.getDaysAvailable().stream().forEach(","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" s -\u003e sb.append(PREFIX_DAYS_AVAILABLE + s.name() + \" \")","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" descriptor.getBirthday().ifPresent(birthday -\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" sb.append(PREFIX_BIRTHDAY).append(birthday.toString()).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" descriptor.getMoneyOwed().ifPresent(moneyOwed -\u003e sb.append(PREFIX_MONEY_OWED)","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" .append(moneyOwed.toString()).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" sb.append(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" if (descriptor.getDaysAvailable().isPresent()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e daysAvailable \u003d descriptor.getDaysAvailable().get();","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" if (daysAvailable.isEmpty()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":" sb.append(PREFIX_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"JerryO3"},"content":" } else {","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"JerryO3"},"content":" daysAvailable.forEach(s -\u003e sb.append(PREFIX_DAYS_AVAILABLE).append(s.name()).append(\" \"));","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"alvinnzz":3,"JerryO3":15,"-":63,"zhekaiii":3}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the middle index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the last index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns the person in the {@code model}\u0027s person list at {@code index}.","lastModifiedDate":"2017-07-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" public static List\u003cTag\u003e stringsToTags(Collection\u003cString\u003e c) throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" return new ArrayList\u003c\u003e(ParserUtil.parseTags(c));","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":" public static List\u003cDay\u003e stringsToDays(Collection\u003cString\u003e c) throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" return new ArrayList\u003c\u003e(ParserUtil.parseDays(c));","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JerryO3":14,"-":55}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" .withPhone(\"94351253\").withRemark(\"She likes aardvarks.\")","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" .withTags(\"friends\").withBirthday(\"01/02/1999\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withRemark(\"He can\u0027t take beer!\")","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"23/09/1998\").withMoneyOwed(\"2.50\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"13/12/1989\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"29/02/2000\").withMoneyOwed(\"-8.00\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"21/12/1998\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" .withBirthday(\"\").withMoneyOwed(\"23.60\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" .withBirthday(\"\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" public static final Person JOHN \u003d new PersonBuilder().withName(\"John Wick\")","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" .withAddress(\"311, Clementi Ave 12, #12-25\").withRemark(\"He has skills\")","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"88765432\")","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" .withTags(\"TAs\", \"CCA\", \"Acquaintances\").build();","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" .withBirthday(VALID_BIRTHDAY_AMY).withMoneyOwed(VALID_MONEY_OWED_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withBirthday(VALID_BIRTHDAY_BOB)","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" .withMoneyOwed(VALID_MONEY_OWED_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" } // prevents instantiation","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE, JOHN));","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"alvinnzz":8,"NewtonKoh":2,"JerryO3":5,"-":61,"zhekaiii":18}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-T16-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-T16-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"# FriendFolio","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"## Description","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"* The project simulates an ongoing software project for a desktop application (called _FriendFolio_) used for managing","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" contact details.","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC)","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":3,"zhekaiii":9}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" implementation group: \u0027com.google.zxing\u0027, name: \u0027core\u0027, version: \u00273.3.2\u0027","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" archiveFileName \u003d \u0027friendfolio.jar\u0027","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"run {","lastModifiedDate":"2024-03-28"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-28"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"-":71,"zhekaiii":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":"zhekaiii"},"content":"### Lim Zhekai","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"\u003cimg src\u003d\"images/zhekaiii.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"[[github](https://github.com/zhekaiii)]","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"[[portfolio](team/zhekaiii.md)]","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"* Role: Developer","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"* Responsibilities: Code Reviews \u0026 Backend","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"### Alvin Ng","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"\u003cimg src\u003d\"images/alvinnzz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"[[github](http://github.com/alvinnzz)]","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"[[portfolio](team/alvinnzz.md)]","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":"### Oon Jie Rui","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":"\u003cimg src\u003d\"images/jerryo3.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":"[[github](https://github.com/jerryo3)]","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":"[[portfolio](team/jerryo3.md)]","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"### Newton Koh","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":"\u003cimg src\u003d\"images/newtonkoh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":"[[github](http://github.com/newtonkoh)]","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":"[[portfolio](team/newtonkoh.md)]","lastModifiedDate":"2024-03-12"},{"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: UI","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"alvinnzz":5,"NewtonKoh":4,"JerryO3":5,"-":30,"zhekaiii":6}},{"path":"docs/DevOps.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: DevOps guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" outdated*.\u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" * `./gradlew test`— Runs all tests","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * `./gradlew clean test`— Cleans the project and runs tests","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":"data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"about the coverage of your tests.","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"check the code coverage levels periodically and take corrective actions if the coverage level falls below desired","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":"levels.","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"To enable Codecov for forks of this project, follow the steps given","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":56,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"files used in the build process, these repository-wide checks cover all files in the repository. They check for","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":"repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":"as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root","lastModifiedDate":"2024-03-25"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":"directory:","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" the rest.","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":83,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":"1. Update the version number","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" in [`MainApp.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" created.","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"-":64,"zhekaiii":30}},{"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":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" {:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"[//]: # (* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well})","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"* https://github.com/poonchuanan/Python-PayNow-QR-Code-Generator was referred to for the format of PayNow QR codes as","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" well as the CRC-16 algorithm.","lastModifiedDate":"2024-03-28"},{"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":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"and edit diagrams.","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":"**`Main`** (consisting of","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"classes [`Main`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/Main.java)","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"and [`MainApp`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/MainApp.java)) is","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"in charge of the app launch and shut down.","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"the command `delete 1`.","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":82,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"NewtonKoh"},"content":"The UI component has been enhanced with the addition of a new `DisplayCard` element. This element is responsible for","lastModifiedDate":"2024-03-28"},{"lineNumber":87,"author":{"gitId":"NewtonKoh"},"content":"displaying the currently selected contact\u0027s detailed information, enhancing the user experience by providing a more","lastModifiedDate":"2024-03-28"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":"interactive and comprehensive view of contact details.","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":"The **API** of this component is specified","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":"in [`Ui.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":"The UI consists of a `MainWindow` that is made up of parts","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":"e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc, and the newly added `DisplayCard`.","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":"All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":"between classes that represent parts of the visible GUI.","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":"are in the `src/main/resources/view` folder. For example, the layout of","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":"the [`MainWindow`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":"is specified","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":"in [`MainWindow.fxml`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"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":110,"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":111,"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":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":"**","lastModifiedDate":"2024-03-28"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":"API** : [`Logic.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-28"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":"call as an example.","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"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":128,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"zhekaiii"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"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":137,"author":{"gitId":"zhekaiii"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"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":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":141,"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":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" a `Command` object.","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":"Directly executing commands without user input:","lastModifiedDate":"2024-03-28"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":"* The application has instances where some function might be performed on a button click instead of a user input.","lastModifiedDate":"2024-03-28"},{"lineNumber":157,"author":{"gitId":"NewtonKoh"},"content":"* In such cases, the flow bypasses the need to parse a user input, and we directly pass a `Command` object into","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":" the `Logic` class to be executed.","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":160,"author":{"gitId":"NewtonKoh"},"content":"The following sequence diagram illustrates how the components interact with each other when a user clicks on a button to","lastModifiedDate":"2024-03-28"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":"reset the debt they have with a specific `Person`.","lastModifiedDate":"2024-03-28"},{"lineNumber":162,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":"![Interactions for when a ResetDebtCommand is manually executed](images/ResetDebtSequenceDiagram.png)","lastModifiedDate":"2024-03-28"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"NewtonKoh"},"content":"**","lastModifiedDate":"2024-03-28"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":"API** : [`Model.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-28"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"NewtonKoh"},"content":"* stores a separate _sorted_ list of `Person` objects (e.g., results of a sort query) which is then used to construct","lastModifiedDate":"2024-03-28"},{"lineNumber":177,"author":{"gitId":"NewtonKoh"},"content":" the filtered list below","lastModifiedDate":"2024-03-28"},{"lineNumber":178,"author":{"gitId":"NewtonKoh"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-28"},{"lineNumber":179,"author":{"gitId":"NewtonKoh"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-28"},{"lineNumber":180,"author":{"gitId":"NewtonKoh"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-28"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":" a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"NewtonKoh"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-03-28"},{"lineNumber":184,"author":{"gitId":"NewtonKoh"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-03-28"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"NewtonKoh"},"content":"**","lastModifiedDate":"2024-03-28"},{"lineNumber":195,"author":{"gitId":"NewtonKoh"},"content":"API** : [`Storage.java`](https://github.com/AY2324S2-CS2103T-T16-2/tp/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-28"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":199,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"zhekaiii"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"zhekaiii"},"content":" objects.","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"zhekaiii"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"zhekaiii"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"zhekaiii"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"zhekaiii"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"JerryO3"},"content":"### Filter feature","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"JerryO3"},"content":"FriendFolio can filter contacts by tags, days available (in a week) and by name.","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"JerryO3"},"content":"Filter commands can also specify whether the filter is any-match or all-match with respect to the keywords using ","lastModifiedDate":"2024-04-04"},{"lineNumber":222,"author":{"gitId":"JerryO3"},"content":"the `--all` flag (it is by default any-match).","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":224,"author":{"gitId":"JerryO3"},"content":"Note that the `--all` flag is implemented using ArgumentMultimap, and it must be placed at the end of the command, ","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"JerryO3"},"content":"for example:","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":227,"author":{"gitId":"JerryO3"},"content":"`filter tag friends colleagues --all`","lastModifiedDate":"2024-04-04"},{"lineNumber":228,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":229,"author":{"gitId":"JerryO3"},"content":"Any text after `--all` is not parsed, but will produce the same result as the above command instead of throwing an error.","lastModifiedDate":"2024-04-04"},{"lineNumber":230,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":231,"author":{"gitId":"JerryO3"},"content":"To reduce code duplication, an abstract Filter class extracts identical methods of all 3 commands. Each command now inherits","lastModifiedDate":"2024-03-29"},{"lineNumber":232,"author":{"gitId":"JerryO3"},"content":"from Filter, and has their own error messages and command specific information. They also set the predicate to the ","lastModifiedDate":"2024-03-29"},{"lineNumber":233,"author":{"gitId":"JerryO3"},"content":"appropriate type on initialization using the setPredicate function provided in Filter.","lastModifiedDate":"2024-03-29"},{"lineNumber":234,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":235,"author":{"gitId":"JerryO3"},"content":"Refer to the below class diagram to visualize the relationships between Filter, inheriting filter commands and predicates.","lastModifiedDate":"2024-03-29"},{"lineNumber":236,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"JerryO3"},"content":"\u003cimg src\u003d\"images/FilterClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"JerryO3"},"content":"## FriendFolio Predicates","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"JerryO3"},"content":"Predicates in FriendFolio take in both a list of keywords to match, and a boolean to handle the all-match condition.","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"NewtonKoh"},"content":"### Remark Command","lastModifiedDate":"2024-03-28"},{"lineNumber":244,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":245,"author":{"gitId":"NewtonKoh"},"content":"#### Introduction","lastModifiedDate":"2024-03-28"},{"lineNumber":246,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":247,"author":{"gitId":"NewtonKoh"},"content":"The Remark Command allows users to add or remove remarks for a person in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":248,"author":{"gitId":"NewtonKoh"},"content":"This feature enhances the app\u0027s usability by enabling users to store additional information about a contact that doesn\u0027t","lastModifiedDate":"2024-03-28"},{"lineNumber":249,"author":{"gitId":"NewtonKoh"},"content":"fit into the standard fields like name, phone, or email.","lastModifiedDate":"2024-03-28"},{"lineNumber":250,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":251,"author":{"gitId":"NewtonKoh"},"content":"#### Implementation","lastModifiedDate":"2024-03-28"},{"lineNumber":252,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":253,"author":{"gitId":"NewtonKoh"},"content":"The RemarkCommand is implemented in the following steps:","lastModifiedDate":"2024-03-28"},{"lineNumber":254,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":255,"author":{"gitId":"NewtonKoh"},"content":"1. The user inputs a command in the format remark `INDEX r/REMARK`, where `INDEX` is the position of the person in the","lastModifiedDate":"2024-03-28"},{"lineNumber":256,"author":{"gitId":"NewtonKoh"},"content":" current","lastModifiedDate":"2024-03-28"},{"lineNumber":257,"author":{"gitId":"NewtonKoh"},"content":" list, and `REMARK` is the new remark for the person.","lastModifiedDate":"2024-03-28"},{"lineNumber":258,"author":{"gitId":"NewtonKoh"},"content":"2. The AddressBookParser parses the input and creates a new `RemarkCommand` object.","lastModifiedDate":"2024-03-28"},{"lineNumber":259,"author":{"gitId":"NewtonKoh"},"content":" The `RemarkCommand` executes by:","lastModifiedDate":"2024-03-28"},{"lineNumber":260,"author":{"gitId":"NewtonKoh"},"content":" - Retrieving the person to edit from the model based on the index.","lastModifiedDate":"2024-03-28"},{"lineNumber":261,"author":{"gitId":"NewtonKoh"},"content":" - Creating a new Person object with the updated remark and other details unchanged.","lastModifiedDate":"2024-03-28"},{"lineNumber":262,"author":{"gitId":"NewtonKoh"},"content":" - Replacing the old person object in the model with the updated one.","lastModifiedDate":"2024-03-28"},{"lineNumber":263,"author":{"gitId":"NewtonKoh"},"content":"3. The UI is then updated to display the person\u0027s details with the new remark.","lastModifiedDate":"2024-03-28"},{"lineNumber":264,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":265,"author":{"gitId":"NewtonKoh"},"content":"This implementation ensures that the app\u0027s performance is unaffected by the addition of remarks, as it reuses the","lastModifiedDate":"2024-03-28"},{"lineNumber":266,"author":{"gitId":"NewtonKoh"},"content":"existing infrastructure for modifying person details.","lastModifiedDate":"2024-03-28"},{"lineNumber":267,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":268,"author":{"gitId":"NewtonKoh"},"content":"#### Alternatives Considered","lastModifiedDate":"2024-03-28"},{"lineNumber":269,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":270,"author":{"gitId":"NewtonKoh"},"content":"1. Storing Remarks Separately: Initially considered storing remarks in a separate map with the Person as the key.","lastModifiedDate":"2024-03-28"},{"lineNumber":271,"author":{"gitId":"NewtonKoh"},"content":" This approach was discarded because it complicated the model\u0027s state management and increased the risk of data","lastModifiedDate":"2024-03-28"},{"lineNumber":272,"author":{"gitId":"NewtonKoh"},"content":" inconsistency.","lastModifiedDate":"2024-03-28"},{"lineNumber":273,"author":{"gitId":"NewtonKoh"},"content":"2. Extending Person Model: Another option was to extend the Person model to include remarks as a mandatory field.","lastModifiedDate":"2024-03-28"},{"lineNumber":274,"author":{"gitId":"NewtonKoh"},"content":" However, this was not ideal as remarks are optional and should not affect the creation of Person objects.","lastModifiedDate":"2024-03-28"},{"lineNumber":275,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":276,"author":{"gitId":"NewtonKoh"},"content":"#### UML Diagram","lastModifiedDate":"2024-03-28"},{"lineNumber":277,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":278,"author":{"gitId":"NewtonKoh"},"content":"To illustrate the interaction between components for the remark command, a sequence diagram is provided:","lastModifiedDate":"2024-03-28"},{"lineNumber":279,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":280,"author":{"gitId":"NewtonKoh"},"content":"\u003cimg src\u003d\"images/RemarkCommandSequenceDiagram.png\" width\u003d\"700\"/\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":281,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":282,"author":{"gitId":"alvinnzz"},"content":"### Split Command","lastModifiedDate":"2024-03-25"},{"lineNumber":283,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":284,"author":{"gitId":"alvinnzz"},"content":"#### Implementation Overview","lastModifiedDate":"2024-03-30"},{"lineNumber":285,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":286,"author":{"gitId":"alvinnzz"},"content":"After the `AddressBookParser` identifies that the user\u0027s input is calling the `split` command word, it creates a","lastModifiedDate":"2024-03-25"},{"lineNumber":287,"author":{"gitId":"alvinnzz"},"content":"`SplitCommandParser`. The `SplitCommandParser` then parses the user\u0027s input and creates a new `SplitCommand`","lastModifiedDate":"2024-03-25"},{"lineNumber":288,"author":{"gitId":"alvinnzz"},"content":"containing at least one `Index`. The `SplitCommand` is then executed by `Logic Manager`, which updates the","lastModifiedDate":"2024-03-25"},{"lineNumber":289,"author":{"gitId":"alvinnzz"},"content":"`MoneyOwed` attribute in `Person`. A `CommandResult` which stores the message of the outcome of split command is","lastModifiedDate":"2024-03-25"},{"lineNumber":290,"author":{"gitId":"alvinnzz"},"content":"then returned. Part of the class diagram is shown below.","lastModifiedDate":"2024-03-25"},{"lineNumber":291,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":292,"author":{"gitId":"alvinnzz"},"content":"\u003cimg src\u003d\"images/SplitClassDiagram.png\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":293,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":294,"author":{"gitId":"alvinnzz"},"content":"The following activity diagram sums up the workflow of what happens when the user keys in a split command.","lastModifiedDate":"2024-03-28"},{"lineNumber":295,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":296,"author":{"gitId":"alvinnzz"},"content":"\u003cimg src\u003d\"images/SplitActivityDiagram.png\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":297,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":298,"author":{"gitId":"alvinnzz"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-30"},{"lineNumber":299,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":300,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":301,"author":{"gitId":"zhekaiii"},"content":"### PayNow","lastModifiedDate":"2024-03-28"},{"lineNumber":302,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":303,"author":{"gitId":"NewtonKoh"},"content":"PayNow QR codes are basically encoded string, further encoded into a QR code. The string follow a specific format and","lastModifiedDate":"2024-03-28"},{"lineNumber":304,"author":{"gitId":"NewtonKoh"},"content":"can be generated offline. The specifications of the format have been referenced","lastModifiedDate":"2024-03-28"},{"lineNumber":305,"author":{"gitId":"NewtonKoh"},"content":"from [this repo](https://github.com/poonchuanan/Python-PayNow-QR-Code-Generator).","lastModifiedDate":"2024-03-28"},{"lineNumber":306,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":307,"author":{"gitId":"NewtonKoh"},"content":"Basically, the string represents an object (similar to JSON) and it contains \"fields\" (similar to JSON attributes). In","lastModifiedDate":"2024-03-28"},{"lineNumber":308,"author":{"gitId":"NewtonKoh"},"content":"one of the required fields is a nested object.","lastModifiedDate":"2024-03-28"},{"lineNumber":309,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":310,"author":{"gitId":"zhekaiii"},"content":"The class diagram is as such:","lastModifiedDate":"2024-03-28"},{"lineNumber":311,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":312,"author":{"gitId":"zhekaiii"},"content":"![PayNow Code modelling](images/PayNowDiagram.png)","lastModifiedDate":"2024-03-28"},{"lineNumber":313,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":314,"author":{"gitId":"NewtonKoh"},"content":"`PayNowPayload` is the aforementioned representation of an object. One `PayNowPayload` can contain","lastModifiedDate":"2024-03-28"},{"lineNumber":315,"author":{"gitId":"NewtonKoh"},"content":"multiple `PaynowField`s.","lastModifiedDate":"2024-03-28"},{"lineNumber":316,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":317,"author":{"gitId":"NewtonKoh"},"content":"`PayNowCode` is what we encode into the QR code that we can then scan. One of the fields contain","lastModifiedDate":"2024-03-28"},{"lineNumber":318,"author":{"gitId":"NewtonKoh"},"content":"a `MerchantAccountInformation`, which is also a `PayNowPayload` itself (which is the nested object that had been","lastModifiedDate":"2024-03-28"},{"lineNumber":319,"author":{"gitId":"NewtonKoh"},"content":"mentioned above).","lastModifiedDate":"2024-03-28"},{"lineNumber":320,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":321,"author":{"gitId":"NewtonKoh"},"content":"We then call PayNowCode\u0027s static method, passing in a phone number and an initial amount (that will be autofilled when","lastModifiedDate":"2024-03-28"},{"lineNumber":322,"author":{"gitId":"NewtonKoh"},"content":"users scan the QR code with their banking application), to generate the QR code.","lastModifiedDate":"2024-03-28"},{"lineNumber":323,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":324,"author":{"gitId":"zhekaiii"},"content":"[//]: # ([insert next UML here])","lastModifiedDate":"2024-03-28"},{"lineNumber":325,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":326,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"zhekaiii"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-03-13"},{"lineNumber":331,"author":{"gitId":"zhekaiii"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-03-13"},{"lineNumber":332,"author":{"gitId":"zhekaiii"},"content":"following operations:","lastModifiedDate":"2024-03-13"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"zhekaiii"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-03-13"},{"lineNumber":335,"author":{"gitId":"zhekaiii"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-03-13"},{"lineNumber":336,"author":{"gitId":"zhekaiii"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-13"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"zhekaiii"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()`","lastModifiedDate":"2024-03-13"},{"lineNumber":339,"author":{"gitId":"zhekaiii"},"content":"and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-03-13"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"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":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"zhekaiii"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-13"},{"lineNumber":344,"author":{"gitId":"zhekaiii"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-13"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"zhekaiii"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command","lastModifiedDate":"2024-03-13"},{"lineNumber":349,"author":{"gitId":"zhekaiii"},"content":"calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes","lastModifiedDate":"2024-03-13"},{"lineNumber":350,"author":{"gitId":"zhekaiii"},"content":"to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book","lastModifiedDate":"2024-03-13"},{"lineNumber":351,"author":{"gitId":"zhekaiii"},"content":"state.","lastModifiedDate":"2024-03-13"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"zhekaiii"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also","lastModifiedDate":"2024-03-13"},{"lineNumber":356,"author":{"gitId":"zhekaiii"},"content":"calls `Model#commitAddressBook()`, causing another modified address book state to be saved into","lastModifiedDate":"2024-03-13"},{"lineNumber":357,"author":{"gitId":"zhekaiii"},"content":"the `addressBookStateList`.","lastModifiedDate":"2024-03-13"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"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":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"zhekaiii"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing","lastModifiedDate":"2024-03-13"},{"lineNumber":366,"author":{"gitId":"zhekaiii"},"content":"the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer`","lastModifiedDate":"2024-03-13"},{"lineNumber":367,"author":{"gitId":"zhekaiii"},"content":"once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-13"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"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":372,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"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":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":386,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":388,"author":{"gitId":"zhekaiii"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-03-13"},{"lineNumber":389,"author":{"gitId":"zhekaiii"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-03-13"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"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":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"zhekaiii"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such","lastModifiedDate":"2024-03-13"},{"lineNumber":396,"author":{"gitId":"zhekaiii"},"content":"as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`.","lastModifiedDate":"2024-03-13"},{"lineNumber":397,"author":{"gitId":"zhekaiii"},"content":"Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-13"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"zhekaiii"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-03-13"},{"lineNumber":402,"author":{"gitId":"zhekaiii"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-03-13"},{"lineNumber":403,"author":{"gitId":"zhekaiii"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-03-13"},{"lineNumber":404,"author":{"gitId":"zhekaiii"},"content":"desktop applications follow.","lastModifiedDate":"2024-03-13"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":438,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":439,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":440,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"JerryO3"},"content":"NUS students who want to coordinate weekly meetup sessions for meals/activities","lastModifiedDate":"2024-03-11"},{"lineNumber":451,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":452,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":456,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"JerryO3"},"content":"* would like to know who is available on a particular day of the week","lastModifiedDate":"2024-03-11"},{"lineNumber":458,"author":{"gitId":"JerryO3"},"content":"* would like to know how much he owes to/is owed by his contacts","lastModifiedDate":"2024-03-11"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"zhekaiii"},"content":"**Value proposition**: FriendFolio tailors the contact management experience just for students. It streamlines","lastModifiedDate":"2024-03-13"},{"lineNumber":461,"author":{"gitId":"zhekaiii"},"content":"connections, enhances academic collaborations, and fosters a vibrant community within their reach. FriendFolio elevates","lastModifiedDate":"2024-03-13"},{"lineNumber":462,"author":{"gitId":"zhekaiii"},"content":"the networking game, making every interaction meaningful.","lastModifiedDate":"2024-03-13"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"JerryO3"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ | Notes |","lastModifiedDate":"2024-03-11"},{"lineNumber":469,"author":{"gitId":"zhekaiii"},"content":"|----------|--------------------------------------------|-------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------------------------|","lastModifiedDate":"2024-03-13"},{"lineNumber":470,"author":{"gitId":"JerryO3"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | |","lastModifiedDate":"2024-03-11"},{"lineNumber":471,"author":{"gitId":"JerryO3"},"content":"| `* * *` | user | add a new person | | |","lastModifiedDate":"2024-03-11"},{"lineNumber":472,"author":{"gitId":"JerryO3"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need | |","lastModifiedDate":"2024-03-11"},{"lineNumber":473,"author":{"gitId":"JerryO3"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | |","lastModifiedDate":"2024-03-11"},{"lineNumber":474,"author":{"gitId":"JerryO3"},"content":"| `* * *` | user | view person\u0027s information | | |","lastModifiedDate":"2024-03-11"},{"lineNumber":475,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | |","lastModifiedDate":"2024-03-11"},{"lineNumber":476,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store days that my contacts are in school | see who is free to meet up | |","lastModifiedDate":"2024-03-11"},{"lineNumber":477,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store the phone numbers of our contacts | be able to call our contacts | |","lastModifiedDate":"2024-03-11"},{"lineNumber":478,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store address | be able to visit them | |","lastModifiedDate":"2024-03-11"},{"lineNumber":479,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store tags | be able to store miscellaneous information about them | |","lastModifiedDate":"2024-03-11"},{"lineNumber":480,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store email | email them | |","lastModifiedDate":"2024-03-11"},{"lineNumber":481,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store money owed | remember who owes me money | |","lastModifiedDate":"2024-03-11"},{"lineNumber":482,"author":{"gitId":"JerryO3"},"content":"| `* *` | forgetful user | store birthdays of my contacts | not forget when their birthdays are | |","lastModifiedDate":"2024-03-11"},{"lineNumber":483,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | store uncategorized information under a field | remember other information that may not be captured in the existing list of fields | “newton doesn’t eat beef” |","lastModifiedDate":"2024-03-11"},{"lineNumber":484,"author":{"gitId":"JerryO3"},"content":"| `* *` | user | edit person\u0027s information | correct mistakes made when I added the contact | |","lastModifiedDate":"2024-03-11"},{"lineNumber":485,"author":{"gitId":"JerryO3"},"content":"| `* *` | user with many persons in the address book | sort persons by name | locate a person easily | |","lastModifiedDate":"2024-03-11"},{"lineNumber":486,"author":{"gitId":"JerryO3"},"content":"| `*` | user | filter contacts by tags | find contacts of specific categories such as family, friends | |","lastModifiedDate":"2024-03-11"},{"lineNumber":487,"author":{"gitId":"JerryO3"},"content":"| `*` | user | update money owed | | |","lastModifiedDate":"2024-03-11"},{"lineNumber":488,"author":{"gitId":"JerryO3"},"content":"| `*` | user | sort contacts by money owed | look at who owes me the most money | |","lastModifiedDate":"2024-03-11"},{"lineNumber":489,"author":{"gitId":"JerryO3"},"content":"| `*` | user | sort contacts by birthdays | remember to wish the person for his birthday | |","lastModifiedDate":"2024-03-11"},{"lineNumber":490,"author":{"gitId":"JerryO3"},"content":"| `*` | user | filter contacts by days that my contacts are in school | see who is free to meet up more easily | |","lastModifiedDate":"2024-03-11"},{"lineNumber":491,"author":{"gitId":"JerryO3"},"content":"| `*` | user | be warned of creating contacts with duplicate phone numbers | to avoid making duplicate contacts | |","lastModifiedDate":"2024-03-11"},{"lineNumber":492,"author":{"gitId":"JerryO3"},"content":"| `*` | user | share/export my contacts | back them up or share them with others | |","lastModifiedDate":"2024-03-11"},{"lineNumber":493,"author":{"gitId":"JerryO3"},"content":"| `*` | user | store profile pictures of my contacts | quickly identify and remember my contact | |","lastModifiedDate":"2024-03-11"},{"lineNumber":494,"author":{"gitId":"JerryO3"},"content":"| `*` | user | see what is the total amount owed to me/i owe to my contacts | start paying up/ asking others to pay stuff for me | |","lastModifiedDate":"2024-03-11"},{"lineNumber":495,"author":{"gitId":"JerryO3"},"content":"| `*` | experienced user | use quick keyboard shortcuts to perform all the implemented functions above | use the address book more efficiently | |","lastModifiedDate":"2024-03-11"},{"lineNumber":496,"author":{"gitId":"JerryO3"},"content":"| `*` | new user | input contact information into multiple separate input fields (instead of entering one command) | i can avoid making mistakes by not being familiar with the command format | |","lastModifiedDate":"2024-03-11"},{"lineNumber":497,"author":{"gitId":"JerryO3"},"content":"| `*` | user | pin starred contacts at the top of the address book | quickly access my favorite contacts | |","lastModifiedDate":"2024-03-11"},{"lineNumber":498,"author":{"gitId":"JerryO3"},"content":"| `*` | user | access my search history on the search bar | quickly access recent searches | |","lastModifiedDate":"2024-03-11"},{"lineNumber":499,"author":{"gitId":"JerryO3"},"content":"| `*` | user | store incomplete contacts as drafts | return to my incomplete contacts to finish them up after any disruption without losing existing keyed-in information | |","lastModifiedDate":"2024-03-11"},{"lineNumber":500,"author":{"gitId":"JerryO3"},"content":"| `*` | user | access my desired contacts via autocomplete in the search bar | efficiently access my contacts in the address book | |","lastModifiedDate":"2024-03-11"},{"lineNumber":501,"author":{"gitId":"JerryO3"},"content":"| `*` | experienced user | add multiple contacts with one input | efficiently use the address book | |","lastModifiedDate":"2024-03-11"},{"lineNumber":502,"author":{"gitId":"JerryO3"},"content":"| `*` | user | remove starred contacts from the top of the address book | remove contacts i no longer want to pin | |","lastModifiedDate":"2024-03-11"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":504,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"zhekaiii"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified","lastModifiedDate":"2024-03-13"},{"lineNumber":509,"author":{"gitId":"zhekaiii"},"content":"otherwise)","lastModifiedDate":"2024-03-13"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":512,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":513,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Add Contact**","lastModifiedDate":"2024-03-12"},{"lineNumber":514,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":515,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User is logged into the system.","lastModifiedDate":"2024-03-12"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"NewtonKoh"},"content":"1. User selects the option to add a new contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":520,"author":{"gitId":"NewtonKoh"},"content":"2. User enters the contact\u0027s name, phone number, and any other optional information.","lastModifiedDate":"2024-03-12"},{"lineNumber":521,"author":{"gitId":"NewtonKoh"},"content":"3. System validates the provided information.","lastModifiedDate":"2024-03-12"},{"lineNumber":522,"author":{"gitId":"NewtonKoh"},"content":"4. System adds the new contact to the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":523,"author":{"gitId":"NewtonKoh"},"content":"5. System displays a confirmation message.","lastModifiedDate":"2024-03-12"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** A new contact is added to the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":526,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":527,"author":{"gitId":"NewtonKoh"},"content":"***Alternate Flows:*** If the information fails validation, the system notifies the user and requests correct data.","lastModifiedDate":"2024-03-12"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":529,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":530,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":531,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Delete Contact**","lastModifiedDate":"2024-03-12"},{"lineNumber":532,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":533,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User is logged into the system and the address book contains at least one contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":535,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":537,"author":{"gitId":"NewtonKoh"},"content":"1. User requests a list of contacts and selects one to delete.","lastModifiedDate":"2024-03-12"},{"lineNumber":538,"author":{"gitId":"NewtonKoh"},"content":"2. System requests confirmation for deletion.","lastModifiedDate":"2024-03-12"},{"lineNumber":539,"author":{"gitId":"NewtonKoh"},"content":"3. User confirms.","lastModifiedDate":"2024-03-12"},{"lineNumber":540,"author":{"gitId":"NewtonKoh"},"content":"4. System deletes the selected contact from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":541,"author":{"gitId":"NewtonKoh"},"content":"5. System displays a confirmation message.","lastModifiedDate":"2024-03-12"},{"lineNumber":542,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":543,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The selected contact is removed from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":544,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":545,"author":{"gitId":"NewtonKoh"},"content":"***Alternate Flows:*** If the user cancels the deletion, no action is taken.","lastModifiedDate":"2024-03-12"},{"lineNumber":546,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":547,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":548,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":549,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Edit Contact**","lastModifiedDate":"2024-03-12"},{"lineNumber":550,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":551,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User is logged into the system and the address book contains at least one contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":552,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":553,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":554,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":555,"author":{"gitId":"NewtonKoh"},"content":"1. User requests to edit a contact and selects one from the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":556,"author":{"gitId":"NewtonKoh"},"content":"2. System displays the selected contact’s current information.","lastModifiedDate":"2024-03-12"},{"lineNumber":557,"author":{"gitId":"NewtonKoh"},"content":"3. User updates the necessary information.","lastModifiedDate":"2024-03-12"},{"lineNumber":558,"author":{"gitId":"NewtonKoh"},"content":"4. System validates the updated information.","lastModifiedDate":"2024-03-12"},{"lineNumber":559,"author":{"gitId":"NewtonKoh"},"content":"5. System updates the contact details in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":560,"author":{"gitId":"NewtonKoh"},"content":"6. System displays a confirmation message.","lastModifiedDate":"2024-03-12"},{"lineNumber":561,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":562,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The selected contact\u0027s information is updated in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":563,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":564,"author":{"gitId":"zhekaiii"},"content":"***Alternate Flows:*** If the updated information fails validation, the system notifies the user and requests correct","lastModifiedDate":"2024-03-13"},{"lineNumber":565,"author":{"gitId":"zhekaiii"},"content":"data.","lastModifiedDate":"2024-03-13"},{"lineNumber":566,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":567,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":568,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":569,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Phone Number**","lastModifiedDate":"2024-03-12"},{"lineNumber":570,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":571,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":572,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":573,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":574,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":575,"author":{"gitId":"NewtonKoh"},"content":"1. User provides a phone number for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":576,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the phone number format.","lastModifiedDate":"2024-03-12"},{"lineNumber":577,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the phone number with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":578,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":579,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s phone number is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":580,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":581,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":582,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":583,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: View Contacts**","lastModifiedDate":"2024-03-12"},{"lineNumber":584,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":585,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User is logged into the system.","lastModifiedDate":"2024-03-12"},{"lineNumber":586,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":587,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":588,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":589,"author":{"gitId":"NewtonKoh"},"content":"1. User selects the option to view contacts.","lastModifiedDate":"2024-03-12"},{"lineNumber":590,"author":{"gitId":"NewtonKoh"},"content":"2. System retrieves and displays all contacts from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":591,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":592,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** User views the list of all contacts in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":593,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":594,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":595,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":596,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Address**","lastModifiedDate":"2024-03-12"},{"lineNumber":597,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":598,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":599,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":600,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":601,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":602,"author":{"gitId":"NewtonKoh"},"content":"1. User provides an address for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":603,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the address format.","lastModifiedDate":"2024-03-12"},{"lineNumber":604,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the address with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":605,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":606,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s address is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":607,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":608,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":609,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":610,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Tags**","lastModifiedDate":"2024-03-12"},{"lineNumber":611,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":612,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":613,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":614,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":615,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":616,"author":{"gitId":"NewtonKoh"},"content":"1. User provides one or more tags for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":617,"author":{"gitId":"NewtonKoh"},"content":"2. System stores the tags with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":618,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":619,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s tags are stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":620,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":621,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":622,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":623,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Email**","lastModifiedDate":"2024-03-12"},{"lineNumber":624,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":625,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":626,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":627,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":628,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":629,"author":{"gitId":"NewtonKoh"},"content":"1. User provides an email address for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":630,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the email format.","lastModifiedDate":"2024-03-12"},{"lineNumber":631,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the email with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":632,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":633,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s email address is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":634,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":635,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":636,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":637,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Money Owed**","lastModifiedDate":"2024-03-12"},{"lineNumber":638,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":639,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":640,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":641,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":642,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":643,"author":{"gitId":"NewtonKoh"},"content":"1. User provides an amount of money owed for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":644,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the money format.","lastModifiedDate":"2024-03-12"},{"lineNumber":645,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the money owed information with the contact’s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":646,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":647,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s money owed information is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":648,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":649,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":650,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":651,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Birthday**","lastModifiedDate":"2024-03-12"},{"lineNumber":652,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":653,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":654,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":655,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":656,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":657,"author":{"gitId":"NewtonKoh"},"content":"1. User provides a birthday for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":658,"author":{"gitId":"NewtonKoh"},"content":"2. System validates the birthday format.","lastModifiedDate":"2024-03-12"},{"lineNumber":659,"author":{"gitId":"NewtonKoh"},"content":"3. System stores the birthday with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":660,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":661,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s birthday is stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":662,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":663,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":664,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":665,"author":{"gitId":"NewtonKoh"},"content":"**Use Case: Store Remarks**","lastModifiedDate":"2024-03-12"},{"lineNumber":666,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":667,"author":{"gitId":"NewtonKoh"},"content":"***Preconditions:*** User has initiated adding or editing a contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":668,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":669,"author":{"gitId":"NewtonKoh"},"content":"**MSS**","lastModifiedDate":"2024-03-12"},{"lineNumber":670,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":671,"author":{"gitId":"NewtonKoh"},"content":"1. User provides some remarks for the contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":672,"author":{"gitId":"NewtonKoh"},"content":"2. System stores the remarks with the contact’s information.","lastModifiedDate":"2024-03-12"},{"lineNumber":673,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":674,"author":{"gitId":"NewtonKoh"},"content":"***Postconditions:*** The contact\u0027s remarks are stored or updated.","lastModifiedDate":"2024-03-12"},{"lineNumber":675,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":676,"author":{"gitId":"NewtonKoh"},"content":"___","lastModifiedDate":"2024-03-12"},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":678,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":680,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":682,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":684,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":685,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":686,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":687,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":688,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":689,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":690,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":692,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":693,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":694,"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":695,"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":696,"author":{"gitId":"zhekaiii"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-03-13"},{"lineNumber":697,"author":{"gitId":"zhekaiii"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-13"},{"lineNumber":698,"author":{"gitId":"zhekaiii"},"content":"4. Should remain functional in the event that the user types in an invalid command.","lastModifiedDate":"2024-03-13"},{"lineNumber":699,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":700,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":702,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":704,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":705,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":706,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":707,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":709,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":710,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":711,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":713,"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":714,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":715,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":716,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":717,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":718,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":719,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":720,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":721,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":722,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":723,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":724,"author":{"gitId":"zhekaiii"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-03-13"},{"lineNumber":725,"author":{"gitId":"zhekaiii"},"content":" optimum.","lastModifiedDate":"2024-03-13"},{"lineNumber":726,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":727,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":728,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":729,"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":730,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":731,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":732,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":733,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":734,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":735,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":736,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":737,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":738,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":739,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":740,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":741,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":742,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":743,"author":{"gitId":"zhekaiii"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-03-13"},{"lineNumber":744,"author":{"gitId":"zhekaiii"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-13"},{"lineNumber":745,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":746,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":747,"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":748,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":749,"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":750,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":751,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":752,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":753,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":754,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":755,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":756,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":757,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":758,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":759,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":760,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"NewtonKoh":232,"alvinnzz":19,"JerryO3":62,"-":331,"zhekaiii":116}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"title: Using FriendFolio","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"***Welcome to FriendFolio!***","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"Congratulations on joining the FriendFolio community! We\u0027re thrilled to have you on board. FriendFolio isn\u0027t just your","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"ordinary address book; it\u0027s your ultimate companion for staying organized, managing finances between friends, and","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"syncing up with your buddies\u0027 school schedules effortlessly.","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"This user guide is designed to help you navigate every feature of FriendFolio with ease, ensuring you make the most","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"out of your experience. So sit back, relax, and let\u0027s dive into the exciting world of FriendFolio!","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"Happy organizing,","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"The FriendFolio Dev Team","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"***Why This User Guide Matters***","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"While FriendFolio is designed to be intuitive and user-friendly, taking a few moments to familiarize yourself with this","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"guide will significantly enhance your overall experience. Here\u0027s why:","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"**Unlock Hidden Features**: Uncover useful FriendFolio features that go beyond your everyday address book app and","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"leverage FriendFolio to its full potential.","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"**Streamline Your Experience**: Find useful tips to streamline your FriendFolio experience and navigate the app","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":"effortlessly, saving time and frustration.","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"**Maximize Efficiency**: Gain valuable insights and best practices to ensure FriendFolio maximizes efficiency in your","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":"social interactions.","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":"In essence, this user guide isn\u0027t just a manual – it\u0027s your key to unlocking the full potential of FriendFolio and","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":"revolutionizing the way you connect with friends. So don\u0027t overlook its importance; dive in, explore, and elevate your","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"FriendFolio experience today!","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":"***A Quick Overview***","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"FriendFolio is a **desktop CLI (Command Line Interface)-optimized app** with intuitive GUI (Graphical User Interface)","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":"elements for managing contacts which can **track both your finances** and your **friends’ availabilities**, with a","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":"singular focus of streamlining student life by simplifying tasks like splitting bills between friends, ensuring users","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":"can effortlessly manage their finances and social engagements.","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":"**Table of Contents:**","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"1. [Getting Started](#getting-started)","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"2. [Useful Features](#features)","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" 1. [User Interface Overview](#user-interface-overview)","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" 2. [Command Overview](#command-overview)","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" 1. [`Help` Command](#viewing-help-help)","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" 2. [`Add` Command](#adding-a-person-add)","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" 3. [`List` Command](#listing-all-persons-list)","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" 4. [`Edit` Command](#editing-a-person-edit)","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" 5. [`Delete` Command](#deleting-a-person-delete)","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" 6. [`Filter` Command](#filtering-based-on-selected-attributes--filter)","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" 7. [`Lend` Command](#lending-an-amount--lend)","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" 8. [`Split` Command](#splitting-an-amount-owed-split)","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" 9. [`Sort` Command](#sorting-contacts-sort)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" 10. [`Pay` Command](#generating-payment-qr-code--pay)","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" 11. [`Clear` Command](#clearing-all-entries-clear)","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" 12. [`Remark` Command](#adding-or-editing-a-remark-remark)","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" 13. [`Exit` Command](#exiting-the-program-exit)","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" 4. [Saving Data Files](#saving-the-data)","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" 5. [Editing Data Files](#editing-the-data-file)","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" 6. Exporting Data (Coming soon)","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":"3. [FAQs](#faq)","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":"4. [Known Issues](#known-issues)","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":"5. [Command Summary](#command-summary)","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":"## Getting Started","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":"2. Download the latest `addressbook.jar` from [here](https://github.com/AY2324S2-CS2103T-T16-2/tp/releases).","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar`","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" open the help window.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe`","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" to the Address Book.","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":"### User Interface Overview","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":"When you launch FriendFolio, you will be greeted with some key information on the dashboard. Let\u0027s walk you through some","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":"of the components in the dashboard!","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":"![Breakdown of Ui](images/UiBreakdown.png)","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":"**Dashboard:**","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"zhekaiii"},"content":"The dashboard gives you an overview of your day. Here are the components of the dashboard.","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":"* The dashboard displays the current time so that you do not have to dart your eyes elsewhere to find out what time it","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"NewtonKoh"},"content":" currently is.","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"NewtonKoh"},"content":"* FriendFolio tells you the number of contacts you have so that you have a sensing of how many contacts you have. The","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":" more, the merrier!","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"NewtonKoh"},"content":"* There is a graph to show you how much you are owed, and how much you owe others. At one glance, you can find out if","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" you need to transfer anyone money, or if you need to chase anyone for payment.","lastModifiedDate":"2024-04-05"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":"* FriendFolio tells you who is available today, so you know if your friends are free to meet you for a meal, or if they","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":" are free to discuss that one group project you all might have been procrastinating on.","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":"**Command Line Interface:**","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":"* At the top of the screen is the command line interface. You can type in commands into the command box and the command","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":" results will be displayed in the box above!","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":"**Contact List:**","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":"* On the left is where you can see your contacts. Clicking on these cards will replace the dashboard with more detailed","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" information the contact that you clicked on. You can unselect the contact by pressing on the `Esc` key.","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" ![Ui of contact information displayed](images/UiContactClicked.png)","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":"## Command Overview","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"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":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" e.g. `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":"* Items that start with `--` are flags that you can use to achieve slightly different outcomes than the default.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" Any redundant text after the flag will be ignored.","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" e.g. `--all`","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"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":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":"* Redundant text/parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`)","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"NewtonKoh"},"content":" will be","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" ignored.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"zhekaiii"},"content":" as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"### Viewing help: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"zhekaiii"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":"Adds a person to the address book. Note that birthdays follow the following format: `dd/mm/yyyy`","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"alvinnzz"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… [b/BIRTHDAY] [$/MONEY_OWED]​`","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"zhekaiii"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/15/02/1999`","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Listing all persons: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"alvinnzz"},"content":"* You can use the `list` command after a `find` command to get back the original list of contacts.","lastModifiedDate":"2024-03-30"},{"lineNumber":198,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":199,"author":{"gitId":"-"},"content":"### Editing a person: `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"zhekaiii"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… [b/BIRTHDAY] [$/MONEYOWED]​`","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"zhekaiii"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"zhekaiii"},"content":" The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"zhekaiii"},"content":"* When editing tags, the existing tags of the person will be removed i.e. adding of tags is not cumulative.","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"zhekaiii"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567`","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"zhekaiii"},"content":" and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"### Deleting a person: `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"alvinnzz"},"content":"### Filtering based on selected attributes: `filter`","lastModifiedDate":"2024-04-03"},{"lineNumber":235,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":236,"author":{"gitId":"JerryO3"},"content":"Filters out the contacts that contain any or all of the keywords.","lastModifiedDate":"2024-04-04"},{"lineNumber":237,"author":{"gitId":"JerryO3"},"content":"You can choose to filter by day available, by name or by tags, and specify if the returned contacts should match any","lastModifiedDate":"2024-04-04"},{"lineNumber":238,"author":{"gitId":"JerryO3"},"content":"or all of the keywords specified using the `--all` optional flag at the end of the command.","lastModifiedDate":"2024-04-04"},{"lineNumber":239,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":240,"author":{"gitId":"alvinnzz"},"content":"Format:","lastModifiedDate":"2024-04-03"},{"lineNumber":241,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"zhekaiii"},"content":"1. `filter tag TAG_NAME... [--all]`","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"zhekaiii"},"content":"2. `filter name PERSON_NAME... [--all]`","lastModifiedDate":"2024-04-04"},{"lineNumber":244,"author":{"gitId":"zhekaiii"},"content":"3. `filter day DAY... [--all]`","lastModifiedDate":"2024-04-04"},{"lineNumber":245,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":246,"author":{"gitId":"alvinnzz"},"content":"* **At least one** keyword `tag`, `name` or `day` needs to be used.","lastModifiedDate":"2024-04-03"},{"lineNumber":247,"author":{"gitId":"JerryO3"},"content":"* If multiple `TAG_NAME`, `PERSON_NAME` or `DAY` is used, the default result","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"alvinnzz"},"content":" returned will be all matching contacts to any of the keywords.","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"zhekaiii"},"content":"* If the `--all` flag is provided, only contacts that match all the keywords will be shown.","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"zhekaiii"},"content":" * Note that any text provided after the flag will be ignored!","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":252,"author":{"gitId":"alvinnzz"},"content":"Examples:","lastModifiedDate":"2024-04-03"},{"lineNumber":253,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"alvinnzz"},"content":"* `filter tag friend` returns all the contacts that has the tag \"friend\" attached to them.","lastModifiedDate":"2024-04-03"},{"lineNumber":255,"author":{"gitId":"alvinnzz"},"content":"* `filter day wednesday friday` returns all the contacts that are available on Wednesday","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"alvinnzz"},"content":" or Friday or both.","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"zhekaiii"},"content":"* `filter day monday tuesday --all` returns all the contacts that are available on both Monday and Tuesday.","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"alvinnzz"},"content":"### Lending an amount: `lend`","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"alvinnzz"},"content":"Lend an amount of money and accumulate it to current amount owed of a person","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"alvinnzz"},"content":"using the displayed index from the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"alvinnzz"},"content":"Format: `lend INDEX $/MONEY_OWED`","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"alvinnzz"},"content":"* Using positive MONEY_OWED means you are lending money to the person,","lastModifiedDate":"2024-04-04"},{"lineNumber":267,"author":{"gitId":"alvinnzz"},"content":" while using negative MONEY_OWED means you are borrowing from the person.","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"alvinnzz"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"alvinnzz"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"alvinnzz"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"alvinnzz"},"content":"* If the first person in the displayed list owes me $3 now,","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"alvinnzz"},"content":" * `lend 1 $/2` \u0026#8594; first person owes me $5 now","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"alvinnzz"},"content":" * `lend 1 $/-1.50` \u0026#8594; first person owes me $0.50 now","lastModifiedDate":"2024-04-04"},{"lineNumber":276,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":277,"author":{"gitId":"alvinnzz"},"content":"### Splitting an amount owed: `split`","lastModifiedDate":"2024-03-25"},{"lineNumber":278,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":279,"author":{"gitId":"alvinnzz"},"content":"Splits the sum of money owed among you and a group of person using the displayed","lastModifiedDate":"2024-03-30"},{"lineNumber":280,"author":{"gitId":"alvinnzz"},"content":"index from the address book, assuming you paid for a bill.","lastModifiedDate":"2024-04-04"},{"lineNumber":281,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":282,"author":{"gitId":"alvinnzz"},"content":"Format: `split INDEX [INDEX]... $/MONEY_OWED`","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":284,"author":{"gitId":"alvinnzz"},"content":"* MONEY_OWED should have **at most 2 decimal places**.","lastModifiedDate":"2024-04-04"},{"lineNumber":285,"author":{"gitId":"alvinnzz"},"content":"* There must be **at least 1 index**.","lastModifiedDate":"2024-04-03"},{"lineNumber":286,"author":{"gitId":"alvinnzz"},"content":"* The amount will be evenly distributed among you and the group of people with index mentioned","lastModifiedDate":"2024-03-30"},{"lineNumber":287,"author":{"gitId":"alvinnzz"},"content":" and the split amount will be added on to their current amount of money owed.","lastModifiedDate":"2024-03-30"},{"lineNumber":288,"author":{"gitId":"alvinnzz"},"content":"* The amount after splitting should be at least $0.01.","lastModifiedDate":"2024-04-04"},{"lineNumber":289,"author":{"gitId":"alvinnzz"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-25"},{"lineNumber":290,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":291,"author":{"gitId":"alvinnzz"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":292,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":293,"author":{"gitId":"alvinnzz"},"content":"* `split 1 2 $/6.60` will split $6.60 evenly among you and two more people which is","lastModifiedDate":"2024-03-30"},{"lineNumber":294,"author":{"gitId":"alvinnzz"},"content":" adding $2.20 to the amount owed of the person at index 1 and 2.","lastModifiedDate":"2024-03-30"},{"lineNumber":295,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":296,"author":{"gitId":"zhekaiii"},"content":"### Sorting contacts: `sort`","lastModifiedDate":"2024-03-26"},{"lineNumber":297,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":298,"author":{"gitId":"zhekaiii"},"content":"Sorts your contacts in one of three sorting methods:","lastModifiedDate":"2024-03-26"},{"lineNumber":299,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":300,"author":{"gitId":"zhekaiii"},"content":"1. Name (`name`)","lastModifiedDate":"2024-03-26"},{"lineNumber":301,"author":{"gitId":"zhekaiii"},"content":"2. Birthday (`birthday`)","lastModifiedDate":"2024-03-26"},{"lineNumber":302,"author":{"gitId":"zhekaiii"},"content":"3. Money Owed (`money`)","lastModifiedDate":"2024-03-26"},{"lineNumber":303,"author":{"gitId":"zhekaiii"},"content":"4. Default (`clear`)","lastModifiedDate":"2024-03-26"},{"lineNumber":304,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":305,"author":{"gitId":"zhekaiii"},"content":"Format: `sort SORT_METHOD`","lastModifiedDate":"2024-03-26"},{"lineNumber":306,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":307,"author":{"gitId":"zhekaiii"},"content":"* `SORT_METHOD` should be one of four keywords listed above.","lastModifiedDate":"2024-03-26"},{"lineNumber":308,"author":{"gitId":"zhekaiii"},"content":"* Sorting by name sorts contacts by alphabetical order.","lastModifiedDate":"2024-03-26"},{"lineNumber":309,"author":{"gitId":"NewtonKoh"},"content":"* Sorting by birthday arranges contacts based on their closest birthdays, with those having upcoming birthdays appearing","lastModifiedDate":"2024-04-05"},{"lineNumber":310,"author":{"gitId":"NewtonKoh"},"content":" first. Contacts without saved birthday information are placed at the end of the sorted list.","lastModifiedDate":"2024-04-05"},{"lineNumber":311,"author":{"gitId":"NewtonKoh"},"content":"* Sorting by money owed will prioritize contacts based on the amount owed, with those owed the most money appearing","lastModifiedDate":"2024-04-05"},{"lineNumber":312,"author":{"gitId":"NewtonKoh"},"content":" first, followed by those who owe you the most. Contacts with no money owed to or by them will be placed at the end of","lastModifiedDate":"2024-04-05"},{"lineNumber":313,"author":{"gitId":"NewtonKoh"},"content":" the list.","lastModifiedDate":"2024-04-05"},{"lineNumber":314,"author":{"gitId":"zhekaiii"},"content":"* The default sorting method lists your contacts in order of when you added them into FriendFolio.","lastModifiedDate":"2024-03-26"},{"lineNumber":315,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":316,"author":{"gitId":"alvinnzz"},"content":"### Generating payment QR code: `pay`","lastModifiedDate":"2024-03-30"},{"lineNumber":317,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":318,"author":{"gitId":"alvinnzz"},"content":"Generates a payment QR code for index selected from the displayed list.","lastModifiedDate":"2024-03-30"},{"lineNumber":319,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":320,"author":{"gitId":"alvinnzz"},"content":"Format: `pay INDEX`","lastModifiedDate":"2024-03-30"},{"lineNumber":321,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":322,"author":{"gitId":"alvinnzz"},"content":"* You can use this command on contacts whom you owe money to, scanning the","lastModifiedDate":"2024-03-30"},{"lineNumber":323,"author":{"gitId":"alvinnzz"},"content":" QR code to pay them back.","lastModifiedDate":"2024-03-30"},{"lineNumber":324,"author":{"gitId":"alvinnzz"},"content":"* The index chosen should have a valid Singaporean number.","lastModifiedDate":"2024-03-30"},{"lineNumber":325,"author":{"gitId":"alvinnzz"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-30"},{"lineNumber":326,"author":{"gitId":"alvinnzz"},"content":"* The index should be within the range of the displayed person list.","lastModifiedDate":"2024-03-30"},{"lineNumber":327,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":328,"author":{"gitId":"alvinnzz"},"content":"Examples:","lastModifiedDate":"2024-03-30"},{"lineNumber":329,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":330,"author":{"gitId":"alvinnzz"},"content":"* `pay 3` will generate a QR code for the third person in the displayed person list.","lastModifiedDate":"2024-03-30"},{"lineNumber":331,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":332,"author":{"gitId":"-"},"content":"### Clearing all entries: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"NewtonKoh"},"content":"### **Adding or Editing a Remark: `remark`**","lastModifiedDate":"2024-04-05"},{"lineNumber":339,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":340,"author":{"gitId":"NewtonKoh"},"content":"Edits the remark of a person identified by the index number used in the last person listing. Any existing remark will be","lastModifiedDate":"2024-04-05"},{"lineNumber":341,"author":{"gitId":"NewtonKoh"},"content":"overwritten by the input.","lastModifiedDate":"2024-04-05"},{"lineNumber":342,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":343,"author":{"gitId":"NewtonKoh"},"content":"Format: `remark INDEX r/[REMARK]`","lastModifiedDate":"2024-04-05"},{"lineNumber":344,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":345,"author":{"gitId":"NewtonKoh"},"content":"Parameters:","lastModifiedDate":"2024-04-05"},{"lineNumber":346,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":347,"author":{"gitId":"NewtonKoh"},"content":"- `INDEX`: The index number shown in the displayed person list. Must be a positive integer.","lastModifiedDate":"2024-04-05"},{"lineNumber":348,"author":{"gitId":"NewtonKoh"},"content":"- `r/[REMARK]`: The remark to add or edit for the person. If no remark is desired, leave this blank to remove any","lastModifiedDate":"2024-04-05"},{"lineNumber":349,"author":{"gitId":"NewtonKoh"},"content":" existing remarks.","lastModifiedDate":"2024-04-05"},{"lineNumber":350,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":351,"author":{"gitId":"NewtonKoh"},"content":"Example:","lastModifiedDate":"2024-04-05"},{"lineNumber":352,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":353,"author":{"gitId":"NewtonKoh"},"content":"- `remark 1 r/Likes to swim.` This command edits the remark of the first person in the list to \"Likes to swim.\"","lastModifiedDate":"2024-04-05"},{"lineNumber":354,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":355,"author":{"gitId":"-"},"content":"### Exiting the program: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"zhekaiii"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to","lastModifiedDate":"2024-03-13"},{"lineNumber":364,"author":{"gitId":"zhekaiii"},"content":"save manually.","lastModifiedDate":"2024-03-13"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":368,"author":{"gitId":"zhekaiii"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are","lastModifiedDate":"2024-03-13"},{"lineNumber":369,"author":{"gitId":"zhekaiii"},"content":"welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":371,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":372,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook 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-02-09"},{"lineNumber":373,"author":{"gitId":"zhekaiii"},"content":"Furthermore, certain edits can cause the AddressBook 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-13"},{"lineNumber":374,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"zhekaiii"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains","lastModifiedDate":"2024-03-13"},{"lineNumber":386,"author":{"gitId":"zhekaiii"},"content":"the data of your previous AddressBook home folder.","lastModifiedDate":"2024-03-13"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":392,"author":{"gitId":"zhekaiii"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only","lastModifiedDate":"2024-03-13"},{"lineNumber":393,"author":{"gitId":"zhekaiii"},"content":" the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the","lastModifiedDate":"2024-03-13"},{"lineNumber":394,"author":{"gitId":"zhekaiii"},"content":" application before running the application again.","lastModifiedDate":"2024-03-13"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":396,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":398,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"zhekaiii"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-13"},{"lineNumber":401,"author":{"gitId":"alvinnzz"},"content":"|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-04"},{"lineNumber":402,"author":{"gitId":"alvinnzz"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG] [$/MONEY_OWED] [b/BIRTHDAY]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-04-04"},{"lineNumber":403,"author":{"gitId":"zhekaiii"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-13"},{"lineNumber":404,"author":{"gitId":"zhekaiii"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-13"},{"lineNumber":405,"author":{"gitId":"alvinnzz"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [$/MONEY_OWED] [b/BIRTHDAY] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-04-04"},{"lineNumber":406,"author":{"gitId":"alvinnzz"},"content":"| **Exit** | `exit` |","lastModifiedDate":"2024-04-03"},{"lineNumber":407,"author":{"gitId":"alvinnzz"},"content":"| **Filter** | `filter ATTRIBUTE KEYWORD`\u003cbr\u003e e.g., `filter day wednesday friday`, `filter tag family` |","lastModifiedDate":"2024-04-04"},{"lineNumber":408,"author":{"gitId":"alvinnzz"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-04-03"},{"lineNumber":409,"author":{"gitId":"alvinnzz"},"content":"| **Lend** | `lend INDEX $/MONEY_OWED`\u003cbr\u003e e.g., `lend 1 $/2.50`, `lend 2 $-1.65` |","lastModifiedDate":"2024-04-04"},{"lineNumber":410,"author":{"gitId":"alvinnzz"},"content":"| **List** | `list` |","lastModifiedDate":"2024-04-03"},{"lineNumber":411,"author":{"gitId":"alvinnzz"},"content":"| **Pay** | `pay INDEX`\u003cbr\u003e e.g., `pay 3` |","lastModifiedDate":"2024-04-03"},{"lineNumber":412,"author":{"gitId":"zhekaiii"},"content":"| **Sort** | `sort SORT_METHOD`\u003cbr\u003e e.g., `sort birthday` |","lastModifiedDate":"2024-03-26"},{"lineNumber":413,"author":{"gitId":"zhekaiii"},"content":"| **Split** | `split INDEX [INDEX]… $/MONEY_OWED` \u003cbr\u003e e.g., `split 1 2 $/20.10` |","lastModifiedDate":"2024-03-26"},{"lineNumber":414,"author":{"gitId":"NewtonKoh"},"content":"| **Remark** | `remark INDEX r/[REMARK]` \u003cbr\u003e e.g., `remark 1 r/Likes to swim.` |","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"NewtonKoh":56,"alvinnzz":76,"JerryO3":24,"-":149,"zhekaiii":109}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","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":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","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":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","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":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":246,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","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":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":267,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":268,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":269,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":270,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":271,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":272,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":273,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":276,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":281,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"zhekaiii"},"content":" content: \"FriendFolio\";","lastModifiedDate":"2024-03-27"},{"lineNumber":285,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":287,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"-":283,"zhekaiii":5}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e Remark","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e Birthday","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e MoneyOwed","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":21,"zhekaiii":3}},{"path":"docs/diagrams/FilterClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"abstract class Command","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"abstract class Filter","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"interface Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"left to right direction","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"skinparam groupInheritance 2","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"Command \u003c|-- Filter","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"Filter \u003c|-- FilterNameCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"Filter \u003c|-- FilterTagCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"Filter \u003c|-- FilterDayCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"Filter --\u003e \"1\" Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"PersonHasTagPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":"NameContainsKeywordsPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"PersonAvailableOnDayPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"FilterNameCommand o--\u003e \"1\" NameContainsKeywordsPredicate","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":"FilterTagCommand o--\u003e \"1\" PersonHasTagPredicate","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"FilterDayCommand o--\u003e \"1\" PersonAvailableOnDayPredicate","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"JerryO3":29}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"Class Remark","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"Class Birthday","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"Class MoneyOwed","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e Remark","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e Birthday","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"Person *--\u003e MoneyOwed","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":54,"zhekaiii":6}},{"path":"docs/diagrams/RemarkCommandSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"@startuml","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"!include style.puml","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"participant \":UI\" as UI UI_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"participant \":Logic\" as Logic LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"participant \":AddressBookParser\" as Parser LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"participant \":RemarkCommand\" as RemarkCmd LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"UI -[UI_COLOR]\u003e Logic : execute(\"remark 1 r/Likes to swim.\")","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"activate Logic LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"Logic -[LOGIC_COLOR]\u003e Parser : parseCommand(\"remark 1 r/Likes to swim.\")","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"activate Parser LOGIC_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":"Parser -[LOGIC_COLOR]\u003e RemarkCmd : new(index, remark)","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"activate RemarkCmd LOGIC_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":"Logic -[LOGIC_COLOR]\u003e RemarkCmd : execute()","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":"RemarkCmd -[LOGIC_COLOR]\u003e Model : setPerson(personToEdit, editedPerson)","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"activate Model MODEL_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"Model -[MODEL_COLOR]\u003e RemarkCmd : personUpdated","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"deactivate Model","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"RemarkCmd -[LOGIC_COLOR]\u003e Logic : CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"deactivate RemarkCmd","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"Logic -[LOGIC_COLOR]\u003e UI : displayResult","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"deactivate Logic","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":"@enduml","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"NewtonKoh":33}},{"path":"docs/diagrams/ResetDebtSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"@startuml","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"!include style.puml","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"box Ui UI_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"participant \":PaymentWindow\" as PaymentWindow UI_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"participant \":MainWindow\" as MainWindow UI_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"end box","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"participant \"command:ResetDebtCommand\" as ResetDebtCommand LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"end box","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"end box","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"[-\u003e PaymentWindow : button click","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"activate PaymentWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"PaymentWindow -\u003e MainWindow : onResetDebt()","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"activate MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"create ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"MainWindow -\u003e ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"activate ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"ResetDebtCommand -\u003e MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"deactivate ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"MainWindow -\u003e MainWindow : execute(command)","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"activate MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"MainWindow -\u003e LogicManager : execute(command)","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"activate LogicManager","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":"LogicManager -\u003e ResetDebtCommand : execute(command)","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"activate ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"ResetDebtCommand -\u003e Model : resetDebt(person)","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":"activate Model","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":"Model --\u003e ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"deactivate Model","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"create CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"ResetDebtCommand -\u003e CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"activate CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"CommandResult --\u003e ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"ResetDebtCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"deactivate ResetDebtCommand","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":"LogicManager --\u003e MainWindow : r","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"MainWindow --\u003e MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"deactivate MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":"MainWindow --\u003e PaymentWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"deactivate MainWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"[\u003c--PaymentWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":"deactivate PaymentWindow","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":"@enduml","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"zhekaiii":69}},{"path":"docs/diagrams/SplitActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"@startuml","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"skin rose","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"start","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":": User enters a split command;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":": SplitCommandParser parses the user input and checks if input is valid;","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"switch ()","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"case([the split command is valid])","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":" : Creates a SplitCommand which is executed by the LogicManager;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":" : Splits the total amount among the number of people;","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":" switch()","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" case([Index in range])","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" : Updates Person in FilterPersonList to have the updated amount owed;","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" : Updates the FilterPersonList in the Model;","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" case([else])","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" : Throws an error;","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" endswitch","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"case([else])","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" : Throws an error;","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"endswitch","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"stop","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"@enduml","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"alvinnzz":27}},{"path":"docs/diagrams/SplitClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"@startuml","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"!include style.puml","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"Package Split as SplitPackage\u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"Class LogicManager","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"Class AddressBookParser","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"Class SplitCommandParser","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"Class SplitCommand","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"Class Index","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"Class CommandResult","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"LogicManager -down-\u003e \"1\" SplitCommand : executes \u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"LogicManager -right-\u003e \"1\" AddressBookParser","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"AddressBookParser ..\u003e SplitCommandParser : creates \u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"SplitCommand -right-\u003e \"1..*\" MoneyOwed","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"SplitCommandParser ..\u003e SplitCommand : creates \u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"SplitCommand -right-\u003e \"1..*\" Index","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"SplitCommand ..down\u003e CommandResult : generates \u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"MoneyOwed -[hidden]down-\u003e Index","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":"@enduml","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"alvinnzz":28}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":"PersonListPanel -down-\u003e \"0..1\" DisplayCard","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":"DisplayCard --|\u003e UiPart","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"DisplayCard ..\u003e Model","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"NewtonKoh":3,"-":60}},{"path":"docs/diagrams/paynow/PayNow.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"@startuml","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"!include ../style.puml","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"skinparam arrowColor MODEL_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"skinparam classBackgroundColor MODEL_COLOR_T1","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"Class \"{abstract}\\nPayNowPayload\" as PayNowPayload","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"Class PayNowCode {","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" +{static}generateQrCode(String, float)","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"Class MerchantAccountInformation","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"Class PayNowField {","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" -int id","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" -Object value","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"show PayNowField fields","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"show PayNowCode methods","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"PayNowPayload *--\u003e \"fields\" PayNowField","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"MerchantAccountInformation --|\u003e PayNowPayload","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"PayNowCode --|\u003e PayNowPayload","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"PayNowCode .. MerchantAccountInformation","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"@enduml","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":24}},{"path":"docs/index.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: FriendFolio","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-T16-2/tp)","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"**FriendFolio is a desktop application for managing your contact details.** While it has a GUI, most of the user","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"* If you are interested in using FriendFolio, head over to the [_Quick Start_ section of the **User Guide","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" **](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"* If you are interested about developing FriendFolio, the [**Developer Guide**](DeveloperGuide.html) is a good place to","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" start.","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"* Libraries","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"-":12,"zhekaiii":10}},{"path":"docs/team/alvinnzz.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"---","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"layout: page","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"title: Alvin Ng\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"---","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"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-11"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" by using the redo command.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" analysis of design alternatives. The implementation too was challenging as it required changes to existing","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" commands.","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":"* **Project management**:","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" * User Guide:","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":"* **Community**:","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":"* **Tools**:","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"alvinnzz":39,"zhekaiii":14}},{"path":"docs/team/jerryo3.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"layout: page","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"title: Jie Rui\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"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-12"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" by using the redo command.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" analysis of design alternatives. The implementation too was challenging as it required changes to existing","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"* **Project management**:","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" * User Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":"* **Community**:","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":"* **Tools**:","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"NewtonKoh":53}},{"path":"docs/team/newtonkoh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"layout: page","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"title: Newton\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"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-12"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" by using the redo command.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" analysis of design alternatives. The implementation too was challenging as it required changes to existing","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"* **Project management**:","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" * User Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":"* **Community**:","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":"* **Tools**:","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"NewtonKoh":53}},{"path":"docs/team/zhekaiii.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"---","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"layout: page","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"title: Zhekai\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"---","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"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-11"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" by using the redo command.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" analysis of design alternatives. The implementation too was challenging as it required changes to existing","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" commands.","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"* **Project management**:","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" * User Guide:","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":"* **Community**:","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"* **Tools**:","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"zhekaiii":53}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"Let\u0027s walk you through the implementation of a new command —`remark`.","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"edit it if required. The command should have the following format:","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command`","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"the `ResultDisplay`.","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"a `CommandResult` with an accompanying message.","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":"recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"instance of `RemarkCommand`.","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"You can refer to the changes in","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do.","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":"Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"progress.","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":"change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":"our code is functioning as intended.","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":"Your code should look something","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":"like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594)","lastModifiedDate":"2024-03-25"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":"after you are done.","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser`","lastModifiedDate":"2024-03-25"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":"interface.","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"zhekaiii"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"zhekaiii"},"content":"provided for the function to understand what it does.","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance","lastModifiedDate":"2024-03-25"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":"of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s","lastModifiedDate":"2024-03-25"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":"look through `ArgumentMultimap` :","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"zhekaiii"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at","lastModifiedDate":"2024-03-25"},{"lineNumber":198,"author":{"gitId":"zhekaiii"},"content":"existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2024-03-25"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"zhekaiii"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and","lastModifiedDate":"2024-03-25"},{"lineNumber":210,"author":{"gitId":"zhekaiii"},"content":"create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2024-03-25"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":223,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2024-03-25"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"zhekaiii"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the","lastModifiedDate":"2024-03-25"},{"lineNumber":246,"author":{"gitId":"zhekaiii"},"content":"in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is","lastModifiedDate":"2024-03-25"},{"lineNumber":247,"author":{"gitId":"zhekaiii"},"content":"implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark`","lastModifiedDate":"2024-03-25"},{"lineNumber":248,"author":{"gitId":"zhekaiii"},"content":"class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2024-03-25"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"zhekaiii"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can","lastModifiedDate":"2024-03-25"},{"lineNumber":253,"author":{"gitId":"zhekaiii"},"content":"reuse a significant bit of code.","lastModifiedDate":"2024-03-25"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"zhekaiii"},"content":"A copy-paste and search-replace later, you should have something","lastModifiedDate":"2024-03-25"},{"lineNumber":256,"author":{"gitId":"zhekaiii"},"content":"like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece).","lastModifiedDate":"2024-03-25"},{"lineNumber":257,"author":{"gitId":"zhekaiii"},"content":"Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2024-03-25"},{"lineNumber":258,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"zhekaiii"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These","lastModifiedDate":"2024-03-25"},{"lineNumber":263,"author":{"gitId":"zhekaiii"},"content":"should be relatively simple changes.","lastModifiedDate":"2024-03-25"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"zhekaiii"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each","lastModifiedDate":"2024-03-25"},{"lineNumber":268,"author":{"gitId":"zhekaiii"},"content":"person.","lastModifiedDate":"2024-03-25"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"zhekaiii"},"content":"Simply add the following","lastModifiedDate":"2024-03-25"},{"lineNumber":271,"author":{"gitId":"zhekaiii"},"content":"to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-25"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"zhekaiii"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like","lastModifiedDate":"2024-03-25"},{"lineNumber":281,"author":{"gitId":"zhekaiii"},"content":"Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2024-03-25"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"zhekaiii"},"content":"Then insert the following","lastModifiedDate":"2024-03-25"},{"lineNumber":284,"author":{"gitId":"zhekaiii"},"content":"into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2024-03-25"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"zhekaiii"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors","lastModifiedDate":"2024-03-25"},{"lineNumber":303,"author":{"gitId":"zhekaiii"},"content":"accordingly to store our new addition.","lastModifiedDate":"2024-03-25"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"zhekaiii"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use","lastModifiedDate":"2024-03-25"},{"lineNumber":308,"author":{"gitId":"zhekaiii"},"content":"the updated `Person`!","lastModifiedDate":"2024-03-25"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"zhekaiii"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and","lastModifiedDate":"2024-03-25"},{"lineNumber":317,"author":{"gitId":"zhekaiii"},"content":"check that you have got everything in order!","lastModifiedDate":"2024-03-25"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"zhekaiii"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson.","lastModifiedDate":"2024-03-25"},{"lineNumber":322,"author":{"gitId":"zhekaiii"},"content":"Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2024-03-25"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"zhekaiii"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not","lastModifiedDate":"2024-03-25"},{"lineNumber":329,"author":{"gitId":"zhekaiii"},"content":"doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-25"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2024-03-25"},{"lineNumber":334,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"zhekaiii"},"content":"Just","lastModifiedDate":"2024-03-25"},{"lineNumber":341,"author":{"gitId":"zhekaiii"},"content":"add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2024-03-25"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"zhekaiii"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However,","lastModifiedDate":"2024-03-25"},{"lineNumber":357,"author":{"gitId":"zhekaiii"},"content":"this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the","lastModifiedDate":"2024-03-25"},{"lineNumber":358,"author":{"gitId":"zhekaiii"},"content":"last few steps.","lastModifiedDate":"2024-03-25"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"zhekaiii"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in","lastModifiedDate":"2024-03-25"},{"lineNumber":363,"author":{"gitId":"zhekaiii"},"content":"a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2024-03-25"},{"lineNumber":364,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":383,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":384,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":394,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":395,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":405,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":407,"author":{"gitId":"zhekaiii"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code","lastModifiedDate":"2024-03-25"},{"lineNumber":408,"author":{"gitId":"zhekaiii"},"content":"bases where a change might lead to unintended behavior.","lastModifiedDate":"2024-03-25"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":410,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":412,"author":{"gitId":"zhekaiii"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would","lastModifiedDate":"2024-03-25"},{"lineNumber":413,"author":{"gitId":"zhekaiii"},"content":"be like the test cases","lastModifiedDate":"2024-03-25"},{"lineNumber":414,"author":{"gitId":"zhekaiii"},"content":"in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01).","lastModifiedDate":"2024-03-25"},{"lineNumber":415,"author":{"gitId":"zhekaiii"},"content":"Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next","lastModifiedDate":"2024-03-25"},{"lineNumber":416,"author":{"gitId":"zhekaiii"},"content":"section.","lastModifiedDate":"2024-03-25"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":418,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":420,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":422,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":423,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":425,"author":{"gitId":"zhekaiii"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring","lastModifiedDate":"2024-03-25"},{"lineNumber":426,"author":{"gitId":"zhekaiii"},"content":"up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2024-03-25"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":428,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":430,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":432,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":434,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":436,"author":{"gitId":"zhekaiii"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the","lastModifiedDate":"2024-03-25"},{"lineNumber":437,"author":{"gitId":"zhekaiii"},"content":"expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the","lastModifiedDate":"2024-03-25"},{"lineNumber":438,"author":{"gitId":"zhekaiii"},"content":"best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2024-03-25"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":440,"author":{"gitId":"zhekaiii"},"content":"You should end up with a test that looks something","lastModifiedDate":"2024-03-25"},{"lineNumber":441,"author":{"gitId":"zhekaiii"},"content":"like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2024-03-25"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":443,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":445,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"-":361,"zhekaiii":84}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" public static final Version VERSION \u003d new Version(1, 2, 1, true);","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" //Font.loadFont(getClass().getResourceAsStream(\"/fonts/SF-Pro.ttf\"), 12);","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NewtonKoh":1,"-":185,"zhekaiii":1}},{"path":"src/main/java/seedu/address/commons/util/AnimationUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import javafx.animation.FadeTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import javafx.animation.TranslateTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" * Utility methods for animations","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"public class AnimationUtil {","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" private static final double MOVE_DURATION \u003d 200;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" private static final double MOVE_INITIAL \u003d 500;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" private static final double MOVE_POP \u003d 20;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" private static final double FADE_DURATION \u003d 300;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" private static final double FADE_INITIAL \u003d 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" private static final double FADE_ULTIMATE \u003d 1;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public static TranslateTransition getBounceBackTransition(Node node) {","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" double originalPosition \u003d node.getTranslateX();","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" TranslateTransition bounceBackTransition \u003d new TranslateTransition(Duration.millis(MOVE_DURATION), node);","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.setFromX(originalPosition - MOVE_POP);","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.setToX(originalPosition);","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.setDelay(Duration.millis(MOVE_DURATION));","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" return bounceBackTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" public static FadeTransition getFadeInTransition(Node node) {","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" FadeTransition fadeInTransition \u003d new FadeTransition(Duration.millis(FADE_DURATION), node);","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" fadeInTransition.setFromValue(FADE_INITIAL);","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" fadeInTransition.setToValue(FADE_ULTIMATE);","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" return fadeInTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" public static TranslateTransition getMoveTransition(Node node) {","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" double originalPosition \u003d node.getTranslateX();","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" TranslateTransition moveTransition \u003d new TranslateTransition(Duration.millis(MOVE_DURATION), node);","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" moveTransition.setFromX(originalPosition + MOVE_INITIAL);","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" moveTransition.setToX(originalPosition - MOVE_POP);","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" return moveTransition;","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"zhekaiii":42}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" * Directly executes the command and returns the result.","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" * @param command The command to be executed.","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" * @return the result of the command execution.","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" CommandResult execute(Command command) throws CommandException;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" * Returns an unmodifiable view of the filtered list of persons","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"NewtonKoh":2,"-":49,"zhekaiii":14}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" return execute(command);","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" public CommandResult execute(Command command) throws CommandException {","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" CommandResult commandResult \u003d command.execute(model);","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" return model.getSortedPersonList();","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"NewtonKoh":5,"-":86,"zhekaiii":6}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_SORTED_OVERVIEW \u003d \"List has been sorted by %s.\";","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_SORT_CLEARED \u003d \"List has been sorted by default order.\";","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_INVALID_SORT_TYPE \u003d \"%s is not a valid sort type!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_INVALID_MOBILE \u003d \"The person must have a Singaporean number\"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" + \" (8-digit number starting with 8 or 9).\";","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":52,"zhekaiii":6}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_BIRTHDAY + \"BIRTHDAY] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_MONEY_OWED + \"AMOUNT_OWED] \"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_DAYS_AVAILABLE + \"DAY]...\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"24.50 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" + PREFIX_DAYS_AVAILABLE + \"THURSDAY\";","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)))","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(toAdd));","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alvinnzz":2,"JerryO3":3,"-":81,"zhekaiii":7}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Help information should be shown to the user.","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" * The application should exit.","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" * Used for showing QR code for the person to be paid.","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" private final Person personToPay;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" * Used for setting the UI to display the person at the current index. If an invalid","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" * index is given, UI will display the HomeCard instead.","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private final Integer personToShow;","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" public CommandResult(","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" String feedbackToUser, boolean showHelp, boolean exit, Person personToPay, Integer personToShow) {","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" this.personToPay \u003d personToPay;","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" this.personToShow \u003d personToShow;","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser}, {@code showHelp}","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" * and {@code exit}, and other fields set to their default value.","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" this(feedbackToUser, showHelp, exit, null, null);","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" public CommandResult(String feedbackToUser, Person personToPay) {","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" this(feedbackToUser, false, false, personToPay, null);","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" this(feedbackToUser, false, false, null, null);","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" public boolean isShowPayment() {","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" return personToPay !\u003d null;","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" public Person getPersonToPay() {","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" return personToPay;","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" public Integer getPersonToShow() {","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" return personToShow;","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" * Returns a new {@code CommandResult} with the personToShow set to the provided index.","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" public CommandResult withPersonToShow(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" feedbackToUser,","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" showHelp,","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" exit,","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" personToPay,","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" index","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":118,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit","lastModifiedDate":"2024-03-27"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 Objects.equals(personToPay, otherCommandResult.personToPay)","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 Objects.equals(personToShow, otherCommandResult.personToShow);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" return Objects.hash(feedbackToUser, showHelp, exit, personToPay, personToShow);","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" .add(\"personToPay\", personToPay)","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" .add(\"personToShow\", personToShow)","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":76,"zhekaiii":66}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_BIRTHDAY + \"BIRTHDAY] \"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_MONEY_OWED + \"MONEY_OWED]\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" + \"[\" + PREFIX_DAYS_AVAILABLE + \"DAY]...\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" Remark updatedRemark \u003d personToEdit.getRemark(); // edit command does not allow editing remarks","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" Birthday updatedBirthday \u003d editPersonDescriptor.getBirthday().orElse(personToEdit.getBirthday());","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed updatedMoneyOwed \u003d editPersonDescriptor.getMoneyOwed().orElse(personToEdit.getMoneyOwed());","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e updatedDaysAvailable \u003d editPersonDescriptor","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" .getDaysAvailable().orElse(personToEdit.getDaysAvailable());","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" return new Person(updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" updatedAddress, updatedRemark, updatedTags, updatedBirthday, updatedMoneyOwed, updatedDaysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)))","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(editedPerson));","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" private Birthday birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"alvinnzz"},"content":" private MoneyOwed moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"JerryO3"},"content":" private Set\u003cDay\u003e daysAvailable;","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":176,"author":{"gitId":"zhekaiii"},"content":" setBirthday(toCopy.birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"alvinnzz"},"content":" setMoneyOwed(toCopy.moneyOwed);","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"JerryO3"},"content":" setDaysAvailable(toCopy.daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":" public Optional\u003cBirthday\u003e getBirthday() {","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":" return Optional.ofNullable(birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"zhekaiii"},"content":" public void setBirthday(Birthday birthday) {","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"JerryO3"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, birthday, moneyOwed, daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-27"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"alvinnzz"},"content":" public Optional\u003cMoneyOwed\u003e getMoneyOwed() {","lastModifiedDate":"2024-03-14"},{"lineNumber":229,"author":{"gitId":"alvinnzz"},"content":" return Optional.ofNullable(moneyOwed);","lastModifiedDate":"2024-03-14"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"zhekaiii"},"content":" public void setMoneyOwed(MoneyOwed moneyOwed) {","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"zhekaiii"},"content":" this.moneyOwed \u003d moneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":234,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":235,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-04-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":249,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-04-02"},{"lineNumber":250,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-04-02"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":253,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":254,"author":{"gitId":"JerryO3"},"content":" * Returns an unmodifiable days set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-25"},{"lineNumber":255,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-25"},{"lineNumber":256,"author":{"gitId":"JerryO3"},"content":" * Returns {@code Optional#empty()} if {@code dayAvailable} is null.","lastModifiedDate":"2024-03-25"},{"lineNumber":257,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":258,"author":{"gitId":"JerryO3"},"content":" public Optional\u003cSet\u003cDay\u003e\u003e getDaysAvailable() {","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"JerryO3"},"content":" return (daysAvailable !\u003d null) ? Optional.of(Collections.unmodifiableSet(daysAvailable)) : Optional.empty();","lastModifiedDate":"2024-03-24"},{"lineNumber":260,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":261,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":262,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":263,"author":{"gitId":"zhekaiii"},"content":" * Sets {@code daysAvailable} to this object\u0027s {@code daysAvailable}.","lastModifiedDate":"2024-04-02"},{"lineNumber":264,"author":{"gitId":"zhekaiii"},"content":" * A defensive copy of {@code daysAvailable} is used internally.","lastModifiedDate":"2024-04-02"},{"lineNumber":265,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":266,"author":{"gitId":"zhekaiii"},"content":" public void setDaysAvailable(Set\u003cDay\u003e daysAvailable) {","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"zhekaiii"},"content":" this.daysAvailable \u003d (daysAvailable !\u003d null) ? new HashSet\u003c\u003e(daysAvailable) : null;","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":282,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":286,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-13"},{"lineNumber":287,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 Objects.equals(birthday, otherEditPersonDescriptor.birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":288,"author":{"gitId":"JerryO3"},"content":" \u0026\u0026 Objects.equals(moneyOwed, otherEditPersonDescriptor.moneyOwed)","lastModifiedDate":"2024-03-24"},{"lineNumber":289,"author":{"gitId":"JerryO3"},"content":" \u0026\u0026 Objects.equals(daysAvailable, otherEditPersonDescriptor.daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":290,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"zhekaiii"},"content":" .add(\"birthday\", birthday)","lastModifiedDate":"2024-03-16"},{"lineNumber":300,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":301,"author":{"gitId":"alvinnzz"},"content":" .add(\"moneyOwed\", moneyOwed)","lastModifiedDate":"2024-03-20"},{"lineNumber":302,"author":{"gitId":"JerryO3"},"content":" .add(\"daysAvailable\", daysAvailable)","lastModifiedDate":"2024-03-24"},{"lineNumber":303,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"alvinnzz":8,"JerryO3":19,"-":228,"zhekaiii":51}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" * A common superclass for all filter commands that have the same logic, but filter using","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" * different predicates.","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"public abstract class FilterCommand extends Command {","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters the contact list according to one of the \"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" + \"two possible fields: days and tags and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" + \"Parameters: filter TYPE [KEYWORDS]... [--all]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" + \"Example 1: \" + COMMAND_WORD + \" tag student\"","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" + \"Example 2: \" + COMMAND_WORD + \" day monday tuesday --all\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" * Helps subclasses of filter to set appropriate predicates to filter for different","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" * fields.","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" * @param predicate to be assigned to filter object","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" public FilterCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()))","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" FilterCommand otherFilterCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" return predicate.equals(otherFilterCommand.predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" public String toString() {","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":" .toString();","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":62,"zhekaiii":6}},{"path":"src/main/java/seedu/address/logic/commands/FilterDayCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonAvailableOnDayPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":" * Filters and lists all persons in address book who are available on any of the given days of the week.","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":" * Day matching is case-insensitive.","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"public class FilterDayCommand extends FilterCommand {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" public static final String TYPE \u003d \"day\";","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters for all persons whose availabilities\"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" + \" include any of the specified days and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" + \"Parameters: filter day [days of the week]...\\n\"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + TYPE + \" monday\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" * Returns a new FilterDayCommand object that takes in a PersonAvailableOnDayPredicate","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" * to update the filtered list","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" * @param predicate","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" public FilterDayCommand(PersonAvailableOnDayPredicate predicate) {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" super(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":26}},{"path":"src/main/java/seedu/address/logic/commands/FilterNameCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"public class FilterNameCommand extends FilterCommand {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" public static final String TYPE \u003d \"name\";","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" + \"Parameters: KEYWORD... [--all]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + TYPE + \" alice bob charlie\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" public FilterNameCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" super(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"JerryO3":7,"-":12,"zhekaiii":2}},{"path":"src/main/java/seedu/address/logic/commands/FilterTagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":" * Filters and lists all persons in address book who are tagged by any of the argument keywords.","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"public class FilterTagCommand extends FilterCommand {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" public static final String TYPE \u003d \"tag\";","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters for all persons whose tags include any of \"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" + \"the specified keywords and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + TYPE + \" student\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" * Returns a new FilterTagCommand object that takes in a PersonHasTagPredicate","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" * to update the filtered list","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" * @param predicate","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" public FilterTagCommand(PersonHasTagPredicate predicate) {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" super(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":26}},{"path":"src/main/java/seedu/address/logic/commands/LendCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" * Lend an amount of money on top of current amount to a person identified","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" * using the displayed index from the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"public class LendCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" public static final String COMMAND_WORD \u003d \"lend\";","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_LENT_PERSON_SUCCESS \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" \"Lend to person %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_MISSING_AMOUNT \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" \"Please enter an amount that you want to lend!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" + \": Lend an amount of money on top of the current amount owed of a person \"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" + \"using the displayed index from the address book.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"MONEY_OWED \"","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"4.50\";","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" private final MoneyOwed amountToLend;","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" * Returns a new LendCommand object that takes in an Index object","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" * and a MoneyOwed object.","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" * @param targetIndex","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" * @param amountToLend","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" public LendCommand(Index targetIndex, MoneyOwed amountToLend) {","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(amountToLend);","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" this.amountToLend \u003d amountToLend;","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" Person personToLend \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":" Person lentPerson \u003d new Person(","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" personToLend.getName(), personToLend.getPhone(), personToLend.getEmail(),","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" personToLend.getAddress(), personToLend.getRemark(), personToLend.getTags(),","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" personToLend.getBirthday(),","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" personToLend.getMoneyOwed().addAmountOwed(amountToLend.getAmount()),","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" personToLend.getDaysAvailable());","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"alvinnzz"},"content":" model.setPerson(personToLend, lentPerson);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_LENT_PERSON_SUCCESS, Messages.format(lentPerson)))","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":" .withPersonToShow(model.findIndex(lentPerson));","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"alvinnzz"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":" if (!(other instanceof LendCommand)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"alvinnzz"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"alvinnzz"},"content":" LendCommand otherLendCommand \u003d (LendCommand) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" return targetIndex.equals(otherLendCommand.targetIndex)","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 amountToLend.equals(otherLendCommand.amountToLend);","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" .add(\"amountToLend\", amountToLend)","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" .toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"alvinnzz":97}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(MESSAGE_SUCCESS)","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":23,"zhekaiii":2}},{"path":"src/main/java/seedu/address/logic/commands/PayCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_MOBILE;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.List;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" * Generates a QR code and shows it to the user if the person has a valid Singapore phone number.","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * The QR code can be scanned by a banking application to transfer money to the person.","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"public class PayCommand extends Command {","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public static final String COMMAND_WORD \u003d \"pay\";","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" + \": Generates a PayNow QR code for the person identified by the index number used \"","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" + \"in the displayed person list. The person must have a valid Singapore phone number.\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_GENERATE_QR_SUCCESS \u003d \"Generated QR code for Person: %1$s\";","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" public PayCommand(Index targetIndex) {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" Person personToPay \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" if (!personToPay.getPhone().isSingaporeanNumber()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" throw new CommandException(MESSAGE_INVALID_MOBILE);","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_GENERATE_QR_SUCCESS, Messages.format(personToPay)),","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" personToPay)","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(personToPay));","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" if (!(other instanceof PayCommand)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" PayCommand otherCommand \u003d (PayCommand) other;","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" return Objects.equals(targetIndex, otherCommand.targetIndex);","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":75}},{"path":"src/main/java/seedu/address/logic/commands/RemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" private final Index index;","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" * @param index index of the contact","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" * @param remark string representing remark of contact","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" public RemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" requireAllNonNull(index, remark.toString());","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-07"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"NewtonKoh"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(), personToEdit.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" remark, personToEdit.getTags(), personToEdit.getBirthday(), personToEdit.getMoneyOwed(),","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" personToEdit.getDaysAvailable());","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(generateSuccessMessage(editedPerson))","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(editedPerson));","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" return true;","lastModifiedDate":"2024-03-07"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-07"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2024-03-07"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" return false;","lastModifiedDate":"2024-03-07"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2024-03-07"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-07"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":86,"author":{"gitId":"NewtonKoh"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-07"},{"lineNumber":87,"author":{"gitId":"NewtonKoh"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-07"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-07"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"NewtonKoh"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-07"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-03-07"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-03-07"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"NewtonKoh":89,"alvinnzz":1,"JerryO3":2,"zhekaiii":2}},{"path":"src/main/java/seedu/address/logic/commands/ResetDebtCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" * Resets the moneyOwed of a Person to 0. This is called by a button click instead of a CLI command.","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"public class ResetDebtCommand extends Command {","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" public static final String PERSON_NOT_FOUND_MESSAGE \u003d \"The person with the number %s cannot be\"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" + \" found in the address book!\";","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public static final String RESET_SUCCESS_MESSAGE \u003d \"Reset money owed to %s to $0.\";","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" private final Person originalPerson;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public ResetDebtCommand(Person originalPerson) {","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" this.originalPerson \u003d originalPerson;","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" private Person resetPersonDebt(Person person) {","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" return new Person(person.getName(), person.getPhone(), person.getEmail(),","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" person.getAddress(), person.getRemark(), person.getTags(), person.getBirthday(), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" person.getDaysAvailable());","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" Optional\u003cPerson\u003e personMaybe \u003d model.findPerson(","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" person -\u003e person.getPhone().equals(originalPerson.getPhone()));","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" Person person;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" person \u003d personMaybe.get();","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" throw new CommandException(String.format(PERSON_NOT_FOUND_MESSAGE, originalPerson.getPhone()));","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" if (person.getMoneyOwed().moneyOwed \u003d\u003d 0) {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(String.format(RESET_SUCCESS_MESSAGE, person.getName()))","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(person));","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" Person editedPerson \u003d resetPersonDebt(person);","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" model.setPerson(person, editedPerson);","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" int personIndex \u003d model.findIndex(editedPerson);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" CommandResult result \u003d new CommandResult(String.format(RESET_SUCCESS_MESSAGE, person.getName()));","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" if (personIndex \u003d\u003d Model.INVALID_PERSON_INDEX) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" return result;","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" return result.withPersonToShow(personIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" if (!(other instanceof ResetDebtCommand)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand otherCommand \u003d (ResetDebtCommand) other;","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" return Objects.equals(originalPerson, otherCommand.originalPerson);","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" .add(\"originalPerson\", originalPerson)","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":2,"zhekaiii":72}},{"path":"src/main/java/seedu/address/logic/commands/SortCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_SORT_CLEARED;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.exceptions.InvalidSortTypeException;","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * Sorts the address book in some specified order.","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"public class SortCommand extends Command {","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public static final String COMMAND_WORD \u003d \"sort\";","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sorts your contacts according\"","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" + \"to the specified sorting method.\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" + \"Available methods:\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" + \"1. name\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" + \"2. birthday\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" + \"3. money\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" + \"3. clear\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" + \"Example: \" + COMMAND_WORD + \" birthday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_SORT_TYPE \u003d \"birthday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" public static final String NAME_SORT_TYPE \u003d \"name\";","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" public static final String MONEY_SORT_TYPE \u003d \"money\";","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" public static final String CLEAR_SORT_TYPE \u003d \"clear\";","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private final String sortType;","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" private final Comparator\u003cPerson\u003e personComparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" * Returns a new SortCommand object that takes in a {@code Comparator\u003cPerson\u003e} to","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" * sort the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" public SortCommand(String sortType) throws InvalidSortTypeException {","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" switch (sortType.toLowerCase()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" case BIRTHDAY_SORT_TYPE:","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" this.personComparator \u003d Birthday.BIRTHDAY_COMPARATOR;","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" break;","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" case NAME_SORT_TYPE:","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" this.personComparator \u003d Name.NAME_COMPARATOR;","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" break;","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" case MONEY_SORT_TYPE:","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" this.personComparator \u003d MoneyOwed.MONEY_COMPARATOR;","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" break;","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" case CLEAR_SORT_TYPE:","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" this.personComparator \u003d null;","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" break;","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" default:","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" throw new InvalidSortTypeException(sortType);","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" this.sortType \u003d sortType;","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" model.updatePersonComparator(personComparator);","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" personComparator \u003d\u003d null","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" ? MESSAGE_SORT_CLEARED","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" : String.format(","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" Messages.MESSAGE_SORTED_OVERVIEW, sortType","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" )","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" if (!(other instanceof SortCommand)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" SortCommand otherSort \u003d (SortCommand) other;","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" if (!Objects.equals(sortType, otherSort.sortType)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" return Objects.equals(personComparator, otherSort.personComparator);","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" .add(\"sortType\", sortType)","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"zhekaiii":99}},{"path":"src/main/java/seedu/address/logic/commands/SplitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import java.util.List;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" * Splits the sum of money owed among user and a group of people using the displayed","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" * index from the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"public class SplitCommand extends Command {","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" public static final String COMMAND_WORD \u003d \"split\";","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" public static final Float MINIMUM_SPLIT_AMOUNT \u003d (float) 0.01;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_INVALID_AMOUNT \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" \"Amount after splitting should be more than $0.01!\";","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_MISSING_AMOUNT \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" \"Please enter an amount that you want to split!\";","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" + \": Splits the sum of money owed among you and a group of people \"","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" + \"using the displayed index from the address book.\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" + \"Parameters: at least one INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"MONEY_OWED \"","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2 \"","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" + PREFIX_MONEY_OWED + \"4.50\";","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" private final List\u003cIndex\u003e indexListToSplit;","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" private final MoneyOwed totalOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" * Returns a new SplitCommand object that takes in a list of index","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" * and a MoneyOwed object.","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" * @param indexListToSplit","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" * @param totalOwed","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" public SplitCommand(List\u003cIndex\u003e indexListToSplit, MoneyOwed totalOwed) {","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" this.indexListToSplit \u003d indexListToSplit;","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" this.totalOwed \u003d totalOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" * Splits the total amount of a group of people.","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" * @param totalAmount","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" * @param numPeople","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" * @return the split amount","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" public static Float getSplitAmount(Float totalAmount, int numPeople) {","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" String splitAmountRounded \u003d String.format(\"%.2f\", totalAmount / numPeople);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" Float splitAmount \u003d Float.parseFloat(splitAmountRounded);","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" return splitAmount;","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" * Checks if the index list is valid.","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" * @param indexList","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":" * @param sizeOfLastShownList","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"alvinnzz"},"content":" * @return true if each index in index list is valid.","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" public static boolean hasValidIndexList(List\u003cIndex\u003e indexList, int sizeOfLastShownList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":" for (Index index : indexList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":" if (index.getZeroBased() \u003e\u003d sizeOfLastShownList) {","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"alvinnzz"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"alvinnzz"},"content":" Float splitAmount \u003d getSplitAmount(totalOwed.getAmount(), indexListToSplit.size() + 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"alvinnzz"},"content":" if (splitAmount \u003c MINIMUM_SPLIT_AMOUNT) {","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"alvinnzz"},"content":" throw new CommandException(MESSAGE_INVALID_AMOUNT);","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":" if (!hasValidIndexList(indexListToSplit, lastShownList.size())) {","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" for (Index index : indexListToSplit) {","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" personToEdit.getAddress(), personToEdit.getRemark(), personToEdit.getTags(),","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" personToEdit.getBirthday(), personToEdit.getMoneyOwed().addAmountOwed(splitAmount),","lastModifiedDate":"2024-03-29"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":" personToEdit.getDaysAvailable());","lastModifiedDate":"2024-03-29"},{"lineNumber":98,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":99,"author":{"gitId":"alvinnzz"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"alvinnzz"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"alvinnzz"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-25"},{"lineNumber":104,"author":{"gitId":"alvinnzz"},"content":" String.format(\"$%s has been split among you and %d more people!\",","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":" totalOwed, indexListToSplit.size()));","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"alvinnzz"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-03-25"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":113,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"alvinnzz"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-25"},{"lineNumber":115,"author":{"gitId":"alvinnzz"},"content":" if (!(other instanceof SplitCommand)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":116,"author":{"gitId":"alvinnzz"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":117,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":118,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":119,"author":{"gitId":"alvinnzz"},"content":" SplitCommand otherSplitCommand \u003d (SplitCommand) other;","lastModifiedDate":"2024-03-25"},{"lineNumber":120,"author":{"gitId":"alvinnzz"},"content":" return indexListToSplit.equals(otherSplitCommand.indexListToSplit)","lastModifiedDate":"2024-03-25"},{"lineNumber":121,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 totalOwed.equals(otherSplitCommand.totalOwed);","lastModifiedDate":"2024-03-25"},{"lineNumber":122,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":123,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":124,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":125,"author":{"gitId":"alvinnzz"},"content":" public String toString() {","lastModifiedDate":"2024-03-25"},{"lineNumber":126,"author":{"gitId":"alvinnzz"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-25"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":" .add(\"indexListToSplit\", indexListToSplit)","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"alvinnzz"},"content":" .add(\"totalOwed\", totalOwed)","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"alvinnzz"},"content":" .toString();","lastModifiedDate":"2024-03-25"},{"lineNumber":130,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"alvinnzz":125,"JerryO3":2,"zhekaiii":4}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" PREFIX_BIRTHDAY, PREFIX_MONEY_OWED, PREFIX_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" Remark remark \u003d new Remark(\"\"); // add command does not allow adding remarks straight away","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" Birthday birthday \u003d ParserUtil.parseBirthday(argMultimap.getValue(PREFIX_BIRTHDAY).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed moneyOwed \u003d ParserUtil.parseMoneyOwed(argMultimap.getValue(PREFIX_MONEY_OWED).orElse(\"0\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e daysAvailable \u003d ParserUtil.parseDays(argMultimap.getAllValues(PREFIX_DAYS_AVAILABLE));","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" Person person \u003d new Person(name, phone, email, address, remark, tagList, birthday, moneyOwed, daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"alvinnzz":2,"NewtonKoh":1,"JerryO3":8,"-":59,"zhekaiii":4}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.LendCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.PayCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.SortCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.SplitCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" case RemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-07"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" return new RemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-07"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" case SortCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" return new SortCommandParser().parse(arguments);","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" case SplitCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" return new SplitCommandParser().parse(arguments);","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" case PayCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" return new PayCommandParser().parse(arguments);","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":" case LendCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"alvinnzz"},"content":" return new LendCommandParser().parse(arguments);","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alvinnzz":7,"NewtonKoh":3,"JerryO3":8,"-":82,"zhekaiii":6}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" * Prefixes mapped to their respective arguments","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" **/","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"-":77,"zhekaiii":3}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":" public static final Prefix PREFIX_MONEY_OWED \u003d new Prefix(\"$/\");","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" public static final Prefix PREFIX_BIRTHDAY \u003d new Prefix(\"b/\");","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":" public static final Prefix PREFIX_DAYS_AVAILABLE \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"alvinnzz":1,"NewtonKoh":1,"JerryO3":1,"-":15,"zhekaiii":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" PREFIX_ADDRESS, PREFIX_TAG, PREFIX_BIRTHDAY, PREFIX_MONEY_OWED, PREFIX_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" PREFIX_ADDRESS, PREFIX_BIRTHDAY, PREFIX_MONEY_OWED);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" if (argMultimap.getValue(PREFIX_BIRTHDAY).isPresent()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" editPersonDescriptor.setBirthday(ParserUtil.parseBirthday(argMultimap.getValue(PREFIX_BIRTHDAY).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" if (argMultimap.getValue(PREFIX_MONEY_OWED).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" editPersonDescriptor.setMoneyOwed(ParserUtil.parseMoneyOwed(argMultimap.getValue(PREFIX_MONEY_OWED).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" parseDaysAvailableForEdit(argMultimap.getAllValues(PREFIX_DAYS_AVAILABLE))","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" .ifPresent(editPersonDescriptor::setDaysAvailable);","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" private Optional\u003cSet\u003cDay\u003e\u003e parseDaysAvailableForEdit(Collection\u003cString\u003e days) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":" assert days !\u003d null;","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"JerryO3"},"content":" if (days.isEmpty()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"JerryO3"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"JerryO3"},"content":" Collection\u003cString\u003e daySet \u003d days.size() \u003d\u003d 1 \u0026\u0026 days.contains(\"\") ? Collections.emptySet() : days;","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"JerryO3"},"content":" return Optional.of(ParserUtil.parseDays(daySet));","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"alvinnzz":5,"JerryO3":15,"-":82,"zhekaiii":7}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterDayCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterNameCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterTagCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonAvailableOnDayPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private static final Prefix FLAG_ALL \u003d new Prefix(\"--all\");","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" * Parses the given {@code String} of arguments in the context of the FilterTagCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" * and returns a FilterTagCommand object for execution.","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":" String argsWithoutType \u003d \"\";","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" ArgumentTokenizer.tokenize(args, FLAG_ALL);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" boolean matchAll \u003d argMultimap.getValue(FLAG_ALL).isPresent();","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" trimmedArgs \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" if (trimmedArgs.toLowerCase().startsWith(FilterDayCommand.TYPE)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" argsWithoutType \u003d trimmedArgs.replaceFirst(FilterDayCommand.TYPE, \"\").trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" if (argsWithoutType.isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" FilterDayCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e getDays \u003d ParserUtil.parseDays(Arrays.asList(argsWithoutType.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" return new FilterDayCommand(new PersonAvailableOnDayPredicate(new ArrayList\u003c\u003e(getDays), matchAll));","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" if (trimmedArgs.toLowerCase().startsWith(FilterTagCommand.TYPE)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" argsWithoutType \u003d trimmedArgs.replaceFirst(FilterTagCommand.TYPE, \"\").trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" if (argsWithoutType.isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" Set\u003cTag\u003e tags \u003d ParserUtil.parseTags(Arrays.asList(argsWithoutType.split(\"\\\\s+\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" return new FilterTagCommand(new PersonHasTagPredicate(new ArrayList\u003c\u003e(tags), matchAll));","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" if (trimmedArgs.toLowerCase().startsWith(FilterNameCommand.TYPE)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" argsWithoutType \u003d trimmedArgs.replaceFirst(FilterNameCommand.TYPE, \"\").trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" if (argsWithoutType.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" return new FilterNameCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" new NameContainsKeywordsPredicate(List.of(argsWithoutType.split(\"\\\\s+\")), matchAll));","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":70,"zhekaiii":14}},{"path":"src/main/java/seedu/address/logic/parser/LendCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.LendCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":" * Parses input arguments and creates a new LendCommand object","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"public class LendCommandParser implements Parser\u003cLendCommand\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" * Parses the given {@code String} of arguments in the context of the LendCommand","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" * and returns a LendCommand object for execution.","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" public LendCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_MONEY_OWED);","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex;","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount;","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" targetIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE),","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" pe);","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" if (!argMultimap.getValue(PREFIX_MONEY_OWED).isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_MISSING_AMOUNT));","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" lentAmount \u003d ParserUtil.parseMoneyOwed(argMultimap.getValue(PREFIX_MONEY_OWED).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" return new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"alvinnzz":46}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"alvinnzz"},"content":" * Parses a {@code String moneyOwed} into a {@code MoneyOwed}.","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"alvinnzz"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"alvinnzz"},"content":" * @throws ParseException if the given {@code MoneyOwed} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"alvinnzz"},"content":" public static MoneyOwed parseMoneyOwed(String moneyOwed) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(moneyOwed);","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"alvinnzz"},"content":" String trimmedMoneyOwed \u003d moneyOwed.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" if (!MoneyOwed.isValidMoney(trimmedMoneyOwed)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(MoneyOwed.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"alvinnzz"},"content":" return new MoneyOwed(trimmedMoneyOwed);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" * Parses {@code String birthday} into a {@code Birthday}.","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" public static Birthday parseBirthday(String birthday) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" birthday \u003d birthday \u003d\u003d null ? \"\" : birthday;","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" String trimmedBirthday \u003d birthday.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" if (!Birthday.isValidBirthday(trimmedBirthday)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" throw new ParseException(Birthday.BIRTHDAY_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" return new Birthday(trimmedBirthday);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"JerryO3"},"content":" private static Day parseDay(String day) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"JerryO3"},"content":" requireNonNull(day);","lastModifiedDate":"2024-03-24"},{"lineNumber":158,"author":{"gitId":"JerryO3"},"content":" String trimmedTag \u003d day.trim();","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"JerryO3"},"content":" if (!Day.isValidDay(trimmedTag)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"JerryO3"},"content":" throw new ParseException(Day.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"JerryO3"},"content":" return Day.getDay(day);","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"JerryO3"},"content":" * Takes a collection of Strings representing days of the week and","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"JerryO3"},"content":" * returns a Set representation of that.","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"JerryO3"},"content":" * @param days","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"JerryO3"},"content":" * @return Set representing some subset of the 7 days of the week.","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"JerryO3"},"content":" * @throws ParseException when any one of the given Strings in the days collection","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"JerryO3"},"content":" * cannot be mapped to a Day.","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"JerryO3"},"content":" public static Set\u003cDay\u003e parseDays(Collection\u003cString\u003e days) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"JerryO3"},"content":" requireNonNull(days);","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"JerryO3"},"content":" final Set\u003cDay\u003e daySet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"JerryO3"},"content":" for (String dayName : days) {","lastModifiedDate":"2024-03-24"},{"lineNumber":177,"author":{"gitId":"JerryO3"},"content":" daySet.add(parseDay(dayName));","lastModifiedDate":"2024-03-24"},{"lineNumber":178,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"JerryO3"},"content":" return daySet;","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"alvinnzz":15,"JerryO3":29,"-":124,"zhekaiii":13}},{"path":"src/main/java/seedu/address/logic/parser/PayCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.PayCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" * Parses the given {@code String} of arguments in the context of the PayCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" * and returns a PayCommand object for execution.","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"public class PayCommandParser implements Parser\u003cPayCommand\u003e {","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" public PayCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" return new PayCommand(index);","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PayCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":26}},{"path":"src/main/java/seedu/address/logic/parser/RemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" * Parser for the remark command","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"public class RemarkCommandParser implements Parser\u003cRemarkCommand\u003e {","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" * @param args argument to be parsed","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" * @return a RemarkCommand object for execution.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" Index index;","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" try {","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" Remark remark \u003d new Remark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"NewtonKoh":40}},{"path":"src/main/java/seedu/address/logic/parser/SortCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.SortCommand;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" * Parses input arguments and creates a new SortCommand object","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"public class SortCommandParser implements Parser\u003cSortCommand\u003e {","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" public SortCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" String sortType \u003d args.replaceFirst(SortCommand.COMMAND_WORD, \"\").trim();","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" if (sortType.isEmpty()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SortCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" return new SortCommand(sortType);","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"zhekaiii":22}},{"path":"src/main/java/seedu/address/logic/parser/SplitCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import java.util.List;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.SplitCommand;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":" * Parses input arguments and creates a new SplitCommand object","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"public class SplitCommandParser implements Parser\u003cSplitCommand\u003e {","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" * Parses the given {@code String} of arguments in the context of the SplitCommand","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" * and returns a SplitCommand object for execution.","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" public SplitCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_MONEY_OWED);","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" try {","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" String[] indexArray \u003d argMultimap.getPreamble().split(\" \");","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" for (String s : indexArray) {","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" indexList.add(ParserUtil.parseIndex(s));","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" if (argMultimap.getValue(PREFIX_MONEY_OWED).isPresent()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" totalOwed \u003d ParserUtil.parseMoneyOwed(argMultimap.getValue(PREFIX_MONEY_OWED).get());","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" } else {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_MISSING_AMOUNT));","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" return new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"alvinnzz":49}},{"path":"src/main/java/seedu/address/logic/paynow/MerchantAccountInformation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" * Represents a Merchant Account Information field within a PayNow QR Code.","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"public class MerchantAccountInformation extends PayNowPayload {","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" private static final String DOMAIN \u003d \"SG.PAYNOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" private static final int DOMAIN_ID \u003d 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" private static final int PROXY_TYPE_ID \u003d 1;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" private static final int MOBILE_NUM_PROXY \u003d 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" private static final int MOBILE_NO_ID \u003d 2;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" private static final String SG_COUNTRY_CODE \u003d \"+65\";","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" private static final int EDITABLE_ID \u003d 3;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" private static final int EDITABLE \u003d 1;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" protected MerchantAccountInformation(String phone) {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" super(","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(DOMAIN_ID, DOMAIN),","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(PROXY_TYPE_ID, MOBILE_NUM_PROXY),","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(MOBILE_NO_ID, SG_COUNTRY_CODE + phone),","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(EDITABLE_ID, EDITABLE)","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":24}},{"path":"src/main/java/seedu/address/logic/paynow/PayNowCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.io.ByteArrayInputStream;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" * Represents a PayNow code that when encoded into a string and converted into a QR Code,","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" * can be scanned using a banking application to automatically fill in a person\u0027s","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" * mobile number and amount.","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"public class PayNowCode extends PayNowPayload {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" private static final int PAYLOAD_FORMAT_INDICATOR_ID \u003d 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" private static final int POINT_OF_INITIATION_METHOD_ID \u003d 1;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" private static final int MERCHANT_ACCOUNT_INFORMATION_ID \u003d 26;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" private static final int MERCHANT_CATEGORY_CODE_ID \u003d 52;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" private static final int TRANSACTION_CURRENCY_ID \u003d 53;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" private static final int TRANSACTION_AMOUNT_ID \u003d 54;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" private static final int COUNTRY_CODE_ID \u003d 58;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" private static final int MERCHANT_NAME_ID \u003d 59;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" private static final int MERCHANT_CITY_ID \u003d 60;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" private static final int CRC_ID \u003d 63;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private static final int SG_CURRENCY_CODE \u003d 702;","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" private static final String NA_MERCHANT_CATEGORY \u003d \"0000\";","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField PAYLOAD_FORMAT_INDICATOR \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(PAYLOAD_FORMAT_INDICATOR_ID, \"01\");","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField POINT_OF_INITIATION_METHOD \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(POINT_OF_INITIATION_METHOD_ID, \"11\");","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField MERCHANT_CATEGORY_CODE \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(MERCHANT_CATEGORY_CODE_ID, NA_MERCHANT_CATEGORY);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField TRANSACTION_CURRENCY \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(TRANSACTION_CURRENCY_ID, SG_CURRENCY_CODE);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField COUNTRY_CODE \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(COUNTRY_CODE_ID, \"SG\");","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField MERCHANT_NAME \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(MERCHANT_NAME_ID, \"NA\");","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" private static final PayNowField MERCHANT_CITY \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(MERCHANT_CITY_ID, \"Singapore\");","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" private static final String PLACEHOLDER_CRC \u003d \"0000\";","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" private PayNowCode(PayNowField... fields) {","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" super(fields);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" * Generates a PayNow QR Code that users can scan with their banking apps which will","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" * automatically fill in the phone number and amount passed in as parameters.","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" public static ByteArrayInputStream generatePayNowQrCode(String phone, float amount)","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" throws WriterException, IOException {","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" PayNowField[] fields \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" new PayNowField[]{PAYLOAD_FORMAT_INDICATOR,","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" POINT_OF_INITIATION_METHOD,","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" MERCHANT_ACCOUNT_INFORMATION_ID, new MerchantAccountInformation(phone)),","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" MERCHANT_CATEGORY_CODE,","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" TRANSACTION_CURRENCY,","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(TRANSACTION_AMOUNT_ID, amount),","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" COUNTRY_CODE,","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" MERCHANT_NAME,","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" MERCHANT_CITY,","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" new PayNowField(CRC_ID, PLACEHOLDER_CRC)};","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" String encodedFields \u003d Stream.of(fields)","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" .map(PayNowField::toString)","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" .reduce(\"\", (accumulator, encodedField) -\u003e accumulator + encodedField);","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" // Remove the placeholder CRC from the string","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" encodedFields \u003d encodedFields.substring(0, encodedFields.length() - PLACEHOLDER_CRC.length());","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" fields[fields.length - 1] \u003d new PayNowField(CRC_ID, computeCrc(encodedFields));","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" return QrGenerator.generateQrCode(new PayNowCode(fields).toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" private static String computeCrc(String payload) {","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" int crc \u003d 0xFFFF;","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" int msb \u003d crc \u003e\u003e 8;","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" int lsb \u003d crc \u0026 255;","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" for (char character : payload.toCharArray()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" int x \u003d character ^ msb;","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" x ^\u003d (x \u003e\u003e 4);","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" msb \u003d (lsb ^ (x \u003e\u003e 3) ^ (x \u003c\u003c 4)) \u0026 255;","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" lsb \u003d (x ^ (x \u003c\u003c 5)) \u0026 255;","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" crc \u003d (msb \u003c\u003c 8) + lsb;","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" return String.format(\"%04X\", crc);","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":89}},{"path":"src/main/java/seedu/address/logic/paynow/PayNowField.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" * Represents a field within a {@code PaynowCode}.","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"public final class PayNowField {","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" private final int id;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" private final Object value;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" * Returns a {@code PaynowField} with the id and the valye passed into the constructor.","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" public PayNowField(int id, Object value) {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" this.id \u003d id;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" String valueString \u003d value.toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" if (value instanceof Float) {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" valueString \u003d String.format(\"%.2f\", value);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" } else if (value instanceof Double) {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" valueString \u003d String.format(\"%.2f\", value);","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" return String.format(\"%02d\", id)","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" + String.format(\"%02d\", valueString.length())","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" + valueString;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":30}},{"path":"src/main/java/seedu/address/logic/paynow/PayNowPayload.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" * This class represents the string information to be encoded into a QR code","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" * such that users can scan with their banking applications and transfer money via PayNow.","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"public abstract class PayNowPayload {","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" private final PayNowField[] fields;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" protected PayNowPayload(PayNowField... fields) {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" this.fields \u003d new PayNowField[fields.length];","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" System.arraycopy(fields, 0, this.fields, 0, fields.length);","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" for (PayNowField field : fields) {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" stringBuilder.append(field.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" return stringBuilder.toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":23}},{"path":"src/main/java/seedu/address/logic/paynow/QrGenerator.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.awt.Color;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.awt.Graphics2D;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.awt.Image;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.awt.image.BufferedImage;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import java.io.ByteArrayInputStream;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import java.util.Hashtable;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import javax.imageio.ImageIO;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.BarcodeFormat;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.EncodeHintType;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.common.BitMatrix;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.qrcode.QRCodeWriter;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" * This helper class helps to generate a QR Code image given a string.","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"public class QrGenerator {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" private static final int QR_SIZE \u003d 400;","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private static final int LOGO_HEIGHT \u003d QR_SIZE / 6;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" private static final Color PAYNOW_COLOR \u003d Color.decode(\"#7a1b78\");","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" private static final String LOGO_PATH \u003d \"images/paynowlogo.png\";","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" private static void overlayLogo(Graphics2D graphics) throws IOException {","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" Image logo \u003d getLogo();","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" int startHeight \u003d (QR_SIZE - logo.getHeight(null)) / 2;","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" int startWidth \u003d (QR_SIZE - logo.getWidth(null)) / 2;","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" graphics.drawImage(logo, startWidth, startHeight, null);","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private static Image getLogo() throws IOException {","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" BufferedImage originalLogo \u003d ImageIO.read(ClassLoader.getSystemResourceAsStream(LOGO_PATH));","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" float scale \u003d (float) LOGO_HEIGHT / originalLogo.getHeight();","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" return originalLogo.getScaledInstance(","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" (int) (originalLogo.getWidth() * scale),","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" (int) (originalLogo.getHeight() * scale),","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" Image.SCALE_SMOOTH);","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" private static BitMatrix encodeText(String qrCodeText) throws WriterException {","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" // Create the ByteMatrix for the QR-Code that encodes the given String","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" Hashtable\u003cEncodeHintType, ErrorCorrectionLevel\u003e hintMap \u003d new Hashtable\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" QRCodeWriter qrCodeWriter \u003d new QRCodeWriter();","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" return qrCodeWriter.encode(qrCodeText, BarcodeFormat.QR_CODE, QR_SIZE, QR_SIZE, hintMap);","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" private static BufferedImage fillImageFromBitMatrix(BitMatrix bitMatrix) {","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" // Make the BufferedImage that are to hold the QRCode","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" int matrixWidth \u003d bitMatrix.getWidth();","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" int matrixHeight \u003d bitMatrix.getHeight();","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" BufferedImage image \u003d new BufferedImage(matrixWidth, matrixHeight, BufferedImage.TYPE_INT_RGB);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" image.createGraphics();","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" Graphics2D graphics \u003d (Graphics2D) image.getGraphics();","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" graphics.setColor(Color.WHITE);","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" graphics.fillRect(0, 0, matrixWidth, matrixHeight);","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" // Paint and save the image using the ByteMatrix","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" graphics.setColor(PAYNOW_COLOR);","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" for (int i \u003d 0; i \u003c matrixWidth; i++) {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" for (int j \u003d 0; j \u003c matrixWidth; j++) {","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" if (bitMatrix.get(i, j)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" graphics.fillRect(i, j, 1, 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" return image;","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" * Converts the given text into a QR Code and returns the Image.","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" public static ByteArrayInputStream generateQrCode(String qrCodeText) throws WriterException, IOException {","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" BitMatrix bitMatrix \u003d encodeText(qrCodeText);","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" BufferedImage image \u003d fillImageFromBitMatrix(bitMatrix);","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" overlayLogo((Graphics2D) image.getGraphics());","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" ByteArrayOutputStream os \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" ImageIO.write(image, \"jpeg\", os);","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" return new ByteArrayInputStream(os.toByteArray());","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":88}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" int INVALID_PERSON_INDEX \u003d -1;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" * Returns the AddressBook","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" * Returns an unmodifiable view of the filtered person list","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" void updatePersonComparator(Comparator\u003cPerson\u003e personComparator);","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" Optional\u003cPerson\u003e findPerson(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" int findIndex(Person person);","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"NewtonKoh":2,"-":78,"zhekaiii":25}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" private final SortedList\u003cPerson\u003e sortedPersons;","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" sortedPersons \u003d new SortedList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(sortedPersons);","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" return userPrefs;","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" return addressBook;","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" return sortedPersons;","lastModifiedDate":"2024-03-30"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" public void updatePersonComparator(Comparator\u003cPerson\u003e personComparator) {","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" sortedPersons.setComparator(personComparator);","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" public Optional\u003cPerson\u003e findPerson(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" return addressBook.getPersonList()","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" .stream()","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" .filter(predicate)","lastModifiedDate":"2024-03-27"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" .findAny();","lastModifiedDate":"2024-03-27"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" public int findIndex(Person person) {","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" return filteredPersons.indexOf(person);","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 sortedPersons.equals(otherModelManager.sortedPersons);","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NewtonKoh":5,"-":136,"zhekaiii":35}},{"path":"src/main/java/seedu/address/model/person/Birthday.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" * Represents a Person\u0027s birthday in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidBirthday(String)}","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"public class Birthday {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" \"Birthday should be in the format dd/mm/yyyy and should be before today\";","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_FORMAT \u003d \"dd/MM/yyyy\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" * This comparator will sort contacts with no birthdays to the back.","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" * Contacts with their next birthday closest to today will be put first.","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" public static final Comparator\u003cPerson\u003e BIRTHDAY_COMPARATOR \u003d (personA, personB) -\u003e {","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" if (personA.getBirthday().birthday \u003d\u003d null) {","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" return 1;","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" if (personB.getBirthday().birthday \u003d\u003d null) {","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" return -1;","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" LocalDate now \u003d LocalDate.now();","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" LocalDate nextABirthday \u003d personA.getBirthday().birthday.withYear(now.getYear());","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" if (nextABirthday.isBefore(now)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" nextABirthday \u003d nextABirthday.plusYears(1);","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" LocalDate nextBBirthday \u003d personB.getBirthday().birthday.withYear(now.getYear());","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" if (nextBBirthday.isBefore(now)) {","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" nextBBirthday \u003d nextBBirthday.plusYears(1);","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" return nextABirthday.compareTo(nextBBirthday);","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" };","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public final LocalDate birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" * Constructs a {@code Birthday}.","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" * @param birthday A valid birthday, or an empty string.","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" public Birthday(String birthday) {","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(birthday);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" if (birthday.isBlank()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" return;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" checkArgument(isValidBirthday(birthday), BIRTHDAY_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d LocalDate.parse(birthday, DateTimeFormatter.ofPattern(BIRTHDAY_FORMAT));","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" * Returns true if a given string is a valid birthday.","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" public static boolean isValidBirthday(String test) {","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" if (test \u003d\u003d null || test.isBlank()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" test \u003d test.strip();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" LocalDate date \u003d LocalDate.parse(test, DateTimeFormatter.ofPattern(BIRTHDAY_FORMAT));","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" return date.format(DateTimeFormatter.ofPattern(BIRTHDAY_FORMAT)).equals(test)","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 date.isBefore(LocalDate.now());","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" return Optional.ofNullable(birthday).map(","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" birthdayObj -\u003e birthdayObj.format(DateTimeFormatter.ofPattern(","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" BIRTHDAY_FORMAT","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" ))).orElse(\"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" if (!(o instanceof Birthday)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" Birthday otherBirthday \u003d (Birthday) o;","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" return Objects.equals(birthday, otherBirthday.birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" return Objects.hash(birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"zhekaiii":105}},{"path":"src/main/java/seedu/address/model/person/Day.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":" * Day enumeration models the 7 days of the week within FriendFolio.","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":" * Since days of the week are distinct, a set of available days is","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":" * easily represented by a HashSet containing some subset of all possible","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":" * Day.","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"public enum Day {","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":" SUNDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" MONDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" TUESDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" WEDNESDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":" THURSDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":" FRIDAY,","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" SATURDAY;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" * Checks whether a String input matches the name of one of the days defined in the","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" * Day enum. Matching is not case-sensitive. This method should always be used before","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" * the getDay function to avoid null-handling requirements. isValidDay is decoupled from","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" * getDay only in tests.","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" * @param day","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":" * @return boolean representing if a match is found.","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Please enter a valid day of the week from the following: \"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" + getAllDaysAsString();","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" public static boolean isValidDay(String day) {","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" return Arrays.stream(Day.values()).anyMatch(x -\u003e x.toString().equalsIgnoreCase(day));","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" * Maps a String input to one of the days defined in the Day enum. Matching is not","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" * case-sensitive. While the output is null if no match, isValidDay method should","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" * be used to check if the string is valid first. getDay is decoupled from isValidDay","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" * only in tests.","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" * @param day","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" * @return Day whose name matches the String argument passed, or null if no match is found","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" public static Day getDay(String day) {","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" return Arrays.stream(Day.values())","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" .filter(x -\u003e x.toString().equalsIgnoreCase(day))","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" .reduce((x, y) -\u003e x)","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" .orElse(null);","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" * Helper function to return string containing all days in Day enum.","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" * @return String containing all days\u0027 names in Day enum, split by comma.","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" private static String getAllDaysAsString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" for (Day d: Day.values()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" s.append(d).append(\", \");","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" return s.toString().substring(0, s.length() - 2);","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" public String getShortForm() {","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" return this.name().substring(0, 3);","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"JerryO3":65}},{"path":"src/main/java/seedu/address/model/person/MoneyOwed.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":" * Represents a Person\u0027s money owed in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMoney(String)}","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"public class MoneyOwed {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":" \"Money Owed should be at most 2 decimal places in the following format \u0027xxx.xx\u0027 or \u0027-xxx.xx\u0027. \";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?:-)?\\\\d+(\\\\.\\\\d{0,2})?\";","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" public static final String NO_MONEY_OWED_MESSAGE \u003d \"You don\u0027t owe each other anything\";","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" public static final String USER_OWES_MONEY_MESSAGE \u003d \"You owe $%s\";","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" public static final String PERSON_OWES_MONEY_MESSAGE \u003d \"Owes you $%s\";","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" * This comparator will sort contacts with no money owed to the back.","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" * Contacts that the user owes the most money to will be put first.","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" * Contacts who owes the most money will be put right after contacts that","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" * the user owes money to.","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" public static final Comparator\u003cPerson\u003e MONEY_COMPARATOR \u003d (personA, personB) -\u003e {","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" // If user owes personA money means personA.getMoneyOwed().moneyOwed \u003c 0. So sort in asc order.","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" if (personA.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" return Float.compare(personA.getMoneyOwed().moneyOwed, personB.getMoneyOwed().moneyOwed);","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" // personB moneyOwed \u003c 0 but personA moneyOwed \u003e\u003d 0. Put personB before personA.","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" if (personB.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" return 1;","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" // Both personA and personB \u003e\u003d 0. Put the larger one first.","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" return Float.compare(personB.getMoneyOwed().moneyOwed, personA.getMoneyOwed().moneyOwed);","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" };","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" public final Float moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" * Constructs a {@code MoneyOwed}.","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" * @param money A valid amount of money owed.","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" public MoneyOwed(String money) {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" requireNonNull(money);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" checkArgument(isValidMoney(money), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" moneyOwed \u003d Float.parseFloat(money);","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" * Returns true if a given string is a valid money amount.","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" public static boolean isValidMoney(String test) {","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" if (test \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" * Returns true if a moneyOwed is negative.","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" public boolean userOwesMoney() {","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" return (moneyOwed \u003c 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" * Returns the amount of money owed.","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" public Float getAmount() {","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":" return this.moneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" * Returns the absolute amount of money owed.","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" public Float getAbsoluteAmount() {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" return Math.abs(this.moneyOwed);","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":" * Returns a MoneyOwed object with the new amount owed.","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":" public MoneyOwed addAmountOwed(Float addedAmount) {","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":" String replacedString \u003d String.valueOf(moneyOwed + addedAmount);","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" return new MoneyOwed(replacedString);","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" * Returns message to display on UI in String.","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":" public String getMessage() {","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"alvinnzz"},"content":" if (moneyOwed \u003d\u003d 0) {","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" return NO_MONEY_OWED_MESSAGE;","lastModifiedDate":"2024-03-27"},{"lineNumber":100,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" if (userOwesMoney()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" return String.format(USER_OWES_MONEY_MESSAGE, toString().substring(1));","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"alvinnzz"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" return String.format(PERSON_OWES_MONEY_MESSAGE, this);","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"alvinnzz"},"content":" return String.format(\"%.2f\", moneyOwed);","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"alvinnzz"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"alvinnzz"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"alvinnzz"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"alvinnzz"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"alvinnzz"},"content":" if (!(other instanceof MoneyOwed)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"alvinnzz"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed otherName \u003d (MoneyOwed) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"alvinnzz"},"content":" return moneyOwed.equals(otherName.moneyOwed);","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"alvinnzz"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"alvinnzz"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"alvinnzz"},"content":" return moneyOwed.hashCode();","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"alvinnzz":94,"zhekaiii":38}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public static final Comparator\u003cPerson\u003e NAME_COMPARATOR \u003d (personA, personB) -\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" personA.getName().fullName.compareToIgnoreCase(personB.getName().fullName);","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":67,"zhekaiii":5}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" private final Birthday birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" private final MoneyOwed moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" private final Set\u003cDay\u003e daysAvailable \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" Remark remark, Set\u003cTag\u003e tags, Birthday birthday, MoneyOwed moneyOwed, Set\u003cDay\u003e daysAvailable) {","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" this.moneyOwed \u003d moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" this.daysAvailable.addAll(daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" public MoneyOwed getMoneyOwed() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" return moneyOwed;","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" return remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" public Birthday getBirthday() {","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" return birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" public Set\u003cDay\u003e getDaysAvailable() {","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" return Collections.unmodifiableSet(daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"alvinnzz"},"content":" \u0026\u0026 birthday.equals(otherPerson.birthday)","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"JerryO3"},"content":" \u0026\u0026 moneyOwed.equals(otherPerson.moneyOwed)","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"JerryO3"},"content":" \u0026\u0026 daysAvailable.equals(otherPerson.daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"JerryO3"},"content":" return Objects.hash(name, phone, email, address, tags, birthday, moneyOwed, daysAvailable);","lastModifiedDate":"2024-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"NewtonKoh"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" .add(\"birthday\", birthday)","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"alvinnzz"},"content":" .add(\"moneyOwed\", moneyOwed)","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"JerryO3"},"content":" .add(\"daysAvailable\", daysAvailable)","lastModifiedDate":"2024-03-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"NewtonKoh":7,"alvinnzz":9,"JerryO3":11,"-":115,"zhekaiii":7}},{"path":"src/main/java/seedu/address/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" * Returns true if the phone number is a valid Singaporean number, i.e. 8 digits starting","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" * with an 8 or a 9.","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" public boolean isSingaporeanNumber() {","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" return (this.value.startsWith(\"8\") || this.value.startsWith(\"9\")) \u0026\u0026 this.value.length() \u003d\u003d 8;","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":61,"zhekaiii":8}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"public class Remark {","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":" public final String value;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" * @param remark string representing the remark of a contact","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" value \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" public String toString() {","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" return value;","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"NewtonKoh":36}},{"path":"src/main/java/seedu/address/model/person/exceptions/InvalidSortTypeException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.model.person.exceptions;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_SORT_TYPE;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" * Signals that the user has typed in an invalid sort method.","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"public class InvalidSortTypeException extends ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" public InvalidSortTypeException(String type) {","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" super(String.format(MESSAGE_INVALID_SORT_TYPE, type));","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"zhekaiii":14}},{"path":"src/main/java/seedu/address/model/person/predicates/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" private final boolean matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Constructs a NameContainsKeywordsPredicate with the given keywords and a boolean","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * flag to indicate if we should match all or any.","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords, boolean matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" this.matchAll \u003d matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" this(keywords, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" Predicate\u003cString\u003e predicate \u003d keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" if (matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" return keywords.stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" .allMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" .anyMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords)","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 matchAll \u003d\u003d otherNameContainsKeywordsPredicate.matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" .add(\"keywords\", keywords)","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" .add(\"matchAll\", matchAll)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"JerryO3":2,"-":39,"zhekaiii":23}},{"path":"src/main/java/seedu/address/model/person/predicates/PersonAvailableOnDayPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" * Tests that a {@code Person}\u0027s {@code daysAvailable} matches any of the days given.","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"public class PersonAvailableOnDayPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" private final Collection\u003cDay\u003e daysAvailable;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" private final boolean matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Constructs a PersonAvailableOnDayPredicate with the given keywords and a boolean","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * flag to indicate if we should match all or any.","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" public PersonAvailableOnDayPredicate(Collection\u003cDay\u003e daysAvailable, boolean matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" this.daysAvailable \u003d daysAvailable;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" this.matchAll \u003d matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" public PersonAvailableOnDayPredicate(Collection\u003cDay\u003e daysAvailable) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" this(daysAvailable, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" Predicate\u003cDay\u003e predicate \u003d day -\u003e person.getDaysAvailable().contains(day);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" if (matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" return daysAvailable.stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" .allMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" return daysAvailable.stream()","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" .anyMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" if (!(other instanceof PersonAvailableOnDayPredicate)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate otherPersonAvailableOnDayPredicate \u003d (PersonAvailableOnDayPredicate) other;","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" return daysAvailable.equals(otherPersonAvailableOnDayPredicate.daysAvailable)","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 matchAll \u003d\u003d otherPersonAvailableOnDayPredicate.matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" public String toString() {","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" .add(\"keywords\", daysAvailable)","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" .add(\"matchAll\", matchAll)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JerryO3":41,"zhekaiii":23}},{"path":"src/main/java/seedu/address/model/person/predicates/PersonHasTagPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":" * Tests that a {@code Person}\u0027s {@code Tag}s matches any of the keywords given.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"public class PersonHasTagPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" private final List\u003cTag\u003e keywords;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" private final boolean matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * Constructs a PersonHasTagPredicate with the given keywords and a boolean","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" * flag to indicate if we should match all or any.","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public PersonHasTagPredicate(List\u003cTag\u003e keywords, boolean matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" this.matchAll \u003d matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" public PersonHasTagPredicate(List\u003cTag\u003e keywords) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" this(keywords, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" Predicate\u003cTag\u003e predicate \u003d keyword -\u003e person.getTags().contains(keyword);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" if (matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" return keywords.stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" .allMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" .anyMatch(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" if (!(other instanceof PersonHasTagPredicate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate otherPersonHasTagPredicate \u003d (PersonHasTagPredicate) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" return keywords.equals(otherPersonHasTagPredicate.keywords)","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" \u0026\u0026 matchAll \u003d\u003d otherPersonHasTagPredicate.matchAll;","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" .add(\"keywords\", keywords)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" .add(\"matchAll\", matchAll)","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" .toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"JerryO3":42,"zhekaiii":23}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" return tagName.equalsIgnoreCase(otherTag.tagName);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" return tagName.toLowerCase().hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"JerryO3":2,"-":60}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), EMPTY_REMARK, getTagSet(\"friends\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" new Birthday(\"\"), new MoneyOwed(\"0\"), getDaysAvailableSet(\"tuesday\", \"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"colleagues\", \"friends\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"neighbours\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"family\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"classmates\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), EMPTY_REMARK,","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" getTagSet(\"colleagues\"), new Birthday(\"\"), new MoneyOwed(\"0\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" getDaysAvailableSet(\"monday\")),","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" private static Set\u003cDay\u003e getDaysAvailableSet(String... strings) {","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" .map(Day::getDay)","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"NewtonKoh":7,"JerryO3":22,"-":48}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" private final String remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" private final String birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" private final String moneyOwed;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" private final Set\u003cDay\u003e daysAvailable \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" @JsonProperty(\"birthday\") String birthday,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" @JsonProperty(\"moneyOwed\") String moneyOwed,","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" @JsonProperty(\"daysAvailable\") Set\u003cDay\u003e daysAvailable) {","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" this.moneyOwed \u003d moneyOwed;","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" if (daysAvailable !\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" this.daysAvailable.addAll(daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" birthday \u003d source.getBirthday().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":" moneyOwed \u003d source.getMoneyOwed().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" daysAvailable.addAll(source.getDaysAvailable());","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" @SuppressWarnings(\"checkstyle:Regexp\")","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" final Remark modelRemark \u003d new Remark(Optional.ofNullable(remark).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" if (!Birthday.isValidBirthday(birthday)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" throw new IllegalValueException(Birthday.BIRTHDAY_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" final Birthday modelBirthday \u003d new Birthday(Optional.ofNullable(birthday).orElse(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"alvinnzz"},"content":" if (!MoneyOwed.isValidMoney(moneyOwed)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"alvinnzz"},"content":" throw new IllegalValueException(MoneyOwed.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"alvinnzz"},"content":" final MoneyOwed modelMoneyOwed \u003d new MoneyOwed(Optional.ofNullable(moneyOwed).orElse(\"0\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":143,"author":{"gitId":"JerryO3"},"content":" final Set\u003cDay\u003e modelDaysAvailable \u003d new HashSet\u003c\u003e(daysAvailable);","lastModifiedDate":"2024-03-29"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"alvinnzz"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRemark,","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"JerryO3"},"content":" modelTags, modelBirthday, modelMoneyOwed, modelDaysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"alvinnzz":10,"NewtonKoh":6,"JerryO3":12,"-":107,"zhekaiii":14}},{"path":"src/main/java/seedu/address/ui/DisplayCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.FadeTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.TranslateTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.AnimationUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" * Displays a person\u0027s information","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"public class DisplayCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" private static final String FXML \u003d \"DisplayCard.fxml\";","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" private static final int IMAGE_SIZE \u003d 30;","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" public final Person person;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" private final Image tagIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/tag_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" private final Image dayIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/day_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private final Image phoneIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/phone_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" private final Image addressIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/address_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" private final Image emailIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/email_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" private final Image birthdayIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/birthday_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" private final Image moneyIconImage \u003d new Image(","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" this.getClass().getResourceAsStream(\"/images/money_icon.png\"),","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" IMAGE_SIZE, IMAGE_SIZE, true, true);","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition moveTransition \u003d AnimationUtil.getMoveTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition bounceBackTransition \u003d AnimationUtil.getBounceBackTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" private final FadeTransition fadeInTransition \u003d AnimationUtil.getFadeInTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" private Label name;","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" private Label phone;","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" private Label address;","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"NewtonKoh"},"content":" private Label email;","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":" private FlowPane tags;","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" private FlowPane daysAvailable;","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" private Label birthday;","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" private Label remark;","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" private Label moneyOwed;","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" private ImageView tagIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" private ImageView dayIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" private ImageView phoneIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" private ImageView addressIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" private ImageView emailIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" private ImageView birthdayIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" private ImageView moneyIcon;","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" * @param person Person information to be displayed on the card","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"NewtonKoh"},"content":" public DisplayCard(Person person) {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"NewtonKoh"},"content":" super(FXML);","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" setUpLabels(person);","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" setUpIcons();","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" playAnimation();","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" private void setUpLabels(Person person) {","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"NewtonKoh"},"content":" person.getTags().stream()","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" person.getDaysAvailable().stream()","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"NewtonKoh"},"content":" .sorted(Comparator.comparing(Enum::ordinal))","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" .forEach(day -\u003e daysAvailable.getChildren().add(new Label(day.getShortForm())));","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"NewtonKoh"},"content":" birthday.setText(person.getBirthday().toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" moneyOwed.setText(person.getMoneyOwed().getMessage());","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" private void setUpIcons() {","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":" tagIcon.setImage(tagIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":112,"author":{"gitId":"NewtonKoh"},"content":" dayIcon.setImage(dayIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":113,"author":{"gitId":"NewtonKoh"},"content":" phoneIcon.setImage(phoneIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":114,"author":{"gitId":"NewtonKoh"},"content":" addressIcon.setImage(addressIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":" emailIcon.setImage(emailIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":" birthdayIcon.setImage(birthdayIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":117,"author":{"gitId":"NewtonKoh"},"content":" moneyIcon.setImage(moneyIconImage);","lastModifiedDate":"2024-03-30"},{"lineNumber":118,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" * Plays the card\u0027s animations","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" public void playAnimation() {","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"NewtonKoh"},"content":" fadeInTransition.playFromStart();","lastModifiedDate":"2024-03-30"},{"lineNumber":125,"author":{"gitId":"NewtonKoh"},"content":" moveTransition.playFromStart();","lastModifiedDate":"2024-03-30"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"NewtonKoh":96,"zhekaiii":32}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t16-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" * @throws IllegalStateException \u003cul\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":99,"zhekaiii":3}},{"path":"src/main/java/seedu/address/ui/HomeCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.FadeTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.KeyFrame;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.Timeline;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.TranslateTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.chart.BarChart;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.chart.XYChart;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.AnimationUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"public class HomeCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" private static final String FXML \u003d \"HomeCard.fxml\";","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" private static final String MONEY_OWED_LABEL \u003d \"Money you owe\";","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" private static final String OWED_MONEY_LABEL \u003d \"Money owed to you\";","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" private static final double CATEGORY_GAP \u003d 120;","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" private static final double BAR_GAP \u003d 0;","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" private final DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" private final DateTimeFormatter secondFormatter \u003d DateTimeFormatter.ofPattern(\":ss\");","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" private final DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"EEEE, MMMM d\");","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private final ObservableList\u003cPerson\u003e personList;","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition moveTransition \u003d AnimationUtil.getMoveTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition bounceBackTransition \u003d AnimationUtil.getBounceBackTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" private final FadeTransition fadeInTransition \u003d AnimationUtil.getFadeInTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" *","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" private Label time;","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" private Label second;","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" private Label date;","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" private Label contactCount;","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":" private BarChart\u003cString, Number\u003e chart;","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" private ListView\u003cPerson\u003e availableList;","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" * Creates a {@code HomeCard} with the given Person List.","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" public HomeCard(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" super(FXML);","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" this.personList \u003d personList;","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" this.contactCount.setText(String.valueOf(personList.size()));","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" setUpTimeline();","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" setUpMoneyChart();","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" setUpAvailableTodayList();","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" playAnimation();","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" private void setUpMoneyChart() {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" XYChart.Series\u003cString, Number\u003e series \u003d new XYChart.Series\u003c\u003e();","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" series.getData().add(new XYChart.Data\u003c\u003e(MONEY_OWED_LABEL, getTotalDebt()));","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" series.getData().add(new XYChart.Data\u003c\u003e(OWED_MONEY_LABEL, getTotalCredit()));","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" chart.getData().add(series);","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" chart.setCategoryGap(CATEGORY_GAP);","lastModifiedDate":"2024-03-31"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" chart.setBarGap(BAR_GAP);","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" chart.setLegendVisible(false);","lastModifiedDate":"2024-03-31"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" * Sets up a 1-second interval to update the time card.","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":" private void setUpTimeline() {","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" time.setText(LocalDateTime.now().format(timeFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"NewtonKoh"},"content":" second.setText(LocalDateTime.now().format(secondFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" date.setText(LocalDateTime.now().format(dateFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" Timeline timeline \u003d new Timeline(new KeyFrame(Duration.seconds(1), event -\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":" LocalDateTime currentTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-30"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":" time.setText(currentTime.format(timeFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" second.setText(currentTime.format(secondFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" date.setText(currentTime.format(dateFormatter));","lastModifiedDate":"2024-03-30"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":" }));","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" timeline.setCycleCount(Timeline.INDEFINITE);","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"NewtonKoh"},"content":" timeline.play();","lastModifiedDate":"2024-03-30"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" * Sets up list of people who are available today.","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" private void setUpAvailableTodayList() {","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" availableList.setItems(getAvailableTodayList());","lastModifiedDate":"2024-03-30"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":" availableList.setCellFactory(listView -\u003e new AvailableTodayCell());","lastModifiedDate":"2024-03-30"},{"lineNumber":109,"author":{"gitId":"NewtonKoh"},"content":" availableList.setFocusTraversable(false);","lastModifiedDate":"2024-03-30"},{"lineNumber":110,"author":{"gitId":"NewtonKoh"},"content":" availableList.setMouseTransparent(true);","lastModifiedDate":"2024-03-30"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":112,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":113,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":114,"author":{"gitId":"NewtonKoh"},"content":" * @return List of people who are available today.","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":" public ObservableList\u003cPerson\u003e getAvailableTodayList() {","lastModifiedDate":"2024-03-30"},{"lineNumber":117,"author":{"gitId":"NewtonKoh"},"content":" DateTimeFormatter dayFormatter \u003d DateTimeFormatter.ofPattern(\"EEEE\");","lastModifiedDate":"2024-03-30"},{"lineNumber":118,"author":{"gitId":"NewtonKoh"},"content":" String today \u003d LocalDateTime.now().format(dayFormatter);","lastModifiedDate":"2024-03-30"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":" Day filterDay \u003d Day.getDay(today);","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" return personList.filtered(person -\u003e person.getDaysAvailable().contains(filterDay));","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":124,"author":{"gitId":"NewtonKoh"},"content":" * @return Get the amount of debt the user has","lastModifiedDate":"2024-03-30"},{"lineNumber":125,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":126,"author":{"gitId":"NewtonKoh"},"content":" public double getTotalDebt() {","lastModifiedDate":"2024-03-30"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":" double result \u003d 0.0;","lastModifiedDate":"2024-03-30"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":" for (Person person : personList) {","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"NewtonKoh"},"content":" if (person.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-03-31"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" result +\u003d person.getMoneyOwed().getAbsoluteAmount();","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" return result;","lastModifiedDate":"2024-03-30"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":137,"author":{"gitId":"NewtonKoh"},"content":" * @return Get the amount of credit the user has","lastModifiedDate":"2024-03-30"},{"lineNumber":138,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":139,"author":{"gitId":"NewtonKoh"},"content":" public double getTotalCredit() {","lastModifiedDate":"2024-03-30"},{"lineNumber":140,"author":{"gitId":"NewtonKoh"},"content":" double result \u003d 0.0;","lastModifiedDate":"2024-03-30"},{"lineNumber":141,"author":{"gitId":"NewtonKoh"},"content":" for (Person person : personList) {","lastModifiedDate":"2024-03-31"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" if (!person.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" result +\u003d person.getMoneyOwed().getAbsoluteAmount();","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":145,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":146,"author":{"gitId":"NewtonKoh"},"content":" return result;","lastModifiedDate":"2024-03-30"},{"lineNumber":147,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":148,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" * Play the card\u0027s animation","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" public void playAnimation() {","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" fadeInTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" moveTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" static class AvailableTodayCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":160,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2024-03-30"},{"lineNumber":162,"author":{"gitId":"NewtonKoh"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2024-03-30"},{"lineNumber":163,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":164,"author":{"gitId":"NewtonKoh"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2024-03-30"},{"lineNumber":165,"author":{"gitId":"NewtonKoh"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-30"},{"lineNumber":166,"author":{"gitId":"NewtonKoh"},"content":" setText(null);","lastModifiedDate":"2024-03-30"},{"lineNumber":167,"author":{"gitId":"NewtonKoh"},"content":" return;","lastModifiedDate":"2024-03-30"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":169,"author":{"gitId":"NewtonKoh"},"content":" MiniPersonCard personCard \u003d new MiniPersonCard(person);","lastModifiedDate":"2024-03-31"},{"lineNumber":170,"author":{"gitId":"NewtonKoh"},"content":" setGraphic(personCard.getRoot());","lastModifiedDate":"2024-03-30"},{"lineNumber":171,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":172,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":173,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"NewtonKoh":136,"zhekaiii":37}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import javafx.beans.binding.Bindings;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.input.KeyCode;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.ResetDebtCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" private static final Double PERSON_LIST_RATIO \u003d 0.25;","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" private static final Integer MINIMUM_HEIGHT \u003d 700;","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" private static final Integer MINIMUM_WIDTH \u003d 1000;","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" private Image logo \u003d new Image(this.getClass().getResourceAsStream(\"/images/friendfolio_logo.png\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" private PaymentWindow paymentWindow;","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" private ImageView logoImage;","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" setEscHandler();","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList(), logic.getSortedPersonList());","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" personListPanel.getPersonListView().prefWidthProperty().bind(Bindings.createDoubleBinding(()","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" -\u003e personListPanelPlaceholder.getScene().getWidth() * PERSON_LIST_RATIO,","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":" personListPanelPlaceholder.getScene().widthProperty()));","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":" personListPanelPlaceholder.getChildren().setAll(personListPanel.getRoot());","lastModifiedDate":"2024-03-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":138,"author":{"gitId":"NewtonKoh"},"content":" logoImage.setImage(logo);","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" private void setEscHandler() {","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" if (event.getCode() \u003d\u003d KeyCode.ESCAPE) {","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" personListPanel.resetHomeCard();","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" });","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":165,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":" primaryStage.setMinHeight(MINIMUM_HEIGHT);","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"NewtonKoh"},"content":" primaryStage.setMinWidth(MINIMUM_WIDTH);","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":193,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":198,"author":{"gitId":"zhekaiii"},"content":" if (paymentWindow !\u003d null) {","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"zhekaiii"},"content":" paymentWindow.hide();","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":203,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":204,"author":{"gitId":"zhekaiii"},"content":" private void handlePayment(Person person) {","lastModifiedDate":"2024-03-27"},{"lineNumber":205,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-27"},{"lineNumber":206,"author":{"gitId":"zhekaiii"},"content":" if (paymentWindow !\u003d null) {","lastModifiedDate":"2024-03-27"},{"lineNumber":207,"author":{"gitId":"zhekaiii"},"content":" paymentWindow.hide();","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":210,"author":{"gitId":"zhekaiii"},"content":" paymentWindow \u003d new PaymentWindow(person, () -\u003e {","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"zhekaiii"},"content":" paymentWindow.hide();","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"zhekaiii"},"content":" paymentWindow \u003d null;","lastModifiedDate":"2024-03-27"},{"lineNumber":213,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":214,"author":{"gitId":"zhekaiii"},"content":" execute(new ResetDebtCommand(person));","lastModifiedDate":"2024-03-27"},{"lineNumber":215,"author":{"gitId":"zhekaiii"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"zhekaiii"},"content":" return;","lastModifiedDate":"2024-03-27"},{"lineNumber":217,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":218,"author":{"gitId":"zhekaiii"},"content":" });","lastModifiedDate":"2024-03-27"},{"lineNumber":219,"author":{"gitId":"zhekaiii"},"content":" paymentWindow.show();","lastModifiedDate":"2024-03-27"},{"lineNumber":220,"author":{"gitId":"zhekaiii"},"content":" } catch (IOException | WriterException e) {","lastModifiedDate":"2024-03-28"},{"lineNumber":221,"author":{"gitId":"zhekaiii"},"content":" logger.info(\"An error occurred while trying to set up PaymentWindow: \" + e.getMessage());","lastModifiedDate":"2024-03-27"},{"lineNumber":222,"author":{"gitId":"zhekaiii"},"content":" resultDisplay.setFeedbackToUser(\"An error occurred while trying to set up PaymentWindow!\");","lastModifiedDate":"2024-03-28"},{"lineNumber":223,"author":{"gitId":"zhekaiii"},"content":" throw new RuntimeException(e.getMessage());","lastModifiedDate":"2024-03-28"},{"lineNumber":224,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":228,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":237,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":239,"author":{"gitId":"zhekaiii"},"content":" handleCommandResult(commandResult);","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2024-03-27"},{"lineNumber":241,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":242,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2024-03-27"},{"lineNumber":243,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":247,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":248,"author":{"gitId":"zhekaiii"},"content":" private CommandResult execute(Command command) throws CommandException {","lastModifiedDate":"2024-03-27"},{"lineNumber":249,"author":{"gitId":"zhekaiii"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"zhekaiii"},"content":" CommandResult commandResult \u003d logic.execute(command);","lastModifiedDate":"2024-03-27"},{"lineNumber":251,"author":{"gitId":"zhekaiii"},"content":" handleCommandResult(commandResult);","lastModifiedDate":"2024-03-27"},{"lineNumber":252,"author":{"gitId":"zhekaiii"},"content":" return commandResult;","lastModifiedDate":"2024-03-27"},{"lineNumber":253,"author":{"gitId":"zhekaiii"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":254,"author":{"gitId":"zhekaiii"},"content":" logger.info(\"An error occurred while executing command: \" + command);","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"zhekaiii"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2024-03-27"},{"lineNumber":256,"author":{"gitId":"zhekaiii"},"content":" throw e;","lastModifiedDate":"2024-03-27"},{"lineNumber":257,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":258,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":259,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":260,"author":{"gitId":"zhekaiii"},"content":" private void handleCommandResult(CommandResult commandResult) {","lastModifiedDate":"2024-03-27"},{"lineNumber":261,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":262,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":263,"author":{"gitId":"zhekaiii"},"content":" if (commandResult.getPersonToShow() !\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":264,"author":{"gitId":"zhekaiii"},"content":" personListPanel \u003d new PersonListPanel(","lastModifiedDate":"2024-04-02"},{"lineNumber":265,"author":{"gitId":"zhekaiii"},"content":" logic.getFilteredPersonList(), logic.getSortedPersonList(), commandResult.getPersonToShow());","lastModifiedDate":"2024-04-02"},{"lineNumber":266,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"zhekaiii"},"content":" personListPanel.getPersonListView().prefWidthProperty().bind(Bindings.createDoubleBinding(()","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"zhekaiii"},"content":" -\u003e personListPanelPlaceholder.getScene().getWidth() * PERSON_LIST_RATIO,","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"zhekaiii"},"content":" personListPanelPlaceholder.getScene().widthProperty()));","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"zhekaiii"},"content":" personListPanelPlaceholder.getChildren().setAll(personListPanel.getRoot());","lastModifiedDate":"2024-04-02"},{"lineNumber":271,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":273,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":274,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":277,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":278,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":281,"author":{"gitId":"zhekaiii"},"content":" if (commandResult.isShowPayment()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":282,"author":{"gitId":"zhekaiii"},"content":" assert (commandResult.getPersonToPay() !\u003d null);","lastModifiedDate":"2024-03-27"},{"lineNumber":283,"author":{"gitId":"zhekaiii"},"content":" handlePayment(commandResult.getPersonToPay());","lastModifiedDate":"2024-03-27"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"NewtonKoh":19,"-":193,"zhekaiii":74}},{"path":"src/main/java/seedu/address/ui/MiniPersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"public class MiniPersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" private static final String FXML \u003d \"MiniPersonCard.fxml\";","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" *","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" public final Person person;","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" private Label name;","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" private Label id;","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" private FlowPane tags;","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" * Creates a {@code MiniCard} with the given {@code Person}.","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" public MiniPersonCard(Person person) {","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" super(FXML);","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" person.getTags().stream()","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" public HBox getCardPane() {","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" return cardPane;","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"NewtonKoh":52,"zhekaiii":1}},{"path":"src/main/java/seedu/address/ui/PaymentWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.control.Tooltip;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.paynow.PayNowCode;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" * Controller for the Payment window","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"public class PaymentWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" private static final String FXML \u003d \"PaymentWindow.fxml\";","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(PaymentWindow.class);","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" private static final String HELP_TOOLTIP_TEXT \u003d \"Open your banking application and scan this QR code to pay %s!\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" + \"Note that this QR code only works if the mobile number is registered to a bank account.\";","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" private final Runnable onResetDebt;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" private ImageView qrCode;","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private Button cancelButton;","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" private Button resetButton;","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" @FXML","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" private Tooltip helpTooltip;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" * Creates a new QrWindow.","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" * @param person The person whom the user is attempting to pay.","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" public PaymentWindow(Person person, Runnable onResetDebt) throws IOException, WriterException {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" super(FXML, new Stage());","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" this.onResetDebt \u003d onResetDebt;","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" Image image \u003d new Image(PayNowCode.generatePayNowQrCode(","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" person.getPhone().toString(),","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" Math.max(0, -person.getMoneyOwed().moneyOwed)));","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" qrCode.setImage(image);","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" if (!person.getMoneyOwed().userOwesMoney()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" resetButton.setManaged(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" helpTooltip.setText(String.format(HELP_TOOLTIP_TEXT, person.getName()));","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" * Shows the payment window.","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" * @throws IllegalStateException \u003cul\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" public void show() {","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" logger.fine(\"Showing payment page.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" getRoot().show();","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" public void hide() {","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" public void onResetDebt() {","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" onResetDebt.run();","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":91}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.FadeTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.TranslateTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.util.AnimationUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition moveTransition \u003d AnimationUtil.getMoveTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" private final TranslateTransition bounceBackTransition \u003d AnimationUtil.getBounceBackTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" private final FadeTransition fadeInTransition \u003d AnimationUtil.getFadeInTransition(getRoot());","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" private Label moneyOwed;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" private FlowPane daysAvailable;","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" public PersonCard(Person person, int displayedIndex, boolean animate) {","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" moneyOwed.setText(person.getMoneyOwed().getMessage());","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" person.getDaysAvailable().stream()","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" .sorted(Comparator.comparing(Enum::ordinal))","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" .forEach(day -\u003e daysAvailable.getChildren().add(new Label(day.getShortForm())));","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" if (animate) {","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" playAnimation();","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" private void playAnimation() {","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" fadeInTransition.playFromStart();","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" moveTransition.playFromStart();","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" bounceBackTransition.playFromStart();","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" public HBox getCardPane() {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" return cardPane;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"NewtonKoh":12,"alvinnzz":2,"JerryO3":4,"-":51,"zhekaiii":7}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import javafx.animation.ScaleTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import javafx.beans.binding.Bindings;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.Priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" private static final Integer PADDING_SIZE \u003d 80;","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" private VBox displayView;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" private HomeCard homeCard;","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList, ObservableList\u003cPerson\u003e sortedList) {","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" homeCard \u003d new HomeCard(sortedList);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" displayView.getChildren().setAll(homeCard.getRoot());","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" personListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" if (newValue \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" return;","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" setDisplayCard(newValue);","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" });","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList} and displays the {@code DisplayCard}","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" * for the person in the given index.","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList, ObservableList\u003cPerson\u003e sortedList, int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" this(personList, sortedList);","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" personListView.getSelectionModel().select(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" private void setDisplayCard(Person person) {","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" DisplayCard displayCard \u003d new DisplayCard(person);","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" displayView.getChildren().setAll(displayCard.getRoot());","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" VBox.setVgrow(displayCard.getRoot(), Priority.ALWAYS);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" public ListView\u003cPerson\u003e getPersonListView() {","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" return personListView;","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" * Resets the display view to display the home card. This is fired when the user","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" * presses the escape key.","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" public void resetHomeCard() {","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" displayView.getChildren().setAll(homeCard.getRoot());","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" personListView.getSelectionModel().clearSelection();","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" homeCard.playAnimation();","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" public int getSelectedIndex() {","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" return personListView.getSelectionModel().getSelectedIndex();","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":" private static final double HOVERED_SCALE \u003d 1.035; // Scale for hovered item","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" private static final double NORMAL_SCALE \u003d 1.0; // Normal scale","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":" private static final double SCALE_DURATION \u003d 200;","lastModifiedDate":"2024-03-30"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":" private ScaleTransition scaleUpTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" private ScaleTransition scaleDownTransition;","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" private boolean hasAnimation;","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" public PersonListViewCell() {","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"NewtonKoh"},"content":" this.hasAnimation \u003d true;","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" scaleUpTransition \u003d new ScaleTransition(Duration.millis(SCALE_DURATION), this);","lastModifiedDate":"2024-03-30"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":" scaleUpTransition.setToX(HOVERED_SCALE);","lastModifiedDate":"2024-03-30"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" scaleUpTransition.setToY(HOVERED_SCALE);","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"NewtonKoh"},"content":" scaleDownTransition \u003d new ScaleTransition(Duration.millis(SCALE_DURATION), this);","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" scaleDownTransition.setToX(NORMAL_SCALE);","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"NewtonKoh"},"content":" scaleDownTransition.setToY(NORMAL_SCALE);","lastModifiedDate":"2024-03-30"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":" setOnMouseEntered(e -\u003e scaleUpTransition.playFromStart());","lastModifiedDate":"2024-03-30"},{"lineNumber":109,"author":{"gitId":"NewtonKoh"},"content":" setOnMouseExited(e -\u003e scaleDownTransition.playFromStart());","lastModifiedDate":"2024-03-30"},{"lineNumber":110,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":" return;","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" PersonCard personCard \u003d new PersonCard(person, getIndex() + 1, getAnimateFlag());","lastModifiedDate":"2024-03-31"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":" setGraphic(personCard.getRoot());","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":" personCard.getCardPane().prefWidthProperty().bind(Bindings.createDoubleBinding((","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"NewtonKoh"},"content":" ) -\u003e personListView.getPrefWidth() - PADDING_SIZE, personListView.prefWidthProperty()));","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":" private boolean getAnimateFlag() {","lastModifiedDate":"2024-03-31"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":" if (hasAnimation) {","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":130,"author":{"gitId":"NewtonKoh"},"content":" hasAnimation \u003d false;","lastModifiedDate":"2024-03-31"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" return true;","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" return hasAnimation;","lastModifiedDate":"2024-03-31"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"NewtonKoh":54,"-":48,"zhekaiii":35}},{"path":"src/main/java/seedu/address/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" * Resource folder where FXML files are stored.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @see #UiPart(URL, T)","lastModifiedDate":"2017-11-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":77,"zhekaiii":16}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"@font-face {","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #e0e0e0;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":" background-color: #e0e0e0; /* Used in the default.html file */","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" -fx-control-inner-background: #d9d9d9;","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #d7d7d7;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color: #2daddc;","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-30"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #edfaff;","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 5, 0, 0, 3);","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"NewtonKoh"},"content":".list-cell:filled:hover #cardPane {","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color: rgb(168, 168, 168);","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":129,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":".amount-header {","lastModifiedDate":"2024-03-30"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-30"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 40px;","lastModifiedDate":"2024-03-30"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-30"},{"lineNumber":137,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":138,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":139,"author":{"gitId":"NewtonKoh"},"content":".time-big-label {","lastModifiedDate":"2024-03-30"},{"lineNumber":140,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-30"},{"lineNumber":141,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 60px;","lastModifiedDate":"2024-03-30"},{"lineNumber":142,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill:white;","lastModifiedDate":"2024-03-31"},{"lineNumber":143,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":144,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":145,"author":{"gitId":"NewtonKoh"},"content":".time-small-label {","lastModifiedDate":"2024-03-30"},{"lineNumber":146,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-30"},{"lineNumber":147,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 40px;","lastModifiedDate":"2024-03-30"},{"lineNumber":148,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":149,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":150,"author":{"gitId":"NewtonKoh"},"content":".display_big_label {","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 45px;","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"NewtonKoh"},"content":".display_small_bold_label {","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-weight:bold;","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"NewtonKoh"},"content":".display_small_label {","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"NewtonKoh"},"content":"/*this is for the command text background*/","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgba(118, 118, 118, 0.5);","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 15;","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 15;","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":190,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":191,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-26"},{"lineNumber":192,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius:20;","lastModifiedDate":"2024-03-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: linear-gradient(to bottom right, #7BD7E5, #1B96C0 50%, #7BE5D2);","lastModifiedDate":"2024-03-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":200,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":203,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":205,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":207,"author":{"gitId":"NewtonKoh"},"content":".result-display .content{","lastModifiedDate":"2024-03-26"},{"lineNumber":208,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":210,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":213,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":215,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":216,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: linear-gradient(to bottom right, #7BD7E5, #1B96C0 50%, #7BE5D2);","lastModifiedDate":"2024-03-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(128, 128, 128);","lastModifiedDate":"2024-03-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":241,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(128, 128, 128);","lastModifiedDate":"2024-03-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(128, 128, 128);","lastModifiedDate":"2024-03-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(128, 128, 128);","lastModifiedDate":"2024-03-26"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-26"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":341,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":343,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":344,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":345,"author":{"gitId":"NewtonKoh"},"content":".scroll-bar:vertical {","lastModifiedDate":"2024-03-26"},{"lineNumber":346,"author":{"gitId":"NewtonKoh"},"content":" -fx-pref-width: 15px;","lastModifiedDate":"2024-03-26"},{"lineNumber":347,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #cccccc;","lastModifiedDate":"2024-03-26"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":352,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-26"},{"lineNumber":353,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":355,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":360,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":361,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":362,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":366,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":368,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":369,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":370,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":372,"author":{"gitId":"NewtonKoh"},"content":"#miniPane {","lastModifiedDate":"2024-03-30"},{"lineNumber":373,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-30"},{"lineNumber":374,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":375,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":376,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":377,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-26"},{"lineNumber":378,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-26"},{"lineNumber":379,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.3;","lastModifiedDate":"2024-03-30"},{"lineNumber":380,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color:rgb(201, 201, 201);","lastModifiedDate":"2024-03-26"},{"lineNumber":381,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-26"},{"lineNumber":382,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":384,"author":{"gitId":"NewtonKoh"},"content":"#topPane{","lastModifiedDate":"2024-03-30"},{"lineNumber":385,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color: rgb(184, 184, 184);","lastModifiedDate":"2024-03-30"},{"lineNumber":386,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.8;","lastModifiedDate":"2024-03-30"},{"lineNumber":387,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":388,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":389,"author":{"gitId":"NewtonKoh"},"content":".white-pane {","lastModifiedDate":"2024-03-30"},{"lineNumber":390,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-26"},{"lineNumber":391,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":392,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.5;","lastModifiedDate":"2024-03-30"},{"lineNumber":393,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color:rgb(201, 201, 201);","lastModifiedDate":"2024-03-26"},{"lineNumber":394,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":395,"author":{"gitId":"NewtonKoh"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 5, 0, 0, 3);","lastModifiedDate":"2024-03-26"},{"lineNumber":396,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":398,"author":{"gitId":"NewtonKoh"},"content":"#notePane {","lastModifiedDate":"2024-03-31"},{"lineNumber":399,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgb(255, 249, 228);","lastModifiedDate":"2024-03-31"},{"lineNumber":400,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-31"},{"lineNumber":401,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.5;","lastModifiedDate":"2024-03-31"},{"lineNumber":402,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color:rgb(201, 201, 201);","lastModifiedDate":"2024-03-31"},{"lineNumber":403,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-31"},{"lineNumber":404,"author":{"gitId":"NewtonKoh"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 5, 0, 0, 3);","lastModifiedDate":"2024-03-31"},{"lineNumber":405,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-31"},{"lineNumber":406,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":407,"author":{"gitId":"NewtonKoh"},"content":"#contactAmount {","lastModifiedDate":"2024-03-30"},{"lineNumber":408,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 40px;","lastModifiedDate":"2024-03-30"},{"lineNumber":409,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":410,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":411,"author":{"gitId":"NewtonKoh"},"content":"#contactTop,","lastModifiedDate":"2024-03-30"},{"lineNumber":412,"author":{"gitId":"NewtonKoh"},"content":"#contactBottom,","lastModifiedDate":"2024-03-30"},{"lineNumber":413,"author":{"gitId":"NewtonKoh"},"content":"#contactAmount {","lastModifiedDate":"2024-03-30"},{"lineNumber":414,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":417,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":418,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":419,"author":{"gitId":"NewtonKoh"},"content":" /*-fx-text-fill: #F70D1A;*/","lastModifiedDate":"2024-03-26"},{"lineNumber":420,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":422,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":423,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":424,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":425,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":426,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":427,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":428,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":429,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":430,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":432,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":433,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":434,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":436,"author":{"gitId":"NewtonKoh"},"content":"/*this is for the result display block*/","lastModifiedDate":"2024-03-26"},{"lineNumber":437,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":438,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgba(116, 51, 163, 0.371);","lastModifiedDate":"2024-03-26"},{"lineNumber":439,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius:10;","lastModifiedDate":"2024-03-26"},{"lineNumber":440,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":441,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":442,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":443,"author":{"gitId":"NewtonKoh"},"content":"#resultDisplay .viewport {","lastModifiedDate":"2024-03-26"},{"lineNumber":444,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":445,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":446,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":447,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":448,"author":{"gitId":"NewtonKoh"},"content":"#resultDisplay {","lastModifiedDate":"2024-03-26"},{"lineNumber":449,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":450,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: rgba(50, 50, 50, 0.5);","lastModifiedDate":"2024-03-26"},{"lineNumber":451,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-26"},{"lineNumber":452,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-26"},{"lineNumber":453,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius:20;","lastModifiedDate":"2024-03-26"},{"lineNumber":454,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":456,"author":{"gitId":"NewtonKoh"},"content":"#daysAvailable,","lastModifiedDate":"2024-03-30"},{"lineNumber":457,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":458,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":459,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":460,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":462,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":463,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":464,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #2658c4;","lastModifiedDate":"2024-03-30"},{"lineNumber":465,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":466,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":467,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":468,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":469,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":470,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":471,"author":{"gitId":"JerryO3"},"content":"#daysAvailable {","lastModifiedDate":"2024-03-24"},{"lineNumber":472,"author":{"gitId":"JerryO3"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-24"},{"lineNumber":473,"author":{"gitId":"JerryO3"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-24"},{"lineNumber":474,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":475,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":476,"author":{"gitId":"JerryO3"},"content":"#daysAvailable .label {","lastModifiedDate":"2024-03-24"},{"lineNumber":477,"author":{"gitId":"JerryO3"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-24"},{"lineNumber":478,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #7334a7;","lastModifiedDate":"2024-03-30"},{"lineNumber":479,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-24"},{"lineNumber":480,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-24"},{"lineNumber":481,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-24"},{"lineNumber":482,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-24"},{"lineNumber":483,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":484,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":485,"author":{"gitId":"NewtonKoh"},"content":"#mainPanel {","lastModifiedDate":"2024-03-30"},{"lineNumber":486,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: #EFEFF4;","lastModifiedDate":"2024-03-30"},{"lineNumber":487,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":488,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":489,"author":{"gitId":"NewtonKoh"},"content":"#timePane {","lastModifiedDate":"2024-03-30"},{"lineNumber":490,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: linear-gradient(to bottom right, #269bad, #167798 50%, #57af9f);","lastModifiedDate":"2024-03-30"},{"lineNumber":491,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":492,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-width: 0.5;","lastModifiedDate":"2024-03-30"},{"lineNumber":493,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color:rgb(201, 201, 201);","lastModifiedDate":"2024-03-30"},{"lineNumber":494,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":495,"author":{"gitId":"NewtonKoh"},"content":" -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.2), 5, 0, 0, 3);","lastModifiedDate":"2024-03-30"},{"lineNumber":496,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":497,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":498,"author":{"gitId":"NewtonKoh"},"content":"#time,","lastModifiedDate":"2024-03-30"},{"lineNumber":499,"author":{"gitId":"NewtonKoh"},"content":"#second,","lastModifiedDate":"2024-03-30"},{"lineNumber":500,"author":{"gitId":"NewtonKoh"},"content":"#date {","lastModifiedDate":"2024-03-30"},{"lineNumber":501,"author":{"gitId":"NewtonKoh"},"content":" -fx-text-fill:white;","lastModifiedDate":"2024-03-30"},{"lineNumber":502,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":503,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":504,"author":{"gitId":"NewtonKoh"},"content":"#date{","lastModifiedDate":"2024-03-30"},{"lineNumber":505,"author":{"gitId":"NewtonKoh"},"content":" -fx-font-size: 20;","lastModifiedDate":"2024-03-30"},{"lineNumber":506,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":507,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":508,"author":{"gitId":"NewtonKoh"},"content":".chart-bar {","lastModifiedDate":"2024-03-30"},{"lineNumber":509,"author":{"gitId":"NewtonKoh"},"content":" -fx-bar-fill: rgb(110, 186, 221);","lastModifiedDate":"2024-03-30"},{"lineNumber":510,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-color: linear-gradient(to bottom right, #269bad, #167798 50%, #57af9f);","lastModifiedDate":"2024-03-30"},{"lineNumber":511,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":512,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":513,"author":{"gitId":"NewtonKoh"},"content":".axis {","lastModifiedDate":"2024-03-30"},{"lineNumber":514,"author":{"gitId":"NewtonKoh"},"content":" -fx-tick-label-font-size: 15;","lastModifiedDate":"2024-03-30"},{"lineNumber":515,"author":{"gitId":"NewtonKoh"},"content":" -fx-tick-label-font-family: \"SF Pro\";","lastModifiedDate":"2024-03-30"},{"lineNumber":516,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"NewtonKoh":193,"JerryO3":8,"-":315}},{"path":"src/main/resources/view/DisplayCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"\u003cHBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"CENTER\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" minWidth\u003d\"300.0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"CENTER\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"75.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\" minWidth\u003d\"250.0\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"id\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel id\u003d\"name\" fx:id\u003d\"name\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_big_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$first\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"30.0\" top\u003d\"30.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"TOP_CENTER\" minHeight\u003d\"80.0\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"tagIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel alignment\u003d\"TOP_LEFT\" maxWidth\u003d\"130.0\"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"display_small_bold_label\" text\u003d\"Tags:\"","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" \u003cFlowPane fx:id\u003d\"tags\" alignment\u003d\"CENTER\" columnHalignment\u003d\"CENTER\"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" maxHeight\u003d\"200.0\" prefWrapLength\u003d\"100.0\" rowValignment\u003d\"TOP\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"25.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"TOP_CENTER\" minHeight\u003d\"80.0\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"dayIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel alignment\u003d\"TOP_LEFT\" maxWidth\u003d\"130.0\"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"display_small_bold_label\" text\u003d\"Days Available:\"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" \u003cFlowPane fx:id\u003d\"daysAvailable\" alignment\u003d\"CENTER\" columnHalignment\u003d\"CENTER\"","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" maxHeight\u003d\"200.0\" prefWrapLength\u003d\"100.0\" rowValignment\u003d\"TOP\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":88,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"NewtonKoh"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"50.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox minWidth\u003d\"500.0\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_bold_label\" text\u003d\"Contact Details\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets top\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":109,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":113,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Separator\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":114,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"7.5\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":117,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"phoneIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":121,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":122,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":123,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\" styleClass\u003d\"display_small_bold_label\"","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"Phone Number:\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":126,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"phone\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$phone\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"addressIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":137,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":138,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":139,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":140,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\"","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"display_small_bold_label\" text\u003d\"Address:\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"address\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$address\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":149,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"7.5\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"7.5\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":150,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"emailIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":156,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":157,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\" styleClass\u003d\"display_small_bold_label\"","lastModifiedDate":"2024-04-03"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"Email:\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"email\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$email\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"7.5\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"7.5\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":169,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":172,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"birthdayIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":175,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":176,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":177,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\"","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"display_small_bold_label\" text\u003d\"Birthday:\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":180,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"birthday\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$birthday\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"7.5\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"7.5\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":188,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":189,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":190,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":191,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"moneyIcon\" fitHeight\u003d\"20.0\" fitWidth\u003d\"20.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"zhekaiii"},"content":" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":194,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":195,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":196,"author":{"gitId":"NewtonKoh"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":197,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel maxWidth\u003d\"130.0\" styleClass\u003d\"display_small_bold_label\"","lastModifiedDate":"2024-04-03"},{"lineNumber":198,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"Money Owed\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":199,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":202,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":203,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"moneyOwed\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":204,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$moneyOwed\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"30.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"7.5\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":207,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":208,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":210,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"50.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":211,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":212,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":213,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox id\u003d\"notePane\" fx:id\u003d\"notePane\" maxWidth\u003d\"250.0\" minWidth\u003d\"250.0\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":214,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":215,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_bold_label\" text\u003d\"Remark\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":216,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":217,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":218,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":219,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":220,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":221,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":222,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":223,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":224,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":225,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"remark\" alignment\u003d\"TOP_LEFT\" styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-02"},{"lineNumber":226,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"\\$remark\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":227,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":228,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":229,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":230,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":231,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":232,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":233,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":234,"author":{"gitId":"NewtonKoh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":235,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":236,"author":{"gitId":"NewtonKoh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":237,"author":{"gitId":"NewtonKoh"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"NewtonKoh":186,"zhekaiii":51}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" -fx-text-fill: #ff534c !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":" -fx-background: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" -fx-border-radius: 20;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" -fx-background-radius: 20;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NewtonKoh":4,"-":15,"zhekaiii":1}},{"path":"src/main/resources/view/HomeCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.chart.BarChart?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.chart.CategoryAxis?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.chart.NumberAxis?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"\u003cVBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox fx:id\u003d\"timePane\" alignment\u003d\"CENTER_LEFT\" minWidth\u003d\"300.0\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"BOTTOM_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"40.0\" right\u003d\"40.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"time\" styleClass\u003d\"time-big-label\" text\u003d\"Time\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"second\" styleClass\u003d\"time-small-label\" text\u003d\"Second\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"8.0\" left\u003d\"5.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"date\" styleClass\u003d\"display_small_label\" text\u003d\"Date\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"40.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"30.0\" right\u003d\"100.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox fx:id\u003d\"contactAmountPane\" alignment\u003d\"CENTER\" minHeight\u003d\"150.0\" minWidth\u003d\"250.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_label\" text\u003d\"There are currently\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"contactCount\" styleClass\u003d\"amount-header\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_label\"","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" text\u003d\"contacts on your FriendFolio\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"50.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox fx:id\u003d\"moneyPane\" alignment\u003d\"TOP_CENTER\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_bold_label\" text\u003d\"Financial Status\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" \u003cBarChart fx:id\u003d\"chart\" maxWidth\u003d\"400.0\" minWidth\u003d\"400.0\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":" \u003cxAxis\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" \u003cCategoryAxis maxWidth\u003d\"50.0\" side\u003d\"BOTTOM\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" \u003c/xAxis\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":" \u003cyAxis\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"NewtonKoh"},"content":" \u003cNumberAxis side\u003d\"LEFT\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"NewtonKoh"},"content":" \u003c/yAxis\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"30.0\" left\u003d\"20.0\" right\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" \u003c/BarChart\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"30.0\" right\u003d\"100.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"TOP_CENTER\" styleClass\u003d\"white-pane\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel styleClass\u003d\"display_small_bold_label\" text\u003d\"Available today\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" \u003cSeparator prefWidth\u003d\"200.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" \u003cListView fx:id\u003d\"availableList\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets left\u003d\"10.0\" right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"NewtonKoh"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"NewtonKoh":76,"zhekaiii":9}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"FriendFolio\"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\"/\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\"/\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox id\u003d\"topPane\" fillHeight\u003d\"false\" maxHeight\u003d\"300.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-color: linear-gradient(to bottom right, #7BD7E5, #1B96C0 50%, #7BE5D2);\"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-radius: 10; -fx-border-radius: 10;\" styleClass\u003d\"logo-view\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"logoImage\" fitHeight\u003d\"150.0\" fitWidth\u003d\"200.0\" pickOnBounds\u003d\"true\"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" preserveRatio\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"NewtonKoh"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"15.0\" right\u003d\"15.0\" top\u003d\"15.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-radius: 20;\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" minWidth\u003d\"300.0\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"NewtonKoh":29,"-":44,"zhekaiii":15}},{"path":"src/main/resources/view/MiniPersonCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"\u003cVBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"TOP_CENTER\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox id\u003d\"miniPane\" fx:id\u003d\"miniPane\" alignment\u003d\"TOP_CENTER\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" \u003cGridPane alignment\u003d\"TOP_CENTER\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" \u003cRowConstraints/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets bottom\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" \u003cFlowPane fx:id\u003d\"tags\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets bottom\u003d\"5.0\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets left\u003d\"10.0\" right\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" \u003cSeparator\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" \u003cInsets left\u003d\"7.0\" right\u003d\"7.0\"/\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" \u003c/Separator\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"zhekaiii":48}},{"path":"src/main/resources/view/PaymentWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":".payment-page-btn {","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":" -fx-background-color: #1B96C0;","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":" -fx-padding: 10;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":" -fx-font-size: 16;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" -fx-pref-width: 150;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" -fx-cursor: hand;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":9}},{"path":"src/main/resources/view/PaymentWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.control.Tooltip?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" resizable\u003d\"false\" title\u003d\"PayNow\" type\u003d\"javafx.stage.Stage\"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" \u003cURL value\u003d\"@PaymentWindow.css\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" \u003cVBox style\u003d\"-fx-background-color: white; -fx-padding: 50; -fx-spacing: 20\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" \u003cLabel contentDisplay\u003d\"GRAPHIC_ONLY\" style\u003d\"-fx-cursor: hand\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" \u003cgraphic\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fitHeight\u003d\"20\" fitWidth\u003d\"20\" style\u003d\"-fx-cursor: hand\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" \u003c/graphic\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" \u003ctooltip\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" \u003cTooltip fx:id\u003d\"helpTooltip\" showDelay\u003d\"0ms\" prefWidth\u003d\"300\" wrapText\u003d\"true\"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-font-size: 14\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" \u003c/tooltip\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" \u003cImageView fx:id\u003d\"qrCode\" fitHeight\u003d\"400\" fitWidth\u003d\"400\" pickOnBounds\u003d\"true\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" \u003cHBox style\u003d\"-fx-alignment: center\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" \u003cButton fx:id\u003d\"cancelButton\" text\u003d\"Close Window\" onMouseClicked\u003d\"#hide\"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"payment-page-btn\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" \u003cButton fx:id\u003d\"resetButton\" text\u003d\"Clear Debt\" onMouseClicked\u003d\"#onResetDebt\"","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"payment-page-btn\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" \u003ctooltip\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" \u003cTooltip text\u003d\"Resets money owed to $0 and closes this window.\" showDelay\u003d\"0ms\"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-font-size: 14\"/\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" \u003c/tooltip\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":49}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"\u003cHBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"CENTER\" fillHeight\u003d\"false\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" minWidth\u003d\"240.0\"\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\"/\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\"/\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" \u003cFlowPane fx:id\u003d\"tags\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" \u003cFlowPane fx:id\u003d\"daysAvailable\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":" \u003cLabel fx:id\u003d\"moneyOwed\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$moneyOwed\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"5.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":" \u003cRowConstraints/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"10.0\"/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"NewtonKoh":25,"-":28,"zhekaiii":3}},{"path":"src/main/resources/view/PersonListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.effect.Blend?\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"\u003cHBox xmlns:fx\u003d\"http://javafx.com/fxml/1\" id\u003d\"mainPanel\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":" \u003cListView fx:id\u003d\"personListView\" minWidth\u003d\"300.0\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets right\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" \u003cSeparator orientation\u003d\"VERTICAL\" prefHeight\u003d\"200.0\"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-border-width: 0; -fx-background-color: transparent; -fx-border-color: transparent;\"","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" HBox.hgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":" \u003ceffect\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":" \u003cBlend/\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" \u003c/effect\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" \u003c/Separator\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":" \u003cVBox fx:id\u003d\"displayView\" alignment\u003d\"TOP_CENTER\" minWidth\u003d\"300.0\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"20.0\"/\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"NewtonKoh":19,"-":5,"zhekaiii":6}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"\u003cStackPane xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":" fx:id\u003d\"placeHolder\"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-radius: 20; -fx-border-radius: 20; -fx-background-color: transparent;\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" style\u003d\"-fx-background-radius: 20; -fx-border-radius: 20; -fx-background-color: transparent;\"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"-":5,"zhekaiii":6}},{"path":"src/test/java/seedu/address/commons/util/AnimationUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"public class AnimationUtilTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" public void getBounceBackTransition() {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" Node node \u003d new VBox();","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" AnimationUtil.getBounceBackTransition(node);","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" public void getMoveTransition() {","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" Node node \u003d new VBox();","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" AnimationUtil.getMoveTransition(node);","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" public void getFadeInTransition() {","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" Node node \u003d new VBox();","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" AnimationUtil.getFadeInTransition(node);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"zhekaiii":26}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MONEY_OWED_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"alvinnzz"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + BIRTHDAY_AMY + MONEY_OWED_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"alvinnzz":2,"-":174,"zhekaiii":6}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)))","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(validPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"-":47,"zhekaiii":2}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import java.util.List;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" assertEquals(List.of(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" assertEquals(addAliceCommand, addAliceCommand);","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" assertEquals(addAliceCommand, addAliceCommandCopy);","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(addAliceCommand, 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(addAliceCommand, null);","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(addAliceCommand, addBobCommand);","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"NewtonKoh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":158,"author":{"gitId":"NewtonKoh"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-30"},{"lineNumber":159,"author":{"gitId":"NewtonKoh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-30"},{"lineNumber":160,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":161,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"zhekaiii"},"content":" public void updatePersonComparator(Comparator\u003cPerson\u003e personComparator) {","lastModifiedDate":"2024-03-25"},{"lineNumber":169,"author":{"gitId":"zhekaiii"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-25"},{"lineNumber":170,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":171,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":172,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" public Optional\u003cPerson\u003e findPerson(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-27"},{"lineNumber":174,"author":{"gitId":"zhekaiii"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":176,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"zhekaiii"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":" public int findIndex(Person person) {","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" return Model.INVALID_PERSON_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":216,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"NewtonKoh":5,"-":191,"zhekaiii":29}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" // different personToPay value -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", AMY)));","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(commandResult.hashCode(),","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(commandResult.hashCode(),","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" // different personToPay value -\u003e returns different hashcode","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", AMY).hashCode());","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" + \", exit\u003d\" + commandResult.isExit()","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" + \", personToPay\u003d\" + commandResult.getPersonToPay()","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" + \", personToShow\u003d\" + commandResult.getPersonToShow() + \"}\";","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" public void isShowPayment() {","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\", AMY);","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" assertTrue(commandResult.isShowPayment());","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"-":60,"zhekaiii":20}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" public static final String VALID_REMARK_BOB \u003d \"Bob\u0027s remark\";","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" public static final String VALID_BIRTHDAY_AMY \u003d \"01/02/2001\";","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" public static final String VALID_BIRTHDAY_BOB \u003d \"02/03/2001\";","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" public static final String VALID_MONEY_OWED_AMY \u003d \"23.40\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" public static final String VALID_MONEY_OWED_BOB \u003d \"1.40\";","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" public static final String VALID_DAY_AVAILABLE_MONDAY \u003d \"monday\";","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" public static final String VALID_DAY_AVAILABLE_TUESDAY \u003d \"tuesday\";","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" public static final String VALID_MONEY_OWED_FOR_SPLIT_COMMAND \u003d \"20.40\";","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" public static final String VALID_MONEY_OWED_FOR_LEND_COMMAND \u003d \"12.80\";","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" public static final Float VALID_MONEY_OWED_FOR_LEND_COMMAND_IN_FLOAT \u003d (float) 12.80;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_AMY \u003d \" \" + PREFIX_BIRTHDAY + VALID_BIRTHDAY_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" public static final String BIRTHDAY_BOB \u003d \" \" + PREFIX_BIRTHDAY + VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" public static final String MONEY_OWED_AMY \u003d \" \" + PREFIX_MONEY_OWED + VALID_MONEY_OWED_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":" public static final String MONEY_OWED_BOB \u003d \" \" + PREFIX_MONEY_OWED + VALID_MONEY_OWED_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" public static final String TAG_DESC_MONDAY \u003d \" \" + PREFIX_DAYS_AVAILABLE + VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" public static final String TAG_DESC_TUESDAY \u003d \" \" + PREFIX_DAYS_AVAILABLE + VALID_DAY_AVAILABLE_TUESDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" public static final String INVALID_MONEY_OWED_FOR_SPLIT_COMMAND \u003d \"0.01\"; // split amount should be at least 0.01;","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":" public static final String INVALID_DAY_DESC \u003d \" \" + PREFIX_DAYS_AVAILABLE + \"noneday\"; // not in enum values","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"NewtonKoh":1,"alvinnzz":8,"JerryO3":9,"-":128,"zhekaiii":5}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" public void execute_daysAvailableSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" .withTags(VALID_TAG_HUSBAND).withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY)","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" .build();","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"JerryO3"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()), editedPerson);","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(editCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":161,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"JerryO3":20,"-":180,"zhekaiii":28}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" // different days available -\u003e returns false","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", birthday\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" + editPersonDescriptor.getBirthday().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", moneyOwed\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" + editPersonDescriptor.getMoneyOwed().orElse(null) + \", daysAvailable\u003d\"","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" + editPersonDescriptor.getDaysAvailable().orElse(null) + \"}\";","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"alvinnzz":1,"JerryO3":7,"-":69,"zhekaiii":2}},{"path":"src/test/java/seedu/address/logic/commands/FilterNameCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" * Contains integration tests (interaction with the Model) for {@code FilterNameCommand}.","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":"public class FilterNameCommandTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand findFirstCommand \u003d new FilterNameCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand findSecondCommand \u003d new FilterNameCommand(secondPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand findFirstCommandCopy \u003d new FilterNameCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand command \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command,","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand command \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command,","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" public void execute_matchAllMultipleKeywords_personFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Carl\", true);","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" FilterNameCommand command \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command,","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(CARL), model.getFilteredPersonList());","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" public void execute_matchAllMultipleKeywords_noPersonFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\", true);","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" FilterNameCommand command \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command,","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage)","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":" assertEquals(List.of(), model.getFilteredPersonList());","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand filterNameCommand \u003d new FilterNameCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"JerryO3"},"content":" String expected \u003d FilterNameCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"JerryO3"},"content":" assertEquals(expected, filterNameCommand.toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput, boolean matchAll) {","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")), matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"JerryO3":11,"-":78,"zhekaiii":43}},{"path":"src/test/java/seedu/address/logic/commands/FilterTagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.JOHN;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"public class FilterTagCommandTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" public void equals() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" new PersonHasTagPredicate(TestUtil.stringsToTags(Collections.singletonList(\"first\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" new PersonHasTagPredicate(TestUtil.stringsToTags(Collections.singletonList(\"second\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand filterFirstCommand \u003d new FilterTagCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand filterSecondCommand \u003d new FilterTagCommand(secondPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommand));","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand findFirstCommandCopy \u003d new FilterTagCommand(firstPredicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" assertTrue(filterFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" assertFalse(filterFirstCommand.equals(1));","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" assertFalse(filterFirstCommand.equals(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" assertFalse(filterFirstCommand.equals(filterSecondCommand));","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" public void execute_zeroKeywords_noPersonFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" public void execute_oneKeywords_onePersonFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"TAs\");","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":" assertEquals(Arrays.asList(JOHN), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" public void execute_oneKeywords_multiplePersonsFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"friends\");","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" public void execute_multipleKeywords_onePersonFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"Acquaintances TAs CCA\");","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"JerryO3"},"content":" assertEquals(Arrays.asList(JOHN), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"JerryO3"},"content":" public void execute_multipleKeywords_multiplePersonsFound() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"JerryO3"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 4);","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"friends TAs CCA\");","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"JerryO3"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"JerryO3"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL, JOHN), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" public void execute_matchAllMultipleKeywords_personFound() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":" PersonHasTagPredicate predicate \u003d preparePredicate(\"friends owesMoney\", true);","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" FilterTagCommand command \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"JerryO3"},"content":" public void toStringMethod() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"keyword\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand filterTagCommand \u003d new FilterTagCommand(predicate);","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"JerryO3"},"content":" String expected \u003d FilterTagCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":145,"author":{"gitId":"JerryO3"},"content":" assertEquals(expected, filterTagCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"JerryO3"},"content":" * Parses {@code userInput} into a {@code PersonHasTagPredicate}.","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"JerryO3"},"content":" private PersonHasTagPredicate preparePredicate(String userInput) throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"JerryO3"},"content":" return new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(userInput.split(\"\\\\s+\"))));","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":" private PersonHasTagPredicate preparePredicate(String userInput, boolean matchAll) throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" return new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(userInput.split(\"\\\\s+\"))), matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"JerryO3":115,"zhekaiii":43}},{"path":"src/test/java/seedu/address/logic/commands/LendCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND_IN_FLOAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"class LendCommandTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" public void execute_withInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" LendCommand lendCommand \u003d new LendCommand(invalidIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" assertCommandFailure(lendCommand, model, expectedMessage);","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" public void execute_withSuccess() {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" LendCommand lendCommand \u003d new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getName(), personInFilteredList.getPhone(), personInFilteredList.getEmail(),","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getAddress(), personInFilteredList.getRemark(), personInFilteredList.getTags(),","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getBirthday(),","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getMoneyOwed().addAmountOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND_IN_FLOAT),","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" personInFilteredList.getDaysAvailable());","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" LendCommand.MESSAGE_LENT_PERSON_SUCCESS,","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" expectedModel.setPerson(personInFilteredList, editedPerson);","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" assertCommandSuccess(lendCommand,","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" model,","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" new CommandResult(expectedMessage).withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" expectedModel);","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" public void equals() {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" final LendCommand standardCommand \u003d new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed differentLentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" LendCommand commandWithSameValues \u003d new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"alvinnzz"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"alvinnzz"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"alvinnzz"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"alvinnzz"},"content":" // different types of command -\u003e returns false","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new LendCommand(INDEX_SECOND_PERSON, lentAmount)));","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" // different MoneyOwed -\u003e returns false","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new LendCommand(targetIndex, differentLentAmount)));","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"alvinnzz"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"alvinnzz"},"content":" LendCommand lendCommand \u003d new LendCommand(targetIndex, lentAmount);","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"alvinnzz"},"content":" String expected \u003d LendCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"alvinnzz"},"content":" + \", amountToLend\u003d\"","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"alvinnzz"},"content":" + lentAmount + \"}\";","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"alvinnzz"},"content":" assertEquals(expected, lendCommand.toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"alvinnzz":105}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" new ListCommand(),","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(ListCommand.MESSAGE_SUCCESS).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" new ListCommand(),","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(ListCommand.MESSAGE_SUCCESS).withPersonToShow(Model.INVALID_PERSON_INDEX),","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":37,"zhekaiii":10}},{"path":"src/test/java/seedu/address/logic/commands/PayCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_MOBILE;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":"public class PayCommandTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" public void execute_validIndex_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" Person personToPay \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" PayCommand payCommand \u003d new PayCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" String expectedMessage \u003d String.format(PayCommand.MESSAGE_GENERATE_QR_SUCCESS,","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" Messages.format(personToPay));","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" payCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage, personToPay).withPersonToShow(model.findIndex(personToPay)),","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" PayCommand payCommand \u003d new PayCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(payCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" PayCommand payCommand \u003d new PayCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(payCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" public void execute_nonSingaporeanNumber_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" final String[] invalidNumbers \u003d new String[]{\"72478212\",","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" \"82133\",","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" \"934234\"};","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(new PersonBuilder(AMY).withPhone(invalidNumbers[0]).build());","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(new PersonBuilder(BOB).withPhone(invalidNumbers[1]).build());","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(new PersonBuilder(CARL).withPhone(invalidNumbers[2]).build());","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" Model model \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(new PayCommand(INDEX_FIRST_PERSON), model, MESSAGE_INVALID_MOBILE);","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(new PayCommand(INDEX_SECOND_PERSON), model, MESSAGE_INVALID_MOBILE);","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(new PayCommand(INDEX_THIRD_PERSON), model, MESSAGE_INVALID_MOBILE);","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" PayCommand payFirstCommand \u003d new PayCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" PayCommand paySecondCommand \u003d new PayCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" assertEquals(payFirstCommand, payFirstCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" PayCommand payFirstCommandCopy \u003d new PayCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" assertEquals(payFirstCommand, payFirstCommandCopy);","lastModifiedDate":"2024-03-27"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(payFirstCommand, 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(payFirstCommand, null);","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(payFirstCommand, paySecondCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":" PayCommand payCommand \u003d new PayCommand(targetIndex);","lastModifiedDate":"2024-03-27"},{"lineNumber":114,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d PayCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"zhekaiii"},"content":" assertEquals(expected, payCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":116,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":117}},{"path":"src/test/java/seedu/address/logic/commands/RemarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NewtonKoh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"NewtonKoh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"NewtonKoh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"NewtonKoh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NewtonKoh"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"NewtonKoh"},"content":"class RemarkCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"NewtonKoh"},"content":" private static final String REMARK_STUB \u003d \"Some remark\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"NewtonKoh"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" public void execute_addRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"NewtonKoh"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON, new Remark(editedPerson.getRemark().value));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NewtonKoh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" remarkCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(model.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"NewtonKoh"},"content":" public void execute_deleteRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"NewtonKoh"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withRemark(\"\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"NewtonKoh"},"content":" new Remark(editedPerson.getRemark().toString()));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"NewtonKoh"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_DELETE_REMARK_SUCCESS, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"NewtonKoh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"NewtonKoh"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" remarkCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(model.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"NewtonKoh"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"NewtonKoh"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"NewtonKoh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"NewtonKoh"},"content":" Person editedPerson \u003d new PersonBuilder(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()))","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"NewtonKoh"},"content":" .withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_PERSON, new Remark(editedPerson.getRemark().value));","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"NewtonKoh"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"NewtonKoh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"NewtonKoh"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" remarkCommand,","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(expectedMessage).withPersonToShow(model.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"NewtonKoh"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"NewtonKoh"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(outOfBoundIndex, new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"NewtonKoh"},"content":" assertCommandFailure(remarkCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"NewtonKoh"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"NewtonKoh"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"NewtonKoh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"NewtonKoh"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"NewtonKoh"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"NewtonKoh"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"NewtonKoh"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"NewtonKoh"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"NewtonKoh"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(outOfBoundIndex, new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"NewtonKoh"},"content":" assertCommandFailure(remarkCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"NewtonKoh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"NewtonKoh":99,"zhekaiii":15}},{"path":"src/test/java/seedu/address/logic/commands/ResetDebtCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"public class ResetDebtCommandTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public void execute_validPerson_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" // Benson owes money","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand command \u003d new ResetDebtCommand(BENSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" Person editedPerson \u003d new PersonBuilder(BENSON).withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" expectedModel.setPerson(BENSON, editedPerson);","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(String.format(ResetDebtCommand.RESET_SUCCESS_MESSAGE, BENSON.getName()))","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(expectedModel.findIndex(editedPerson)),","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" // Alice doesn\u0027t owe money so don\u0027t need to replace her in the address book","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" command \u003d new ResetDebtCommand(ALICE);","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" command,","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" model,","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" new CommandResult(String.format(ResetDebtCommand.RESET_SUCCESS_MESSAGE, ALICE.getName()))","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" .withPersonToShow(model.findIndex(ALICE)),","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" public void execute_personNotFound_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand command \u003d new ResetDebtCommand(AMY);","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" assertCommandFailure(command, model, String.format(ResetDebtCommand.PERSON_NOT_FOUND_MESSAGE, AMY.getPhone()));","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand resetDebtFirstCommand \u003d new ResetDebtCommand(AMY);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand resetDebtSecondCommand \u003d new ResetDebtCommand(BOB);","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" assertEquals(resetDebtFirstCommand, resetDebtFirstCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand resetDebtFirstCommandCopy \u003d new ResetDebtCommand(AMY);","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" assertEquals(resetDebtFirstCommand, resetDebtFirstCommandCopy);","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(resetDebtFirstCommand, 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(resetDebtFirstCommand, null);","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(resetDebtFirstCommand, resetDebtSecondCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" Person person \u003d AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" ResetDebtCommand resetDebtCommand \u003d new ResetDebtCommand(person);","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d ResetDebtCommand.class.getCanonicalName() + \"{originalPerson\u003d\" + person + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" assertEquals(expected, resetDebtCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":84}},{"path":"src/test/java/seedu/address/logic/commands/SortCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.SortCommand.NAME_SORT_TYPE;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.GEORGE;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.exceptions.InvalidSortTypeException;","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":"public class SortCommandTest {","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" public void constructor_invalidSortType_throwsInvalidSortTypeException() {","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" final String invalidSortType \u003d \"hello\";","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" assertThrows(InvalidSortTypeException.class, () -\u003e new SortCommand(invalidSortType));","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" public void constructor_validSortType_success() throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" new SortCommand(SortCommand.MONEY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" public void equals() throws InvalidSortTypeException {","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" SortCommand sortByBirthday \u003d new SortCommand(SortCommand.BIRTHDAY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" SortCommand sortByBirthdayCopy \u003d new SortCommand(SortCommand.BIRTHDAY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" SortCommand sortByName \u003d new SortCommand(NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" assertEquals(sortByBirthday, sortByBirthday);","lastModifiedDate":"2024-03-25"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" assertEquals(sortByBirthday, sortByBirthdayCopy);","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":" // different sorting methods -\u003e returns false","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(sortByBirthday, sortByName);","lastModifiedDate":"2024-03-25"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(sortByBirthday, null);","lastModifiedDate":"2024-03-25"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" public void execute_sortByBirthday() throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" // This is the correct order after sorting","lastModifiedDate":"2024-03-25"},{"lineNumber":69,"author":{"gitId":"zhekaiii"},"content":" Person[] persons \u003d new Person[]{","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(ALICE)","lastModifiedDate":"2024-03-25"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(LocalDate.now().withYear(1999).plusDays(1)","lastModifiedDate":"2024-03-25"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" .format(DateTimeFormatter.ofPattern(Birthday.BIRTHDAY_FORMAT))).build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(BOB)","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(LocalDate.now().withYear(1990).plusDays(2)","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" .format(DateTimeFormatter.ofPattern(Birthday.BIRTHDAY_FORMAT))).build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(CARL)","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(LocalDate.now().withYear(1989).plusDays(-10)","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" .format(DateTimeFormatter.ofPattern(Birthday.BIRTHDAY_FORMAT))).build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(DANIEL)","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(LocalDate.now().withYear(2000).plusDays(-2)","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" .format(DateTimeFormatter.ofPattern(Birthday.BIRTHDAY_FORMAT))).build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(ELLE)","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"\").build(),","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(GEORGE)","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"\").build()","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" };","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":" // Add to address book in random order","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[5]);","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[2]);","lastModifiedDate":"2024-03-25"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[3]);","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[4]);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[0]);","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[1]);","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" final Model model \u003d new ModelManager(new AddressBook(addressBook), new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" final Model expectedModel \u003d new ModelManager(new AddressBook(addressBook), new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" final String expectedMessage \u003d String.format(Messages.MESSAGE_SORTED_OVERVIEW, SortCommand.BIRTHDAY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(Birthday.BIRTHDAY_COMPARATOR);","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" SortCommand command \u003d new SortCommand(SortCommand.BIRTHDAY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-25"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(persons), model.getFilteredPersonList());","lastModifiedDate":"2024-03-25"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":107,"author":{"gitId":"zhekaiii"},"content":" public void execute_sortByName() throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":108,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-25"},{"lineNumber":109,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(BOB);","lastModifiedDate":"2024-03-25"},{"lineNumber":110,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(ELLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-25"},{"lineNumber":112,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(CARL);","lastModifiedDate":"2024-03-25"},{"lineNumber":113,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(DANIEL);","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":115,"author":{"gitId":"zhekaiii"},"content":" final Model model \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":116,"author":{"gitId":"zhekaiii"},"content":" final Model expectedModel \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":117,"author":{"gitId":"zhekaiii"},"content":" final String expectedMessage \u003d String.format(Messages.MESSAGE_SORTED_OVERVIEW, NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(Name.NAME_COMPARATOR);","lastModifiedDate":"2024-03-25"},{"lineNumber":119,"author":{"gitId":"zhekaiii"},"content":" SortCommand command \u003d new SortCommand(NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-25"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(ALICE, BOB, CARL, DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-25"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":" public void execute_sortByMoneyOwed() throws ParseException {","lastModifiedDate":"2024-03-25"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" // This is the correct order after sorting","lastModifiedDate":"2024-03-25"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" Person[] persons \u003d new Person[]{","lastModifiedDate":"2024-03-25"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(ALICE).withMoneyOwed(\"-2\").build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(BOB).withMoneyOwed(\"-1.5\").build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":130,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(CARL).withMoneyOwed(\"4\").build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(HOON).withMoneyOwed(\"4\").build(),","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(DANIEL).withMoneyOwed(\"3\").build(),","lastModifiedDate":"2024-03-25"},{"lineNumber":133,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(ELLE).withMoneyOwed(\"0\").build(),","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"zhekaiii"},"content":" new PersonBuilder(GEORGE).withMoneyOwed(\"0\").build()","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"zhekaiii"},"content":" };","lastModifiedDate":"2024-03-25"},{"lineNumber":136,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":137,"author":{"gitId":"zhekaiii"},"content":" // Add to address book in random order","lastModifiedDate":"2024-03-25"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-25"},{"lineNumber":139,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[4]);","lastModifiedDate":"2024-03-25"},{"lineNumber":140,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[2]);","lastModifiedDate":"2024-03-25"},{"lineNumber":141,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[3]);","lastModifiedDate":"2024-03-25"},{"lineNumber":142,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[5]);","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[0]);","lastModifiedDate":"2024-03-25"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[6]);","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(persons[1]);","lastModifiedDate":"2024-03-25"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":" final Model model \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" final Model expectedModel \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" final String expectedMessage \u003d String.format(Messages.MESSAGE_SORTED_OVERVIEW, SortCommand.MONEY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(MoneyOwed.MONEY_COMPARATOR);","lastModifiedDate":"2024-03-25"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" SortCommand command \u003d new SortCommand(SortCommand.MONEY_SORT_TYPE);","lastModifiedDate":"2024-03-25"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-25"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(persons), model.getFilteredPersonList());","lastModifiedDate":"2024-03-25"},{"lineNumber":154,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" public void execute_clearSort() throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(BOB);","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(ELLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":161,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(CARL);","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"zhekaiii"},"content":" addressBook.addPerson(DANIEL);","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"zhekaiii"},"content":" final Model model \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"zhekaiii"},"content":" final Model expectedModel \u003d new ModelManager(addressBook, new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"zhekaiii"},"content":" final String expectedSortMessage \u003d String.format(Messages.MESSAGE_SORTED_OVERVIEW, NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"zhekaiii"},"content":" final String expectedClearMessage \u003d Messages.MESSAGE_SORT_CLEARED;","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(Name.NAME_COMPARATOR);","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"zhekaiii"},"content":" SortCommand sortByNameCommand \u003d new SortCommand(NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(sortByNameCommand, model, expectedSortMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(ALICE, BOB, CARL, DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-26"},{"lineNumber":174,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":175,"author":{"gitId":"zhekaiii"},"content":" expectedModel.updatePersonComparator(null);","lastModifiedDate":"2024-03-26"},{"lineNumber":176,"author":{"gitId":"zhekaiii"},"content":" SortCommand clearSortCommand \u003d new SortCommand(SortCommand.CLEAR_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":177,"author":{"gitId":"zhekaiii"},"content":" assertCommandSuccess(clearSortCommand, model, expectedClearMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"zhekaiii"},"content":" assertEquals(Arrays.asList(BOB, ELLE, ALICE, CARL, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-26"},{"lineNumber":179,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"zhekaiii"},"content":" SortCommand command \u003d new SortCommand(NAME_SORT_TYPE);","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d SortCommand.class.getCanonicalName() + \"{sortType\u003d\" + NAME_SORT_TYPE + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"zhekaiii"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"zhekaiii":187}},{"path":"src/test/java/seedu/address/logic/commands/SplitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MONEY_OWED_FOR_SPLIT_COMMAND;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"import java.util.List;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":"class SplitCommandTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" public void getSplitAmount_with_validArgs() {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" Float totalAmount \u003d (float) 10.20;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" int numPeople \u003d 2;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" Float expectedAmount \u003d (float) 5.10;","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" assertEquals(SplitCommand.getSplitAmount(totalAmount, numPeople), expectedAmount);","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" public void hasValidIndexList_withValidIndexList() {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" int sizeOfLastShownList \u003d 3;","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" assertTrue(SplitCommand.hasValidIndexList(indexList, sizeOfLastShownList));","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" public void hasValidIndexList_withInvalidIndexList() {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" int sizeOfLastShownList \u003d model.getFilteredPersonList().size();","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":" Index invalidIndex \u003d Index.fromOneBased(sizeOfLastShownList + 1);","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e invalidIndexList \u003d Arrays.asList(INDEX_FIRST_PERSON, invalidIndex);","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" assertFalse(SplitCommand.hasValidIndexList(invalidIndexList, sizeOfLastShownList));","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" public void execute_withInvalidSplitAmount_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(INVALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" SplitCommand splitCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d SplitCommand.MESSAGE_INVALID_AMOUNT;","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" assertCommandFailure(splitCommand, model, expectedMessage);","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" public void execute_withInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"alvinnzz"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(invalidIndex, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" SplitCommand splitCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" assertCommandFailure(splitCommand, model, expectedMessage);","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"alvinnzz"},"content":" public void execute_splitBetweenTwoUnfilteredList_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"alvinnzz"},"content":" // Creating splitCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"alvinnzz"},"content":" SplitCommand splitCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"alvinnzz"},"content":" // Getting split amount for this split command","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"alvinnzz"},"content":" Float splitAmount \u003d SplitCommand.getSplitAmount(totalOwed.getAmount(), indexList.size() + 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"alvinnzz"},"content":" String expectedMessage \u003d String.format(\"$\" + VALID_MONEY_OWED_FOR_SPLIT_COMMAND","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"alvinnzz"},"content":" + \" has been split among you and \" + indexList.size() + \" more people!\");","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" // Get the expected model for this split command","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"alvinnzz"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"alvinnzz"},"content":" Person first \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"alvinnzz"},"content":" Person second \u003d model.getFilteredPersonList().get(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"alvinnzz"},"content":" Person expectedFirst \u003d new Person(","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"alvinnzz"},"content":" first.getName(), first.getPhone(), first.getEmail(),","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"alvinnzz"},"content":" first.getAddress(), first.getRemark(), first.getTags(),","lastModifiedDate":"2024-03-27"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":" first.getBirthday(), first.getMoneyOwed().addAmountOwed(splitAmount),","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" first.getDaysAvailable());","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"alvinnzz"},"content":" Person expectedSecond \u003d new Person(","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"alvinnzz"},"content":" second.getName(), second.getPhone(), second.getEmail(),","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"alvinnzz"},"content":" second.getAddress(), second.getRemark(), second.getTags(),","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"JerryO3"},"content":" second.getBirthday(), second.getMoneyOwed().addAmountOwed(splitAmount),","lastModifiedDate":"2024-03-29"},{"lineNumber":104,"author":{"gitId":"JerryO3"},"content":" second.getDaysAvailable());","lastModifiedDate":"2024-03-29"},{"lineNumber":105,"author":{"gitId":"alvinnzz"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), expectedFirst);","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"alvinnzz"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(1), expectedSecond);","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"alvinnzz"},"content":" assertCommandSuccess(splitCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":110,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":" void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":114,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"alvinnzz"},"content":" final SplitCommand standardCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":116,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e differentIndexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON, INDEX_THIRD_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":118,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed differentTotalOwed \u003d new MoneyOwed(\"40.30\");","lastModifiedDate":"2024-03-27"},{"lineNumber":119,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":120,"author":{"gitId":"alvinnzz"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":121,"author":{"gitId":"alvinnzz"},"content":" SplitCommand commandWithSameValues \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":122,"author":{"gitId":"alvinnzz"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":124,"author":{"gitId":"alvinnzz"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"alvinnzz"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":128,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"alvinnzz"},"content":" // different types of command -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"alvinnzz"},"content":" // different index list -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new SplitCommand(differentIndexList, totalOwed)));","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"alvinnzz"},"content":" // different MoneyOwed -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":137,"author":{"gitId":"alvinnzz"},"content":" assertFalse(standardCommand.equals(new SplitCommand(indexList, differentTotalOwed)));","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":139,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":140,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":141,"author":{"gitId":"alvinnzz"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":142,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":143,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"alvinnzz"},"content":" SplitCommand splitCommand \u003d new SplitCommand(indexList, totalOwed);","lastModifiedDate":"2024-03-27"},{"lineNumber":145,"author":{"gitId":"alvinnzz"},"content":" String expected \u003d SplitCommand.class.getCanonicalName() + \"{indexListToSplit\u003d\" + indexList","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"alvinnzz"},"content":" + \", totalOwed\u003d\"","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"alvinnzz"},"content":" + totalOwed + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"alvinnzz"},"content":" assertEquals(expected, splitCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"alvinnzz":146,"JerryO3":4}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DAY_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MONEY_OWED_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MONEY_OWED_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_MONDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_TUESDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_TUESDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-25"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" .withDaysAvailable(VALID_DAY_AVAILABLE_TUESDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + BIRTHDAY_BOB + MONEY_OWED_BOB + TAG_DESC_TUESDAY,","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"alvinnzz"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"alvinnzz"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + BIRTHDAY_BOB + MONEY_OWED_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"JerryO3"},"content":" // multiple days - all accepted","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":" Person expectedPersonMultipleDays \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" .withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY, VALID_DAY_AVAILABLE_TUESDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + BIRTHDAY_BOB + MONEY_OWED_BOB + TAG_DESC_MONDAY","lastModifiedDate":"2024-03-25"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" + TAG_DESC_TUESDAY,","lastModifiedDate":"2024-03-25"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" new AddCommand(expectedPersonMultipleDays));","lastModifiedDate":"2024-03-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"JerryO3"},"content":" Person expectedPersonNoTags \u003d new PersonBuilder(AMY).withTags().withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY)","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"JerryO3"},"content":" .build();","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"JerryO3"},"content":" + BIRTHDAY_AMY + MONEY_OWED_AMY + TAG_DESC_MONDAY,","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"JerryO3"},"content":" new AddCommand(expectedPersonNoTags));","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"JerryO3"},"content":" // zero daysAvailable","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"JerryO3"},"content":" Person expectedPersonNoDaysAvailable \u003d new PersonBuilder(AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"JerryO3"},"content":" + BIRTHDAY_AMY + MONEY_OWED_AMY + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"JerryO3"},"content":" new AddCommand(expectedPersonNoDaysAvailable));","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"JerryO3"},"content":" // invalid day","lastModifiedDate":"2024-03-25"},{"lineNumber":218,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-25"},{"lineNumber":219,"author":{"gitId":"JerryO3"},"content":" + TAG_DESC_HUSBAND + VALID_TAG_FRIEND + INVALID_DAY_DESC, Day.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":220,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"alvinnzz":2,"JerryO3":37,"-":190,"zhekaiii":1}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterDayCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterNameCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterTagCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.LendCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.PayCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.SortCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.SplitCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonAvailableOnDayPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand command \u003d (FilterNameCommand) parser.parseCommand(","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand.COMMAND_WORD + \" name \"","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" FilterNameCommand test \u003d new FilterNameCommand(new NameContainsKeywordsPredicate(keywords));","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" assertEquals(test , command);","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"JerryO3"},"content":" public void parseCommand_filterTags() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"JerryO3"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"JerryO3"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(FilterCommand.COMMAND_WORD","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"JerryO3"},"content":" + \" tag \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"JerryO3"},"content":" assertEquals(new FilterTagCommand(new PersonHasTagPredicate(TestUtil.stringsToTags(keywords))), command);","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":116,"author":{"gitId":"JerryO3"},"content":" public void parseCommand_filterDays() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"JerryO3"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"monday\", \"tuesday\", \"wednesday\");","lastModifiedDate":"2024-03-27"},{"lineNumber":118,"author":{"gitId":"JerryO3"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(FilterCommand.COMMAND_WORD","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"JerryO3"},"content":" + \" day \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-27"},{"lineNumber":120,"author":{"gitId":"JerryO3"},"content":" assertEquals(new FilterDayCommand(new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(keywords))),","lastModifiedDate":"2024-03-28"},{"lineNumber":121,"author":{"gitId":"JerryO3"},"content":" command);","lastModifiedDate":"2024-03-28"},{"lineNumber":122,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":124,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"alvinnzz"},"content":" public void parseCommand_split() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"alvinnzz"},"content":" List\u003cIndex\u003e indexList \u003d Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-27"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed totalOwed \u003d new MoneyOwed(CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":128,"author":{"gitId":"alvinnzz"},"content":" SplitCommand command \u003d (SplitCommand) parser.parseCommand(SplitCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"alvinnzz"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"alvinnzz"},"content":" + INDEX_SECOND_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"alvinnzz"},"content":" + CliSyntax.PREFIX_MONEY_OWED","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"alvinnzz"},"content":" + CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND);","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"alvinnzz"},"content":" assertEquals(new SplitCommand(indexList, totalOwed), command);","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"zhekaiii"},"content":" assertThrows(","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":148,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":149,"author":{"gitId":"zhekaiii"},"content":" public void parseCommand_sort() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":150,"author":{"gitId":"zhekaiii"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"zhekaiii"},"content":" SortCommand.COMMAND_WORD + \" \" + SortCommand.NAME_SORT_TYPE) instanceof SortCommand);","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"zhekaiii"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"zhekaiii"},"content":" SortCommand.COMMAND_WORD + \" \" + SortCommand.BIRTHDAY_SORT_TYPE) instanceof SortCommand);","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":156,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" public void parseCommand_pay() throws ParseException {","lastModifiedDate":"2024-03-27"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":" assertTrue(","lastModifiedDate":"2024-03-27"},{"lineNumber":159,"author":{"gitId":"zhekaiii"},"content":" parser.parseCommand(PayCommand.COMMAND_WORD + \" \" + 1) instanceof PayCommand","lastModifiedDate":"2024-03-27"},{"lineNumber":160,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":162,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":163,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":164,"author":{"gitId":"alvinnzz"},"content":" public void parseCommand_lend() throws Exception {","lastModifiedDate":"2024-04-03"},{"lineNumber":165,"author":{"gitId":"alvinnzz"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":166,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed lentAmount \u003d new MoneyOwed(CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":167,"author":{"gitId":"alvinnzz"},"content":" LendCommand command \u003d (LendCommand) parser.parseCommand(LendCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"alvinnzz"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-04-03"},{"lineNumber":169,"author":{"gitId":"alvinnzz"},"content":" + CliSyntax.PREFIX_MONEY_OWED","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"alvinnzz"},"content":" + CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND);","lastModifiedDate":"2024-04-03"},{"lineNumber":171,"author":{"gitId":"alvinnzz"},"content":" assertEquals(new LendCommand(targetIndex, lentAmount), command);","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"alvinnzz":26,"JerryO3":34,"-":96,"zhekaiii":17}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DAY_DESC;","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_MONDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" private static final String DAY_EMPTY \u003d \" \" + PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \"1\" + INVALID_DAY_DESC, Day.MESSAGE_CONSTRAINTS); // invalid day","lastModifiedDate":"2024-03-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":171,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":172,"author":{"gitId":"JerryO3"},"content":" // daysAvailable","lastModifiedDate":"2024-03-25"},{"lineNumber":173,"author":{"gitId":"JerryO3"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_MONDAY;","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"JerryO3"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"JerryO3"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":198,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":208,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":214,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":221,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":222,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":223,"author":{"gitId":"JerryO3"},"content":" public void parse_resetDays_success() {","lastModifiedDate":"2024-03-25"},{"lineNumber":224,"author":{"gitId":"JerryO3"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-25"},{"lineNumber":225,"author":{"gitId":"JerryO3"},"content":" String userInput \u003d targetIndex.getOneBased() + DAY_EMPTY;","lastModifiedDate":"2024-03-25"},{"lineNumber":226,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":227,"author":{"gitId":"JerryO3"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withDaysAvailable().build();","lastModifiedDate":"2024-03-25"},{"lineNumber":228,"author":{"gitId":"JerryO3"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-25"},{"lineNumber":229,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":230,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-25"},{"lineNumber":231,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":232,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"JerryO3":24,"-":208}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterDayCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.commands.FilterTagCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonAvailableOnDayPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.PersonHasTagPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" public void parse_validArgs_returnsFilterTagCommand() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand expectedFilterTagCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" new FilterTagCommand(new PersonHasTagPredicate(TestUtil","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":" .stringsToTags(Arrays.asList(\"friends\", \"TAs\"))));","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"tag friends TAs\", expectedFilterTagCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"tag \\n friends \\n \\t TAs \\t\", expectedFilterTagCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" public void parse_caseInsensitiveArgs_returnsFilterTagCommand() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand expectedFilterTagCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" new FilterTagCommand(new PersonHasTagPredicate(TestUtil","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" .stringsToTags(Arrays.asList(\"friends\", \"TAs\"))));","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"tag friends TAs\", expectedFilterTagCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"tag \\n frieNDS \\n \\t TAs \\t\", expectedFilterTagCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" public void parse_validArgs_returnsFilterDayCommand() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" FilterDayCommand expectedFilterDayCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" new FilterDayCommand(new PersonAvailableOnDayPredicate(TestUtil","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" .stringsToDays(Arrays.asList(\"monday\", \"tuesday\"))));","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"day monday tuesday\", expectedFilterDayCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"day \\n monday \\n \\t tuesday \\t\", expectedFilterDayCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" public void parse_caseInsensitiveArgs_returnsFilterDayCommand() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":" FilterDayCommand expectedFilterDayCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" new FilterDayCommand(new PersonAvailableOnDayPredicate(TestUtil","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" .stringsToDays(Arrays.asList(\"monday\", \"tuesday\"))));","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"day moNday tUesday\", expectedFilterDayCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" assertParseSuccess(parser, \"day \\n mondAY \\n \\t tuEsday \\t\", expectedFilterDayCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" public void parse_emptyType_throwParseException() throws Exception {","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \"monday tuesday\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"JerryO3"},"content":" FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":" public void parse_specifiedTypeTagNoArguments_throwParseException() throws Exception {","lastModifiedDate":"2024-03-28"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \"tag\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"JerryO3"},"content":" FilterTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" public void parse_specifiedTypeDayNoArguments_throwParseException() throws Exception {","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" assertParseFailure(parser, \"day\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":" FilterDayCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"JerryO3":96}},{"path":"src/test/java/seedu/address/logic/parser/LendCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_LEND_COMMAND;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.LendCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"public class LendCommandParserTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" private LendCommandParser parser \u003d new LendCommandParser();","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" void parse_emptyArgs_throwsParseException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":" // negative index","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"-5 $/22.40\",","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" // zero index","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"0 $/22.40\" + NAME_DESC_AMY,","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1 some random string\",","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" void parse_missingMoneyOwed_throwsParseException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, LendCommand.MESSAGE_MISSING_AMOUNT));","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" public void parse_validArgs_returnsLendCommand() {","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" LendCommand expectedLendCommand \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" new LendCommand(INDEX_FIRST_PERSON, new MoneyOwed(VALID_MONEY_OWED_FOR_LEND_COMMAND));","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" assertParseSuccess(parser, \"1 $/12.80\", expectedLendCommand);","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" assertParseSuccess(parser, \" \\n 1 \\t $/12.80 \\t\", expectedLendCommand);","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"alvinnzz":57}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" private static final String VALID_DAY_1 \u003d \"monday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":" private static final String VALID_DAY_2 \u003d \"monday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"JerryO3"},"content":" private static final String INVALID_DAY \u003d \"noday\";","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":201,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":202,"author":{"gitId":"JerryO3"},"content":" public void parseDays_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-25"},{"lineNumber":203,"author":{"gitId":"JerryO3"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseDays(null));","lastModifiedDate":"2024-03-25"},{"lineNumber":204,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":205,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":206,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":207,"author":{"gitId":"JerryO3"},"content":" public void parseDays_collectionWithInvalidDays_throwsParseException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":208,"author":{"gitId":"JerryO3"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseDays(Arrays.asList(VALID_DAY_1, INVALID_DAY)));","lastModifiedDate":"2024-03-25"},{"lineNumber":209,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":210,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":211,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":212,"author":{"gitId":"JerryO3"},"content":" public void parseDays_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-25"},{"lineNumber":213,"author":{"gitId":"JerryO3"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-25"},{"lineNumber":214,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":215,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":216,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":217,"author":{"gitId":"JerryO3"},"content":" public void parseDays_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2024-03-25"},{"lineNumber":218,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e actualDaySet \u003d ParserUtil.parseDays(Arrays.asList(VALID_DAY_1, VALID_DAY_2));","lastModifiedDate":"2024-03-29"},{"lineNumber":219,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e expectedDaySet \u003d new HashSet\u003c\u003e(Arrays.asList(Day.getDay(VALID_DAY_1), Day.getDay(VALID_DAY_2)));","lastModifiedDate":"2024-03-29"},{"lineNumber":220,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":221,"author":{"gitId":"JerryO3"},"content":" assertEquals(expectedDaySet, actualDaySet);","lastModifiedDate":"2024-03-25"},{"lineNumber":222,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"JerryO3":27,"-":196}},{"path":"src/test/java/seedu/address/logic/parser/PayCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.PayCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"public class PayCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" private PayCommandParser parser \u003d new PayCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" assertParseFailure(parser, \"pay\", String.format(","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, PayCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" assertParseFailure(parser, \"pay a\", String.format(","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, PayCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public void parse_validArgs_returnsPayCommand() {","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" assertParseSuccess(parser, \"1\", new PayCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":27}},{"path":"src/test/java/seedu/address/logic/parser/SortCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_SORT_TYPE;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.logic.commands.SortCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import seedu.address.model.person.exceptions.InvalidSortTypeException;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"public class SortCommandParserTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" private SortCommandParser parser \u003d new SortCommandParser();","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" public void parse_noArgs_throwsParseException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" assertParseFailure(parser, \"sort\",","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SortCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" public void parse_invalidCommand_throwsInvalidSortTypeException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" String invalidSortType \u003d \"moolah\";","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" assertParseFailure(parser, SortCommand.COMMAND_WORD + \" \" + invalidSortType,","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" String.format(MESSAGE_INVALID_SORT_TYPE, invalidSortType));","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" public void parse_validCommand_success() throws InvalidSortTypeException {","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" assertParseSuccess(parser, SortCommand.COMMAND_WORD + \" \" + SortCommand.BIRTHDAY_SORT_TYPE,","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" new SortCommand(SortCommand.BIRTHDAY_SORT_TYPE));","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"zhekaiii":34}},{"path":"src/test/java/seedu/address/logic/parser/SplitCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_FOR_SPLIT_COMMAND;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.logic.commands.SplitCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":"class SplitCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" private SplitCommandParser parser \u003d new SplitCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" void parse_emptyArgs_throwsParseException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"alvinnzz"},"content":" // negative index","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"-5 3 $/22.40\",","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"alvinnzz"},"content":" // zero index","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"0 3 $/22.40\" + NAME_DESC_AMY,","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"alvinnzz"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1 some random string\",","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1 i/ string\",","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"alvinnzz"},"content":" void parse_missingMoneyOwed_throwsParseException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"alvinnzz"},"content":" assertParseFailure(parser, \"1 2\",","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SplitCommand.MESSAGE_MISSING_AMOUNT));","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" public void parse_validArgs_returnsSplitCommand() {","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"alvinnzz"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"alvinnzz"},"content":" SplitCommand expectedSplitCommand \u003d","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" new SplitCommand(Arrays.asList(INDEX_FIRST_PERSON, INDEX_SECOND_PERSON),","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":" new MoneyOwed(VALID_MONEY_OWED_FOR_SPLIT_COMMAND));","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" assertParseSuccess(parser, \"1 2 $/20.40\", expectedSplitCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"alvinnzz"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"alvinnzz"},"content":" assertParseSuccess(parser, \" \\n 1 2\\t $/20.40 \\t\", expectedSplitCommand);","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"alvinnzz":64}},{"path":"src/test/java/seedu/address/logic/paynow/MerchantAccountInformationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"public class MerchantAccountInformationTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" public void constructor_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" new MerchantAccountInformation(\"81472392\");","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" assertEquals(","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" new MerchantAccountInformation(\"81472392\").toString(),","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" \"0009SG.PAYNOW\"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" + \"01010\"","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" + \"0211+6581472392\"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" + \"03011\"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" );","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":23}},{"path":"src/test/java/seedu/address/logic/paynow/PayNowCodeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import com.google.zxing.WriterException;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"public class PayNowCodeTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" public void generatePayNowQrCode_success() throws IOException, WriterException {","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" PayNowCode.generatePayNowQrCode(\"82371234\", 12.3F);","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":14}},{"path":"src/test/java/seedu/address/logic/paynow/PayNowFieldTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.logic.paynow;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"public class PayNowFieldTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(0, \"01\").toString(), \"000201\");","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(1, \"11\").toString(), \"010211\");","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(2, (float) 1.2).toString(), \"02041.20\");","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(2, 1.2).toString(), \"02041.20\");","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(53, \"Singapore\").toString(), \"5309Singapore\");","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new PayNowField(62, \"\").toString(), \"6200\");","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"zhekaiii":17}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.predicates.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"JerryO3":1,"-":131}},{"path":"src/test/java/seedu/address/model/person/BirthdayTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zhekaiii"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.model.person.Birthday.BIRTHDAY_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"zhekaiii"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"zhekaiii"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"zhekaiii"},"content":"public class BirthdayTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"zhekaiii"},"content":" public void constructor_invalidDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"zhekaiii"},"content":" String invalidDate \u003d \"asdf\";","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"zhekaiii"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Birthday(invalidDate));","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"zhekaiii"},"content":" public void constructor_dateAfterPresent_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"zhekaiii"},"content":" String futureDate \u003d LocalDate.now().plusDays(1).format(DateTimeFormatter.ofPattern(BIRTHDAY_FORMAT));","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"zhekaiii"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Birthday(futureDate));","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" public void isValidBirthday() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" // invalid birthdays","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" assertFalse(Birthday.isValidBirthday(\"asdf\")); // non-date string","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" assertFalse(Birthday.isValidBirthday(\"31/02/1998\")); // invalid date","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" // valid addresses","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(null)); // null will be treated as no birthday","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\"\")); // empty strings treated as no birthday","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\" \")); // pure whitespace treated as no birthday","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\"01/02/1999\")); // valid date","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\" 01/02/1999 \")); // valid date with whitespaces","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" assertTrue(Birthday.isValidBirthday(\"29/02/2000\")); // leap year","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" Birthday birthday \u003d new Birthday(\"01/02/1999\");","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" assertEquals(birthday, new Birthday(\"01/02/1999\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" assertEquals(birthday, birthday);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(null, birthday);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(5.0f, birthday);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" assertNotEquals(birthday, new Birthday(\"02/03/1998\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"zhekaiii":63}},{"path":"src/test/java/seedu/address/model/person/DayTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"public class DayTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":" public void isValidDay_validDay_true() {","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":" assertTrue(Day.isValidDay(\"monday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" public void isValidDay_invalidDay_false() {","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" assertFalse(Day.isValidDay(\"day\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" public void getDayTest_validDay_monday() {","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" assertEquals(Day.getDay(\"monday\"), Day.MONDAY);","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" public void getDayTest_invalidDay_isNull() {","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" assertNull(Day.getDay(\"noday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-25"}],"authorContributionMap":{"JerryO3":31}},{"path":"src/test/java/seedu/address/model/person/MoneyOwedTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alvinnzz"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"alvinnzz"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"alvinnzz"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"alvinnzz"},"content":"import seedu.address.testutil.Assert;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"public class MoneyOwedTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"alvinnzz"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"alvinnzz"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e new MoneyOwed(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"alvinnzz"},"content":" public void constructor_validMoneyString_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"alvinnzz"},"content":" MoneyOwed moneyOwed \u003d new MoneyOwed(\"100.00\");","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"alvinnzz"},"content":" assertEquals(100.00f, moneyOwed.moneyOwed);","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"alvinnzz"},"content":" public void constructor_invalidMoneyString_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"alvinnzz"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new MoneyOwed(\"abc\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"zhekaiii"},"content":" public void getMessage_noOwe() {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" MoneyOwed moneyOwed \u003d new MoneyOwed(\"0\");","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"zhekaiii"},"content":" assertEquals(moneyOwed.getMessage(), MoneyOwed.NO_MONEY_OWED_MESSAGE);","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"zhekaiii"},"content":" public void getMessage_userOwes() {","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"zhekaiii"},"content":" MoneyOwed moneyOwed \u003d new MoneyOwed(\"-12.5\");","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" assertEquals(moneyOwed.getMessage(), String.format(MoneyOwed.USER_OWES_MONEY_MESSAGE, \"12.50\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" public void getMessage_owesUser() {","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"zhekaiii"},"content":" MoneyOwed moneyOwed \u003d new MoneyOwed(\"5.40\");","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" assertEquals(moneyOwed.getMessage(), String.format(MoneyOwed.PERSON_OWES_MONEY_MESSAGE, \"5.40\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" public void getAmount() {","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"23.02\").getAmount(), 23.02f);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"-23.02\").getAmount(), -23.02f);","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" public void getAbsoluteAmount() {","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"23.02\").getAbsoluteAmount(), 23.02f);","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"-23.02\").getAbsoluteAmount(), 23.02f);","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"zhekaiii"},"content":" assertEquals(new MoneyOwed(\"0\").getAbsoluteAmount(), 0f);","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"alvinnzz"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"alvinnzz":28,"zhekaiii":30}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DAY_AVAILABLE_MONDAY;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" // different days -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withDaysAvailable(VALID_DAY_AVAILABLE_MONDAY).build();","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" // different birthday -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withBirthday(VALID_BIRTHDAY_BOB).build();","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" // different money owed -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMoneyOwed(VALID_MONEY_OWED_BOB).build();","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"alvinnzz"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"alvinnzz"},"content":" + \", remark\u003d\" + ALICE.getRemark() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"JerryO3"},"content":" + \", birthday\u003d\" + ALICE.getBirthday() + \", moneyOwed\u003d\" + ALICE.getMoneyOwed()","lastModifiedDate":"2024-03-25"},{"lineNumber":114,"author":{"gitId":"JerryO3"},"content":" + \", daysAvailable\u003d\" + ALICE.getDaysAvailable() + \"}\";","lastModifiedDate":"2024-03-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"alvinnzz":2,"JerryO3":8,"-":98,"zhekaiii":9}},{"path":"src/test/java/seedu/address/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-01-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" public void isSingaporeanNumber() {","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"zhekaiii"},"content":" assertTrue(new Phone(\"81236212\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"zhekaiii"},"content":" assertTrue(new Phone(\"97312382\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"zhekaiii"},"content":" assertFalse(new Phone(\"7234127\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"zhekaiii"},"content":" assertFalse(new Phone(\"88462\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"zhekaiii"},"content":" assertFalse(new Phone(\"943214\").isSingaporeanNumber());","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"-":60,"zhekaiii":9}},{"path":"src/test/java/seedu/address/model/person/predicates/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" assertFalse(firstPredicate.equals(new NameContainsKeywordsPredicate(firstPredicateKeywordList, true)));","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" public void test_nameMatchAllKeywords() {","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" // One keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" NameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" // Multiple keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Lee\"), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Lee Alice\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" // Only one matching keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" boolean matchAll \u003d true;","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords, matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"zhekaiii"},"content":" + \"{keywords\u003d\" + keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"zhekaiii"},"content":" + \", matchAll\u003d\" + matchAll + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"JerryO3":1,"-":81,"zhekaiii":27}},{"path":"src/test/java/seedu/address/model/person/predicates/PersonAvailableOnDayPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"public class PersonAvailableOnDayPredicateTest {","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" public void equals() throws Exception {","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" List\u003cDay\u003e firstPredicateKeywordList \u003d TestUtil.stringsToDays(Collections.singletonList(\"monday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" List\u003cDay\u003e secondPredicateKeywordList \u003d TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate firstPredicate \u003d new PersonAvailableOnDayPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate secondPredicate \u003d new PersonAvailableOnDayPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate firstPredicateCopy \u003d new PersonAvailableOnDayPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" assertFalse(firstPredicate.equals(new PersonAvailableOnDayPredicate(firstPredicateKeywordList, true)));","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public void test_availabilityContainsKeywords_returnsTrue() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" // One keyword","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate predicate \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Collections.singletonList(\"monday\")));","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\")));","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\", \"tuesday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\")));","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"tuesday\", \"wednesday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" public void test_availabilityDoesNotContainKeywords_returnsFalse() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" // Zero keywords","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" PersonAvailableOnDayPredicate predicate \u003d new PersonAvailableOnDayPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\")));","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withDaysAvailable(\"tuesday\", \"wednesday\").build()));","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":73,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"zhekaiii"},"content":" public void test_availabilityMatchAllKeywords() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"zhekaiii"},"content":" // One keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"zhekaiii"},"content":" PersonAvailableOnDayPredicate predicate \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Collections.singletonList(\"monday\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" // Multiple keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withDaysAvailable(\"monday\", \"tuesday\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":" // Only one matching keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new PersonAvailableOnDayPredicate(TestUtil.stringsToDays(Arrays.asList(\"monday\", \"tuesday\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" assertFalse(predicate.test(new PersonBuilder().withDaysAvailable(\"tuesday\", \"wednesday\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" public void toStringMethod() throws Exception {","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" List\u003cDay\u003e keywords \u003d TestUtil.stringsToDays(List.of(\"monday\", \"tuesday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":" boolean matchAll \u003d true;","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" PersonAvailableOnDayPredicate predicate \u003d new PersonAvailableOnDayPredicate(keywords, matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d PersonAvailableOnDayPredicate.class.getCanonicalName()","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"zhekaiii"},"content":" + \"{keywords\u003d\" + keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"zhekaiii"},"content":" + \", matchAll\u003d\" + matchAll + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"JerryO3"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"JerryO3":75,"zhekaiii":25}},{"path":"src/test/java/seedu/address/model/person/predicates/PersonHasTagPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JerryO3"},"content":"package seedu.address.model.person.predicates;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"JerryO3"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"JerryO3"},"content":"import seedu.address.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"JerryO3"},"content":"public class PersonHasTagPredicateTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":" public void equals() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"JerryO3"},"content":" List\u003cTag\u003e firstPredicateKeywordList \u003d TestUtil.stringsToTags(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":" List\u003cTag\u003e secondPredicateKeywordList \u003d TestUtil.stringsToTags(Arrays.asList(\"first\", \"second\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate firstPredicate \u003d new PersonHasTagPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate secondPredicate \u003d new PersonHasTagPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"JerryO3"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate firstPredicateCopy \u003d new PersonHasTagPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"JerryO3"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"JerryO3"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"JerryO3"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JerryO3"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" assertFalse(firstPredicate.equals(new PersonHasTagPredicate(firstPredicateKeywordList, true)));","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"zhekaiii"},"content":" public void test_tagContainsKeywords_returnsTrue() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" // One keyword","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" new PersonHasTagPredicate(TestUtil.stringsToTags(Collections.singletonList(\"friend\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"friend\", \"TA\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\", \"TA\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"friend\", \"CCA\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"JerryO3"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\", \"TA\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" public void test_tagDoesNotContainKeywords_returnsFalse() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" // Zero keywords","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" PersonHasTagPredicate predicate \u003d new PersonHasTagPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"TA\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\", \"CCA\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"JerryO3"},"content":" // Keywords match phone, address, but does not match tags","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"JerryO3"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" Arrays.asList(\"12345\", \"Main\", \"Street\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\").withPhone(\"12345\")","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" .withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"zhekaiii"},"content":" public void test_tagMatchALlKeywords() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"zhekaiii"},"content":" // One keyword","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"zhekaiii"},"content":" PersonHasTagPredicate predicate \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" new PersonHasTagPredicate(TestUtil.stringsToTags(Collections.singletonList(\"friend\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"zhekaiii"},"content":" // Multiple keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"friend\", \"TA\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"zhekaiii"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\", \"TA\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"zhekaiii"},"content":" // Only one matching keyword, fails","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"zhekaiii"},"content":" predicate \u003d new PersonHasTagPredicate(TestUtil.stringsToTags(Arrays.asList(\"friend\", \"CCA\")), true);","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"zhekaiii"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\", \"TA\").build()));","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":" public void toStringMethod() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"JerryO3"},"content":" List\u003cTag\u003e keywords \u003d TestUtil.stringsToTags(List.of(\"keyword1\", \"keyword2\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"zhekaiii"},"content":" boolean matchAll \u003d true;","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"zhekaiii"},"content":" PersonHasTagPredicate predicate \u003d new PersonHasTagPredicate(keywords, matchAll);","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"zhekaiii"},"content":" String expected \u003d PersonHasTagPredicate.class.getCanonicalName()","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"zhekaiii"},"content":" + \"{keywords\u003d\" + keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"zhekaiii"},"content":" + \", matchAll\u003d\" + matchAll + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"JerryO3"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"JerryO3"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"JerryO3":80,"zhekaiii":26}},{"path":"src/test/java/seedu/address/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2017-12-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"JerryO3"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"JerryO3"},"content":" public void caseInsensitiveTest() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"JerryO3"},"content":" assertEquals(new Tag(\"test\"), new Tag(\"TEST\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"JerryO3":5,"-":26}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"zhekaiii"},"content":" private static final String INVALID_BIRTHDAY \u003d \"sadfds\";","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"alvinnzz"},"content":" private static final String INVALID_MONEY_OWED \u003d \"abc\";","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" private static final String VALID_BIRTHDAY \u003d BENSON.getBirthday().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"NewtonKoh"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"alvinnzz"},"content":" private static final String VALID_MONEY_OWED \u003d BENSON.getMoneyOwed().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" private static final Set\u003cDay\u003e VALID_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JerryO3"},"content":" static {","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JerryO3"},"content":" try {","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"JerryO3"},"content":" VALID_DAYS_AVAILABLE \u003d ParserUtil.parseDays(Arrays.asList(\"monday\", \"tuesday\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"JerryO3"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"JerryO3"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"alvinnzz"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"zhekaiii"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"JerryO3"},"content":" VALID_ADDRESS, VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED,","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"JerryO3"},"content":" VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"zhekaiii"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"JerryO3"},"content":" VALID_ADDRESS, VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED,","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"JerryO3"},"content":" VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"zhekaiii"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"JerryO3"},"content":" INVALID_ADDRESS, VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED,","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"JerryO3"},"content":" VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"JerryO3"},"content":" VALID_REMARK, VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"zhekaiii"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"JerryO3"},"content":" VALID_ADDRESS, VALID_REMARK, invalidTags, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"JerryO3"},"content":" VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-26"},{"lineNumber":141,"author":{"gitId":"alvinnzz"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"zhekaiii"},"content":" public void toModelType_invalidBirthday_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"alvinnzz"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_REMARK,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"JerryO3"},"content":" VALID_TAGS, INVALID_BIRTHDAY, VALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"alvinnzz"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"alvinnzz"},"content":" public void toModelType_invalidMoneyOwed_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"alvinnzz"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"alvinnzz"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_REMARK,","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"JerryO3"},"content":" VALID_TAGS, VALID_BIRTHDAY, INVALID_MONEY_OWED, VALID_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":157,"author":{"gitId":"zhekaiii"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":160,"author":{"gitId":"JerryO3"},"content":" @Test","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"JerryO3"},"content":" public void toModelType_emptyDaysAvailable_returnsPerson() throws Exception {","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"JerryO3"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"JerryO3"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_REMARK,","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"JerryO3"},"content":" VALID_TAGS, VALID_BIRTHDAY, VALID_MONEY_OWED, new HashSet\u003cDay\u003e());","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"JerryO3"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"alvinnzz":17,"NewtonKoh":1,"JerryO3":39,"-":101,"zhekaiii":9}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" descriptor.setBirthday(person.getBirthday());","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"alvinnzz"},"content":" descriptor.setMoneyOwed((person.getMoneyOwed()));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"JerryO3"},"content":" descriptor.setDaysAvailable(person.getDaysAvailable());","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" * Parses the {@code days} into a {@code Set\u003cDay\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" public EditPersonDescriptorBuilder withDaysAvailable(String... days) {","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e daySet \u003d Stream.of(days).map(Day::getDay).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":" descriptor.setDaysAvailable(daySet);","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"alvinnzz":1,"JerryO3":11,"-":87,"zhekaiii":1}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"JerryO3"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.MoneyOwed;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"alvinnzz"},"content":" public static final String DEFAULT_MONEY_OWED \u003d \"0\";","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"zhekaiii"},"content":" public static final String DEFAULT_BIRTHDAY \u003d \"\";","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"NewtonKoh"},"content":" public static final String DEFAULT_REMARK \u003d \"She likes aardvarks.\";","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"NewtonKoh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"zhekaiii"},"content":" private Birthday birthday;","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"alvinnzz"},"content":" private MoneyOwed moneyOwed;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"JerryO3"},"content":" private Set\u003cDay\u003e daysAvailable;","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"NewtonKoh"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"zhekaiii"},"content":" birthday \u003d new Birthday(DEFAULT_BIRTHDAY);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"alvinnzz"},"content":" moneyOwed \u003d new MoneyOwed(DEFAULT_MONEY_OWED);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"JerryO3"},"content":" daysAvailable \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"NewtonKoh"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" birthday \u003d personToCopy.getBirthday();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" moneyOwed \u003d personToCopy.getMoneyOwed();","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"JerryO3"},"content":" daysAvailable \u003d personToCopy.getDaysAvailable();","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"JerryO3"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"JerryO3"},"content":" * Parses the {@code days} into a {@code Set\u003cDay\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"JerryO3"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" public PersonBuilder withDaysAvailable(String... days) {","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"JerryO3"},"content":" this.daysAvailable \u003d Stream.of(days).map(Day::getDay).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":94,"author":{"gitId":"JerryO3"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"zhekaiii"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"zhekaiii"},"content":" * Sets the {@code Birthday} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"zhekaiii"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"zhekaiii"},"content":" public PersonBuilder withBirthday(String birthday) {","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"zhekaiii"},"content":" this.birthday \u003d new Birthday(birthday);","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"zhekaiii"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"zhekaiii"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"zhekaiii"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"NewtonKoh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"NewtonKoh"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"NewtonKoh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"NewtonKoh"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"NewtonKoh"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"NewtonKoh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"NewtonKoh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"NewtonKoh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"alvinnzz"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"alvinnzz"},"content":" * Sets the {@code MoneyOwed} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"alvinnzz"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"alvinnzz"},"content":" public PersonBuilder withMoneyOwed(String moneyOwed) {","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"alvinnzz"},"content":" this.moneyOwed \u003d new MoneyOwed(moneyOwed);","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"alvinnzz"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"alvinnzz"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"alvinnzz"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":146,"author":{"gitId":"JerryO3"},"content":" return new Person(name, phone, email, address, remark, tags, birthday, moneyOwed, daysAvailable);","lastModifiedDate":"2024-03-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"alvinnzz":12,"NewtonKoh":12,"JerryO3":18,"-":95,"zhekaiii":12}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DAYS_AVAILABLE;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MONEY_OWED;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" sb.append(PREFIX_BIRTHDAY + person.getBirthday().toString() + \" \");","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"alvinnzz"},"content":" sb.append(PREFIX_MONEY_OWED + person.getMoneyOwed().toString() + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"JerryO3"},"content":" person.getDaysAvailable().stream().forEach(","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"JerryO3"},"content":" s -\u003e sb.append(PREFIX_DAYS_AVAILABLE + s.name() + \" \")","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"zhekaiii"},"content":" descriptor.getBirthday().ifPresent(birthday -\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"zhekaiii"},"content":" sb.append(PREFIX_BIRTHDAY).append(birthday.toString()).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"alvinnzz"},"content":" descriptor.getMoneyOwed().ifPresent(moneyOwed -\u003e sb.append(PREFIX_MONEY_OWED)","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"alvinnzz"},"content":" .append(moneyOwed.toString()).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"JerryO3"},"content":" sb.append(\" \");","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"JerryO3"},"content":" if (descriptor.getDaysAvailable().isPresent()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"JerryO3"},"content":" Set\u003cDay\u003e daysAvailable \u003d descriptor.getDaysAvailable().get();","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"JerryO3"},"content":" if (daysAvailable.isEmpty()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"JerryO3"},"content":" sb.append(PREFIX_DAYS_AVAILABLE);","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"JerryO3"},"content":" } else {","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"JerryO3"},"content":" daysAvailable.forEach(s -\u003e sb.append(PREFIX_DAYS_AVAILABLE).append(s.name()).append(\" \"));","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"alvinnzz":3,"JerryO3":15,"-":63,"zhekaiii":3}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"JerryO3"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"JerryO3"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"JerryO3"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":12,"author":{"gitId":"JerryO3"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":14,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.person.Day;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"JerryO3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the middle index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the last index of the person in the {@code model}\u0027s person list.","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns the person in the {@code model}\u0027s person list at {@code index}.","lastModifiedDate":"2017-07-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" public static List\u003cTag\u003e stringsToTags(Collection\u003cString\u003e c) throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" return new ArrayList\u003c\u003e(ParserUtil.parseTags(c));","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"JerryO3"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"JerryO3"},"content":" public static List\u003cDay\u003e stringsToDays(Collection\u003cString\u003e c) throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"JerryO3"},"content":" return new ArrayList\u003c\u003e(ParserUtil.parseDays(c));","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"JerryO3"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JerryO3":14,"-":55}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"zhekaiii"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"alvinnzz"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MONEY_OWED_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"NewtonKoh"},"content":" .withPhone(\"94351253\").withRemark(\"She likes aardvarks.\")","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"zhekaiii"},"content":" .withTags(\"friends\").withBirthday(\"01/02/1999\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"NewtonKoh"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withRemark(\"He can\u0027t take beer!\")","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"zhekaiii"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"23/09/1998\").withMoneyOwed(\"2.50\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"13/12/1989\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"29/02/2000\").withMoneyOwed(\"-8.00\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"zhekaiii"},"content":" .withBirthday(\"21/12/1998\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"alvinnzz"},"content":" .withBirthday(\"\").withMoneyOwed(\"23.60\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"zhekaiii"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"alvinnzz"},"content":" .withBirthday(\"\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"alvinnzz"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"alvinnzz"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withMoneyOwed(\"0\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":61,"author":{"gitId":"JerryO3"},"content":" public static final Person JOHN \u003d new PersonBuilder().withName(\"John Wick\")","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"JerryO3"},"content":" .withAddress(\"311, Clementi Ave 12, #12-25\").withRemark(\"He has skills\")","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"JerryO3"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"88765432\")","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"JerryO3"},"content":" .withTags(\"TAs\", \"CCA\", \"Acquaintances\").build();","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"zhekaiii"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"alvinnzz"},"content":" .withBirthday(VALID_BIRTHDAY_AMY).withMoneyOwed(VALID_MONEY_OWED_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"zhekaiii"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"zhekaiii"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withBirthday(VALID_BIRTHDAY_BOB)","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"alvinnzz"},"content":" .withMoneyOwed(VALID_MONEY_OWED_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"zhekaiii"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"zhekaiii"},"content":" } // prevents instantiation","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"JerryO3"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE, JOHN));","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"alvinnzz":8,"NewtonKoh":2,"JerryO3":5,"-":61,"zhekaiii":18}}] diff --git a/AY2324S2-CS2103T-T16-2_tp_master/commits.json b/AY2324S2-CS2103T-T16-2_tp_master/commits.json index e8ff7710..c599a3b5 100644 --- a/AY2324S2-CS2103T-T16-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-T16-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"alvinnzz":[{"date":"2024-03-10","commitResults":[{"hash":"3cb1862ae444ad05d63152b41dfe9349c7318dda","isMergeCommit":false,"messageTitle":"Update about us page for Alvin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":16}}}]},{"date":"2024-03-11","commitResults":[{"hash":"785ea150ff437637e111c4bfa8dcbb9691b482f5","isMergeCommit":true,"messageTitle":"Merge pull request #9 from zhekaiii/about-us-page","messageBody":"Update about us page for Zhekai","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"61976ed71bb5e1bd5f537dfd7036788e4c911056","isMergeCommit":true,"messageTitle":"Merge pull request #15 from NewtonKoh/about-us-page","messageBody":"Edit about us page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"a22145bfe9d15b0d7bc475043a8ef1f8d249dbc2","isMergeCommit":true,"messageTitle":"Merge pull request #22 from zhekaiii/update-nfr","messageBody":"Update NFR","fileTypesAndContributionMap":{}},{"hash":"bcee85c59a9f84cabdded3e456a0e55d5d82e349","isMergeCommit":true,"messageTitle":"Merge pull request #23 from zhekaiii/store-birthday","messageBody":"Store birthday","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"760cae1cb36a6678e8438061e35ec65c7fedf41e","isMergeCommit":false,"messageTitle":"Add model and prefix for MoneyOwed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":4}}}]},{"date":"2024-03-15","commitResults":[{"hash":"9de29e6a48fee38c9e7be2a28f842e5fffae0a7b","isMergeCommit":false,"messageTitle":"Add MoneyOwed into UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":18}}},{"hash":"1fa041663c8f78aaaaa25f3f31a1fddb33c4f63e","isMergeCommit":false,"messageTitle":"Add and update tests for MoneyOwed attribute","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":106,"deletions":26}}}]},{"date":"2024-03-16","commitResults":[{"hash":"1d9d6cbb928132f86596099cc0715c4b0dbde467","isMergeCommit":true,"messageTitle":"Merge with master branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e3b56ef155a0bbda7cd3c29da3cc94ee70ab221","isMergeCommit":false,"messageTitle":"Add javadoc to MoneyOwed class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"1e439c5a37b3f8bec261cf2902acf4657536d740","isMergeCommit":false,"messageTitle":"Fix checkstyle error in MoneyOwedTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"f0ae5127a88912e2e4e45aa6e54fde170afa869f","isMergeCommit":false,"messageTitle":"Update errors based on comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":7},"test-code":{"insertions":18,"deletions":18}}},{"hash":"5d63d1a5a4337000d9c8b898129fb732c68422fa","isMergeCommit":false,"messageTitle":"Add getMessage in MoneyOwed to display on UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":8}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ea462606c2ef7671585808003b64d719e6ae1e93","isMergeCommit":false,"messageTitle":"Add isNegativeMoney function in MoneyOwed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"f2d1e0a2c6cc1db220a1d08e92796eb0429f80a0","isMergeCommit":false,"messageTitle":"Fix isNegativeMoney function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"e64ba307c9dac82429ce1a1d4c5f3c7ee11969c9","isMergeCommit":true,"messageTitle":"Merge pull request #28 from zhekaiii/edit-birthdays","messageBody":"Add editing of Birthdays using the edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"52dc4d8c55f580b7da8a01a2f711bbcba1bb198d","isMergeCommit":false,"messageTitle":"Update edit command to edit money owed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":4},"test-code":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"2763d258771c5f8dc7adafe667df70272b0d4f1d","isMergeCommit":true,"messageTitle":"Merge pull request #32 from alvinnzz/branch-edit-money","messageBody":"Update edit command to edit money owed","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"a6780470775edb16eafb5cd371a93ee43495ed8e","isMergeCommit":false,"messageTitle":"Update UML class diagram for split command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":0}}},{"hash":"ee678a8d26b088858b650c32c41695e2de3ce092","isMergeCommit":true,"messageTitle":"Merge pull request #34 from zhekaiii/update-docs-links","messageBody":"Update links to se-edu repo to the correct github repo link","fileTypesAndContributionMap":{}},{"hash":"7ada790089b935e18cd078bacb2c603833ab3cb9","isMergeCommit":false,"messageTitle":"Add SplitCommand and SplitCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0}}},{"hash":"b5cd9c34b6eb39fa5375fb3bfa2f31d03a7967ce","isMergeCommit":false,"messageTitle":"Edit user guide on split command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":2}}}]},{"date":"2024-03-26","commitResults":[{"hash":"c6bf3cb941e4c4c9bc7b135fe8a59fca01b431b5","isMergeCommit":true,"messageTitle":"Merge pull request #40 from zhekaiii/update-ug","messageBody":"Update User Guide with sort command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"c200d0edfca41f2843c5dac42f03072a35bd0747","isMergeCommit":true,"messageTitle":"Merge pull request #45 from zhekaiii/update-ug","messageBody":"Update User Guide screenshots","fileTypesAndContributionMap":{}},{"hash":"485ee3987ecc43bd86fc3c16bae7306caa93e13c","isMergeCommit":false,"messageTitle":"Add test for SplitCommand and SplitCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":19},"test-code":{"insertions":170,"deletions":0}}},{"hash":"ad7e49e501500810871f93208a677b40fb1e7959","isMergeCommit":true,"messageTitle":"Handle merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b0fb19af8a59a10031850e2489d8a09b0f299115","isMergeCommit":false,"messageTitle":"Add test for split command in AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"39c2cd820a90d7bd3de819445d29b32d0062c5d4","isMergeCommit":false,"messageTitle":"Update test to increase coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":2}}}]},{"date":"2024-03-28","commitResults":[{"hash":"0b58bc04fc6b37947098f19567043e12d423faab","isMergeCommit":true,"messageTitle":"Resolve conflicts with master branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e6588026ecd61d1f883daf71e1283e1244ce73ae","isMergeCommit":true,"messageTitle":"Merge pull request #47 from alvinnzz/branch-split-command","messageBody":"Implement split command with split command parser","fileTypesAndContributionMap":{}},{"hash":"0f1110d9c487451e5b2771186e89ac12e47d448f","isMergeCommit":false,"messageTitle":"Add activity diagram for split feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":0}}},{"hash":"8ffe04dd90a2986d0981b3c57bbdb61372f44afe","isMergeCommit":false,"messageTitle":"Add line for EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-30","commitResults":[{"hash":"6860e111decb9a0503f7b2c9a0cd31a88a7c02ba","isMergeCommit":false,"messageTitle":"Add user guide for pay command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":2}}},{"hash":"f66da32e554594d1260429749e793fc77a3f4230","isMergeCommit":false,"messageTitle":"Fix split command to split with user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"docs":{"insertions":5,"deletions":3},"test-code":{"insertions":2,"deletions":2}}},{"hash":"520f91419e9eaa0473163531298dc476ab0d853f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-docs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ce126c6f465950115a54654bc9366cbbdd483232","isMergeCommit":false,"messageTitle":"Fix information on user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"c4e9fc8d00db08a59a04799cd1392c35e18cf7a9","isMergeCommit":false,"messageTitle":"Fix information on user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":15}}},{"hash":"0e36630d4acc4a58540335ef1d2152daeb0faeb4","isMergeCommit":false,"messageTitle":"Fix bug in split command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":3},"test-code":{"insertions":23,"deletions":0}}},{"hash":"e1d7f10998cdbc8d3c5e8e28bff1afd8708c5ad7","isMergeCommit":false,"messageTitle":"Add LendCommand and LendCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":0}}},{"hash":"6469e91c3b8f4e26130c8d67ea3379ec42d28a45","isMergeCommit":false,"messageTitle":"Fix javadoc for LendCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"504857e2f22764ca23878e239943dc38caebac25","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into lend-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"afff6f793d202451afeb8fed884e5bc553580d1e","isMergeCommit":false,"messageTitle":"Add tests for LendCommand and LendCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":176,"deletions":0}}},{"hash":"cd7bf0a68c6ea3e1b872f50c6297e02a254b8e5d","isMergeCommit":true,"messageTitle":"Merge pull request #68 from zhekaiii/bugfix/67-days-available-argument-not-showing-in-error-message-for-editcommand","messageBody":"Add days available argument in message usage for EditCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"3430ddfdd72de2777cdab30a43c4456ad3f8403b","isMergeCommit":false,"messageTitle":"Fix format for LendCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"4053717de0fc358900415d61bf4becad48fb9f7c","isMergeCommit":true,"messageTitle":"Merge pull request #70 from alvinnzz/lend-command","messageBody":"Implemented lend command to add on current money owed","fileTypesAndContributionMap":{}},{"hash":"523c3b25b86bc2567e2ccf17bc17d7e8f37c0fef","isMergeCommit":false,"messageTitle":"Change user guide based on comments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":44}}},{"hash":"de68d95e50c0c5e7550b9354dd316439b8c26a80","isMergeCommit":true,"messageTitle":"Merge pull request #74 from zhekaiii/update-ug","messageBody":"Update UG","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"aaf9d2b20f4e32f709be81b918dfcebc36fa0f25","isMergeCommit":true,"messageTitle":"Merge pull request #76 from NewtonKoh/UG-changes","messageBody":"Add remark command section to User Guide","tags":["v1.3"],"fileTypesAndContributionMap":{}}]}],"NewtonKoh":[{"date":"2024-03-07","commitResults":[{"hash":"0903314e74cd6305f8453a07c58a036d7ed8c666","isMergeCommit":false,"messageTitle":"Add remark command function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":203,"deletions":20},"test-code":{"insertions":132,"deletions":12}}}]},{"date":"2024-03-12","commitResults":[{"hash":"e9d66b107c3e7c4253ba3ebf1bd30f7218cd138d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/NewtonKoh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6640f8e6df35f0953e969a37c7453c60b5f73f1e","isMergeCommit":false,"messageTitle":"Add member\u0027s about us pages","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":12}}},{"hash":"acacf642fda7d7b842eeb369ed51cc993873d0d1","isMergeCommit":false,"messageTitle":"Revert \"Add remark command function\"","messageBody":"This reverts commit 0903314e74cd6305f8453a07c58a036d7ed8c666.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":203},"test-code":{"insertions":12,"deletions":132}}},{"hash":"bfd2fe09e8b51e64881a6a61d5d1d222c86aa686","isMergeCommit":false,"messageTitle":"Fix whitespace issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":4}}},{"hash":"245cce524e8c52502e2ac71efbaee5dad802e086","isMergeCommit":false,"messageTitle":"Add use cases for features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":175,"deletions":5}}},{"hash":"0edb9fb3d4255d9da1fc76516fbce14c1f2a6173","isMergeCommit":false,"messageTitle":"Remove duplicate use case and rename features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":19}}},{"hash":"be3341d269533df02ad0a1143e838eff1e137856","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":15}}},{"hash":"333fe735cd69e925cc098b769e7d83581528b5fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-remark-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"44fe650f43aadef2046491e9db94a507302b0c29","isMergeCommit":false,"messageTitle":"Include remark prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"72ea11011924cac929f5169b1e6786c3dcef05b5","isMergeCommit":false,"messageTitle":"Fix conflicts on remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":10},"test-code":{"insertions":132,"deletions":12}}},{"hash":"258138f354472938cf01af1d52822eff36bcb37b","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"bce781fad975ffa9748a65d397514d06cc5c5f7c","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":9}}},{"hash":"0a992663e6b11884fdc2313019a5fd4fb8f1e95d","isMergeCommit":false,"messageTitle":"Fix assertion failure","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-25","commitResults":[{"hash":"182a27408346203039aafad3f0d2f17eb29149eb","isMergeCommit":true,"messageTitle":"Merge pull request #36 from JerryO3/UG-update","messageBody":"UG update","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"7815f1165278580a60880ef7acb2cc88362ce0d1","isMergeCommit":false,"messageTitle":"Create first UI draft layout","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":486,"deletions":109}}},{"hash":"b8862d50092ed0924cfe171cc68f8d8fd49b218c","isMergeCommit":false,"messageTitle":"Create second UI draft layout","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":336,"deletions":55}}},{"hash":"db7bf3494601f52cd914f699dbde5013c6b56370","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into UI-first-draft","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b211d034188ad4747af874e1368d15c3224d6227","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":324}}},{"hash":"3db7c8e95ed869c096d204f8c43546ec1213d347","isMergeCommit":true,"messageTitle":"Merge branch \u0027UI-first-draft\u0027 of https://github.com/NewtonKoh/tp into UI-first-draft","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23b9b5f6dc4a5eaa4f19d933f35b6eb5e90f6f08","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"54ffc9ba4494b99e83a443da3f65b79aa19e369c","isMergeCommit":false,"messageTitle":"Update UiClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"b2963b8663c24d6ba8071bf1690b2ca70d07f27a","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/ui/DisplayCard.java","messageBody":"Co-authored-by: Zhekai \u003c40530851+zhekaiii@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"61770c7a48350e69adf6aa14f63fea8ebb8cd508","isMergeCommit":false,"messageTitle":"Address feedback from Zhe Kai","messageBody":"- Rename `logo.png` to `friendfolio_logo.png` for clarity (MainWindow.java).\n- Simplify logic by early returning (PersonListPanel.java).\n- Restore application title to \u0027FriendFolio\u0027 (MainWindow.fxml).\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"6a01a1beb8161ffef13faeaa78869d3c0034ae9b","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-28","commitResults":[{"hash":"5a1a927d48324ccbf281723980128b38accfea6c","isMergeCommit":true,"messageTitle":"Merge pull request #51 from zhekaiii/update-uml","messageBody":"Update UML and developer guide","fileTypesAndContributionMap":{}},{"hash":"a1a6bba563d8b4d3a97ba84bba8e9da14f5fef95","isMergeCommit":false,"messageTitle":"Update DG with UI Upgrade and Remark Command details","messageBody":"- Integrate DisplayCard element description into UI Component section.\n- Detail Remark Command implementation in Logic Component section.\n- Adjust Model Component section to reflect changes supporting new features.\n","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":17}}}]},{"date":"2024-03-29","commitResults":[{"hash":"9a871a216720611c88efa7ec6867303dd1287266","isMergeCommit":true,"messageTitle":"Merge pull request #56 from JerryO3/DG-update-filter","messageBody":"Dg update filter","fileTypesAndContributionMap":{}},{"hash":"6666129c6f1ea292d1c587d0e9aa2b56d609fa1c","isMergeCommit":true,"messageTitle":"Merge pull request #53 from NewtonKoh/DG-update","messageBody":"Update DG with UI Upgrade and Remark Command details","fileTypesAndContributionMap":{}},{"hash":"714dfd5eaeaa5edb333e956a6b99b9bcd67a661e","isMergeCommit":true,"messageTitle":"Merge pull request #55 from alvinnzz/branch-DG","messageBody":"Add activity diagram for split feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"565ce715ba4dd32ac34b20791c00e70e400fbfab","isMergeCommit":false,"messageTitle":"Enhance home page with animations and layout updates","messageBody":"- Introduce new animations for list item interactions.\n- Redesign home page layout for improved user engagement.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":796,"deletions":64},"docs":{"insertions":1,"deletions":1}}},{"hash":"9ee74878fb1efc65f71b40f3e0ee63fcaba533c1","isMergeCommit":false,"messageTitle":"Fix AddCommandTest error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"282763ffe9556e479d7fe363f24124651049937c","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/ui/HomeCard.java","messageBody":"Co-authored-by: Zhekai \u003c40530851+zhekaiii@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":26}}}]},{"date":"2024-03-31","commitResults":[{"hash":"8868df24b418bf9f723c48f2436a6c0cccac2b5b","isMergeCommit":false,"messageTitle":"Improve code quality in UI components","messageBody":"- Rename variables for clarity and adherence to boolean naming conventions.\n- Extract time and date formatting logic into class-level constants in HomeCard.\n- Refactor HomeCard initialization to enforce SLAP, separating logic into distinct methods for setting up time, contacts, bar chart, availability, and animations.\n- Replace `getContactAmount` with `getContactCount` in HomeCard for accurate terminology.\n- Utilize `MoneyOwed.userOwesMoney` method for consistency in debt calculation.\n- Rename `MiniCard` to `MiniPersonCard` for better specificity.\n- Adjust boolean parameter naming in `PersonCard` constructor to `isAnimationEnabled` for clarity.\n\nThese changes aim to enhance code readability, maintainability, and ensure consistency across the UI component implementations.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":222},"other":{"insertions":2,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"4bb2c2066ce03972157ae960c414d90b4b06c7b3","isMergeCommit":true,"messageTitle":"Merge pull request #60 from zhekaiii/add-esc-handler","messageBody":"UX Changes","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"e53a7c88f4df3ad09cbb418813892c365534a23c","isMergeCommit":true,"messageTitle":"Merge pull request #69 from zhekaiii/refactor/animations-and-ui","messageBody":"Refactor animation related code in HomeCard and PersonCard","fileTypesAndContributionMap":{}},{"hash":"8e8e11a1c7445165d65e80be6b0a268f5819abb6","isMergeCommit":true,"messageTitle":"Merge pull request #75 from JerryO3/UG-update","messageBody":"Ug update","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"8f35498dc1c74bdd76e9e613eff00851c5a73a61","isMergeCommit":false,"messageTitle":"Add remark command section to User Guide","messageBody":"- Include detailed command usage for \u0027remark\u0027\n- Provide examples for adding and editing remarks\n- Ensure consistency with existing documentation style\n","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":17}}}]}],"JerryO3":[{"date":"2024-03-11","commitResults":[{"hash":"5ca183da1c65e3d08813bde227d207df383ab19a","isMergeCommit":false,"messageTitle":"Add User Stories, User Profile and Value Proposition as per team doc","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":9}}},{"hash":"a2eece09935c8fda66fb20d88ef84b61e0444700","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"818031c60aef3b2a5a7344505c96083970db343d","isMergeCommit":false,"messageTitle":"Add picture in about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"eef5ed73fa89d712e385910f3c2991a1f0740d82","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"05a66ba0e40f3685be23b2ca7b99ee4fbcfe0860","isMergeCommit":false,"messageTitle":"Add Sort feature for tags, and supporting parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"20cd2529debdfff8f7fb3e931a1f622e5c7e3b44","isMergeCommit":false,"messageTitle":"Add test for sort command and parser. Fix failing tests from outdated mocks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":14},"test-code":{"insertions":267,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"acbb7fb148809172473a007a5e174e6444ced120","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6a06bde3f677e97fe8d8fb6e78b811fdfaf8f416","isMergeCommit":true,"messageTitle":"fix merge conflicts on typical address book json","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"952fde5cb30304f9bd167e057013770f63779f2b","isMergeCommit":false,"messageTitle":"Make tag search case insensitive, while retaining case sensitivity of tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":17,"deletions":0}}},{"hash":"3ba0bf6e44175685542679c2834d0bd129889592","isMergeCommit":false,"messageTitle":"Renamed sort to filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":13},"other":{"insertions":39,"deletions":39},"test-code":{"insertions":4,"deletions":12}}},{"hash":"00437f6db7ebc21dfc6d038e5827eecb804abe52","isMergeCommit":false,"messageTitle":"fix coding style to match styleguide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3},"test-code":{"insertions":13,"deletions":4}}},{"hash":"40197ea188f5a0f708e1a07e80a6686ea5d293ab","isMergeCommit":false,"messageTitle":"Add Javadoc for FilterCommand constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"e7a013f5ca1449b5e61f2e90d2a41325169b7d26","isMergeCommit":false,"messageTitle":"Fix formatting for FilterCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"79391013a47d036da2036a500bc1edabe9792d74","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab14881bc0d7b29f61cbdd20f1a3f0430b97dfca","isMergeCommit":false,"messageTitle":"Add UML diagram showing FilterCommand and FindCommand relationship","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":0}}},{"hash":"c51dc8fa7ebc5a9a3d0b21b39dac1072b7d54ce8","isMergeCommit":false,"messageTitle":"Add explanation for future implementation of filter commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"0844e9e9e2ca2d2d7630a986b23e5b6e1b5d3d6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"ef8083e11010244cc2c036f0f52524090cac9dc8","isMergeCommit":false,"messageTitle":"Add days available field to person, include add and edit functionality on keyword d/","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":162,"deletions":21}}},{"hash":"324f5cf53619ba785dc13379a0e9816198ba4334","isMergeCommit":false,"messageTitle":"Fix storage bug where days available was not parseable to JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5},"test-code":{"insertions":37,"deletions":1}}}]},{"date":"2024-03-25","commitResults":[{"hash":"b0a7b78527a71309b7dba5ed947b568fddc28824","isMergeCommit":false,"messageTitle":"Add testing support and stubs for days available field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":7},"test-code":{"insertions":196,"deletions":86}}},{"hash":"8201dd0a1b8a6ab71cc4acd3015b74b33c1d031b","isMergeCommit":false,"messageTitle":"Update User Guide with 2101 requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":9}}},{"hash":"50656753941cf6e4a81e628d257611f59990560c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0c14cf61e68921dfbce954df151b0f638db1ddb","isMergeCommit":true,"messageTitle":"Merge pull request #33 from alvinnzz/branch-edit-uml","messageBody":"Update UML class diagram for split command","fileTypesAndContributionMap":{}},{"hash":"daad349b73aa24a2ae046ed638b9fd80866d6879","isMergeCommit":true,"messageTitle":"Merge pull request #37 from alvinnzz/branch-user-guide","messageBody":"Edit user guide on split command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"fce725f7815a32d2a96dc5069d98f72ef5c5d05b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"49c8ea5aa5eff0c7d1a5177d8e5710384297be3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into days-available","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"31982b8a8a8601cf49775daee11817c45639832c","isMergeCommit":false,"messageTitle":"Update code to conform to style guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":9},"test-code":{"insertions":90,"deletions":17}}},{"hash":"44db2640d4299d43e30372ce4d9ba8795a8c6cba","isMergeCommit":true,"messageTitle":"Merge branch \u0027days-available\u0027 into general-filter-by","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"079c5496b62c855463c87851ed7c2463340c42d3","isMergeCommit":false,"messageTitle":"Test abstract filter class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":70},"other":{"insertions":4,"deletions":2},"test-code":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-27","commitResults":[{"hash":"9e6d04d125443cd365ae313520f7018850419b5c","isMergeCommit":false,"messageTitle":"Revert \"Test abstract filter class\"","messageBody":"This reverts commit 079c5496b62c855463c87851ed7c2463340c42d3.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":54},"other":{"insertions":2,"deletions":4},"test-code":{"insertions":8,"deletions":10}}},{"hash":"2251c18b832f0b5ffbe01ad81d4cf0e3a3a2241e","isMergeCommit":false,"messageTitle":"Add filter abstract class that groups similar filter classes together","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":185,"deletions":116},"other":{"insertions":39,"deletions":37},"test-code":{"insertions":11,"deletions":9}}},{"hash":"b00604b70590b24407e58f72054e4605879dc6de","isMergeCommit":false,"messageTitle":"Update names for filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-28","commitResults":[{"hash":"b32de24e74828193b44d7ce76bbef941b5a222f3","isMergeCommit":false,"messageTitle":"Add filter command parser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":81},"other":{"insertions":8,"deletions":8}}},{"hash":"3014d7e5a762798ec4e1f26a160ba8be1cf497db","isMergeCommit":false,"messageTitle":"Add some tests to filter command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":70,"deletions":6}}},{"hash":"bb487644ed792bd1ce65adbe29d6600e7787a3db","isMergeCommit":false,"messageTitle":"Update code to fit styleguide.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":13},"other":{"insertions":2,"deletions":4},"test-code":{"insertions":82,"deletions":0}}},{"hash":"385d061bc804183c5d17acbb47cc0a95fb34e235","isMergeCommit":false,"messageTitle":"Update code to fit styleguide","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":14}}},{"hash":"450d234f6fcd6382c83ab2830323aaa80968bcb1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1e48f4eed64034e2926d0b187a144b588457cc1b","isMergeCommit":true,"messageTitle":"Fix merge conflicts on Ui","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7473d2ba536c49665001ac6aac21246dad9a957b","isMergeCommit":false,"messageTitle":"Move predicates package under person","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":3}}},{"hash":"067b6f05526415eb361c52f51ba6cd4a99bb5fbb","isMergeCommit":false,"messageTitle":"Fix imports to adhere to style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-29","commitResults":[{"hash":"8f55c11e66f40923878014e68b54e5610f8c319c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"edb4c90e6f686ed9d0b231b863b870f749413b35","isMergeCommit":true,"messageTitle":"Resolve merge conflicts from master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1f6f92bcab53818de59d5692d13cb604661035e","isMergeCommit":false,"messageTitle":"Update tests with daysAvailable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":5,"deletions":3}}},{"hash":"c7ac9dc21b140243816d53cad35456c951055204","isMergeCommit":false,"messageTitle":"Add updated filter implementation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":13}}},{"hash":"065a0bd16aa867c37efc1a945ddf22891f259ffd","isMergeCommit":false,"messageTitle":"Update puml for checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"7813961536fd69e7bb9928585187baa2d24268f9","isMergeCommit":false,"messageTitle":"Update puml for checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"b5d773fbf8eec9f804462a821114f15b265e38d8","isMergeCommit":false,"messageTitle":"Edit comments for clarity","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":18}}},{"hash":"3d6ab2cf84ed77cb2f68ffc0cbe4748618906866","isMergeCommit":false,"messageTitle":"Refactor Days to Day","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"bb043a84d9917e4cab3d0f211e141220a6fd5969","isMergeCommit":false,"messageTitle":"Refactor Days to Day","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":72},"test-code":{"insertions":35,"deletions":55}}},{"hash":"5c3d69e9572984e4c9a5c3ea69c2d31795a17d7c","isMergeCommit":false,"messageTitle":"Fix import ordering to styleguide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":4},"test-code":{"insertions":30,"deletions":6}}},{"hash":"049f28507597783151473700e63eb8d73ef09408","isMergeCommit":false,"messageTitle":"Remove magic numbers, edit comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":12},"test-code":{"insertions":8,"deletions":8}}},{"hash":"9a9e8944b1309481dc99e357d84a31e27aa9d66a","isMergeCommit":false,"messageTitle":"Refactor filter types into subclasses","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7}}},{"hash":"97c4309ee72766d5f2d20e765fb47fa6c4bc4edc","isMergeCommit":false,"messageTitle":"Refactor find command to filter name command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":14},"other":{"insertions":21,"deletions":21},"test-code":{"insertions":5,"deletions":18}}},{"hash":"31dd4145bd8371266d9a5967ab050ab4e63a678b","isMergeCommit":false,"messageTitle":"Fix regressions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":25},"other":{"insertions":5,"deletions":5},"test-code":{"insertions":9,"deletions":7}}},{"hash":"9f27b4f31cfdd45a9f57042a0365985643e3aeb2","isMergeCommit":false,"messageTitle":"Fix import statements sequence","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":16,"deletions":2}}},{"hash":"7084e24dbfbd20a847356613f6c1294391db18b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e36e0ad4cfb79e0b3f61dbcfca62d8284e7d2553","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into general-filter-by","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a05d77371082b0687adb8bba70b77a8841fdef66","isMergeCommit":false,"messageTitle":"Use constants instead of magic words","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"8c149592159f67caec302f96f8c446742d62d164","isMergeCommit":true,"messageTitle":"Merge pull request #49 from JerryO3/general-filter-by","messageBody":"General filter by","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"0ce0ebdc36fffe57b2e362d2e4f4f037a26da3dc","isMergeCommit":true,"messageTitle":"Merge pull request #73 from zhekaiii/filter-and","messageBody":"Allow filtering by AND instead of OR","fileTypesAndContributionMap":{}},{"hash":"eb885a8d248a803916416725fa6bba24a9d6a658","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ef680b9a0393babc8ec66f6726a96da822a86e2","isMergeCommit":false,"messageTitle":"Update UG filter section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"71fdd8d401881bc53a34176a3e0300666cf1603b","isMergeCommit":false,"messageTitle":"Update DG on all-match filter","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":7}}}]}],"zhekaiii":[{"date":"2024-03-11","commitResults":[{"hash":"dbaeef15582db658a89c1ea4e9094e5445471d40","isMergeCommit":true,"messageTitle":"Merge pull request #7 from alvinnzz/about-us-page","messageBody":"Update about us page for Alvin","fileTypesAndContributionMap":{}},{"hash":"769403b653d2589bd635c334d8b21ef044c17cb5","isMergeCommit":false,"messageTitle":"Update about us page for Zhekai","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":86,"deletions":26}}}]},{"date":"2024-03-12","commitResults":[{"hash":"755f91327c388fa27f116582a9a8bb94010faca5","isMergeCommit":true,"messageTitle":"Merge pull request #11 from JerryO3/about-us-update","messageBody":"AboutUs update","fileTypesAndContributionMap":{}},{"hash":"39a470a27d0aa0ff512807782a736bc087263e92","isMergeCommit":true,"messageTitle":"Merge pull request #12 from JerryO3/DG-update","messageBody":"Add User Stories, User Profile and Value Proposition as per team doc","fileTypesAndContributionMap":{}},{"hash":"d598390424ea2c51ecef971fb41781806ecfba68","isMergeCommit":true,"messageTitle":"Merge pull request #20 from NewtonKoh/use-cases","messageBody":"Add use cases for features","fileTypesAndContributionMap":{}},{"hash":"cfe92afbc54b5cda0d53eeee235466308288bf7e","isMergeCommit":true,"messageTitle":"Merge pull request #21 from NewtonKoh/add-remark-command","messageBody":"Add remark command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"98023956232df40519834a19f32b0041b8d481dd","isMergeCommit":false,"messageTitle":"Add birthdays to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":190,"deletions":58},"test-code":{"insertions":120,"deletions":34}}},{"hash":"4dbb07d4874224c441313e9afd915b5b518e439e","isMergeCommit":false,"messageTitle":"Update non-functional requirements in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":165,"deletions":102}}},{"hash":"472053398ec9d8780e2e9ce5e039425174f8218f","isMergeCommit":true,"messageTitle":"Merge master into update-nfr","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"46f499dd408d549ba148cc39a49a1088fb274c9d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":12}}},{"hash":"f0eee632b5222adbb468f75ebc68a7dd093604a5","isMergeCommit":false,"messageTitle":"Fix run check errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"3a9476756f2db8bd8392d48243397383266d0bab","isMergeCommit":false,"messageTitle":"Fix test errors and add birthday to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":37},"test-code":{"insertions":1,"deletions":1}}},{"hash":"6676c13ad3569eaae7bd1d0809ac77fb3b57abf8","isMergeCommit":true,"messageTitle":"Merge master into store-birthday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6ccd3861927d8420bd219fe1cfc5eb4d4cc0ea6b","isMergeCommit":false,"messageTitle":"Allow Remark to be optional","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":8}}},{"hash":"1aac1a2790a9859522b4fd9f99770a9ea7e829ab","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"9391234e7446ed25f9419e6d819f6e3567c8c844","isMergeCommit":false,"messageTitle":"Add birthday into User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":59,"deletions":44}}}]},{"date":"2024-03-16","commitResults":[{"hash":"e010a0c3bed43974b0ec80ecb24c40789001f217","isMergeCommit":false,"messageTitle":"Add editing of Birthdays using the edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5},"test-code":{"insertions":49,"deletions":6}}}]},{"date":"2024-03-17","commitResults":[{"hash":"7b4a3d91c9eaba65a2f9bccb4605070ed1f04271","isMergeCommit":false,"messageTitle":"Refactor Birthday parsing and fix inaccurate javadoc headers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6}}},{"hash":"d444e2aa3ea76b6773b65c83358aee75543cb6e1","isMergeCommit":true,"messageTitle":"Merge pull request #26 from alvinnzz/branch-store-money","messageBody":"Store moneyOwed attribute","fileTypesAndContributionMap":{}},{"hash":"c62cea77e036cf431f1640fbe6ba84889d742859","isMergeCommit":true,"messageTitle":"Merge master into edit-birthdays","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"9ab512e569f30aeaac1aa717dfe50a31321aae66","isMergeCommit":false,"messageTitle":"Update UMLs to include new attributes into Person class","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}},{"hash":"fc509f6a2b1b4e15835e735cc7f87b85d47ce0dd","isMergeCommit":true,"messageTitle":"Merge pull request #29 from zhekaiii/update-uml","messageBody":"Update UMLs to include new attributes into Person class","fileTypesAndContributionMap":{}},{"hash":"5e0a539835dad8df780cc0eebf1d29caa3ccf8f0","isMergeCommit":true,"messageTitle":"Merge pull request #25 from JerryO3/sort-by-tag","messageBody":"Sort by tag: Add sort command and parser support","fileTypesAndContributionMap":{}},{"hash":"96bde6d8b5a82c317b554c73985de4040fbef545","isMergeCommit":true,"messageTitle":"Merge pull request #31 from JerryO3/UML-diagram","messageBody":"Uml diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"ec86c2f1104782b2acb9363140a302878e6cd2b9","isMergeCommit":false,"messageTitle":"Update links to se-edu repo to the correct github repo link","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":46},"docs":{"insertions":142,"deletions":77}}},{"hash":"dc1d9fc1f59fdc9527caa8f8dbd5990ea6fcbfd5","isMergeCommit":false,"messageTitle":"Revert link update in AddRemark.md from tp repo to se-edu repo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"a5b8be0d864533ff4aa7701b8dbd969e1411265c","isMergeCommit":false,"messageTitle":"Add SortCommand to allow sorting by birthday, name and money owed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":25}}},{"hash":"904007328ad620a49c3a01c0d52723506188b27e","isMergeCommit":false,"messageTitle":"Add test cases to SortCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2},"test-code":{"insertions":163,"deletions":13}}},{"hash":"4541daac9242574b25fbf42a337f0d95a1b4d166","isMergeCommit":false,"messageTitle":"Shift getComparator from SortCommandParser to SortCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":23}}}]},{"date":"2024-03-26","commitResults":[{"hash":"03e8de0cb2537a1d31e11797930d8694557f4170","isMergeCommit":false,"messageTitle":"Update User Guide with sort command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":73,"deletions":59}}},{"hash":"d93cde326946d062fb5328e5a923a25672a7e36c","isMergeCommit":false,"messageTitle":"Fix broken bold","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":6}}},{"hash":"05ecb4e6a101e69d80852fe106a84f2f3587e222","isMergeCommit":true,"messageTitle":"Merge pull request #41 from zhekaiii/update-ug","messageBody":"Fix broken bold","fileTypesAndContributionMap":{}},{"hash":"1b8194ac97d9a71f76fd7c4e1ac445551fcb853e","isMergeCommit":false,"messageTitle":"Implement PayNow QR Code generation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":235,"deletions":0},"other":{"insertions":1,"deletions":0}}},{"hash":"fdd5612682bac417795d02d91c0b6e941ab44f5a","isMergeCommit":true,"messageTitle":"Merge pull request #42 from NewtonKoh/UI-first-draft","messageBody":"UI first draft","fileTypesAndContributionMap":{}},{"hash":"0664696cfbd2cb082fbc419eff033e3939f55a31","isMergeCommit":true,"messageTitle":"Merge pull request #43 from NewtonKoh/uml-diagram-ui-update","messageBody":"Uml diagram update UI","fileTypesAndContributionMap":{}},{"hash":"3b11fe6f3323fdebf10daaddacc72d004a268c9e","isMergeCommit":false,"messageTitle":"Add new test case for SortCommand and refactor MoneyOwed Comparator","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":16},"test-code":{"insertions":25,"deletions":0}}},{"hash":"14bab21933992f757172543001a00815fd5c38da","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into sort-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"260aea9be4cb9fb3a1881ea58b2e70d8c33fab83","isMergeCommit":false,"messageTitle":"Add new test cases for SortCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6},"test-code":{"insertions":54,"deletions":6}}},{"hash":"a8a3a915beb1a8ece229a832b982a454aa720e44","isMergeCommit":false,"messageTitle":"Add new test cases for SortCommand and AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":5}}}]},{"date":"2024-03-27","commitResults":[{"hash":"10c3a7416d153a210384c9290b7ad55eb7cd4a08","isMergeCommit":false,"messageTitle":"Add new test cases for MoneyOwed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3},"test-code":{"insertions":17,"deletions":0}}},{"hash":"abdeaa0695b6cc74411188f0d4a8c4960b9245b7","isMergeCommit":true,"messageTitle":"Merge pull request #39 from zhekaiii/sort-command","messageBody":"Sort command","fileTypesAndContributionMap":{}},{"hash":"cb28b7331a6ef3ebf7b33ce41e06a6cb17104ef0","isMergeCommit":false,"messageTitle":"Update User Guide screenshots","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":30}}},{"hash":"271ff5c1827b47c83439a35154e9e4d4aef70ee6","isMergeCommit":false,"messageTitle":"Write test cases for PayNowField and MerchantAccountInformation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":17},"test-code":{"insertions":38,"deletions":0}}},{"hash":"efe91240b78abb1131e82b82c0c291c12369e785","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into paynow","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcdc01e30b12f34d2094b6e5fef8fd114e470ecc","isMergeCommit":false,"messageTitle":"Add UML diagram for PayNow classes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":0}}},{"hash":"7deae59b939e4dc3f77bc5136f267b8d028953ca","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"eae5aeb038056e7ac952ba33bc564b18cd1009bd","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"4d0017ccb8cea4a16d5e0dc1a1c5ded6d40a4efe","isMergeCommit":false,"messageTitle":"Extract magic number as a constant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e03f1804badc7822dfe16d1805b3099ee599f405","isMergeCommit":false,"messageTitle":"Add PayCommand, PaymentWindow and ResetDebtCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":427,"deletions":47},"test-code":{"insertions":9,"deletions":0}}},{"hash":"3643e94ad8d14ce38713017dae40de29062a88ae","isMergeCommit":false,"messageTitle":"Add help tooltip","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2}}},{"hash":"d91e4e76374c6fe5bbe3e68e713d14d12923baa7","isMergeCommit":false,"messageTitle":"Add test cases for PayCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":0},"test-code":{"insertions":223,"deletions":2}}},{"hash":"06d74bd5148ea53edce4f673bedc7a98d0855727","isMergeCommit":false,"messageTitle":"Add test cases for PayNowCode and PayNowField","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":16,"deletions":0}}},{"hash":"7654b7f1743d70975bcefc10f936f27c518832ee","isMergeCommit":true,"messageTitle":"Merge pull request #46 from zhekaiii/paynow","messageBody":"Pay Command Part 1","fileTypesAndContributionMap":{}},{"hash":"31d2c416c1bd7b99669227ab3b30f1193758952a","isMergeCommit":false,"messageTitle":"Add missing newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"69a1db6b994e300a98dd0bde3e92ace40e9620f2","isMergeCommit":false,"messageTitle":"Add more test cases to improve code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":37,"deletions":3}}},{"hash":"a4a9c6b195237c0826f97cd94d3537a0233abe9f","isMergeCommit":false,"messageTitle":"Fix broken test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-28","commitResults":[{"hash":"dd69ed47f4231334851a1d1e4e9e7804816cc66c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into pay-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"74ffbfe7ea27007c858cef9cc08002ebad81e984","isMergeCommit":false,"messageTitle":"Minor refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":5}}},{"hash":"4e8fa8dbe59545c7e522bc2a4c4d90769b4dbac9","isMergeCommit":true,"messageTitle":"Merge pull request #48 from zhekaiii/pay-command","messageBody":"Pay Command Part 2","fileTypesAndContributionMap":{}},{"hash":"aa76d4ba814b0a75d5b22f0b6b85866b359bdc3b","isMergeCommit":true,"messageTitle":"Merge pull request #50 from AY2324S2-CS2103T-T16-2/pay-command","messageBody":"Pay command","fileTypesAndContributionMap":{}},{"hash":"15515a50cf643e21d88f1821c5d4fdaec9f6962a","isMergeCommit":false,"messageTitle":"Update version in MainApp.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"987205419c575cb913699f58a6bf490d41e3b3b4","isMergeCommit":false,"messageTitle":"Update jar name to friendfolio.jar","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"f68e807736deb7826e882ef963820945193385f5","isMergeCommit":false,"messageTitle":"Change caught Exception to a more specific Exception and fix QR code not working","messageBody":"","tags":["v1.3.trial"],"fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"247e0332ea07b7decd10957391c0a00d08015f74","isMergeCommit":false,"messageTitle":"Enable assertions when running","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"060f68d9ee42c5e8e4d6862836dd5b9c4bcbb5fd","isMergeCommit":false,"messageTitle":"Add missing newline to EOF","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"27202b92e5b1024ed055ce75bb1fb421b9c0cb89","isMergeCommit":false,"messageTitle":"Update UML and developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":17}}}]},{"date":"2024-03-30","commitResults":[{"hash":"79125228fbe19c63c7a57ffd02ec0a690240c768","isMergeCommit":true,"messageTitle":"Merge pull request #57 from alvinnzz/branch-fix-split","messageBody":"Fix split command to split with user","fileTypesAndContributionMap":{}}]},{"date":"2024-03-31","commitResults":[{"hash":"01d4b26fc52e28aaab9d4eea65492777ae3f64ed","isMergeCommit":true,"messageTitle":"Merge pull request #59 from alvinnzz/edit-docs","messageBody":"Edit user guide for pay command","fileTypesAndContributionMap":{}},{"hash":"5fd6ff2b4a03d23bbbd0025a48a0b20c6ff7d58a","isMergeCommit":true,"messageTitle":"Merge pull request #58 from NewtonKoh/UI-second-draft","messageBody":"Enhance home page with animations and layout updates","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"6ec766c65cb8024bfc3bcaf41323edf78aac9e0e","isMergeCommit":false,"messageTitle":"Reset home card when user presses esc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":11}}},{"hash":"f53e6f5673e4d0950c147247bc39a527bebeca66","isMergeCommit":false,"messageTitle":"Show the correct person when executing certain commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":607,"deletions":499},"test-code":{"insertions":120,"deletions":27}}},{"hash":"bafdc0ccd5593875599f29250d8a8633e0c70e4f","isMergeCommit":false,"messageTitle":"Hide Reset Debt button if user doesn\u0027t owe person money","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c625a6f822f3ddb40370d40207a0e2d2c58e0ae7","isMergeCommit":false,"messageTitle":"Do not clear selection for ResetDebtCommand if Person cannot be found","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7},"test-code":{"insertions":10,"deletions":14}}}]},{"date":"2024-04-03","commitResults":[{"hash":"917338d71f0e9c13109e7ad60160da40a5889bf3","isMergeCommit":true,"messageTitle":"Merge pull request #64 from alvinnzz/split-bug","messageBody":"Fix bug in split command","fileTypesAndContributionMap":{}},{"hash":"26cff27c14eb8d0cf4f7340f2663d262486f9dab","isMergeCommit":false,"messageTitle":"Add days available argument in message usage for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"daaa1213d8d39ea71d9174cbf8609e7710117dd7","isMergeCommit":false,"messageTitle":"Refactor animation related code in HomeCard and PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":255},"test-code":{"insertions":26,"deletions":0}}},{"hash":"a6a0ff8d7742bfb0165a7c452845c3d4c5c1c341","isMergeCommit":false,"messageTitle":"Add new tests to MoneyOwed","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":0}}},{"hash":"a7e6824fc2b71b2da0e3b5d3940edcaeb3b9c0bb","isMergeCommit":false,"messageTitle":"Refactor DisplayCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":240,"deletions":320}}},{"hash":"9d1c467e30413e6cd4b7e43e8697a5c9ab19d4b1","isMergeCommit":false,"messageTitle":"Refactor DisplayCard and extract methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}}]},{"date":"2024-04-04","commitResults":[{"hash":"7927eeceb16878730ad1df322d8bafd5b078ce68","isMergeCommit":false,"messageTitle":"Allow filtering by AND instead of OR","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":53},"test-code":{"insertions":15,"deletions":41}}},{"hash":"91d55f22f819f222155575b6a1aac1e3265d353f","isMergeCommit":false,"messageTitle":"Add test cases to predicates","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":108,"deletions":4}}},{"hash":"11c88f123855af5d86eea92cfcb0d13afa96135c","isMergeCommit":false,"messageTitle":"Add test cases to predicate for equals function","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"9a5a713bf40652d0665defea333b077cef47bcf3","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into filter-and","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ae2152abed7df761ecc8d14aad9e046a5adf629","isMergeCommit":true,"messageTitle":"Merge pull request #63 from alvinnzz/ug-filter","messageBody":"Fix information on user guide","fileTypesAndContributionMap":{}},{"hash":"b7fd4ce907856956c617325df34f9bd14c299743","isMergeCommit":false,"messageTitle":"Update UG for","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":28}}},{"hash":"9c37cce1e6f73f71b834f7d3aa171e08b8ebea23","isMergeCommit":false,"messageTitle":"Add in information to tell user they can press escape unselect contacts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6659f421f34662c400bc4a660213aa9e634d72f7","isMergeCommit":false,"messageTitle":"Add in the all flag into the user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"fe6ad6925d07780f095158cdd8ab0bff938b6d25","isMergeCommit":true,"messageTitle":"Merge master into update-ug","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"658ea43ccdad6e3f594b811446c5a3eaa012d795","isMergeCommit":false,"messageTitle":"Fix numbering of bullet points","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]}]},"authorFileTypeContributionMap":{"alvinnzz":{"docs":194,"functional-code":473,"test-code":482},"NewtonKoh":{"docs":434,"functional-code":1106,"test-code":120},"JerryO3":{"docs":120,"functional-code":489,"test-code":687},"zhekaiii":{"docs":533,"functional-code":1615,"test-code":982,"other":11}},"authorContributionVariance":{"alvinnzz":7328.43,"NewtonKoh":86861.555,"JerryO3":25586.697,"zhekaiii":117849.266},"authorDisplayNameMap":{"alvinnzz":"CS2103T-T16-2 NG W..LVIN","NewtonKoh":"CS2103T-T16-2 KOH ..WTON","JerryO3":"CS2103T-T16-2 OON .. RUI","zhekaiii":"CS2103T-T16-2 LIM ..EKAI"}} +{"authorDailyContributionsMap":{"alvinnzz":[{"date":"2024-03-10","commitResults":[{"hash":"3cb1862ae444ad05d63152b41dfe9349c7318dda","isMergeCommit":false,"messageTitle":"Update about us page for Alvin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":16}}}]},{"date":"2024-03-11","commitResults":[{"hash":"785ea150ff437637e111c4bfa8dcbb9691b482f5","isMergeCommit":true,"messageTitle":"Merge pull request #9 from zhekaiii/about-us-page","messageBody":"Update about us page for Zhekai","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"61976ed71bb5e1bd5f537dfd7036788e4c911056","isMergeCommit":true,"messageTitle":"Merge pull request #15 from NewtonKoh/about-us-page","messageBody":"Edit about us page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"a22145bfe9d15b0d7bc475043a8ef1f8d249dbc2","isMergeCommit":true,"messageTitle":"Merge pull request #22 from zhekaiii/update-nfr","messageBody":"Update NFR","fileTypesAndContributionMap":{}},{"hash":"bcee85c59a9f84cabdded3e456a0e55d5d82e349","isMergeCommit":true,"messageTitle":"Merge pull request #23 from zhekaiii/store-birthday","messageBody":"Store birthday","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"760cae1cb36a6678e8438061e35ec65c7fedf41e","isMergeCommit":false,"messageTitle":"Add model and prefix for MoneyOwed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":4}}}]},{"date":"2024-03-15","commitResults":[{"hash":"9de29e6a48fee38c9e7be2a28f842e5fffae0a7b","isMergeCommit":false,"messageTitle":"Add MoneyOwed into UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":18}}},{"hash":"1fa041663c8f78aaaaa25f3f31a1fddb33c4f63e","isMergeCommit":false,"messageTitle":"Add and update tests for MoneyOwed attribute","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":106,"deletions":26}}}]},{"date":"2024-03-16","commitResults":[{"hash":"1d9d6cbb928132f86596099cc0715c4b0dbde467","isMergeCommit":true,"messageTitle":"Merge with master branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e3b56ef155a0bbda7cd3c29da3cc94ee70ab221","isMergeCommit":false,"messageTitle":"Add javadoc to MoneyOwed class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"1e439c5a37b3f8bec261cf2902acf4657536d740","isMergeCommit":false,"messageTitle":"Fix checkstyle error in MoneyOwedTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"f0ae5127a88912e2e4e45aa6e54fde170afa869f","isMergeCommit":false,"messageTitle":"Update errors based on comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":7},"test-code":{"insertions":18,"deletions":18}}},{"hash":"5d63d1a5a4337000d9c8b898129fb732c68422fa","isMergeCommit":false,"messageTitle":"Add getMessage in MoneyOwed to display on UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":8}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ea462606c2ef7671585808003b64d719e6ae1e93","isMergeCommit":false,"messageTitle":"Add isNegativeMoney function in MoneyOwed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"f2d1e0a2c6cc1db220a1d08e92796eb0429f80a0","isMergeCommit":false,"messageTitle":"Fix isNegativeMoney function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"e64ba307c9dac82429ce1a1d4c5f3c7ee11969c9","isMergeCommit":true,"messageTitle":"Merge pull request #28 from zhekaiii/edit-birthdays","messageBody":"Add editing of Birthdays using the edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"52dc4d8c55f580b7da8a01a2f711bbcba1bb198d","isMergeCommit":false,"messageTitle":"Update edit command to edit money owed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":4},"test-code":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"2763d258771c5f8dc7adafe667df70272b0d4f1d","isMergeCommit":true,"messageTitle":"Merge pull request #32 from alvinnzz/branch-edit-money","messageBody":"Update edit command to edit money owed","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"a6780470775edb16eafb5cd371a93ee43495ed8e","isMergeCommit":false,"messageTitle":"Update UML class diagram for split command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":0}}},{"hash":"ee678a8d26b088858b650c32c41695e2de3ce092","isMergeCommit":true,"messageTitle":"Merge pull request #34 from zhekaiii/update-docs-links","messageBody":"Update links to se-edu repo to the correct github repo link","fileTypesAndContributionMap":{}},{"hash":"7ada790089b935e18cd078bacb2c603833ab3cb9","isMergeCommit":false,"messageTitle":"Add SplitCommand and SplitCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0}}},{"hash":"b5cd9c34b6eb39fa5375fb3bfa2f31d03a7967ce","isMergeCommit":false,"messageTitle":"Edit user guide on split command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":2}}}]},{"date":"2024-03-26","commitResults":[{"hash":"c6bf3cb941e4c4c9bc7b135fe8a59fca01b431b5","isMergeCommit":true,"messageTitle":"Merge pull request #40 from zhekaiii/update-ug","messageBody":"Update User Guide with sort command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"c200d0edfca41f2843c5dac42f03072a35bd0747","isMergeCommit":true,"messageTitle":"Merge pull request #45 from zhekaiii/update-ug","messageBody":"Update User Guide screenshots","fileTypesAndContributionMap":{}},{"hash":"485ee3987ecc43bd86fc3c16bae7306caa93e13c","isMergeCommit":false,"messageTitle":"Add test for SplitCommand and SplitCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":19},"test-code":{"insertions":170,"deletions":0}}},{"hash":"ad7e49e501500810871f93208a677b40fb1e7959","isMergeCommit":true,"messageTitle":"Handle merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b0fb19af8a59a10031850e2489d8a09b0f299115","isMergeCommit":false,"messageTitle":"Add test for split command in AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"39c2cd820a90d7bd3de819445d29b32d0062c5d4","isMergeCommit":false,"messageTitle":"Update test to increase coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":2}}}]},{"date":"2024-03-28","commitResults":[{"hash":"0b58bc04fc6b37947098f19567043e12d423faab","isMergeCommit":true,"messageTitle":"Resolve conflicts with master branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e6588026ecd61d1f883daf71e1283e1244ce73ae","isMergeCommit":true,"messageTitle":"Merge pull request #47 from alvinnzz/branch-split-command","messageBody":"Implement split command with split command parser","fileTypesAndContributionMap":{}},{"hash":"0f1110d9c487451e5b2771186e89ac12e47d448f","isMergeCommit":false,"messageTitle":"Add activity diagram for split feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":0}}},{"hash":"8ffe04dd90a2986d0981b3c57bbdb61372f44afe","isMergeCommit":false,"messageTitle":"Add line for EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-30","commitResults":[{"hash":"6860e111decb9a0503f7b2c9a0cd31a88a7c02ba","isMergeCommit":false,"messageTitle":"Add user guide for pay command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":2}}},{"hash":"f66da32e554594d1260429749e793fc77a3f4230","isMergeCommit":false,"messageTitle":"Fix split command to split with user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"docs":{"insertions":5,"deletions":3},"test-code":{"insertions":2,"deletions":2}}},{"hash":"520f91419e9eaa0473163531298dc476ab0d853f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-docs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ce126c6f465950115a54654bc9366cbbdd483232","isMergeCommit":false,"messageTitle":"Fix information on user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"c4e9fc8d00db08a59a04799cd1392c35e18cf7a9","isMergeCommit":false,"messageTitle":"Fix information on user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":15}}},{"hash":"0e36630d4acc4a58540335ef1d2152daeb0faeb4","isMergeCommit":false,"messageTitle":"Fix bug in split command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":3},"test-code":{"insertions":23,"deletions":0}}},{"hash":"e1d7f10998cdbc8d3c5e8e28bff1afd8708c5ad7","isMergeCommit":false,"messageTitle":"Add LendCommand and LendCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":0}}},{"hash":"6469e91c3b8f4e26130c8d67ea3379ec42d28a45","isMergeCommit":false,"messageTitle":"Fix javadoc for LendCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"504857e2f22764ca23878e239943dc38caebac25","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into lend-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"afff6f793d202451afeb8fed884e5bc553580d1e","isMergeCommit":false,"messageTitle":"Add tests for LendCommand and LendCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":176,"deletions":0}}},{"hash":"cd7bf0a68c6ea3e1b872f50c6297e02a254b8e5d","isMergeCommit":true,"messageTitle":"Merge pull request #68 from zhekaiii/bugfix/67-days-available-argument-not-showing-in-error-message-for-editcommand","messageBody":"Add days available argument in message usage for EditCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"3430ddfdd72de2777cdab30a43c4456ad3f8403b","isMergeCommit":false,"messageTitle":"Fix format for LendCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"4053717de0fc358900415d61bf4becad48fb9f7c","isMergeCommit":true,"messageTitle":"Merge pull request #70 from alvinnzz/lend-command","messageBody":"Implemented lend command to add on current money owed","fileTypesAndContributionMap":{}},{"hash":"523c3b25b86bc2567e2ccf17bc17d7e8f37c0fef","isMergeCommit":false,"messageTitle":"Change user guide based on comments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":44}}},{"hash":"de68d95e50c0c5e7550b9354dd316439b8c26a80","isMergeCommit":true,"messageTitle":"Merge pull request #74 from zhekaiii/update-ug","messageBody":"Update UG","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"aaf9d2b20f4e32f709be81b918dfcebc36fa0f25","isMergeCommit":true,"messageTitle":"Merge pull request #76 from NewtonKoh/UG-changes","messageBody":"Add remark command section to User Guide","tags":["v1.3"],"fileTypesAndContributionMap":{}}]}],"NewtonKoh":[{"date":"2024-03-07","commitResults":[{"hash":"0903314e74cd6305f8453a07c58a036d7ed8c666","isMergeCommit":false,"messageTitle":"Add remark command function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":203,"deletions":20},"test-code":{"insertions":132,"deletions":12}}}]},{"date":"2024-03-12","commitResults":[{"hash":"e9d66b107c3e7c4253ba3ebf1bd30f7218cd138d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/NewtonKoh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6640f8e6df35f0953e969a37c7453c60b5f73f1e","isMergeCommit":false,"messageTitle":"Add member\u0027s about us pages","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":12}}},{"hash":"acacf642fda7d7b842eeb369ed51cc993873d0d1","isMergeCommit":false,"messageTitle":"Revert \"Add remark command function\"","messageBody":"This reverts commit 0903314e74cd6305f8453a07c58a036d7ed8c666.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":203},"test-code":{"insertions":12,"deletions":132}}},{"hash":"bfd2fe09e8b51e64881a6a61d5d1d222c86aa686","isMergeCommit":false,"messageTitle":"Fix whitespace issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":4}}},{"hash":"245cce524e8c52502e2ac71efbaee5dad802e086","isMergeCommit":false,"messageTitle":"Add use cases for features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":175,"deletions":5}}},{"hash":"0edb9fb3d4255d9da1fc76516fbce14c1f2a6173","isMergeCommit":false,"messageTitle":"Remove duplicate use case and rename features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":19}}},{"hash":"be3341d269533df02ad0a1143e838eff1e137856","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":15}}},{"hash":"333fe735cd69e925cc098b769e7d83581528b5fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-remark-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"44fe650f43aadef2046491e9db94a507302b0c29","isMergeCommit":false,"messageTitle":"Include remark prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"72ea11011924cac929f5169b1e6786c3dcef05b5","isMergeCommit":false,"messageTitle":"Fix conflicts on remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":10},"test-code":{"insertions":132,"deletions":12}}},{"hash":"258138f354472938cf01af1d52822eff36bcb37b","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"bce781fad975ffa9748a65d397514d06cc5c5f7c","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":9}}},{"hash":"0a992663e6b11884fdc2313019a5fd4fb8f1e95d","isMergeCommit":false,"messageTitle":"Fix assertion failure","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-25","commitResults":[{"hash":"182a27408346203039aafad3f0d2f17eb29149eb","isMergeCommit":true,"messageTitle":"Merge pull request #36 from JerryO3/UG-update","messageBody":"UG update","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"7815f1165278580a60880ef7acb2cc88362ce0d1","isMergeCommit":false,"messageTitle":"Create first UI draft layout","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":486,"deletions":109}}},{"hash":"b8862d50092ed0924cfe171cc68f8d8fd49b218c","isMergeCommit":false,"messageTitle":"Create second UI draft layout","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":336,"deletions":55}}},{"hash":"db7bf3494601f52cd914f699dbde5013c6b56370","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into UI-first-draft","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b211d034188ad4747af874e1368d15c3224d6227","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":324}}},{"hash":"3db7c8e95ed869c096d204f8c43546ec1213d347","isMergeCommit":true,"messageTitle":"Merge branch \u0027UI-first-draft\u0027 of https://github.com/NewtonKoh/tp into UI-first-draft","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23b9b5f6dc4a5eaa4f19d933f35b6eb5e90f6f08","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"54ffc9ba4494b99e83a443da3f65b79aa19e369c","isMergeCommit":false,"messageTitle":"Update UiClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"b2963b8663c24d6ba8071bf1690b2ca70d07f27a","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/ui/DisplayCard.java","messageBody":"Co-authored-by: Zhekai \u003c40530851+zhekaiii@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"61770c7a48350e69adf6aa14f63fea8ebb8cd508","isMergeCommit":false,"messageTitle":"Address feedback from Zhe Kai","messageBody":"- Rename `logo.png` to `friendfolio_logo.png` for clarity (MainWindow.java).\n- Simplify logic by early returning (PersonListPanel.java).\n- Restore application title to \u0027FriendFolio\u0027 (MainWindow.fxml).\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"6a01a1beb8161ffef13faeaa78869d3c0034ae9b","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-28","commitResults":[{"hash":"5a1a927d48324ccbf281723980128b38accfea6c","isMergeCommit":true,"messageTitle":"Merge pull request #51 from zhekaiii/update-uml","messageBody":"Update UML and developer guide","fileTypesAndContributionMap":{}},{"hash":"a1a6bba563d8b4d3a97ba84bba8e9da14f5fef95","isMergeCommit":false,"messageTitle":"Update DG with UI Upgrade and Remark Command details","messageBody":"- Integrate DisplayCard element description into UI Component section.\n- Detail Remark Command implementation in Logic Component section.\n- Adjust Model Component section to reflect changes supporting new features.\n","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":17}}}]},{"date":"2024-03-29","commitResults":[{"hash":"9a871a216720611c88efa7ec6867303dd1287266","isMergeCommit":true,"messageTitle":"Merge pull request #56 from JerryO3/DG-update-filter","messageBody":"Dg update filter","fileTypesAndContributionMap":{}},{"hash":"6666129c6f1ea292d1c587d0e9aa2b56d609fa1c","isMergeCommit":true,"messageTitle":"Merge pull request #53 from NewtonKoh/DG-update","messageBody":"Update DG with UI Upgrade and Remark Command details","fileTypesAndContributionMap":{}},{"hash":"714dfd5eaeaa5edb333e956a6b99b9bcd67a661e","isMergeCommit":true,"messageTitle":"Merge pull request #55 from alvinnzz/branch-DG","messageBody":"Add activity diagram for split feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"565ce715ba4dd32ac34b20791c00e70e400fbfab","isMergeCommit":false,"messageTitle":"Enhance home page with animations and layout updates","messageBody":"- Introduce new animations for list item interactions.\n- Redesign home page layout for improved user engagement.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":796,"deletions":64},"docs":{"insertions":1,"deletions":1}}},{"hash":"9ee74878fb1efc65f71b40f3e0ee63fcaba533c1","isMergeCommit":false,"messageTitle":"Fix AddCommandTest error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"282763ffe9556e479d7fe363f24124651049937c","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/ui/HomeCard.java","messageBody":"Co-authored-by: Zhekai \u003c40530851+zhekaiii@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":26}}}]},{"date":"2024-03-31","commitResults":[{"hash":"8868df24b418bf9f723c48f2436a6c0cccac2b5b","isMergeCommit":false,"messageTitle":"Improve code quality in UI components","messageBody":"- Rename variables for clarity and adherence to boolean naming conventions.\n- Extract time and date formatting logic into class-level constants in HomeCard.\n- Refactor HomeCard initialization to enforce SLAP, separating logic into distinct methods for setting up time, contacts, bar chart, availability, and animations.\n- Replace `getContactAmount` with `getContactCount` in HomeCard for accurate terminology.\n- Utilize `MoneyOwed.userOwesMoney` method for consistency in debt calculation.\n- Rename `MiniCard` to `MiniPersonCard` for better specificity.\n- Adjust boolean parameter naming in `PersonCard` constructor to `isAnimationEnabled` for clarity.\n\nThese changes aim to enhance code readability, maintainability, and ensure consistency across the UI component implementations.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":222},"other":{"insertions":2,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"4bb2c2066ce03972157ae960c414d90b4b06c7b3","isMergeCommit":true,"messageTitle":"Merge pull request #60 from zhekaiii/add-esc-handler","messageBody":"UX Changes","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"e53a7c88f4df3ad09cbb418813892c365534a23c","isMergeCommit":true,"messageTitle":"Merge pull request #69 from zhekaiii/refactor/animations-and-ui","messageBody":"Refactor animation related code in HomeCard and PersonCard","fileTypesAndContributionMap":{}},{"hash":"8e8e11a1c7445165d65e80be6b0a268f5819abb6","isMergeCommit":true,"messageTitle":"Merge pull request #75 from JerryO3/UG-update","messageBody":"Ug update","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"8f35498dc1c74bdd76e9e613eff00851c5a73a61","isMergeCommit":false,"messageTitle":"Add remark command section to User Guide","messageBody":"- Include detailed command usage for \u0027remark\u0027\n- Provide examples for adding and editing remarks\n- Ensure consistency with existing documentation style\n","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":17}}}]}],"JerryO3":[{"date":"2024-03-11","commitResults":[{"hash":"5ca183da1c65e3d08813bde227d207df383ab19a","isMergeCommit":false,"messageTitle":"Add User Stories, User Profile and Value Proposition as per team doc","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":9}}},{"hash":"a2eece09935c8fda66fb20d88ef84b61e0444700","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"818031c60aef3b2a5a7344505c96083970db343d","isMergeCommit":false,"messageTitle":"Add picture in about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"eef5ed73fa89d712e385910f3c2991a1f0740d82","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"05a66ba0e40f3685be23b2ca7b99ee4fbcfe0860","isMergeCommit":false,"messageTitle":"Add Sort feature for tags, and supporting parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"20cd2529debdfff8f7fb3e931a1f622e5c7e3b44","isMergeCommit":false,"messageTitle":"Add test for sort command and parser. Fix failing tests from outdated mocks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":14},"test-code":{"insertions":267,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"acbb7fb148809172473a007a5e174e6444ced120","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6a06bde3f677e97fe8d8fb6e78b811fdfaf8f416","isMergeCommit":true,"messageTitle":"fix merge conflicts on typical address book json","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"952fde5cb30304f9bd167e057013770f63779f2b","isMergeCommit":false,"messageTitle":"Make tag search case insensitive, while retaining case sensitivity of tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":17,"deletions":0}}},{"hash":"3ba0bf6e44175685542679c2834d0bd129889592","isMergeCommit":false,"messageTitle":"Renamed sort to filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":13},"other":{"insertions":39,"deletions":39},"test-code":{"insertions":4,"deletions":12}}},{"hash":"00437f6db7ebc21dfc6d038e5827eecb804abe52","isMergeCommit":false,"messageTitle":"fix coding style to match styleguide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3},"test-code":{"insertions":13,"deletions":4}}},{"hash":"40197ea188f5a0f708e1a07e80a6686ea5d293ab","isMergeCommit":false,"messageTitle":"Add Javadoc for FilterCommand constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"e7a013f5ca1449b5e61f2e90d2a41325169b7d26","isMergeCommit":false,"messageTitle":"Fix formatting for FilterCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"79391013a47d036da2036a500bc1edabe9792d74","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab14881bc0d7b29f61cbdd20f1a3f0430b97dfca","isMergeCommit":false,"messageTitle":"Add UML diagram showing FilterCommand and FindCommand relationship","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":0}}},{"hash":"c51dc8fa7ebc5a9a3d0b21b39dac1072b7d54ce8","isMergeCommit":false,"messageTitle":"Add explanation for future implementation of filter commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"0844e9e9e2ca2d2d7630a986b23e5b6e1b5d3d6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"ef8083e11010244cc2c036f0f52524090cac9dc8","isMergeCommit":false,"messageTitle":"Add days available field to person, include add and edit functionality on keyword d/","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":162,"deletions":21}}},{"hash":"324f5cf53619ba785dc13379a0e9816198ba4334","isMergeCommit":false,"messageTitle":"Fix storage bug where days available was not parseable to JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5},"test-code":{"insertions":37,"deletions":1}}}]},{"date":"2024-03-25","commitResults":[{"hash":"b0a7b78527a71309b7dba5ed947b568fddc28824","isMergeCommit":false,"messageTitle":"Add testing support and stubs for days available field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":7},"test-code":{"insertions":196,"deletions":86}}},{"hash":"8201dd0a1b8a6ab71cc4acd3015b74b33c1d031b","isMergeCommit":false,"messageTitle":"Update User Guide with 2101 requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":9}}},{"hash":"50656753941cf6e4a81e628d257611f59990560c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0c14cf61e68921dfbce954df151b0f638db1ddb","isMergeCommit":true,"messageTitle":"Merge pull request #33 from alvinnzz/branch-edit-uml","messageBody":"Update UML class diagram for split command","fileTypesAndContributionMap":{}},{"hash":"daad349b73aa24a2ae046ed638b9fd80866d6879","isMergeCommit":true,"messageTitle":"Merge pull request #37 from alvinnzz/branch-user-guide","messageBody":"Edit user guide on split command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"fce725f7815a32d2a96dc5069d98f72ef5c5d05b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"49c8ea5aa5eff0c7d1a5177d8e5710384297be3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into days-available","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"31982b8a8a8601cf49775daee11817c45639832c","isMergeCommit":false,"messageTitle":"Update code to conform to style guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":9},"test-code":{"insertions":90,"deletions":17}}},{"hash":"44db2640d4299d43e30372ce4d9ba8795a8c6cba","isMergeCommit":true,"messageTitle":"Merge branch \u0027days-available\u0027 into general-filter-by","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"079c5496b62c855463c87851ed7c2463340c42d3","isMergeCommit":false,"messageTitle":"Test abstract filter class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":70},"other":{"insertions":4,"deletions":2},"test-code":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-27","commitResults":[{"hash":"9e6d04d125443cd365ae313520f7018850419b5c","isMergeCommit":false,"messageTitle":"Revert \"Test abstract filter class\"","messageBody":"This reverts commit 079c5496b62c855463c87851ed7c2463340c42d3.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":54},"other":{"insertions":2,"deletions":4},"test-code":{"insertions":8,"deletions":10}}},{"hash":"2251c18b832f0b5ffbe01ad81d4cf0e3a3a2241e","isMergeCommit":false,"messageTitle":"Add filter abstract class that groups similar filter classes together","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":185,"deletions":116},"other":{"insertions":39,"deletions":37},"test-code":{"insertions":11,"deletions":9}}},{"hash":"b00604b70590b24407e58f72054e4605879dc6de","isMergeCommit":false,"messageTitle":"Update names for filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-28","commitResults":[{"hash":"b32de24e74828193b44d7ce76bbef941b5a222f3","isMergeCommit":false,"messageTitle":"Add filter command parser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":81},"other":{"insertions":8,"deletions":8}}},{"hash":"3014d7e5a762798ec4e1f26a160ba8be1cf497db","isMergeCommit":false,"messageTitle":"Add some tests to filter command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":70,"deletions":6}}},{"hash":"bb487644ed792bd1ce65adbe29d6600e7787a3db","isMergeCommit":false,"messageTitle":"Update code to fit styleguide.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":13},"other":{"insertions":2,"deletions":4},"test-code":{"insertions":82,"deletions":0}}},{"hash":"385d061bc804183c5d17acbb47cc0a95fb34e235","isMergeCommit":false,"messageTitle":"Update code to fit styleguide","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":14}}},{"hash":"450d234f6fcd6382c83ab2830323aaa80968bcb1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1e48f4eed64034e2926d0b187a144b588457cc1b","isMergeCommit":true,"messageTitle":"Fix merge conflicts on Ui","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7473d2ba536c49665001ac6aac21246dad9a957b","isMergeCommit":false,"messageTitle":"Move predicates package under person","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":3}}},{"hash":"067b6f05526415eb361c52f51ba6cd4a99bb5fbb","isMergeCommit":false,"messageTitle":"Fix imports to adhere to style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-29","commitResults":[{"hash":"8f55c11e66f40923878014e68b54e5610f8c319c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"edb4c90e6f686ed9d0b231b863b870f749413b35","isMergeCommit":true,"messageTitle":"Resolve merge conflicts from master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1f6f92bcab53818de59d5692d13cb604661035e","isMergeCommit":false,"messageTitle":"Update tests with daysAvailable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":5,"deletions":3}}},{"hash":"c7ac9dc21b140243816d53cad35456c951055204","isMergeCommit":false,"messageTitle":"Add updated filter implementation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":13}}},{"hash":"065a0bd16aa867c37efc1a945ddf22891f259ffd","isMergeCommit":false,"messageTitle":"Update puml for checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"7813961536fd69e7bb9928585187baa2d24268f9","isMergeCommit":false,"messageTitle":"Update puml for checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"b5d773fbf8eec9f804462a821114f15b265e38d8","isMergeCommit":false,"messageTitle":"Edit comments for clarity","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":18}}},{"hash":"3d6ab2cf84ed77cb2f68ffc0cbe4748618906866","isMergeCommit":false,"messageTitle":"Refactor Days to Day","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"bb043a84d9917e4cab3d0f211e141220a6fd5969","isMergeCommit":false,"messageTitle":"Refactor Days to Day","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":72},"test-code":{"insertions":35,"deletions":55}}},{"hash":"5c3d69e9572984e4c9a5c3ea69c2d31795a17d7c","isMergeCommit":false,"messageTitle":"Fix import ordering to styleguide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":4},"test-code":{"insertions":30,"deletions":6}}},{"hash":"049f28507597783151473700e63eb8d73ef09408","isMergeCommit":false,"messageTitle":"Remove magic numbers, edit comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":12},"test-code":{"insertions":8,"deletions":8}}},{"hash":"9a9e8944b1309481dc99e357d84a31e27aa9d66a","isMergeCommit":false,"messageTitle":"Refactor filter types into subclasses","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7}}},{"hash":"97c4309ee72766d5f2d20e765fb47fa6c4bc4edc","isMergeCommit":false,"messageTitle":"Refactor find command to filter name command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":14},"other":{"insertions":21,"deletions":21},"test-code":{"insertions":5,"deletions":18}}},{"hash":"31dd4145bd8371266d9a5967ab050ab4e63a678b","isMergeCommit":false,"messageTitle":"Fix regressions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":25},"other":{"insertions":5,"deletions":5},"test-code":{"insertions":9,"deletions":7}}},{"hash":"9f27b4f31cfdd45a9f57042a0365985643e3aeb2","isMergeCommit":false,"messageTitle":"Fix import statements sequence","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":16,"deletions":2}}},{"hash":"7084e24dbfbd20a847356613f6c1294391db18b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e36e0ad4cfb79e0b3f61dbcfca62d8284e7d2553","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into general-filter-by","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a05d77371082b0687adb8bba70b77a8841fdef66","isMergeCommit":false,"messageTitle":"Use constants instead of magic words","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"8c149592159f67caec302f96f8c446742d62d164","isMergeCommit":true,"messageTitle":"Merge pull request #49 from JerryO3/general-filter-by","messageBody":"General filter by","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"0ce0ebdc36fffe57b2e362d2e4f4f037a26da3dc","isMergeCommit":true,"messageTitle":"Merge pull request #73 from zhekaiii/filter-and","messageBody":"Allow filtering by AND instead of OR","fileTypesAndContributionMap":{}},{"hash":"eb885a8d248a803916416725fa6bba24a9d6a658","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/JerryO3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ef680b9a0393babc8ec66f6726a96da822a86e2","isMergeCommit":false,"messageTitle":"Update UG filter section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"71fdd8d401881bc53a34176a3e0300666cf1603b","isMergeCommit":false,"messageTitle":"Update DG on all-match filter","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":7}}}]}],"zhekaiii":[{"date":"2024-03-11","commitResults":[{"hash":"dbaeef15582db658a89c1ea4e9094e5445471d40","isMergeCommit":true,"messageTitle":"Merge pull request #7 from alvinnzz/about-us-page","messageBody":"Update about us page for Alvin","fileTypesAndContributionMap":{}},{"hash":"769403b653d2589bd635c334d8b21ef044c17cb5","isMergeCommit":false,"messageTitle":"Update about us page for Zhekai","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":86,"deletions":26}}}]},{"date":"2024-03-12","commitResults":[{"hash":"755f91327c388fa27f116582a9a8bb94010faca5","isMergeCommit":true,"messageTitle":"Merge pull request #11 from JerryO3/about-us-update","messageBody":"AboutUs update","fileTypesAndContributionMap":{}},{"hash":"39a470a27d0aa0ff512807782a736bc087263e92","isMergeCommit":true,"messageTitle":"Merge pull request #12 from JerryO3/DG-update","messageBody":"Add User Stories, User Profile and Value Proposition as per team doc","fileTypesAndContributionMap":{}},{"hash":"d598390424ea2c51ecef971fb41781806ecfba68","isMergeCommit":true,"messageTitle":"Merge pull request #20 from NewtonKoh/use-cases","messageBody":"Add use cases for features","fileTypesAndContributionMap":{}},{"hash":"cfe92afbc54b5cda0d53eeee235466308288bf7e","isMergeCommit":true,"messageTitle":"Merge pull request #21 from NewtonKoh/add-remark-command","messageBody":"Add remark command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"98023956232df40519834a19f32b0041b8d481dd","isMergeCommit":false,"messageTitle":"Add birthdays to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":190,"deletions":58},"test-code":{"insertions":120,"deletions":34}}},{"hash":"4dbb07d4874224c441313e9afd915b5b518e439e","isMergeCommit":false,"messageTitle":"Update non-functional requirements in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":165,"deletions":102}}},{"hash":"472053398ec9d8780e2e9ce5e039425174f8218f","isMergeCommit":true,"messageTitle":"Merge master into update-nfr","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"46f499dd408d549ba148cc39a49a1088fb274c9d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":12}}},{"hash":"f0eee632b5222adbb468f75ebc68a7dd093604a5","isMergeCommit":false,"messageTitle":"Fix run check errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"3a9476756f2db8bd8392d48243397383266d0bab","isMergeCommit":false,"messageTitle":"Fix test errors and add birthday to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":37},"test-code":{"insertions":1,"deletions":1}}},{"hash":"6676c13ad3569eaae7bd1d0809ac77fb3b57abf8","isMergeCommit":true,"messageTitle":"Merge master into store-birthday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6ccd3861927d8420bd219fe1cfc5eb4d4cc0ea6b","isMergeCommit":false,"messageTitle":"Allow Remark to be optional","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":8}}},{"hash":"1aac1a2790a9859522b4fd9f99770a9ea7e829ab","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"9391234e7446ed25f9419e6d819f6e3567c8c844","isMergeCommit":false,"messageTitle":"Add birthday into User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":59,"deletions":44}}}]},{"date":"2024-03-16","commitResults":[{"hash":"e010a0c3bed43974b0ec80ecb24c40789001f217","isMergeCommit":false,"messageTitle":"Add editing of Birthdays using the edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5},"test-code":{"insertions":49,"deletions":6}}}]},{"date":"2024-03-17","commitResults":[{"hash":"7b4a3d91c9eaba65a2f9bccb4605070ed1f04271","isMergeCommit":false,"messageTitle":"Refactor Birthday parsing and fix inaccurate javadoc headers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6}}},{"hash":"d444e2aa3ea76b6773b65c83358aee75543cb6e1","isMergeCommit":true,"messageTitle":"Merge pull request #26 from alvinnzz/branch-store-money","messageBody":"Store moneyOwed attribute","fileTypesAndContributionMap":{}},{"hash":"c62cea77e036cf431f1640fbe6ba84889d742859","isMergeCommit":true,"messageTitle":"Merge master into edit-birthdays","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"9ab512e569f30aeaac1aa717dfe50a31321aae66","isMergeCommit":false,"messageTitle":"Update UMLs to include new attributes into Person class","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}},{"hash":"fc509f6a2b1b4e15835e735cc7f87b85d47ce0dd","isMergeCommit":true,"messageTitle":"Merge pull request #29 from zhekaiii/update-uml","messageBody":"Update UMLs to include new attributes into Person class","fileTypesAndContributionMap":{}},{"hash":"5e0a539835dad8df780cc0eebf1d29caa3ccf8f0","isMergeCommit":true,"messageTitle":"Merge pull request #25 from JerryO3/sort-by-tag","messageBody":"Sort by tag: Add sort command and parser support","fileTypesAndContributionMap":{}},{"hash":"96bde6d8b5a82c317b554c73985de4040fbef545","isMergeCommit":true,"messageTitle":"Merge pull request #31 from JerryO3/UML-diagram","messageBody":"Uml diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"ec86c2f1104782b2acb9363140a302878e6cd2b9","isMergeCommit":false,"messageTitle":"Update links to se-edu repo to the correct github repo link","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":46},"docs":{"insertions":142,"deletions":77}}},{"hash":"dc1d9fc1f59fdc9527caa8f8dbd5990ea6fcbfd5","isMergeCommit":false,"messageTitle":"Revert link update in AddRemark.md from tp repo to se-edu repo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"a5b8be0d864533ff4aa7701b8dbd969e1411265c","isMergeCommit":false,"messageTitle":"Add SortCommand to allow sorting by birthday, name and money owed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":25}}},{"hash":"904007328ad620a49c3a01c0d52723506188b27e","isMergeCommit":false,"messageTitle":"Add test cases to SortCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2},"test-code":{"insertions":163,"deletions":13}}},{"hash":"4541daac9242574b25fbf42a337f0d95a1b4d166","isMergeCommit":false,"messageTitle":"Shift getComparator from SortCommandParser to SortCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":23}}}]},{"date":"2024-03-26","commitResults":[{"hash":"03e8de0cb2537a1d31e11797930d8694557f4170","isMergeCommit":false,"messageTitle":"Update User Guide with sort command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":73,"deletions":59}}},{"hash":"d93cde326946d062fb5328e5a923a25672a7e36c","isMergeCommit":false,"messageTitle":"Fix broken bold","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":6}}},{"hash":"05ecb4e6a101e69d80852fe106a84f2f3587e222","isMergeCommit":true,"messageTitle":"Merge pull request #41 from zhekaiii/update-ug","messageBody":"Fix broken bold","fileTypesAndContributionMap":{}},{"hash":"1b8194ac97d9a71f76fd7c4e1ac445551fcb853e","isMergeCommit":false,"messageTitle":"Implement PayNow QR Code generation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":235,"deletions":0},"other":{"insertions":1,"deletions":0}}},{"hash":"fdd5612682bac417795d02d91c0b6e941ab44f5a","isMergeCommit":true,"messageTitle":"Merge pull request #42 from NewtonKoh/UI-first-draft","messageBody":"UI first draft","fileTypesAndContributionMap":{}},{"hash":"0664696cfbd2cb082fbc419eff033e3939f55a31","isMergeCommit":true,"messageTitle":"Merge pull request #43 from NewtonKoh/uml-diagram-ui-update","messageBody":"Uml diagram update UI","fileTypesAndContributionMap":{}},{"hash":"3b11fe6f3323fdebf10daaddacc72d004a268c9e","isMergeCommit":false,"messageTitle":"Add new test case for SortCommand and refactor MoneyOwed Comparator","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":16},"test-code":{"insertions":25,"deletions":0}}},{"hash":"14bab21933992f757172543001a00815fd5c38da","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into sort-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"260aea9be4cb9fb3a1881ea58b2e70d8c33fab83","isMergeCommit":false,"messageTitle":"Add new test cases for SortCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6},"test-code":{"insertions":54,"deletions":6}}},{"hash":"a8a3a915beb1a8ece229a832b982a454aa720e44","isMergeCommit":false,"messageTitle":"Add new test cases for SortCommand and AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":5}}}]},{"date":"2024-03-27","commitResults":[{"hash":"10c3a7416d153a210384c9290b7ad55eb7cd4a08","isMergeCommit":false,"messageTitle":"Add new test cases for MoneyOwed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3},"test-code":{"insertions":17,"deletions":0}}},{"hash":"abdeaa0695b6cc74411188f0d4a8c4960b9245b7","isMergeCommit":true,"messageTitle":"Merge pull request #39 from zhekaiii/sort-command","messageBody":"Sort command","fileTypesAndContributionMap":{}},{"hash":"cb28b7331a6ef3ebf7b33ce41e06a6cb17104ef0","isMergeCommit":false,"messageTitle":"Update User Guide screenshots","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":30}}},{"hash":"271ff5c1827b47c83439a35154e9e4d4aef70ee6","isMergeCommit":false,"messageTitle":"Write test cases for PayNowField and MerchantAccountInformation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":17},"test-code":{"insertions":38,"deletions":0}}},{"hash":"efe91240b78abb1131e82b82c0c291c12369e785","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into paynow","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcdc01e30b12f34d2094b6e5fef8fd114e470ecc","isMergeCommit":false,"messageTitle":"Add UML diagram for PayNow classes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":0}}},{"hash":"7deae59b939e4dc3f77bc5136f267b8d028953ca","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"eae5aeb038056e7ac952ba33bc564b18cd1009bd","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"4d0017ccb8cea4a16d5e0dc1a1c5ded6d40a4efe","isMergeCommit":false,"messageTitle":"Extract magic number as a constant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e03f1804badc7822dfe16d1805b3099ee599f405","isMergeCommit":false,"messageTitle":"Add PayCommand, PaymentWindow and ResetDebtCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":427,"deletions":47},"test-code":{"insertions":9,"deletions":0}}},{"hash":"3643e94ad8d14ce38713017dae40de29062a88ae","isMergeCommit":false,"messageTitle":"Add help tooltip","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2}}},{"hash":"d91e4e76374c6fe5bbe3e68e713d14d12923baa7","isMergeCommit":false,"messageTitle":"Add test cases for PayCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":0},"test-code":{"insertions":223,"deletions":2}}},{"hash":"06d74bd5148ea53edce4f673bedc7a98d0855727","isMergeCommit":false,"messageTitle":"Add test cases for PayNowCode and PayNowField","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":16,"deletions":0}}},{"hash":"7654b7f1743d70975bcefc10f936f27c518832ee","isMergeCommit":true,"messageTitle":"Merge pull request #46 from zhekaiii/paynow","messageBody":"Pay Command Part 1","fileTypesAndContributionMap":{}},{"hash":"31d2c416c1bd7b99669227ab3b30f1193758952a","isMergeCommit":false,"messageTitle":"Add missing newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"69a1db6b994e300a98dd0bde3e92ace40e9620f2","isMergeCommit":false,"messageTitle":"Add more test cases to improve code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":37,"deletions":3}}},{"hash":"a4a9c6b195237c0826f97cd94d3537a0233abe9f","isMergeCommit":false,"messageTitle":"Fix broken test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-28","commitResults":[{"hash":"dd69ed47f4231334851a1d1e4e9e7804816cc66c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into pay-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"74ffbfe7ea27007c858cef9cc08002ebad81e984","isMergeCommit":false,"messageTitle":"Minor refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":5}}},{"hash":"4e8fa8dbe59545c7e522bc2a4c4d90769b4dbac9","isMergeCommit":true,"messageTitle":"Merge pull request #48 from zhekaiii/pay-command","messageBody":"Pay Command Part 2","fileTypesAndContributionMap":{}},{"hash":"aa76d4ba814b0a75d5b22f0b6b85866b359bdc3b","isMergeCommit":true,"messageTitle":"Merge pull request #50 from AY2324S2-CS2103T-T16-2/pay-command","messageBody":"Pay command","fileTypesAndContributionMap":{}},{"hash":"15515a50cf643e21d88f1821c5d4fdaec9f6962a","isMergeCommit":false,"messageTitle":"Update version in MainApp.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"987205419c575cb913699f58a6bf490d41e3b3b4","isMergeCommit":false,"messageTitle":"Update jar name to friendfolio.jar","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"f68e807736deb7826e882ef963820945193385f5","isMergeCommit":false,"messageTitle":"Change caught Exception to a more specific Exception and fix QR code not working","messageBody":"","tags":["v1.3.trial"],"fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"247e0332ea07b7decd10957391c0a00d08015f74","isMergeCommit":false,"messageTitle":"Enable assertions when running","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"060f68d9ee42c5e8e4d6862836dd5b9c4bcbb5fd","isMergeCommit":false,"messageTitle":"Add missing newline to EOF","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"27202b92e5b1024ed055ce75bb1fb421b9c0cb89","isMergeCommit":false,"messageTitle":"Update UML and developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":17}}}]},{"date":"2024-03-30","commitResults":[{"hash":"79125228fbe19c63c7a57ffd02ec0a690240c768","isMergeCommit":true,"messageTitle":"Merge pull request #57 from alvinnzz/branch-fix-split","messageBody":"Fix split command to split with user","fileTypesAndContributionMap":{}}]},{"date":"2024-03-31","commitResults":[{"hash":"01d4b26fc52e28aaab9d4eea65492777ae3f64ed","isMergeCommit":true,"messageTitle":"Merge pull request #59 from alvinnzz/edit-docs","messageBody":"Edit user guide for pay command","fileTypesAndContributionMap":{}},{"hash":"5fd6ff2b4a03d23bbbd0025a48a0b20c6ff7d58a","isMergeCommit":true,"messageTitle":"Merge pull request #58 from NewtonKoh/UI-second-draft","messageBody":"Enhance home page with animations and layout updates","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"6ec766c65cb8024bfc3bcaf41323edf78aac9e0e","isMergeCommit":false,"messageTitle":"Reset home card when user presses esc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":11}}},{"hash":"f53e6f5673e4d0950c147247bc39a527bebeca66","isMergeCommit":false,"messageTitle":"Show the correct person when executing certain commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":607,"deletions":499},"test-code":{"insertions":120,"deletions":27}}},{"hash":"bafdc0ccd5593875599f29250d8a8633e0c70e4f","isMergeCommit":false,"messageTitle":"Hide Reset Debt button if user doesn\u0027t owe person money","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c625a6f822f3ddb40370d40207a0e2d2c58e0ae7","isMergeCommit":false,"messageTitle":"Do not clear selection for ResetDebtCommand if Person cannot be found","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":7},"test-code":{"insertions":10,"deletions":14}}}]},{"date":"2024-04-03","commitResults":[{"hash":"917338d71f0e9c13109e7ad60160da40a5889bf3","isMergeCommit":true,"messageTitle":"Merge pull request #64 from alvinnzz/split-bug","messageBody":"Fix bug in split command","fileTypesAndContributionMap":{}},{"hash":"26cff27c14eb8d0cf4f7340f2663d262486f9dab","isMergeCommit":false,"messageTitle":"Add days available argument in message usage for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"daaa1213d8d39ea71d9174cbf8609e7710117dd7","isMergeCommit":false,"messageTitle":"Refactor animation related code in HomeCard and PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":255},"test-code":{"insertions":26,"deletions":0}}},{"hash":"a6a0ff8d7742bfb0165a7c452845c3d4c5c1c341","isMergeCommit":false,"messageTitle":"Add new tests to MoneyOwed","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":0}}},{"hash":"a7e6824fc2b71b2da0e3b5d3940edcaeb3b9c0bb","isMergeCommit":false,"messageTitle":"Refactor DisplayCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":240,"deletions":320}}},{"hash":"9d1c467e30413e6cd4b7e43e8697a5c9ab19d4b1","isMergeCommit":false,"messageTitle":"Refactor DisplayCard and extract methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}}]},{"date":"2024-04-04","commitResults":[{"hash":"7927eeceb16878730ad1df322d8bafd5b078ce68","isMergeCommit":false,"messageTitle":"Allow filtering by AND instead of OR","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":53},"test-code":{"insertions":15,"deletions":41}}},{"hash":"91d55f22f819f222155575b6a1aac1e3265d353f","isMergeCommit":false,"messageTitle":"Add test cases to predicates","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":108,"deletions":4}}},{"hash":"11c88f123855af5d86eea92cfcb0d13afa96135c","isMergeCommit":false,"messageTitle":"Add test cases to predicate for equals function","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"9a5a713bf40652d0665defea333b077cef47bcf3","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into filter-and","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ae2152abed7df761ecc8d14aad9e046a5adf629","isMergeCommit":true,"messageTitle":"Merge pull request #63 from alvinnzz/ug-filter","messageBody":"Fix information on user guide","fileTypesAndContributionMap":{}},{"hash":"b7fd4ce907856956c617325df34f9bd14c299743","isMergeCommit":false,"messageTitle":"Update UG for","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":28}}},{"hash":"9c37cce1e6f73f71b834f7d3aa171e08b8ebea23","isMergeCommit":false,"messageTitle":"Add in information to tell user they can press escape unselect contacts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6659f421f34662c400bc4a660213aa9e634d72f7","isMergeCommit":false,"messageTitle":"Add in the all flag into the user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"fe6ad6925d07780f095158cdd8ab0bff938b6d25","isMergeCommit":true,"messageTitle":"Merge master into update-ug","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"658ea43ccdad6e3f594b811446c5a3eaa012d795","isMergeCommit":false,"messageTitle":"Fix numbering of bullet points","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2024-04-05","commitResults":[{"hash":"9dadca51be34bffd96402812d384afa11d97a7ee","isMergeCommit":false,"messageTitle":"Update user guide url","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":16}}}]}]},"authorFileTypeContributionMap":{"alvinnzz":{"docs":194,"functional-code":473,"test-code":482},"NewtonKoh":{"docs":434,"functional-code":1106,"test-code":120},"JerryO3":{"docs":120,"functional-code":489,"test-code":687},"zhekaiii":{"docs":533,"functional-code":1618,"test-code":982,"other":11}},"authorContributionVariance":{"alvinnzz":7328.43,"NewtonKoh":86861.555,"JerryO3":25586.697,"zhekaiii":117646.74},"authorDisplayNameMap":{"alvinnzz":"CS2103T-T16-2 NG W..LVIN","NewtonKoh":"CS2103T-T16-2 KOH ..WTON","JerryO3":"CS2103T-T16-2 OON .. RUI","zhekaiii":"CS2103T-T16-2 LIM ..EKAI"}} diff --git a/AY2324S2-CS2103T-T16-4_tp_master/authorship.json b/AY2324S2-CS2103T-T16-4_tp_master/authorship.json index f16fba23..57f5fd81 100644 --- a/AY2324S2-CS2103T-T16-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T16-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T16-4/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103T-T16-4/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"HusseinSafwan02"},"content":"# TutorTrack","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"HusseinSafwan02"},"content":"\u003e \"Simplicity boils down to two steps: identify the essential, eliminate the rest.\"– Leo Babauta [(source)](https://dansilvestre.com/productivity-quotes/)","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"HusseinSafwan02"},"content":"_TutorTrack_ is **an application for freelance tutors to manage their students**.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":" * `Add` and `Delete` students in the student list.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"HusseinSafwan02"},"content":" * `Find` a particular student from the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":" * `View` a particular student\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"HusseinSafwan02"},"content":"The project simulates an ongoing software project for a desktop application (called __) used for managing contact details.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"* For the detailed documentation of this project, see the **[TutorTrack Product Website](https://ay2324s2-cs2103t-t16-4.github.io/tp/)**.","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"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":{"justinlengch":3,"HusseinSafwan02":10,"-":6}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" archiveFileName \u003d \u0027tutortrack.jar\u0027","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":"run {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"justinlengch":1,"leepoeaik":2,"-":73}},{"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":"leepoeaik"},"content":"### Justin Leng Chern Harn","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"\u003cimg src\u003d\"images/justinlengch.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"* Role: Developer","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"* Responsibilities: Quality Assurance","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"### Lee Poe Aik","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"\u003cimg src\u003d\"images/leepoeaik.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":"[[github](http://github.com/leepoeaik)]","lastModifiedDate":"2024-03-14"},{"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":"justinlengch"},"content":"* Role: Developer","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Chiarena"},"content":"### Chia Rena","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Chiarena"},"content":"\u003cimg src\u003d\"images/chiarena.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"Chiarena"},"content":"[[github](http://github.com/Chiarena)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"Chiarena"},"content":"* Responsibilities: Deliverables and Deadlines ","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"HusseinSafwan02"},"content":"### Safwan Hussein","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"HusseinSafwan02"},"content":"\u003cimg src\u003d\"images/husseinsafwan02.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"HusseinSafwan02"},"content":"[[github](http://github.com/HusseinSafwan02)]","lastModifiedDate":"2024-03-21"},{"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":"HusseinSafwan02"},"content":"* Responsibilities: UI, Documentation and Integration","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"justinlengch":4,"Chiarena":4,"leepoeaik":4,"HusseinSafwan02":4,"-":37}},{"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":"justinlengch"},"content":"# TutorTrack Developer Guide","lastModifiedDate":"2024-03-18"},{"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":"justinlengch"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2024-03-18"},{"lineNumber":278,"author":{"gitId":"justinlengch"},"content":"* has a need to quickly manage all their lesson plans","lastModifiedDate":"2024-03-18"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":282,"author":{"gitId":"justinlengch"},"content":"* prefers to view all their students in a centralized platform instead of across separate apps","lastModifiedDate":"2024-03-18"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"justinlengch"},"content":"**Value proposition**: TutorTrack revolutionizes private tutoring with intuitive keyboard navigation, integrated ","lastModifiedDate":"2024-03-18"},{"lineNumber":285,"author":{"gitId":"justinlengch"},"content":"calendar features, and detailed student profiles. \u003c/br\u003e Automated reminders keep tutors organized while robust ","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"justinlengch"},"content":"security measures and responsive support ensure a seamless user experience. \u003c/br\u003e Experience efficient student management ","lastModifiedDate":"2024-03-18"},{"lineNumber":287,"author":{"gitId":"justinlengch"},"content":"with TutorTrack – the ultimate solution for private tutors.","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"justinlengch"},"content":"|----------|-----------------|--------------------------------------------------------|---------------------------------------------------------------------------|","lastModifiedDate":"2024-03-20"},{"lineNumber":296,"author":{"gitId":"HusseinSafwan02"},"content":"| `* * *` | new user | view a guide of useful commands | refer to instructions when I forget how to use TutorTrack |","lastModifiedDate":"2024-03-12"},{"lineNumber":297,"author":{"gitId":"HusseinSafwan02"},"content":"| `* * *` | freelance tutor | add a new student | |","lastModifiedDate":"2024-03-12"},{"lineNumber":298,"author":{"gitId":"HusseinSafwan02"},"content":"| `* * *` | freelance tutor | delete an existing | remove entries that I no longer need |","lastModifiedDate":"2024-03-12"},{"lineNumber":299,"author":{"gitId":"HusseinSafwan02"},"content":"| `* * *` | freelance tutor | find a student by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-12"},{"lineNumber":300,"author":{"gitId":"HusseinSafwan02"},"content":"| `* *` | freelance tutor | view all my students\u0027 information | view all my students at the same time |","lastModifiedDate":"2024-03-12"},{"lineNumber":301,"author":{"gitId":"justinlengch"},"content":"| `* * *` | freelance tutor | view a specific student\u0027s information | specifically refer to a particular student\u0027s information |","lastModifiedDate":"2024-03-18"},{"lineNumber":302,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | edit student information | student information can be edited and changed |","lastModifiedDate":"2024-03-18"},{"lineNumber":303,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | schedule meeting times with students | set lessons |","lastModifiedDate":"2024-03-18"},{"lineNumber":304,"author":{"gitId":"justinlengch"},"content":"| `* * *` | freelance tutor | delete meeting times with students | cancel lessons |","lastModifiedDate":"2024-03-18"},{"lineNumber":305,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | edit meeting times with students | reschedule lessons |","lastModifiedDate":"2024-03-18"},{"lineNumber":306,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | view meeting times in a calender view with students | track when I have scheduled lessons |","lastModifiedDate":"2024-03-18"},{"lineNumber":307,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | mark attendance for each week | keep an accurate record of student attendance and participation over time |","lastModifiedDate":"2024-03-18"},{"lineNumber":308,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | edit milestones on the progress tracker | change milestone plans anytime |","lastModifiedDate":"2024-03-18"},{"lineNumber":309,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | add milestones to a progress tracker | keep track of topics covered |","lastModifiedDate":"2024-03-18"},{"lineNumber":310,"author":{"gitId":"justinlengch"},"content":"| `*` | student | access a summary page with my progress information | keep track of my progress |","lastModifiedDate":"2024-03-18"},{"lineNumber":311,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | view my schedule in a calendar form | keep track of lessons for the week/day |","lastModifiedDate":"2024-03-18"},{"lineNumber":312,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | view a progress tracking meter | have a visual representation of a students progress |","lastModifiedDate":"2024-03-18"},{"lineNumber":313,"author":{"gitId":"justinlengch"},"content":"| `* *` | new user | create account using email | have an account that stores all the information |","lastModifiedDate":"2024-03-18"},{"lineNumber":314,"author":{"gitId":"justinlengch"},"content":"| `* *` | registered user | login to my account | all the information is tracked and stored properly in the account |","lastModifiedDate":"2024-03-18"},{"lineNumber":315,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | upload files and materials | students can access to them |","lastModifiedDate":"2024-03-18"},{"lineNumber":316,"author":{"gitId":"justinlengch"},"content":"| `*` | student | download files and materials | review and revise the materials |","lastModifiedDate":"2024-03-18"},{"lineNumber":317,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | send message to students | chat with them |","lastModifiedDate":"2024-03-18"},{"lineNumber":318,"author":{"gitId":"justinlengch"},"content":"| `*` | student | receive message from tutor | be informed with any announcements |","lastModifiedDate":"2024-03-18"},{"lineNumber":319,"author":{"gitId":"justinlengch"},"content":"| `*` | student | receive notification from messages | be aware of messages send by tutors |","lastModifiedDate":"2024-03-18"},{"lineNumber":320,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | note down basic lesson plans (remarks) for each lesson | have a structure to follow for each lesson |","lastModifiedDate":"2024-03-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"HusseinSafwan02"},"content":"(For all use cases below, the **System** is `TutorTrack` and the **Actor** is the `Tutor`, unless specified otherwise)","lastModifiedDate":"2024-03-22"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"HusseinSafwan02"},"content":"**Use case: UC01 Add a student**","lastModifiedDate":"2024-03-22"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"HusseinSafwan02"},"content":"1. User enters command to add a specific student in the list","lastModifiedDate":"2024-03-22"},{"lineNumber":331,"author":{"gitId":"HusseinSafwan02"},"content":"2. System adds the student","lastModifiedDate":"2024-03-22"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"HusseinSafwan02"},"content":"* 1a. The given syntax is incorrect.","lastModifiedDate":"2024-03-22"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"HusseinSafwan02"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-22"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"HusseinSafwan02"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-22"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"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":348,"author":{"gitId":"leepoeaik"},"content":"2. Should be able to hold up to 1000 students without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-20"},{"lineNumber":349,"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":350,"author":{"gitId":"leepoeaik"},"content":"4. Should be able to hold up to 100 lessons per students without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-20"},{"lineNumber":351,"author":{"gitId":"leepoeaik"},"content":"5. Documentation should cover at least 90% of system functionality and architecture.","lastModifiedDate":"2024-03-20"},{"lineNumber":352,"author":{"gitId":"leepoeaik"},"content":"6. The system should be able to support a minimum of 100 concurrent users without performance degration.","lastModifiedDate":"2024-03-20"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":359,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"Chiarena"},"content":"* **Freelance Tutor**: A tutor that teaches privately, such as a student that teaches on the side","lastModifiedDate":"2024-03-21"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":371,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"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":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"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":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"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":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"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":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"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":405,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"justinlengch":29,"Chiarena":1,"HusseinSafwan02":12,"leepoeaik":4,"-":369}},{"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":"leepoeaik"},"content":"# TutorTrack User Guide ","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Chiarena"},"content":"TutorTrack is a **desktop app for tutors to manage their students and scheduled classes, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TutorTrack can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"Chiarena"},"content":"### What is in this user guide","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"Chiarena"},"content":"- Quick start","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"Chiarena"},"content":"- Features","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"Chiarena"},"content":" - Help : Viewing help","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"Chiarena"},"content":" - Add : Adding a student","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"Chiarena"},"content":" - List : Listing all students","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"Chiarena"},"content":" - Edit : Editing a student","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"Chiarena"},"content":" - Find : Finding a student","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" - Schedule: Scheduling a lesson","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" - Mark: Marking a lesson as done","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" - Remark: Add remark to a student","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"Chiarena"},"content":" - Delete : Deleting a student","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" - Schedule : Adding a lesson schedule to a student","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" - Mark : Mark a lesson as complete","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"Chiarena"},"content":" - Clear : Clearing all entries ","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"Chiarena"},"content":" - Exit : Exiting the program","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"Chiarena"},"content":" - Saving data","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"Chiarena"},"content":" - Editing the data file","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"Chiarena"},"content":" - Archiving data files ","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"Chiarena"},"content":"- FAQs","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"Chiarena"},"content":"- Known issues","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"Chiarena"},"content":"- Command summary","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Chiarena"},"content":"### How to use this guide ","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"Chiarena"},"content":"**Navigation** : Use the table of contents to find the section you are looking for. \u003c/br\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"Chiarena"},"content":"**Features** : Each feature and what they do are listed with their commands for you to understand what our app can do. \u003c/br\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"Chiarena"},"content":"**Examples** : Under each feature, examples of commands and ui are given for you to better understand how the app should work.\u003c/br\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"Chiarena"},"content":"**Getting started** : For first time users, refer to the \"Quick start\" segment to start up the app for the first time ","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":"1. Download the latest `TutorTrack.jar` from [here](https://github.com/AY2324S2-CS2103T-T16-4/tp/releases).","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your TutorTrack.","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar TutorTrack.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 s/Maths` : Adds a student named `John Doe` to the Address Book.","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" * `delete 3` : Deletes the 3rd student shown in the current list.","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"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":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" e.g `n/NAME [l/LESSON]` can be used as `n/John Doe l/Physics|2024-05-01|09:00` or as `n/John Doe`.","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" e.g. `[l/LESSON]…​` can be used as ` ` (i.e. 0 times), `l/Physics|2024-05-01|09:00`, `l/Maths|2024-05-03|10:30 l/Biology|2024-05-05|11:00` etc.","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"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":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"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":96,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":98,"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":99,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"justinlengch"},"content":"Adds a student to the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SUBJECT [l/LESSON]…​`","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":118,"author":{"gitId":"justinlengch"},"content":"**Tip:** A student can have any number of lessons (including 0)","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"justinlengch"},"content":"* `add n/John Poe p/84920491 e/poe@yuh.com a/RVRC s/Physics`","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"justinlengch"},"content":"![addStudentExample.png](addStudentExample.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"justinlengch"},"content":"### Listing all students : `list`","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"justinlengch"},"content":"Shows a list of all students in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Format: `list`","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":"justinlengch"},"content":"### Editing a student : `edit`","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"justinlengch"},"content":"Edits an existing student in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"justinlengch"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [s/SUBJECT]…​`","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":"* Edits the student at the specified `INDEX`. The index refers to the index number shown in the displayed student list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"justinlengch"},"content":"* When editing lessons, the existing lessons of the student will be removed i.e adding of lessons is not cumulative.","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"justinlengch"},"content":"* You can remove all the person’s lessons by typing `l/` without","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" specifying any lessons after it.","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":"* `edit 1 a/Yale-nus l/` Edits the address of the first person to be `Yale-nus` and clears all existing lessons.","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"justinlengch"},"content":"![editStudentExample.png](editStudentExample.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"justinlengch"},"content":"### Locating students by name: `find`","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"justinlengch"},"content":"* Students matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"justinlengch"},"content":"* `find poe` returns `Poe` `John Poe` \u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"justinlengch"},"content":"![findCommandExample.png](findCommandExample.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"Chiarena"},"content":"* `list` followed by `delete 2` deletes the 2nd student in TutorTrack.","lastModifiedDate":"2024-03-27"},{"lineNumber":179,"author":{"gitId":"Chiarena"},"content":"* `find Jessica Jane` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-03-27"},{"lineNumber":180,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"leepoeaik"},"content":"### Add a lessson schedule : `schedule`","lastModifiedDate":"2024-04-05"},{"lineNumber":182,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"leepoeaik"},"content":"Adds a lesson to a specific student.","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":185,"author":{"gitId":"leepoeaik"},"content":"Format : `schedule INDEX l/LESSON`","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"leepoeaik"},"content":"* Adds a lesson to the specified `INDEX`.","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"leepoeaik"},"content":"* `INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"leepoeaik"},"content":"* `INDEX` refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"leepoeaik"},"content":"* `LESSON` must be in the format of `dd-mm-yyyy|hh:mm` ","lastModifiedDate":"2024-04-05"},{"lineNumber":191,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":192,"author":{"gitId":"leepoeaik"},"content":"Examples:","lastModifiedDate":"2024-04-05"},{"lineNumber":193,"author":{"gitId":"leepoeaik"},"content":"* `schedule 1 l/09-09-2024|10:00` would add a new lesson at 09-09-2024, 10:00 to the first person on the student list.","lastModifiedDate":"2024-04-05"},{"lineNumber":194,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":195,"author":{"gitId":"leepoeaik"},"content":"\u003cimg width\u003d\"1552\" alt\u003d\"image\" src\u003d\"https://github.com/AY2324S2-CS2103T-T16-4/tp/assets/99176866/09b27706-101d-4d7c-b480-4c482c752e31\"\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":196,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":197,"author":{"gitId":"leepoeaik"},"content":"### Mark a lessson schedule : `schedule`","lastModifiedDate":"2024-04-05"},{"lineNumber":198,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":199,"author":{"gitId":"leepoeaik"},"content":"Mark a lesson as complete to a specific student and removing it from displaying.","lastModifiedDate":"2024-04-05"},{"lineNumber":200,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":201,"author":{"gitId":"leepoeaik"},"content":"Format : `mark INDEX l/LESSON`","lastModifiedDate":"2024-04-05"},{"lineNumber":202,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":203,"author":{"gitId":"leepoeaik"},"content":"* Adds a lesson to the specified `INDEX`.","lastModifiedDate":"2024-04-05"},{"lineNumber":204,"author":{"gitId":"leepoeaik"},"content":"* `INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-04-05"},{"lineNumber":205,"author":{"gitId":"leepoeaik"},"content":"* `INDEX` refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-05"},{"lineNumber":206,"author":{"gitId":"leepoeaik"},"content":"* `LESSON` must be in the format of `dd-mm-yyyy|hh:mm` ","lastModifiedDate":"2024-04-05"},{"lineNumber":207,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":208,"author":{"gitId":"leepoeaik"},"content":"Examples:","lastModifiedDate":"2024-04-05"},{"lineNumber":209,"author":{"gitId":"leepoeaik"},"content":"* `mark 1 l/09-09-2024|10:00` would remove a new lesson at 09-09-2024, 10:00 to the first person on the student list.","lastModifiedDate":"2024-04-05"},{"lineNumber":210,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":211,"author":{"gitId":"leepoeaik"},"content":"\u003cimg width\u003d\"1552\" alt\u003d\"image\" src\u003d\"https://github.com/AY2324S2-CS2103T-T16-4/tp/assets/99176866/52f1981d-1e73-4aaf-95fb-ba6e8c2db054\"\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"Chiarena"},"content":"Clears all entries from TutorTrack.","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"Chiarena"},"content":"TutorTrack data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":231,"author":{"gitId":"Chiarena"},"content":"TutorTrack data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":236,"author":{"gitId":"justinlengch"},"content":"If your changes to the data file makes its format invalid, TutorTrack 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-04-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook 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":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"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":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":255,"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":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":262,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"leepoeaik"},"content":"------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-05"},{"lineNumber":264,"author":{"gitId":"leepoeaik"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SUBJECT [l/LESSON]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 s/Maths l/Maths|2024-05-03|10:30`","lastModifiedDate":"2024-03-26"},{"lineNumber":265,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"leepoeaik"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [l/LESSONS]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-03-26"},{"lineNumber":268,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"leepoeaik"},"content":"**Schedule**| `schedule INDEX l/LESSON`","lastModifiedDate":"2024-04-05"},{"lineNumber":270,"author":{"gitId":"leepoeaik"},"content":"**Mark** | `mark INDEX l/LESSON`","lastModifiedDate":"2024-04-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"justinlengch":26,"Chiarena":34,"leepoeaik":47,"-":166}},{"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":"justinlengch"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eTutorTrack\u003c/a\u003e","lastModifiedDate":"2024-03-07"},{"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":{"justinlengch":1,"-":66}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"AddressBook *-right-\u003e \"1\" UniqueLessonList","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"UniqueLessonList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"UniqueLessonList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"UniqueLessonList -right-\u003e \"*\" Lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"Person -up-\u003e \"*\" Lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"Person *--\u003e Subject","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"justinlengch":6,"-":16}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"Class Subject","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"Class Lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"Person *--\u003e Subject","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":"Person *--\u003e \"*\" Lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"leepoeaik":4,"-":52}},{"path":"docs/index.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: \"\"","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":"justinlengch"},"content":"# TutorTrack Level-1","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-T16-4/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103T-T16-4/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T16-4/tp/graph/badge.svg?token\u003dUeiVma0R4b)](https://codecov.io/gh/AY2324S2-CS2103T-T16-4/tp)","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":"**TutorTrack is a desktop application for managing students\u0027 details for private tutors.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":"* If you are interested in using TutorTrack, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":"* If you are interested about developing TutorTrack, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"justinlengch":3,"HusseinSafwan02":3,"-":15}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"leepoeaik"},"content":"Create a new `Remark` in `seedu.address.model.student`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"leepoeaik"},"content":"Simply add the following to [`seedu.address.ui.StudentCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-22"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"leepoeaik":2,"-":400}},{"path":"docs/tutorials/RemovingFields.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: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"# Tutorial: Removing Fields","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.student.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"leepoeaik":1,"-":114}},{"path":"src/main/java/seedu/address/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2019-02-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Builds a string representation of an object that is suitable as the return value of {@link Object#toString()}.","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" return stringBuilder + OBJECT_SUFFIX;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"justinlengch":1,"-":52}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" /** Returns an unmodifiable view of the filtered list of students */","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cStudent\u003e getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"leepoeaik":3,"-":46}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getFilteredStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" return model.getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"leepoeaik":3,"-":85}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX \u003d \"The student index provided is invalid\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_STUDENTS_LISTED_OVERVIEW \u003d \"%1$d students listed!\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_DUPLICATE_LESSON \u003d \"This lesson already exists in the student\u0027s lesson list\";","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_INVALID_LESSON \u003d \"The lesson does not exist for the specified student\";","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" * Formats the {@code student} for display to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" public static String format(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" builder.append(student.getName())","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" .append(student.getPhone())","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" .append(student.getEmail())","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" .append(student.getAddress())","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" .append(\"; Subject: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" .append((student.getSubject()))","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" .append(\"; Lessons: \");","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" student.getLessons().forEach(builder::append);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justinlengch":4,"leepoeaik":11,"-":40}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to the address book. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" + PREFIX_SUBJECT + \"SUBJECT \\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" + PREFIX_SUBJECT + \"Maths \"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" + PREFIX_LESSON + \"Maths|01-03-2023|10:00\";","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New student added: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"This student already exists in the address book\";","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" private final Student toAdd;","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" * Creates an AddCommand to add the specified {@code Student}","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" public AddCommand(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" toAdd \u003d student;","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" if (model.hasStudent(toAdd)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" model.addStudent(toAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justinlengch":4,"leepoeaik":14,"-":67}},{"path":"src/main/java/seedu/address/logic/commands/AddLessonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" * Adds a lesson to the student identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"public class AddLessonCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" + \": Adds a lesson to the student identified \"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" + \"l/ [LESSON]\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" + \"l/ 20-02-2002|10:00\";","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_ADD_LESSON_SUCCESS \u003d \"Scheduled lesson to student: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" private final Index index;","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" private final LocalDate date;","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private final LocalTime time;","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" private Integer isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" /***","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" * Creates a AddLessonCommand to add the lesson to the specified {@code Person},","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" * without the isCompleted field.","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" public AddLessonCommand(Index index, LocalDate date, LocalTime time) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" requireAllNonNull(index, date, time);","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" this.date \u003d date;","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" this.time \u003d time;","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" /***","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" * Creates a AddLessonCommand to add the lesson to the specified {@code Person},","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" * with the isCompleted field.","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" public AddLessonCommand(Index index, LocalDate date, LocalTime time, int isCompleted) {","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" this(index, date, time);","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d new ArrayList\u003c\u003e(studentToEdit.getLessons());","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" String studentToEditSubject \u003d studentToEdit.getSubject().value;","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" // Separate lesson constructors if isCompleted parameter is provided from user input.","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" Lesson newLesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" if (isCompleted !\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" newLesson \u003d new Lesson(studentToEditSubject, this.date, this.time, this.isCompleted);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" newLesson \u003d new Lesson(studentToEditSubject, this.date, this.time);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" // Check if the lesson already exists in the student\u0027s lesson list.","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" if (lessonList.contains(newLesson)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_LESSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" // Add the lesson to the student\u0027s lesson list.","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" lessonList.add(newLesson);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" Student editedStudent \u003d new Student(studentToEdit.getName(), studentToEdit.getPhone(), studentToEdit.getEmail(),","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" studentToEdit.getAddress(), studentToEdit.getSubject(),","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" studentToEdit.getRemark(), studentToEdit.getFeeStatus(), lessonList);","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" model.setStudent(studentToEdit, editedStudent);","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" return new CommandResult(generateSuccessMessage(editedStudent));","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" private String generateSuccessMessage(Student editedStudent) {","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" return String.format(MESSAGE_ADD_LESSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"justinlengch":91,"-":1}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" * Deletes a student identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" + \": Deletes the student identified by the index number used in the displayed student list.\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DELETE_STUDENT_SUCCESS \u003d \"Deleted Student: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" Student studentToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" model.deleteStudent(studentToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_STUDENT_SUCCESS, Messages.format(studentToDelete)));","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":9,"-":60}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" * Edits the details of an existing student in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" + \"by the index number used in the displayed student list. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" + \"[\" + PREFIX_SUBJECT + \"SUBJECT] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" + \"[\" + PREFIX_LESSON + \"LESSON]...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_EDIT_STUDENT_SUCCESS \u003d \"Edited Student: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"This student already exists in the address book.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" private final EditStudentDescriptor editStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" * @param index of the student in the filtered student list to edit","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" * @param editStudentDescriptor details to edit the student with","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" public EditCommand(Index index, EditStudentDescriptor editStudentDescriptor) {","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" this.editStudentDescriptor \u003d new EditStudentDescriptor(editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d createEditedStudent(studentToEdit, editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" if (!studentToEdit.isSameStudent(editedStudent) \u0026\u0026 model.hasStudent(editedStudent)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" model.setStudent(studentToEdit, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_STUDENT_SUCCESS, Messages.format(editedStudent)));","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" * Creates and returns a {@code Student} with the details of {@code studentToEdit}","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" * edited with {@code editStudentDescriptor}.","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" private static Student createEditedStudent(Student studentToEdit, EditStudentDescriptor editStudentDescriptor) {","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" assert studentToEdit !\u003d null;","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"leepoeaik"},"content":" Name updatedName \u003d editStudentDescriptor.getName().orElse(studentToEdit.getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" Phone updatedPhone \u003d editStudentDescriptor.getPhone().orElse(studentToEdit.getPhone());","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" Email updatedEmail \u003d editStudentDescriptor.getEmail().orElse(studentToEdit.getEmail());","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" Address updatedAddress \u003d editStudentDescriptor.getAddress().orElse(studentToEdit.getAddress());","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e updatedLessons \u003d editStudentDescriptor.getLessons().orElse(studentToEdit.getLessons());","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" Remark updatedRemark \u003d studentToEdit.getRemark();","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" FeeStatus updatedFeeStatus \u003d studentToEdit.getFeeStatus();","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" Subject updatedSubject \u003d editStudentDescriptor.getSubject().orElse(studentToEdit.getSubject());","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" return new Student(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updatedSubject, updatedRemark, updatedFeeStatus, updatedLessons);","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 editStudentDescriptor.equals(otherEditCommand.editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" .add(\"editStudentDescriptor\", editStudentDescriptor)","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":" * Stores the details to edit the student with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":" * corresponding field value of the student.","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" public static class EditStudentDescriptor {","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":" private List\u003cLesson\u003e lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"justinlengch"},"content":" private Subject subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"justinlengch"},"content":" private Remark remark;","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptor() {}","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":153,"author":{"gitId":"justinlengch"},"content":" * A defensive copy of {@code lessons} is used internally.","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":155,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptor(EditStudentDescriptor toCopy) {","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":160,"author":{"gitId":"justinlengch"},"content":" setLessons(toCopy.lessons);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"justinlengch"},"content":" setSubject(toCopy.subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"justinlengch"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"justinlengch"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"justinlengch"},"content":" public Optional\u003cObject\u003e getRemark() {","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"justinlengch"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"justinlengch"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, subject, lessons, remark);","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"justinlengch"},"content":" * Sets {@code lessons} to this object\u0027s {@code lessons}.","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"justinlengch"},"content":" * A defensive copy of {@code lessons} is used internally.","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"justinlengch"},"content":" public void setLessons(List\u003cLesson\u003e lessons) {","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"justinlengch"},"content":" this.lessons \u003d lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":221,"author":{"gitId":"justinlengch"},"content":" * Returns an modifiable lesson list,","lastModifiedDate":"2024-04-03"},{"lineNumber":222,"author":{"gitId":"justinlengch"},"content":" * Returns {@code Optional#empty()} if {@code lessons} is null.","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"justinlengch"},"content":" public Optional\u003cList\u003cLesson\u003e\u003e getLessons() {","lastModifiedDate":"2024-04-03"},{"lineNumber":225,"author":{"gitId":"justinlengch"},"content":" return Optional.ofNullable(lessons);","lastModifiedDate":"2024-04-03"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"justinlengch"},"content":" public void setSubject(Subject subject) {","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"justinlengch"},"content":" public Optional\u003cSubject\u003e getSubject() {","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"justinlengch"},"content":" return Optional.ofNullable(subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"leepoeaik"},"content":" if (!(other instanceof EditStudentDescriptor)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor otherEditStudentDescriptor \u003d (EditStudentDescriptor) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":248,"author":{"gitId":"leepoeaik"},"content":" return Objects.equals(name, otherEditStudentDescriptor.name)","lastModifiedDate":"2024-03-22"},{"lineNumber":249,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(phone, otherEditStudentDescriptor.phone)","lastModifiedDate":"2024-03-22"},{"lineNumber":250,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(email, otherEditStudentDescriptor.email)","lastModifiedDate":"2024-03-22"},{"lineNumber":251,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(address, otherEditStudentDescriptor.address)","lastModifiedDate":"2024-03-22"},{"lineNumber":252,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(lessons, otherEditStudentDescriptor.lessons)","lastModifiedDate":"2024-03-22"},{"lineNumber":253,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(subject, otherEditStudentDescriptor.subject);","lastModifiedDate":"2024-03-22"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"justinlengch"},"content":" .add(\"subject\", subject)","lastModifiedDate":"2024-03-20"},{"lineNumber":264,"author":{"gitId":"justinlengch"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"justinlengch"},"content":" .add(\"lessons\", lessons)","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"justinlengch":38,"leepoeaik":57,"-":174}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" * Finds and lists all students in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all students whose names contain any of \"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" String.format(Messages.MESSAGE_STUDENTS_LISTED_OVERVIEW, model.getFilteredStudentList().size()));","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"leepoeaik":5,"-":53}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" * Lists all students in the address book to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all students\";","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":4,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/MarkLessonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" * Marks a lesson as done for a student.","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":"public class MarkLessonCommand extends Command {","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" + \": Marks a lesson as completed to the student identified \"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" + \"l/ [LESSON]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" + \"l/ 20-02-2002|10:00\";","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_MARK_LESSON_SUCCESS \u003d \"Mark lesson %1$s to student: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" private final Index index;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" private final LocalDate dateDetail;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" private final LocalTime timeDetail;","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" * Creates a MarkLessonDoneCommand to mark the specified {@code Lesson} as done.","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" public MarkLessonCommand(Index index, LocalDate dateDetail, LocalTime timeDetail) {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" this.dateDetail \u003d dateDetail;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" this.timeDetail \u003d timeDetail;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d new ArrayList\u003c\u003e(studentToEdit.getLessons());","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" String studentToEditSubject \u003d studentToEdit.getSubject().value;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" Lesson lessonToMarkDone \u003d new Lesson(studentToEditSubject, dateDetail, timeDetail);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" // Iterate through lessonList and check if lessonToMark is found in list.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" Boolean lessonFound \u003d false;","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" for (Lesson l : lessonList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" if (l.equals(lessonToMarkDone)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" l.setLessonComplete();","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" lessonFound \u003d true;","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" // throw exception if lesson is not found in list.","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" if (!lessonFound) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_LESSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" Student editedStudent \u003d new Student(studentToEdit.getName(), studentToEdit.getPhone(), studentToEdit.getEmail(),","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" studentToEdit.getAddress(), studentToEdit.getSubject(),","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" studentToEdit.getRemark(), studentToEdit.getFeeStatus(), lessonList);","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" model.setStudent(studentToEdit, editedStudent);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" return new CommandResult(String.format(MESSAGE_MARK_LESSON_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" lessonToMarkDone.getLessonValue(), Messages.format(editedStudent)));","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"justinlengch":78,"-":1}},{"path":"src/main/java/seedu/address/logic/commands/RemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" * Changes the remark of an existing student in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" + \": Edits the remark of the student identified \"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" + \"by the index number used in the last student listing. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Student: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Deleted remark from Student: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" private final Index index;","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" /***","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" * Creates a RemarkCommand to change the remark of the specified {@code Student}","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" public RemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new Student(studentToEdit.getName(), studentToEdit.getPhone(), studentToEdit.getEmail(),","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" studentToEdit.getAddress(), studentToEdit.getSubject(),","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" studentToEdit.getRemark(), studentToEdit.getFeeStatus(), studentToEdit.getLessons());","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" model.setStudent(studentToEdit, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" return new CommandResult(generateSuccessMessage(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-03-07"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-07"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2024-03-07"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-07"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-07"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-07"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-07"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" * {@code studentToEdit}.","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" private String generateSuccessMessage(Student studentToEdit) {","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-03-07"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" return String.format(message, studentToEdit);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"justinlengch":64,"leepoeaik":20,"-":1}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"leepoeaik":2,"-":17}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEESTATUS;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" PREFIX_ADDRESS, PREFIX_SUBJECT, PREFIX_REMARK, PREFIX_LESSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" PREFIX_SUBJECT)","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_SUBJECT);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" Subject subject \u003d ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" Remark remark \u003d new Remark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\")); // default value","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" FeeStatus feeStatus \u003d new FeeStatus(argMultimap.getValue(PREFIX_FEESTATUS).orElse(\"\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" List\u003cLesson\u003e lessonList \u003d ParserUtil.parseLessons((argMultimap.getAllValues(PREFIX_LESSON)));","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Student student \u003d new Student(name, phone, email, address, subject, remark, feeStatus, lessonList);","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" return new AddCommand(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"justinlengch":12,"leepoeaik":9,"-":50}},{"path":"src/main/java/seedu/address/logic/parser/AddLessonCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.TIME_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.AddLessonCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" * Parses input arguments and creates a new AddLessonCommand object","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"public class AddLessonCommandParser implements Parser\u003cAddLessonCommand\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" * Parses the given {@code String} of arguments in the context of the AddLessonCommand","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" * and returns an AddLessonCommand object for execution.","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" public AddLessonCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_LESSON);","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" Index index;","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" AddLessonCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" String lesson \u003d argMultimap.getValue(PREFIX_LESSON).orElse(\"\");","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" if (!isValidLesson(lesson)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" AddLessonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" // split lesson into its attributes based on \"|\" character","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" LocalDate dateDetail \u003d LocalDate.parse(lessonDetails[0], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" LocalTime timeDetail \u003d LocalTime.parse(lessonDetails[1], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" int isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length \u003d\u003d 3) {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" isCompleted \u003d Integer.parseInt(lessonDetails[2]);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" return new AddLessonCommand(index, dateDetail, timeDetail, isCompleted);","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" return new AddLessonCommand(index, dateDetail, timeDetail);","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" * Checks if the lesson is in the correct format.","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" * @param lesson the lesson to be checked","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" * @return true if the lesson is in the correct format, false otherwise","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" public static boolean isValidLesson(String lesson) {","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length !\u003d 2 \u0026\u0026 lessonDetails.length !\u003d 3) {","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" LocalDate.parse(lessonDetails[0], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" LocalTime.parse(lessonDetails[1], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length \u003d\u003d 3) {","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" int isCompleted \u003d Integer.parseInt(lessonDetails[2]);","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" if (isCompleted !\u003d 0 \u0026\u0026 isCompleted !\u003d 1) {","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" } catch (DateTimeParseException | NumberFormatException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"justinlengch":82}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.AddLessonCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FeeStatusCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.MarkLessonCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case FeeStatusCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new FeeStatusCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" case RemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-07"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" return new RemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-07"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" case AddLessonCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" return new AddLessonCommandParser().parse(arguments);","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"justinlengch"},"content":" case MarkLessonCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"justinlengch"},"content":" return new MarkLessonCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justinlengch":13,"-":90}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" public static final Prefix PREFIX_SUBJECT \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" public static final Prefix PREFIX_LESSON \u003d new Prefix(\"l/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_FEESTATUS \u003d new Prefix(\"f\");","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"justinlengch":3,"-":16}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" PREFIX_SUBJECT, PREFIX_LESSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_SUBJECT);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" if (argMultimap.getValue(PREFIX_SUBJECT).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setSubject(ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" parseLessonsForEdit(argMultimap.getAllValues(PREFIX_LESSON)).ifPresent(editStudentDescriptor::setLessons);","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" if (!editStudentDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" return new EditCommand(index, editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" * Parses {@code Collection\u003cString\u003e lessons} into a {@code List\u003cLesson\u003e} if {@code lessons} is non-empty.","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" * If {@code lessons} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" * {@code List\u003cLesson\u003e} containing zero lessons.","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" private Optional\u003cList\u003cLesson\u003e\u003e parseLessonsForEdit(Collection\u003cString\u003e lessons) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" assert lessons !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" if (lessons.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" Collection\u003cString\u003e lessonList \u003d lessons.size() \u003d\u003d 1 \u0026\u0026 lessons.contains(\"\") ? Collections.emptyList() : lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" return Optional.of(ParserUtil.parseLessons(lessonList));","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"justinlengch":17,"leepoeaik":11,"-":63}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"leepoeaik":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/MarkLessonCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.AddLessonCommandParser.isValidLesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.TIME_FORMATTER;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.MarkLessonCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" * Parses input arguments and creates a new MarkLessonCommand object","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"public class MarkLessonCommandParser implements Parser\u003cMarkLessonCommand\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" * Parses the given {@code String} of arguments in the context of the MarkLessonCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" * and returns an MarkLessonCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" public MarkLessonCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_LESSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" Index index;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" MarkLessonCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" String lesson \u003d argMultimap.getValue(PREFIX_LESSON).orElse(\"\");","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" if (!isValidLesson(lesson)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" MarkLessonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" // split lesson into its attributes based on \"|\" character","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" LocalDate dateDetail \u003d LocalDate.parse(lessonDetails[0], DATE_FORMATTER);","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" LocalTime timeDetail \u003d LocalTime.parse(lessonDetails[1], TIME_FORMATTER);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" return new MarkLessonCommand(index, dateDetail, timeDetail);","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"justinlengch":54}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.TIME_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.isValidLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.storage.JsonAdaptedLesson.isValidJsonLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"justinlengch"},"content":" * Parses a {@code String subject} into an {@code Subject}.","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"justinlengch"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the given {@code subject} is invalid.","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"justinlengch"},"content":" public static Subject parseSubject(String subject) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"justinlengch"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"justinlengch"},"content":" String trimmedSubject \u003d subject.trim();","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"justinlengch"},"content":" if (!Subject.isValidSubject(trimmedSubject)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(Subject.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":114,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"justinlengch"},"content":" return new Subject(trimmedSubject);","lastModifiedDate":"2024-04-03"},{"lineNumber":116,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"justinlengch"},"content":" * Parses a {@code String lesson} into a {@code Lesson}.","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the given {@code lesson} is invalid.","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"justinlengch"},"content":" public static Lesson parseLesson(String lesson) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"justinlengch"},"content":" requireNonNull(lesson);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"justinlengch"},"content":" if (!isValidLesson(lesson) \u0026\u0026 !isValidJsonLesson(lesson)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(Lesson.MESSAGE_CONSTRAINTS_1);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"justinlengch"},"content":" // split lesson into its attributes based on \"|\" character","lastModifiedDate":"2024-04-03"},{"lineNumber":130,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"justinlengch"},"content":" String subjectDetail \u003d lessonDetails[0];","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"justinlengch"},"content":" LocalDate dateDetail \u003d LocalDate.parse(lessonDetails[1], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"justinlengch"},"content":" LocalTime timeDetail \u003d LocalTime.parse(lessonDetails[2], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"justinlengch"},"content":" int isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length \u003d\u003d 4) {","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"justinlengch"},"content":" isCompleted \u003d Integer.parseInt(lessonDetails[3]);","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"justinlengch"},"content":" return new Lesson(subjectDetail, dateDetail, timeDetail, isCompleted);","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"justinlengch"},"content":" return new Lesson(subjectDetail, dateDetail, timeDetail);","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"justinlengch"},"content":" * Parses a {@code Collection\u003cString\u003e lessonList} into a {@code List\u003cLesson\u003e}.","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the given {@code lessonSet} is invalid.","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"justinlengch"},"content":" public static List\u003cLesson\u003e parseLessons(Collection\u003cString\u003e lessons) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"justinlengch"},"content":" requireNonNull(lessons);","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"justinlengch"},"content":" for (String lesson : lessons) {","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"justinlengch"},"content":" lessonList.add(parseLesson(lesson));","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"justinlengch"},"content":" return lessonList;","lastModifiedDate":"2024-04-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"justinlengch":48,"leepoeaik":6,"-":102}},{"path":"src/main/java/seedu/address/logic/parser/RemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" * Parses input arguments and creates a new RemarkCommand object","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"public class RemarkCommandParser implements Parser\u003cRemarkCommand\u003e {","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" * Parses the given {@code String} of arguments in the context of the RemarkCommand","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" * and returns a RemarkCommand object for execution.","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_REMARK);","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" Index index;","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" return new RemarkCommand(index, new Remark(remark));","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"justinlengch":39,"leepoeaik":1}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.UniqueStudentList;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":" * Duplicates are not allowed (by .isSameStudent comparison)","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" private final UniqueStudentList students;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" students \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" * Creates an AddressBook using the Students in the {@code toBeCopied}","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" * Replaces the contents of the student list with {@code students}.","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" public void setStudents(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" this.students.setStudents(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" setStudents(newData.getStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" //// student-level operations","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" return students.contains(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" * The student must not already exist in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" public void addStudent(Student p) {","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" students.add(p);","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" * book.","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" students.setStudent(target, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" public void removeStudent(Student key) {","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" students.remove(key);","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" return students.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" return students.equals(otherAddressBook.students);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" return students.hashCode();","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":33,"-":98}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" Predicate\u003cStudent\u003e PREDICATE_SHOW_ALL_STUDENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" boolean hasStudent(Student student);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" * Deletes the given student.","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" * The student must exist in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" void deleteStudent(Student target);","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" * Adds the given student.","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" * {@code student} must not already exist in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" void addStudent(Student student);","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" * Replaces the given student {@code target} with {@code editedStudent}.","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" * book.","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" void setStudent(Student target, Student editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" /** Returns an unmodifiable view of the filtered student list */","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cStudent\u003e getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" * Updates the filter of the filtered student list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" void updateFilteredStudentList(Predicate\u003cStudent\u003e predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"leepoeaik":18,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" private final FilteredList\u003cStudent\u003e filteredStudents;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" filteredStudents \u003d new FilteredList\u003c\u003e(this.addressBook.getStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" return addressBook.hasStudent(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" public void deleteStudent(Student target) {","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" addressBook.removeStudent(target);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" public void addStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":" addressBook.setStudent(target, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Student List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" * Returns an unmodifiable view of the list of {@code Student} backed by the internal list of","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getFilteredStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"justinlengch"},"content":" return FXCollections.unmodifiableObservableList(filteredStudents);","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" public void updateFilteredStudentList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" filteredStudents.setPredicate(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 filteredStudents.equals(otherModelManager.filteredStudents);","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"justinlengch":2,"leepoeaik":20,"-":127}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":" * Returns an unmodifiable view of the students list.","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":" * This list will not contain any duplicate students.","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cStudent\u003e getStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":4,"-":13}},{"path":"src/main/java/seedu/address/model/student/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":1,"-":64}},{"path":"src/main/java/seedu/address/model/student/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":1,"-":78}},{"path":"src/main/java/seedu/address/model/student/Lesson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":" * Represents a lesson in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"public class Lesson {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_CONSTRAINTS_1 \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" \"Lessons must be of the form subject|dd-MM-yyyy|hh:mm|0/1, where subject contains only alphabeths\"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" + \" and spaces, and indicate lesson incomplete/completed with 0 or 1 respectively.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_CONSTRAINTS_2 \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" \"Lessons must be of the form dd-MM-yyyy|hh:mm OR dd-MM-yyyy|hh:mm|0/1, where the last field of 0 or 1\"","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" + \" is optional, with 0 indicating lesson incomplete and 1 indicating lesson complete.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z][a-zA-Z ]*$\";","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public static final String DATE_REGEX \u003d \"\\\\d{2}-\\\\d{2}-\\\\d{4}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" public static final String TIME_REGEX \u003d \"\\\\d{2}:\\\\d{2}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" public static final DateTimeFormatter DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" public static final DateTimeFormatter TIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" private String value;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" private String jsonValue;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" private final Subject subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" private final LocalDate date;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" private final LocalTime time;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" private int isCompleted;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code Lesson} that is already parsed.","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" * @param subject A valid subject.","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" * @param date A valid date.","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" * @param time A valid time.","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" public Lesson(String subject, LocalDate date, LocalTime time) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" requireNonNull(date);","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" requireNonNull(time);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" checkArgument(subject.matches(VALIDATION_REGEX), MESSAGE_CONSTRAINTS_1);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" // assign the attributes to the lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d new Subject(subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" this.date \u003d LocalDate.parse(date.format(DATE_FORMATTER), DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" this.time \u003d time;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" this.isCompleted \u003d 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" // jSON readable form of lesson","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" this.jsonValue \u003d this.subject.value + \"|\" + this.date.format(DATE_FORMATTER) + \"|\"","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" + this.time.format(TIME_FORMATTER) + \"|\" + this.isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" // UI displayed form of lesson","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" this.value \u003d this.subject + \" \" + this.date + \" \" + this.time;","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code Lesson} that is already parsed, with the optional isCompleted field.","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" * @param subject A valid subject.","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" * @param date A valid date.","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" * @param time A valid time.","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" * @param isCompleted A valid isCompleted int field.","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" public Lesson(String subject, LocalDate date, LocalTime time, int isCompleted) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" this(subject, date, time);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" if (isCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" this.setLessonComplete();","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" this.setLessonIncomplete();","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" * Returns true if a given string is a valid lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" public static boolean isValidLesson(String lessonValue) {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lessonValue.split(\"\\\\|\");","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length !\u003d 3) {","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" LocalDate.parse(lessonDetails[1], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":" LocalTime.parse(lessonDetails[2], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" return lessonDetails[0].matches(VALIDATION_REGEX)","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" \u0026\u0026 lessonDetails[1].matches(DATE_REGEX)","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" \u0026\u0026 lessonDetails[2].matches(TIME_REGEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"justinlengch"},"content":" * Gets the subject of the lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"justinlengch"},"content":" * @return The subject.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"justinlengch"},"content":" public Subject getSubject() {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"justinlengch"},"content":" return subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"justinlengch"},"content":" * Gets the date of the lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"justinlengch"},"content":" * @return The date.","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"justinlengch"},"content":" public LocalDate getDate() {","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"justinlengch"},"content":" return date;","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"justinlengch"},"content":" * Gets the time of the lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"justinlengch"},"content":" * @return The time.","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"justinlengch"},"content":" public LocalTime getTime() {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"justinlengch"},"content":" return time;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"justinlengch"},"content":" * Gets the status of the lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"justinlengch"},"content":" * @return The status.","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"justinlengch"},"content":" public int getLessonStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"justinlengch"},"content":" return isCompleted;","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"justinlengch"},"content":" public String getLessonValue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"justinlengch"},"content":" return value;","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"justinlengch"},"content":" public String getJsonValue() {","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"justinlengch"},"content":" return jsonValue;","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"justinlengch"},"content":" public void setLessonComplete() {","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":" this.isCompleted \u003d 1;","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"justinlengch"},"content":" public void setLessonIncomplete() {","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"justinlengch"},"content":" this.isCompleted \u003d 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"justinlengch"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"justinlengch"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"justinlengch"},"content":" if (!(other instanceof Lesson)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"justinlengch"},"content":" Lesson otherLesson \u003d (Lesson) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"justinlengch"},"content":" return value.equals(otherLesson.value);","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"justinlengch"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"justinlengch"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"justinlengch"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"justinlengch"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"justinlengch"},"content":" return this.subject + \" \" + this.date.toString() + \" \" + this.time + \" \";","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"justinlengch":170,"leepoeaik":1}},{"path":"src/main/java/seedu/address/model/student/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":1,"-":66}},{"path":"src/main/java/seedu/address/model/student/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":" * Tests that a {@code Student}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cStudent\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" public boolean test(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(student.getName().fullName, keyword));","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"leepoeaik":5,"-":39}},{"path":"src/main/java/seedu/address/model/student/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":1,"-":60}},{"path":"src/main/java/seedu/address/model/student/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"public class Remark {","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Remarks can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":" public final String value;","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" * @param remark A valid remark.","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" value \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" public String toString() {","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" return value;","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"justinlengch":39,"leepoeaik":1}},{"path":"src/main/java/seedu/address/model/student/Student.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" * Represents a Student in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"public class Student {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final FeeStatus feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" private List\u003cLesson\u003e lessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" private final Subject subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" * Student constructor with all fields.","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public Student(Name name, Phone phone, Email email, Address address, Subject subject,","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" Remark remark, FeeStatus feeStatus, List\u003cLesson\u003e lessons) {","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" requireAllNonNull(name, phone, email, address, subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" this.lessons.addAll(lessons);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.feeStatus \u003d feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" * Student constructor with default values for remark, fee status and lessons.","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" public Student(Name name, Phone phone, Email email, Address address, Subject subject) {","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" requireAllNonNull(name, phone, email, address, subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" this.name \u003d name;","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" this.email \u003d email;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" this.address \u003d address;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" this.lessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" this.feeStatus \u003d new FeeStatus(\"\");","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d new Remark(\"\");","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public FeeStatus getFeeStatus() {","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" * Returns the ArrayList of lessons for the student, this list is mutable.","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" public List\u003cLesson\u003e getLessons() {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" return lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-07"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" return remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" public Subject getSubject() {","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" return subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" * Returns true if both Students have the same name.","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" * This defines a weaker notion of equality between two Students.","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" public boolean isSameStudent(Student otherStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" if (otherStudent \u003d\u003d this) {","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" return otherStudent !\u003d null","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 otherStudent.getName().equals(getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" * Returns true if both Students have the same identity and data fields.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" * This defines a stronger notion of equality between two Students.","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":" if (!(other instanceof Student)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" Student otherStudent \u003d (Student) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" return name.equals(otherStudent.name)","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 phone.equals(otherStudent.phone)","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 email.equals(otherStudent.email)","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 address.equals(otherStudent.address)","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 lessons.equals(otherStudent.lessons)","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 subject.equals(otherStudent.subject);","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"justinlengch"},"content":" return Objects.hash(name, phone, email, address, subject, remark, lessons);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"justinlengch"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"justinlengch"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"justinlengch"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"justinlengch"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"justinlengch"},"content":" .add(\"subject\", subject)","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"justinlengch"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"fee status\", feeStatus)","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":" .add(\"lessons\", lessons)","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"justinlengch"},"content":" .toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justinlengch":46,"leepoeaik":21,"-":82}},{"path":"src/main/java/seedu/address/model/student/Subject.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":" * Represents a Person\u0027s subject in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSubject(String)}","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"public class Subject {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":" \"Subjects can only take alphanumeric values and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" public static final String VALIDATION_REGEX \u003d \"^[A-Z][a-zA-Z ]*$\";","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" public final String value;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code Subject}.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" * @param subject A valid subject.","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public Subject(String subject) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" checkArgument(isValidSubject(subject), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" value \u003d subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" * Returns true if a given string is a valid subject.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" public static boolean isValidSubject(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" return value;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" if (!(other instanceof Subject)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" Subject otherSubject \u003d (Subject) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" return value.equals(otherSubject.value);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"justinlengch":58,"leepoeaik":1}},{"path":"src/main/java/seedu/address/model/student/UniqueStudentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import java.util.List;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.DuplicateStudentException;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.StudentNotFoundException;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" * A list of students that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" * A student is considered unique by comparing using {@code Student#isSameStudent(Student)}. As such, adding and","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" * updating of students uses Student#isSameStudent(Student) for equality so as to ensure that the student being added","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" * or updated is unique in terms of identity in the UniqueStudentList. However, the removal of a student uses","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" * Student#equals(Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" * @see Student#isSameStudent(Student)","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":"public class UniqueStudentList implements Iterable\u003cStudent\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" private final ObservableList\u003cStudent\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" private final ObservableList\u003cStudent\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" public boolean contains(Student toCheck) {","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" return internalList.stream().anyMatch(toCheck::isSameStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" * Adds a student to the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" * The student must not already exist in the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" public void add(Student toAdd) {","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" throw new DuplicateStudentException();","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" throw new StudentNotFoundException();","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" if (!target.isSameStudent(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" throw new DuplicateStudentException();","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" public void remove(Student toRemove) {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" throw new StudentNotFoundException();","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" public void setStudents(UniqueStudentList replacement) {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" * Replaces the contents of this list with {@code students}.","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" public void setStudents(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" if (!studentsAreUnique(students)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" throw new DuplicateStudentException();","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" public Iterator\u003cStudent\u003e iterator() {","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"leepoeaik"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"leepoeaik"},"content":" if (!(other instanceof UniqueStudentList)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"leepoeaik"},"content":" return false;","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList otherUniqueStudentList \u003d (UniqueStudentList) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" return internalList.equals(otherUniqueStudentList.internalList);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" public String toString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":" * Returns true if {@code students} contains only unique students.","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"leepoeaik"},"content":" private boolean studentsAreUnique(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" for (int i \u003d 0; i \u003c students.size() - 1; i++) {","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" for (int j \u003d i + 1; j \u003c students.size(); j++) {","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" if (students.get(i).isSameStudent(students.get(j))) {","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"leepoeaik"},"content":" return false;","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"leepoeaik"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"leepoeaik":150}},{"path":"src/main/java/seedu/address/model/student/exceptions/DuplicateStudentException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"public class DuplicateStudentException extends RuntimeException {","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":" public DuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"leepoeaik":3,"-":8}},{"path":"src/main/java/seedu/address/model/student/exceptions/StudentNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":" * Signals that the operation is unable to find the specified student.","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"public class StudentNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"leepoeaik":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" public static Student[] getSampleStudents() {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" return new Student[] {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Subject(\"Math\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Subject(\"English\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Subject(\"Physics\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Student(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Subject(\"English\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Student(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Subject(\"Physics\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Subject(\"History\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Subject(\"Chemistry\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new Subject(\"Biology\"))","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" for (Student sampleStudent : getSampleStudents()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" sampleAb.addStudent(sampleStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" * Returns a List containing the list of lesson strings given.","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" public static List\u003cLesson\u003e getLessonList(String... strings) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" for (String lessonString : strings) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" Lesson lesson \u003d ParserUtil.parseLesson(lessonString);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" if (lesson !\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" lessonList.add(lesson);","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" return lessonList;","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"justinlengch":15,"leepoeaik":18,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedLesson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.TIME_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" * Jackson-friendly version of {@link Lesson}.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"public class JsonAdaptedLesson {","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" private static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" \"Jackson-adapted Lessons must be of the form subject|dd-MM-yyyy|hh:mm|0/1, where subject contains only\"","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" + \" alphabets and spaces, and indicate lesson incomplete/completed with 0 or 1 respectively.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" private final String lesson;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code JsonAdaptedLesson} with the given {@code lesson}.","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" @JsonCreator","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" public JsonAdaptedLesson(String lesson) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" this.lesson \u003d lesson;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" * Converts a given {@code Lesson} into this class for Jackson use.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" public JsonAdaptedLesson(Lesson source) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" lesson \u003d source.getJsonValue();","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" @JsonValue","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" public String getLessonName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" return lesson;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" * Converts this Jackson-friendly adapted lesson object into the model\u0027s {@code Lesson} object.","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted lesson.","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" public Lesson toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" if (!isValidJsonLesson(getLessonName())) {","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" throw new IllegalValueException(MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" return parseJsonLesson(getLessonName());","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" * Returns true if a given Jackson-friendly adapted lesson object is a valid lesson.","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" public static boolean isValidJsonLesson(String jsonLesson) {","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" requireNonNull(jsonLesson);","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d jsonLesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length !\u003d 4) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" if (!lessonDetails[0].matches(Lesson.VALIDATION_REGEX)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" if (!lessonDetails[1].matches(Lesson.DATE_REGEX)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":" if (!lessonDetails[2].matches(Lesson.TIME_REGEX)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" if (!lessonDetails[3].matches(\"0|1\")) {","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":" * Parses a Jackson-friendly adapted lesson into a model {@code Lesson} object.","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" public static Lesson parseJsonLesson(String jsonLesson) {","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" requireNonNull(jsonLesson);","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" assert isValidJsonLesson(jsonLesson);","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d jsonLesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":" String subjectDetail \u003d lessonDetails[0];","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"justinlengch"},"content":" LocalDate dateDetail \u003d LocalDate.parse(lessonDetails[1], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"justinlengch"},"content":" LocalTime timeDetail \u003d LocalTime.parse(lessonDetails[2], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"justinlengch"},"content":" int isCompleted \u003d Integer.parseInt(lessonDetails[3]);","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"justinlengch"},"content":" Lesson newLesson \u003d new Lesson(subjectDetail, dateDetail, timeDetail);","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"justinlengch"},"content":" if (isCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"justinlengch"},"content":" newLesson.setLessonComplete();","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"justinlengch"},"content":" return newLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justinlengch":102,"leepoeaik":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedStudent.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" * Jackson-friendly version of {@link Student}.","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"class JsonAdaptedStudent {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Student\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" private final List\u003cJsonAdaptedLesson\u003e lessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" private final String remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private final String subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" * Constructs a {@code JsonAdaptedStudent} with the given student details.","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" public JsonAdaptedStudent(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" @JsonProperty(\"subject\") String subject, @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"feeStatus\") String feeStatus,","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" @JsonProperty(\"lessons\") List\u003cJsonAdaptedLesson\u003e lessons) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.feeStatus \u003d feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" if (lessons !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" this.lessons.addAll(lessons);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" * Converts a given {@code Student} into this class for Jackson use.","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" public JsonAdaptedStudent(Student source) {","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" feeStatus \u003d source.getFeeStatus().status;","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" subject \u003d source.getSubject().value;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" lessons.addAll(source.getLessons().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" .map(lesson -\u003e new JsonAdaptedLesson(lesson.getJsonValue()))","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Student} object.","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" public Student toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" final List\u003cLesson\u003e modelLessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" for (JsonAdaptedLesson lesson : lessons) {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" modelLessons.add(lesson.toModelType());","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"justinlengch"},"content":" if (subject \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"justinlengch"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Subject.class.getSimpleName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (feeStatus \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" FeeStatus.class.getSimpleName()));","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" final FeeStatus modelFeeStatus \u003d new FeeStatus(feeStatus);","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"justinlengch"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"justinlengch"},"content":" final Subject modelSubject \u003d new Subject(subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" return new Student(modelName, modelPhone, modelEmail, modelAddress, modelSubject,","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" modelRemark, modelFeeStatus, modelLessons);","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"justinlengch":24,"leepoeaik":19,"-":89}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"Students list contains duplicate student(s).\";","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" private final List\u003cJsonAdaptedStudent\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given students.","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"students\") List\u003cJsonAdaptedStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" students.addAll(source.getStudentList().stream().map(JsonAdaptedStudent::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" for (JsonAdaptedStudent jsonAdaptedStudent : students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" Student student \u003d jsonAdaptedStudent.toModelType();","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" if (addressBook.hasStudent(student)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"leepoeaik":12,"-":48}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t16-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"justinlengch":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" private StudentListPanel studentListPanel;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" private ScheduleListPanel scheduleListPanel;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" private StackPane studentListPanelPlaceholder;","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" private StackPane scheduleListPanelPlaceholder;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" private HBox titleLogoLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" private HBox labelCommandHolder;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" studentListPanel \u003d new StudentListPanel(this, logic.getFilteredStudentList());","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" studentListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanel \u003d new ScheduleListPanel(logic.getFilteredStudentList());","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanelPlaceholder.getChildren().add(scheduleListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":132,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":181,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"justinlengch"},"content":" * Updates Schedule List Panel.","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"justinlengch"},"content":" public void updateScheduleListPanel() {","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"justinlengch"},"content":" scheduleListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-04-04"},{"lineNumber":186,"author":{"gitId":"justinlengch"},"content":" scheduleListPanel \u003d new ScheduleListPanel(logic.getFilteredStudentList());","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"justinlengch"},"content":" scheduleListPanelPlaceholder.getChildren().add(scheduleListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"leepoeaik"},"content":" * Updates Schedule List Panel with specific student input","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"leepoeaik"},"content":" * @param student selected student input","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"leepoeaik"},"content":" public void updateScheduleListPanel(Student student) {","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"leepoeaik"},"content":" if (student !\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cStudent\u003e temp \u003d FXCollections.observableArrayList(student);","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanel \u003d new ScheduleListPanel(temp);","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanelPlaceholder.getChildren().add(scheduleListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":200,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"justinlengch"},"content":" * Updates Student List Panel.","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":205,"author":{"gitId":"justinlengch"},"content":" public void updateStudentListPanel() {","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"justinlengch"},"content":" studentListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"leepoeaik"},"content":" studentListPanel \u003d new StudentListPanel(this, logic.getFilteredStudentList());","lastModifiedDate":"2024-04-04"},{"lineNumber":208,"author":{"gitId":"justinlengch"},"content":" studentListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"justinlengch"},"content":" updateStudentListPanel();","lastModifiedDate":"2024-04-04"},{"lineNumber":230,"author":{"gitId":"justinlengch"},"content":" updateScheduleListPanel();","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":235,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"justinlengch":16,"leepoeaik":31,"-":192}},{"path":"src/main/java/seedu/address/ui/ScheduleCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"public class ScheduleCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" private static final String FXML \u003d \"ScheduleListCard.fxml\";","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" public final Lesson lesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public final String studentName;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" private HBox cardPane;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" private Label name;","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" private Label id;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" private Label phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" private Label address;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" private Label email;","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" private Label subject;","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" private Label date;","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" private Label time;","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" private FlowPane lessons;","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" private Label remark;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code StudentCode} with the given {@code Student} and index to display.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" public ScheduleCard(Pair\u003cStudent, Lesson\u003e pair, int displayedIndex) {","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" super(FXML);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" this.lesson \u003d pair.getValue();","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" this.studentName \u003d pair.getKey().getName().toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" name.setText(studentName);","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" subject.setText(lesson.getSubject().value);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" date.setText(lesson.getDate().format(DATE_FORMATTER));","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" time.setText(lesson.getTime().toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"leepoeaik":68}},{"path":"src/main/java/seedu/address/ui/ScheduleListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import java.util.Collections;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" * Panel containing the list of students.","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"public class ScheduleListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" private static final String FXML \u003d \"ScheduleListPanel.fxml\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ScheduleListPanel.class);","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" private ObservableList\u003cStudent\u003e studentList;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" private ListView\u003cPair\u003cStudent, Lesson\u003e\u003e scheduleListView;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code ScheduleListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" public ScheduleListPanel(ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" super(FXML);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" this.studentList \u003d studentList;","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" scheduleListView.setItems(transformList(this.studentList));","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" scheduleListView.setCellFactory(listView -\u003e new ScheduleListViewCell());","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" * Extracts lessons from studentList","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" * Adds the lessons together with student as a pair and sorts it","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" * @param studentList observable list of students","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" * @return an observable list of a pair of students and lessons","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cPair\u003cStudent, Lesson\u003e\u003e transformList(ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" List\u003cPair\u003cStudent, Lesson\u003e\u003e scheduleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" for (Student student : studentList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" List\u003cLesson\u003e studentLesson \u003d student.getLessons();","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" for (Lesson l : studentLesson) {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" if (l.getLessonStatus() \u003d\u003d 0) {","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" scheduleList.add(new Pair(student, l));","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" Collections.sort(scheduleList, new SortDate());","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cPair\u003cStudent, Lesson\u003e\u003e observableList \u003d FXCollections.observableList(scheduleList);","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" return observableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Student} using a {@code StudentCard}.","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" class ScheduleListViewCell extends ListCell\u003cPair\u003cStudent, Lesson\u003e\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" protected void updateItem(Pair\u003cStudent, Lesson\u003e pair, boolean empty) {","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" super.updateItem(pair, empty);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" if (empty || pair \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" setGraphic(null);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" setText(null);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" setGraphic(new ScheduleCard(pair, getIndex() + 1).getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" class SortDate implements Comparator\u003cPair\u003cStudent, Lesson\u003e\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" public int compare(Pair\u003cStudent, Lesson\u003e o1, Pair\u003cStudent, Lesson\u003e o2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" return o1.getValue().getDate().compareTo(o2.getValue().getDate());","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"justinlengch":5,"leepoeaik":84}},{"path":"src/main/java/seedu/address/ui/StudentCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * A UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"public class StudentCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" private static final String FXML \u003d \"StudentListCard.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" public final Student student;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" private Label subject;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" private FlowPane lessons;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" @FXML","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" private Label remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private Label feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code StudentCode} with the given {@code Student} and index to display.","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" public StudentCard(Student student, int displayedIndex) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" this.student \u003d student;","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" name.setText(student.getName().fullName);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" phone.setText(student.getPhone().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" address.setText(student.getAddress().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" email.setText(student.getEmail().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" subject.setText(student.getSubject().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" remark.setText(student.getRemark().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" feeStatus.setText(student.getFeeStatus().status);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" student.getLessons().stream()","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" .sorted(Comparator.comparing(Lesson::getLessonValue)).filter(lesson -\u003e lesson.getLessonStatus() \u003d\u003d 0)","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" .forEach(lesson -\u003e lessons.getChildren().add(new Label(lesson.toString())));","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"justinlengch":5,"leepoeaik":17,"-":47}},{"path":"src/main/java/seedu/address/ui/StudentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":" * Panel containing the list of students.","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"public class StudentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" private static final String FXML \u003d \"StudentListPanel.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" private final Logger logger \u003d LogsCenter.getLogger(StudentListPanel.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" private final MainWindow mainWindow;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" private ListView\u003cStudent\u003e studentListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code StudentListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" public StudentListPanel(MainWindow mainWindow, ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" super(FXML);","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" this.mainWindow \u003d mainWindow;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" studentListView.setItems(studentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" studentListView.setCellFactory(listView -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" StudentListViewCell studentCells \u003d new StudentListViewCell();","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" studentCells.setOnMouseClicked(mouseEvent -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" StudentListViewCell clicked \u003d (StudentListViewCell) mouseEvent.getSource();","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" mainWindow.updateScheduleListPanel(clicked.getStudent());","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" return studentCells;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Student} using a {@code StudentCard}.","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" class StudentListViewCell extends ListCell\u003cStudent\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" private Student student;","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" protected void updateItem(Student student, boolean empty) {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" super.updateItem(student, empty);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" if (empty || student \u003d\u003d null) {","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" setText(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" this.student \u003d student;","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" setGraphic(new StudentCard(student, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" public Student getStudent() {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" return this.student;","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"leepoeaik":64}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"justinlengch"},"content":"#lessons {","lastModifiedDate":"2024-03-21"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"justinlengch"},"content":"#lessons .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"justinlengch":2,"-":350}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":" -fx-background: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":1,"-":19}},{"path":"src/main/resources/view/LightTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"#titleLogoLabel {","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color:#FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius:10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 0 10 0 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":" -fx-min-height : 40px;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"#titleLogoLabel .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: #000000;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"#labelCommandHolder{","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #C7C8CC;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" -fx-spacing : 20px;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"#commandTextField {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color: transparent transparent #000000 transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: #000000;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":"#commandTextHBox{","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color : #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":"#resultDisplayPlaceholder{","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #C7C8CC;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" -fx-focus-color:transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"#result-display{","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #000000;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":".result-display {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" -fx-padding:5 5 5 5;","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":".result-display .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":"#studentList{","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #C7C8CC;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":"#studentListHBox{","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" -fx-spacing:20px;","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" -fx-padding:10 10 10 20;","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color:#C7C8CC;","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":"#scheduleBox{","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color:#FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":"#cardPane {","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #E3E1D9;","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets : 10 0 10 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color : transparent transparent #C7C8CC transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #F2EFE5;","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets : 10 0 10 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color : transparent transparent #C7C8CC transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #B4B4B8;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color : transparent transparent #C7C8CC transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color: #000000;","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":".list-cell .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":"#scheduleListView .list-cell:filled:odd {","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #6aa9bf;","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets : 10 0 10 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 10 10 10 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 0px;","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"leepoeaik"},"content":"#scheduleListView .list-cell:filled:even {","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets : 10 0 10 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 10 10 10 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 0px;","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"leepoeaik"},"content":"#scheduleListView .list-cell .label {","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"leepoeaik"},"content":"#scheduleListView {","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"leepoeaik"},"content":".scroll-bar {","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"leepoeaik"},"content":".scroll-bar .thumb {","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #B4B4B8;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"leepoeaik"},"content":".menu-bar {","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"leepoeaik"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"leepoeaik"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"leepoeaik"},"content":".menu .left-container {","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"leepoeaik"},"content":"#lessons {","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"leepoeaik"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"leepoeaik"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"leepoeaik"},"content":"#lessons .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #6aa9bf;","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"leepoeaik"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13;","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"leepoeaik"},"content":"#studentListView {","lastModifiedDate":"2024-03-22"},{"lineNumber":190,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 0 20 0 20;","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"leepoeaik"},"content":"#upcomingLessonLabel {","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"leepoeaik":198}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"TutorTrack\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox fx:id\u003d\"labelCommandHolder\" prefHeight\u003d\"18.0\" prefWidth\u003d\"340.0\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox fx:id\u003d\"titleLogoLabel\" alignment\u003d\"CENTER_LEFT\" prefHeight\u003d\"40.0\" prefWidth\u003d\"136.0\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel contentDisplay\u003d\"CENTER\" prefHeight\u003d\"22.0\" prefWidth\u003d\"86.0\" text\u003d\"TutorTrack\" textAlignment\u003d\"RIGHT\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" \u003cFont name\u003d\"System Bold\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" \u003cImageView fitHeight\u003d\"31.0\" fitWidth\u003d\"45.0\" nodeOrientation\u003d\"INHERIT\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" \u003cimage\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" \u003cImage url\u003d\"@/images/book-logo.png\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" \u003c/image\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox fx:id\u003d\"commandTextHBox\" alignment\u003d\"CENTER_RIGHT\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100\" minHeight\u003d\"100\" prefHeight\u003d\"100\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox fx:id\u003d\"studentListHBox\" prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" \u003cVBox fx:id\u003d\"scheduleBox\" alignment\u003d\"CENTER\" minWidth\u003d\"340\" prefWidth\u003d\"340\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"upcomingLessonLabel\" text\u003d\"Upcoming lessons\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" \u003cFont size\u003d\"24.0\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" \u003cStackPane fx:id\u003d\"scheduleListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" \u003cVBox fx:id\u003d\"studentList\" alignment\u003d\"CENTER_RIGHT\" minWidth\u003d\"340\" prefWidth\u003d\"340\" styleClass\u003d\"pane-with-border\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" \u003cStackPane fx:id\u003d\"studentListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" \u003cURL value\u003d\"@LightTheme.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"leepoeaik":59,"-":43}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":" \u003cFont size\u003d\"23.0\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" \u003c/font\u003e\u003c/TextArea\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"leepoeaik":6,"-":6}},{"path":"src/main/resources/view/ScheduleListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"subject\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$subject\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"date\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$date\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"time\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$time\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"leepoeaik":45}},{"path":"src/main/resources/view/ScheduleListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":" \u003cListView fx:id\u003d\"scheduleListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"leepoeaik":10}},{"path":"src/main/resources/view/StudentListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" \u003cFlowPane fx:id\u003d\"lessons\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" \u003cLabel fx:id\u003d\"subject\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$subject\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"feeStatus\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$feeStatus\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"justinlengch":3,"leepoeaik":8,"-":32}},{"path":"src/main/resources/view/StudentListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":" \u003cListView fx:id\u003d\"studentListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":1,"-":7}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_MATHS;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" public void getFilteredStudentList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredStudentList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"justinlengch"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + SUBJECT_DESC_MATHS + LESSON_DESC_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"leepoeaik"},"content":" Student expectedStudent \u003d new StudentBuilder(AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"leepoeaik"},"content":" expectedModel.addStudent(expectedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"justinlengch":3,"leepoeaik":9,"-":165}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public void execute_newStudent_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" Student validStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" expectedModel.addStudent(validStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" assertCommandSuccess(new AddCommand(validStudent), model,","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" public void execute_duplicateStudent_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" Student personInList \u003d model.getAddressBook().getStudentList().get(0);","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" AddCommand.MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"leepoeaik":11,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" public void constructor_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" public void execute_studentAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" ModelStubAcceptingStudentAdded modelStub \u003d new ModelStubAcceptingStudentAdded();","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" Student validStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" CommandResult commandResult \u003d new AddCommand(validStudent).execute(modelStub);","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" assertEquals(Arrays.asList(validStudent), modelStub.studentsAdded);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" public void execute_duplicateStudent_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" Student validStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" AddCommand addCommand \u003d new AddCommand(validStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" ModelStub modelStub \u003d new ModelStubWithStudent(validStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_STUDENT, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" Student alice \u003d new StudentBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" Student bob \u003d new StudentBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" public void addStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" public void deleteStudent(Student target) {","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"leepoeaik"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getFilteredStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"leepoeaik"},"content":" public void updateFilteredStudentList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"leepoeaik"},"content":" * A Model stub that contains a single student.","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"leepoeaik"},"content":" private class ModelStubWithStudent extends ModelStub {","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"leepoeaik"},"content":" private final Student student;","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"leepoeaik"},"content":" ModelStubWithStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"leepoeaik"},"content":" this.student \u003d student;","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"leepoeaik"},"content":" return this.student.isSameStudent(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"leepoeaik"},"content":" * A Model stub that always accept the student being added.","lastModifiedDate":"2024-03-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"leepoeaik"},"content":" private class ModelStubAcceptingStudentAdded extends ModelStub {","lastModifiedDate":"2024-03-22"},{"lineNumber":184,"author":{"gitId":"leepoeaik"},"content":" final ArrayList\u003cStudent\u003e studentsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":188,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":189,"author":{"gitId":"leepoeaik"},"content":" return studentsAdded.stream().anyMatch(student::isSameStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"leepoeaik"},"content":" public void addStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":194,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":195,"author":{"gitId":"leepoeaik"},"content":" studentsAdded.add(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"leepoeaik":42,"-":162}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"leepoeaik":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_REMARK_BOB \u003d \"Likes to swim\";","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_REMARK_AMY \u003d \"Likes to run\";","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_SUBJECT_AMY \u003d \"Math\";","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_SUBJECT_BOB \u003d \"Science\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_LESSON_AMY \u003d \"Math|10-05-2002|13:00|0\";","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_LESSON_BOB \u003d \"Science|12-06-2003|14:30|0\";","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String VALID_FEESTATUS_AMY \u003d \"paid\";","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String VALID_FEESTATUS_BOB \u003d \"payment by Sunday\";","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" public static final String LESSON_DESC_COMPLETED \u003d \" \" + PREFIX_LESSON + VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" public static final String LESSON_DESC_INCOMPLETE \u003d \" \" + PREFIX_LESSON + VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" public static final String SUBJECT_DESC_MATHS \u003d \" \" + PREFIX_SUBJECT + VALID_SUBJECT_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" public static final String SUBJECT_DESC_SCIENCE \u003d \" \" + PREFIX_SUBJECT + VALID_SUBJECT_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" public static final String LESSON_DESC_AMY \u003d \" \" + PREFIX_LESSON + VALID_LESSON_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" public static final String INVALID_LESSON_DESC \u003d \" \" + PREFIX_LESSON","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" + \"yuh3|13-05-2002|13:00|0\"; // number not allowed in subject part of lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" public static final EditCommand.EditStudentDescriptor DESC_AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" public static final EditCommand.EditStudentDescriptor DESC_BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" DESC_AMY \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" .withSubject(VALID_SUBJECT_AMY).withLessons(VALID_LESSON_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" DESC_BOB \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" .withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" * - the address book, filtered student list and selected student in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" * Updates {@code model}\u0027s filtered list to show only the student at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":" public static void showStudentAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"leepoeaik"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" Student student \u003d model.getFilteredStudentList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":" final String[] splitName \u003d student.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":" assertEquals(1, model.getFilteredStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"justinlengch":20,"leepoeaik":17,"-":104}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStudentAtIndex;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" Student personToDelete \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" expectedModel.deleteStudent(personToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStudentList().size() + 1);","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" Student personToDelete \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" expectedModel.deleteStudent(personToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" showNoStudent(expectedModel);","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" private void showNoStudent(Model model) {","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(p -\u003e false);","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" assertTrue(model.getFilteredStudentList().isEmpty());","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"leepoeaik":27,"-":93}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStudentAtIndex;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder(editedStudent).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STUDENT, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" Messages.format(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(model.getFilteredStudentList().get(0), editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" Index indexLastStudent \u003d Index.fromOneBased(model.getFilteredStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" Student lastStudent \u003d model.getFilteredStudentList().get(indexLastStudent.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" StudentBuilder studentInList \u003d new StudentBuilder(lastStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d studentInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" .withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" .withPhone(VALID_PHONE_BOB).withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastStudent, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" Messages.format(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(lastStudent, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STUDENT, new EditStudentDescriptor());","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" Messages.format(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" Student studentInFilteredList \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new StudentBuilder(studentInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" Messages.format(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(model.getFilteredStudentList().get(0), editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" public void execute_duplicateStudentUnfilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" Student firstStudent \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder(firstStudent).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_STUDENT, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" public void execute_duplicateStudentFilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"leepoeaik"},"content":" // edit student in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"leepoeaik"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(INDEX_SECOND_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" new EditStudentDescriptorBuilder(studentInList).build());","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" public void execute_invalidStudentIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStudentList().size() + 1);","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" public void execute_invalidStudentIndexFilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"leepoeaik"},"content":" new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"leepoeaik"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_STUDENT, DESC_AMY);","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor copyDescriptor \u003d new EditStudentDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"leepoeaik"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_STUDENT, copyDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"leepoeaik"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_STUDENT, DESC_AMY)));","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"leepoeaik"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_STUDENT, DESC_BOB)));","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":182,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(index, editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":183,"author":{"gitId":"leepoeaik"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editStudentDescriptor\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":184,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"justinlengch":3,"leepoeaik":66,"-":119}},{"path":"src/test/java/seedu/address/logic/commands/EditStudentDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"public class EditStudentDescriptorTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptorWithSameValues \u003d new EditStudentDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" String expected \u003d EditStudentDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getAddress().orElse(null) + \", subject\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getSubject().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getRemark().orElse(null) + \", lessons\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getLessons().orElse(null) + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expected, editStudentDescriptor.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"justinlengch":1,"leepoeaik":19,"-":53}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.Messages.MESSAGE_STUDENTS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.CARL;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ELLE;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.FIONA;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" public void execute_zeroKeywords_noStudentFound() {","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(MESSAGE_STUDENTS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" expectedModel.updateFilteredStudentList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" assertEquals(Collections.emptyList(), model.getFilteredStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" public void execute_multipleKeywords_multipleStudentsFound() {","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(MESSAGE_STUDENTS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" expectedModel.updateFilteredStudentList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"leepoeaik":15,"-":76}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStudentAtIndex;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"leepoeaik":4,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/RemarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStudentAtIndex;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"class RemarkCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" private static final String REMARK_STUB \u003d \"She likes aardvarks.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" void execute_addRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" Student firstStudent \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new StudentBuilder(firstStudent).withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" new Remark(editedStudent.getRemark().value));","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(firstStudent, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" Student firstStudent \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new StudentBuilder(","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased()))","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" .withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" new Remark(editedStudent.getRemark().value));","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(firstStudent, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" public void execute_invalidStudentIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStudentList().size() + 1);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(outOfBoundIndex, new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(remarkCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"justinlengch":45,"leepoeaik":23}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_LESSON_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_INCOMPLETE;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_MATHS;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_SCIENCE;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" Student expectedStudent \u003d new StudentBuilder(BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" + ADDRESS_DESC_BOB + SUBJECT_DESC_SCIENCE","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" + REMARK_DESC_BOB + LESSON_DESC_COMPLETED, new AddCommand(expectedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" // multiple lesson - all accepted","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" Student expectedStudentMultipleLessons \u003d new StudentBuilder(BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" .withLessons(VALID_LESSON_BOB, VALID_LESSON_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SUBJECT_DESC_SCIENCE","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" + REMARK_DESC_BOB + LESSON_DESC_COMPLETED + LESSON_DESC_INCOMPLETE,","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" new AddCommand(expectedStudentMultipleLessons));","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" public void parse_repeatedNonLessonValue_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" String validExpectedStudentString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" + ADDRESS_DESC_BOB + SUBJECT_DESC_SCIENCE + LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" validExpectedStudentString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"justinlengch"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_EMAIL, PREFIX_SUBJECT,","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"justinlengch"},"content":" PREFIX_ADDRESS, PREFIX_PHONE));","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, validExpectedStudentString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, validExpectedStudentString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, validExpectedStudentString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, validExpectedStudentString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":140,"author":{"gitId":"justinlengch"},"content":" // zero lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"justinlengch"},"content":" Student expectedStudent \u003d new StudentBuilder(AMY).withLessons().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"justinlengch"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"justinlengch"},"content":" + ADDRESS_DESC_AMY + SUBJECT_DESC_MATHS,","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"leepoeaik"},"content":" new AddCommand(expectedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS + LESSON_DESC_INCOMPLETE,","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"justinlengch"},"content":" + VALID_SUBJECT_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":188,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"justinlengch"},"content":" // invalid lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS + INVALID_LESSON_DESC, Lesson.MESSAGE_CONSTRAINTS_1);","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"justinlengch"},"content":" + INVALID_ADDRESS_DESC + SUBJECT_DESC_MATHS,","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"justinlengch"},"content":" + ADDRESS_DESC_BOB + SUBJECT_DESC_MATHS + REMARK_DESC_BOB + LESSON_DESC_COMPLETED,","lastModifiedDate":"2024-03-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"justinlengch":40,"leepoeaik":29,"-":139}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEESTATUS;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FeeStatusCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentUtil;","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" Student person \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(StudentUtil.getAddCommand(person));","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_STUDENT.getOneBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_STUDENT), command);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" Student person \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" + INDEX_FIRST_STUDENT.getOneBased() + \" \" + StudentUtil.getEditStudentDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" assertEquals(new EditCommand(INDEX_FIRST_STUDENT, descriptor), command);","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_feeStatus() throws Exception {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" final FeeStatus feeStatus \u003d new FeeStatus(\"Some status.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FeeStatusCommand command \u003d (FeeStatusCommand) parser.parseCommand(FeeStatusCommand.COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + INDEX_FIRST_STUDENT.getOneBased()","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" + PREFIX_FEESTATUS","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" + feeStatus.status);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(new FeeStatusCommand(INDEX_FIRST_STUDENT, feeStatus), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"leepoeaik":15,"-":102}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_STUDENT));","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"leepoeaik":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_LESSON_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_INCOMPLETE;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_MATHS;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, \"1\" + INVALID_LESSON_DESC, Lesson.MESSAGE_CONSTRAINTS_1); // invalid lesson","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" Index targetIndex \u003d INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"justinlengch"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + LESSON_DESC_INCOMPLETE + SUBJECT_DESC_MATHS","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"justinlengch"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"justinlengch"},"content":" .withLessons(VALID_LESSON_AMY, VALID_LESSON_BOB).withSubject(VALID_SUBJECT_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" Index targetIndex \u003d INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":" Index targetIndex \u003d INDEX_THIRD_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":151,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"justinlengch"},"content":" // lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"justinlengch"},"content":" userInput \u003d targetIndex.getOneBased() + LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptorBuilder().withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"leepoeaik"},"content":" Index targetIndex \u003d INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"justinlengch"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"justinlengch"},"content":" + LESSON_DESC_INCOMPLETE + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + LESSON_DESC_COMPLETED","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"justinlengch"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + SUBJECT_DESC_MATHS;","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"justinlengch":16,"leepoeaik":21,"-":156}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"leepoeaik":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" private static final String INVALID_LESSON \u003d \"#MATH|10-05-2002|13:00\";","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_LESSON_1 \u003d \"Maths|10-05-2002|13:00\";","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_LESSON_2 \u003d \"Science|10-05-2002|13:00\";","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_SUBJECT_MATHS \u003d \"Maths\";","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_SUBJECT_SCIENCE \u003d \"Science\";","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" private static final LocalDate VALID_DATE_1 \u003d LocalDate.parse(\"10-05-2002\", Lesson.DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" private static final LocalTime VALID_TIME_1 \u003d LocalTime.parse(\"13:00\", Lesson.TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" assertEquals(INDEX_FIRST_STUDENT, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" assertEquals(INDEX_FIRST_STUDENT, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"justinlengch"},"content":" public void parseLesson_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLesson(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"justinlengch"},"content":" public void parseLesson_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"justinlengch"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLesson(INVALID_LESSON));","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"justinlengch"},"content":" public void parseLessons_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLessons(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":172,"author":{"gitId":"justinlengch"},"content":" public void parseLessons_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"justinlengch"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLessons(","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"justinlengch"},"content":" Arrays.asList(VALID_LESSON_1, INVALID_LESSON)));","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"justinlengch"},"content":" public void parseLessons_emptyCollection_returnsEmptyList() throws Exception {","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"justinlengch"},"content":" assertTrue(ParserUtil.parseLessons(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"justinlengch"},"content":" public void parseLessons_collectionWithValidLessons_returnsLessonList() throws Exception {","lastModifiedDate":"2024-04-03"},{"lineNumber":184,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e actualLessonList \u003d ParserUtil.parseLessons(Arrays.asList(VALID_LESSON_1, VALID_LESSON_2));","lastModifiedDate":"2024-04-03"},{"lineNumber":185,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e expectedLessonSet \u003d new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2024-04-03"},{"lineNumber":186,"author":{"gitId":"justinlengch"},"content":" new Lesson(VALID_SUBJECT_MATHS, VALID_DATE_1, VALID_TIME_1),","lastModifiedDate":"2024-04-03"},{"lineNumber":187,"author":{"gitId":"justinlengch"},"content":" new Lesson(VALID_SUBJECT_SCIENCE, VALID_DATE_1, VALID_TIME_1)));","lastModifiedDate":"2024-04-03"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"justinlengch"},"content":" assertEquals(expectedLessonSet, actualLessonList);","lastModifiedDate":"2024-04-03"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"justinlengch":32,"leepoeaik":8,"-":151}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.DuplicateStudentException;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" assertEquals(Collections.emptyList(), addressBook.getStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" public void resetData_withDuplicateStudents_throwsDuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" // Two students with the same identity fields","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e newStudents \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" AddressBookStub newData \u003d new AddressBookStub(newStudents);","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DuplicateStudentException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasStudent(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" assertFalse(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" assertTrue(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" assertTrue(addressBook.hasStudent(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" public void getStudentList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getStudentList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{students\u003d\" + addressBook.getStudentList() + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" * A stub ReadOnlyAddressBook whose students list can violate interface constraints.","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" private final ObservableList\u003cStudent\u003e students \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" AddressBookStub(Collection\u003cStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" this.students.setAll(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" return students;","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"justinlengch":1,"leepoeaik":32,"-":75}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BENSON;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasStudent(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" assertFalse(modelManager.hasStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" modelManager.addStudent(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" assertTrue(modelManager.hasStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" public void getFilteredStudentList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredStudentList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withStudent(ALICE).withStudent(BENSON).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" modelManager.updateFilteredStudentList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" modelManager.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"leepoeaik":16,"-":116}},{"path":"src/test/java/seedu/address/model/student/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"leepoeaik":1,"-":55}},{"path":"src/test/java/seedu/address/model/student/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"leepoeaik":1,"-":87}},{"path":"src/test/java/seedu/address/model/student/LessonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"public class LessonTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e new Lesson(null, null, null));","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" public void constructor_invalidLesson_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" String invalidSubject \u003d \"\";","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" LocalDate validDate \u003d LocalDate.parse(\"10-01-2023\", Lesson.DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" LocalTime validTime \u003d LocalTime.parse(\"23:00\", Lesson.TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Lesson(invalidSubject, validDate, validTime));","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" public void isValidLesson() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" // null lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e Lesson.isValidLesson(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" // invalid lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" assertFalse(Lesson.isValidLesson(\"\")); // empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" assertFalse(Lesson.isValidLesson(\" \")); // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" assertFalse(Lesson.isValidLesson(\"Math|invalidDate|09:00\")); // invalid date format","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" assertFalse(Lesson.isValidLesson(\"Math|01-01-2023|invalidTime\")); // invalid time format","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" // valid lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" assertTrue(Lesson.isValidLesson(\"Math|01-01-2023|09:00\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" assertTrue(Lesson.isValidLesson(\"Science|01-01-2023|10:00\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" Lesson lesson \u003d new Lesson(\"Math\", LocalDate.parse(\"01-01-2023\", Lesson.DATE_FORMATTER),","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" LocalTime.parse(\"09:00\", Lesson.TIME_FORMATTER));","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" String validLesson \u003d \"Math\";","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" LocalDate validDate \u003d LocalDate.parse(\"01-01-2023\", Lesson.DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" LocalTime validTime \u003d LocalTime.parse(\"09:00\", Lesson.TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" assertTrue(lesson.equals(new Lesson(validLesson, validDate, validTime)));","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" assertEquals(lesson, lesson);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" assertFalse(lesson.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" assertFalse(lesson.equals(5.0f));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" String differentLesson \u003d \"Science\";","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" assertFalse(lesson.equals(new Lesson(differentLesson, validDate, validTime)));","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justinlengch":67,"leepoeaik":1}},{"path":"src/test/java/seedu/address/model/student/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" assertTrue(predicate.test(new StudentBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" assertTrue(predicate.test(new StudentBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" assertTrue(predicate.test(new StudentBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" assertTrue(predicate.test(new StudentBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" assertFalse(predicate.test(new StudentBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" assertFalse(predicate.test(new StudentBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" assertFalse(predicate.test(new StudentBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"leepoeaik":9,"-":76}},{"path":"src/test/java/seedu/address/model/student/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"leepoeaik":1,"-":59}},{"path":"src/test/java/seedu/address/model/student/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"leepoeaik":1,"-":59}},{"path":"src/test/java/seedu/address/model/student/StudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"public class StudentTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" public void isSameStudent() {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" assertTrue(ALICE.isSameStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" assertFalse(ALICE.isSameStudent(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" .withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" assertTrue(ALICE.isSameStudent(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" assertFalse(ALICE.isSameStudent(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" Student editedBob \u003d new StudentBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" assertFalse(BOB.isSameStudent(editedBob));","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" editedBob \u003d new StudentBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" assertFalse(BOB.isSameStudent(editedBob));","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" Student aliceCopy \u003d new StudentBuilder(ALICE).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withLessons(VALID_LESSON_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" String expected \u003d Student.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", subject\u003d\" + ALICE.getSubject()","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + \", remark\u003d\" + ALICE.getRemark() + \", fee status\u003d\" + ALICE.getFeeStatus()","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \", lessons\u003d\" + ALICE.getLessons() + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"justinlengch":3,"leepoeaik":23,"-":68}},{"path":"src/test/java/seedu/address/model/student/SubjectTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"public class SubjectTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e new Subject(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" public void constructor_invalidSubject_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" String invalidSubject \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Subject(invalidSubject));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" public void isValidSubject() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" // null subject","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e Subject.isValidSubject(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" // invalid subjects","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" assertFalse(Subject.isValidSubject(\"\")); // empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" assertFalse(Subject.isValidSubject(\" \")); // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" assertFalse(Subject.isValidSubject(\"123\")); // numeric characters","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" assertFalse(Subject.isValidSubject(\"!@#$%\")); // special characters","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" // valid subjects","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" assertTrue(Subject.isValidSubject(\"Math\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" assertTrue(Subject.isValidSubject(\"English Literature\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" assertTrue(Subject.isValidSubject(\"Computer Science\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" assertTrue(Subject.isValidSubject(\"Social Studies\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" Subject subject \u003d new Subject(\"Math\");","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" assertEquals(subject, new Subject(\"Math\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" assertEquals(subject, subject);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" assertNotEquals(null, subject);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" assertNotEquals(5.0f, subject, String.valueOf(0.0));","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" assertNotEquals(subject, new Subject(\"Science\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justinlengch":60,"leepoeaik":1}},{"path":"src/test/java/seedu/address/model/student/UniqueStudentListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import java.util.List;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.DuplicateStudentException;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.StudentNotFoundException;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"public class UniqueStudentListTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" private final UniqueStudentList uniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" public void contains_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.contains(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" public void contains_studentNotInList_returnsFalse() {","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" assertFalse(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" public void contains_studentInList_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" assertTrue(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" public void contains_studentWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" .build();","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" assertTrue(uniqueStudentList.contains(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" public void add_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.add(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" public void add_duplicateStudent_throwsDuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DuplicateStudentException.class, () -\u003e uniqueStudentList.add(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_nullTargetStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setStudent(null, ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_nullEditedStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setStudent(ALICE, null));","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_targetStudentNotInList_throwsStudentNotFoundException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" assertThrows(StudentNotFoundException.class, () -\u003e uniqueStudentList.setStudent(ALICE, ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_editedStudentIsSameStudent_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudent(ALICE, ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_editedStudentHasSameIdentity_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" .build();","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudent(ALICE, editedAlice);","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(editedAlice);","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_editedStudentHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudent(ALICE, BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_editedStudentHasNonUniqueIdentity_throwsDuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DuplicateStudentException.class, () -\u003e uniqueStudentList.setStudent(ALICE, BOB));","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":" public void remove_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.remove(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"leepoeaik"},"content":" public void remove_studentDoesNotExist_throwsStudentNotFoundException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"leepoeaik"},"content":" assertThrows(StudentNotFoundException.class, () -\u003e uniqueStudentList.remove(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" public void remove_existingStudent_removesStudent() {","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.remove(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_nullUniqueStudentList_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setStudents((UniqueStudentList) null));","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_uniqueStudentList_replacesOwnListWithProvidedUniqueStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudents(expectedUniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setStudents((List\u003cStudent\u003e) null));","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e studentList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudents(studentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":155,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":157,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":160,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":161,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_listWithDuplicateStudents_throwsDuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e listWithDuplicateStudents \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":163,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DuplicateStudentException.class, () -\u003e uniqueStudentList.setStudents(listWithDuplicateStudents));","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":165,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"leepoeaik"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"leepoeaik"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"leepoeaik"},"content":" -\u003e uniqueStudentList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"leepoeaik"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"leepoeaik"},"content":" assertEquals(uniqueStudentList.asUnmodifiableObservableList().toString(), uniqueStudentList.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"leepoeaik":176}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" void getSampleStudents() {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" Student[] sampleStudents \u003d SampleDataUtil.getSampleStudents();","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(8, sampleStudents.length);","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" void getLessonList() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d SampleDataUtil.getLessonList(\"Maths|10-05-2004|12:29\", \"English|10-05-2004|12:29\");","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" assertEquals(2, lessonList.size());","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" assertTrue(lessonList.contains(ParserUtil.parseLesson(\"Maths|10-05-2004|12:29\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" assertTrue(lessonList.contains(ParserUtil.parseLesson(\"English|10-05-2004|12:29\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justinlengch":25,"leepoeaik":4,"-":1}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedStudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.storage.JsonAdaptedStudent.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BENSON;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"public class JsonAdaptedStudentTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" private static final String INVALID_LESSON \u003d \"#Math|10-05-2002|10:00|1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_FEE_STATUS \u003d BENSON.getFeeStatus().toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" private static final List\u003cJsonAdaptedLesson\u003e VALID_LESSONS \u003d BENSON.getLessons().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" .map(JsonAdaptedLesson::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_SUBJECT \u003d \"Science\";","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" public void toModelType_validStudentDetails_returnsStudent() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(BENSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" assertEquals(BENSON, student.toModelType());","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" new JsonAdaptedStudent(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SUBJECT,","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SUBJECT,","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SUBJECT,","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" VALID_SUBJECT, VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" VALID_SUBJECT, VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" VALID_SUBJECT, VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" new JsonAdaptedStudent(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_SUBJECT,","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_SUBJECT,","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"justinlengch"},"content":" public void toModelType_invalidLessons_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"justinlengch"},"content":" List\u003cJsonAdaptedLesson\u003e invalidLessons \u003d new ArrayList\u003c\u003e(VALID_LESSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"justinlengch"},"content":" invalidLessons.add(new JsonAdaptedLesson(INVALID_LESSON));","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" new JsonAdaptedStudent(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" VALID_SUBJECT, VALID_REMARK, VALID_FEE_STATUS, invalidLessons);","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"justinlengch":11,"leepoeaik":31,"-":85}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.HOON;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.IDA;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" public void readAddressBook_invalidStudentAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidStudentAddressBook.json\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" public void readAddressBook_invalidAndValidStudentAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidStudentAddressBook.json\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" original.addStudent(HOON);","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" original.removeStudent(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" original.addStudent(IDA);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"leepoeaik":11,"-":99}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.TypicalStudents;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" private static final Path TYPICAL_STUDENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalStudentAddressBook.json\");","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" private static final Path INVALID_STUDENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidStudentAddressBook.json\");","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" private static final Path DUPLICATE_STUDENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateStudentAddressBook.json\");","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" public void toModelType_typicalStudentsFile_success() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_STUDENTS_FILE,","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" AddressBook typicalStudentsAddressBook \u003d TypicalStudents.getTypicalAddressBook();","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" assertEquals(addressBookFromFile, typicalStudentsAddressBook);","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" public void toModelType_invalidStudentFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_STUDENT_FILE,","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" public void toModelType_duplicateStudents_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_STUDENT_FILE,","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"leepoeaik":13,"-":34}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withStudent(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" * Adds a new {@code Student} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" public AddressBookBuilder withStudent(Student person) {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(person);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":5,"-":29}},{"path":"src/test/java/seedu/address/testutil/EditStudentDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.storage.JsonAdaptedLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" * A utility class to help with building EditStudentDescriptor objects.","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"public class EditStudentDescriptorBuilder {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" private EditStudentDescriptor descriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder() {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder(EditStudentDescriptor descriptor) {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" this.descriptor \u003d new EditStudentDescriptor(descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" * Returns an {@code EditStudentDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder(Student person) {","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" descriptor.setLessons(person.getLessons());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" descriptor.setSubject(person.getSubject());","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Name} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Phone} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Email} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Address} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Subject} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withSubject(String subject) {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" descriptor.setSubject(new Subject(subject));","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Remark} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptor build() {","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"justinlengch"},"content":" * Sets the {@code Lessons} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"justinlengch"},"content":" public EditStudentDescriptorBuilder withLessons(String... lessons) {","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d Arrays.stream(lessons)","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"justinlengch"},"content":" .map(lesson -\u003e JsonAdaptedLesson.parseJsonLesson(lesson))","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"justinlengch"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"justinlengch"},"content":" descriptor.setLessons(lessonList);","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"justinlengch":28,"leepoeaik":32,"-":47}},{"path":"src/test/java/seedu/address/testutil/StudentBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"import seedu.address.storage.JsonAdaptedLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" * A utility class to help with building Student objects.","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"public class StudentBuilder {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" private static final String DEFAULT_REMARK \u003d \"\";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" private static final String DEFAULT_SUBJECT \u003d \"Math\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String DEFAULT_FEE_STATUS \u003d \"Paid.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" private static final LocalDate DEFAULT_DATE \u003d LocalDate.parse(\"10-05-2002\", Lesson.DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" private static final LocalTime DEFAULT_TIME \u003d LocalTime.parse(\"13:00\", Lesson.TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private static final Lesson DEFAULT_LESSON \u003d new Lesson(DEFAULT_SUBJECT, DEFAULT_DATE, DEFAULT_TIME);","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FeeStatus feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" private Subject subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" private List\u003cLesson\u003e lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" private Remark remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code StudentBuilder} with the default details.","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder() {","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" feeStatus \u003d new FeeStatus(DEFAULT_FEE_STATUS);","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" subject \u003d new Subject(DEFAULT_SUBJECT);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" lessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" * Initializes the StudentBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder(Student personToCopy) {","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" feeStatus \u003d personToCopy.getFeeStatus();","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" subject \u003d personToCopy.getSubject();","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" lessons \u003d personToCopy.getLessons();","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Name} of the {@code Student} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withName(String name) {","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" * Parses the {@code lessons} into a {@code List\u003cLesson\u003e} and set it to the {@code Student} that we are building.","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withLessons(String... lessons) {","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" this.lessons \u003d Arrays.stream(lessons)","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" .map(JsonAdaptedLesson::parseJsonLesson)","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Address} of the {@code Student} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withAddress(String address) {","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Phone} of the {@code Student} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Email} of the {@code Student} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withEmail(String email) {","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Sets the {@code FeeStatus} of the {@code Student} that we are building.","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public StudentBuilder withFeeStatus(String feeStatus) {","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.feeStatus \u003d new FeeStatus(feeStatus);","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Remark} of the {@code Student} that being built.","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Subject} of the {@code Student} that being built.","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withSubject(String subject) {","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d new Subject(subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"leepoeaik"},"content":" public Student build() {","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return new Student(name, phone, email, address, subject, remark, feeStatus, lessons);","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"justinlengch":38,"leepoeaik":28,"-":77}},{"path":"src/test/java/seedu/address/testutil/StudentUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" * A utility class for Student.","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"public class StudentUtil {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" * Returns an add command string for adding the {@code student}.","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" public static String getAddCommand(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" return AddCommand.COMMAND_WORD + \" \" + getStudentDetails(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" * Returns the part of command string for the given {@code student}\u0027s details.","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" public static String getStudentDetails(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_NAME + student.getName().fullName + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_PHONE + student.getPhone().value + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_EMAIL + student.getEmail().value + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_ADDRESS + student.getAddress().value + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_SUBJECT + student.getSubject().value + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" student.getLessons().stream().forEach(","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" s -\u003e sb.append(PREFIX_LESSON).append(s.getLessonValue()).append(\" \")","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" * Returns the part of command string for the given {@code EditStudentDescriptor}\u0027s details.","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" public static String getEditStudentDescriptorDetails(EditStudentDescriptor descriptor) {","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" descriptor.getSubject().ifPresent(subject -\u003e sb.append(PREFIX_SUBJECT).append(subject.value).append(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" if (descriptor.getLessons().isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessons \u003d descriptor.getLessons().get();","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" if (lessons.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" sb.append(PREFIX_LESSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" lessons.forEach(s -\u003e sb.append(PREFIX_LESSON).append(s.getLessonValue()).append(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"justinlengch":10,"leepoeaik":18,"-":37}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" * Returns the middle index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" return Index.fromOneBased(model.getFilteredStudentList().size() / 2);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" * Returns the last index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" return Index.fromOneBased(model.getFilteredStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" * Returns the student in the {@code model}\u0027s student list at {@code index}.","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" public static Student getStudent(Model model, Index index) {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" return model.getFilteredStudentList().get(index.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" public static final Index INDEX_FIRST_STUDENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":" public static final Index INDEX_SECOND_STUDENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" public static final Index INDEX_THIRD_STUDENT \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"leepoeaik":3,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalStudents.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" * A utility class containing a list of {@code Student} objects to be used in tests.","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":"public class TypicalStudents {","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" public static final Student ALICE \u003d new StudentBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Maths\")","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" .withRemark(\"She likes aardvarks.\")","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withFeeStatus(\"Paid.\")","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" .withLessons(\"Maths|10-05-2004|12:29|1\", \"Physics|11-05-2004|12:29|0\")","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" public static final Student BENSON \u003d new StudentBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Geography\")","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withFeeStatus(\"Paid.\")","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" .withLessons(\"Geography|10-05-2004|12:29|1\")","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" public static final Student CARL \u003d new StudentBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"English\").withLessons(\"English|10-05-2004|12:29|0\")","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" public static final Student DANIEL \u003d new StudentBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"History\").withLessons(\"Geography|10-05-2004|12:29|0\")","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" public static final Student ELLE \u003d new StudentBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Psychology\").withLessons(\"Geography|10-05-2004|12:29|1\")","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" public static final Student FIONA \u003d new StudentBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"English\").withLessons(\"English|10-05-2004|12:29|0\")","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" public static final Student GEORGE \u003d new StudentBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Art\").withLessons(\"Art|10-05-2004|12:29|1\")","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" public static final Student HOON \u003d new StudentBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Music\").withLessons(\"Science|10-05-2004|12:29|1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" public static final Student IDA \u003d new StudentBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Dance\").withLessons(\"Maths|10-06-2004|12:29|0\")","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" // Manually added - Student\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" public static final Student AMY \u003d new StudentBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" .withSubject(VALID_SUBJECT_AMY).withLessons(VALID_LESSON_AMY).build();","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" public static final Student BOB \u003d new StudentBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" .withSubject(VALID_SUBJECT_BOB).withRemark(VALID_REMARK_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" private TypicalStudents() {} // prevents instantiation","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" for (Student person : getTypicalStudents()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":" ab.addStudent(person);","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" public static List\u003cStudent\u003e getTypicalStudents() {","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"justinlengch":24,"leepoeaik":19,"-":51}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T16-4/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103T-T16-4/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"HusseinSafwan02"},"content":"# TutorTrack","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"HusseinSafwan02"},"content":"\u003e \"Simplicity boils down to two steps: identify the essential, eliminate the rest.\"– Leo Babauta [(source)](https://dansilvestre.com/productivity-quotes/)","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"HusseinSafwan02"},"content":"_TutorTrack_ is **an application for freelance tutors to manage their students**.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":" * `Add` and `Delete` students in the student list.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"HusseinSafwan02"},"content":" * `Find` a particular student from the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":" * `View` a particular student\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"HusseinSafwan02"},"content":"The project simulates an ongoing software project for a desktop application (called __) used for managing contact details.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"* For the detailed documentation of this project, see the **[TutorTrack Product Website](https://ay2324s2-cs2103t-t16-4.github.io/tp/)**.","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"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":{"justinlengch":3,"HusseinSafwan02":10,"-":6}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" archiveFileName \u003d \u0027tutortrack.jar\u0027","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":"run {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"justinlengch":1,"leepoeaik":2,"-":73}},{"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":"leepoeaik"},"content":"### Justin Leng Chern Harn","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"\u003cimg src\u003d\"images/justinlengch.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"[[github](https://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"* Role: Developer","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"* Responsibilities: Quality Assurance","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"### Lee Poe Aik","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"\u003cimg src\u003d\"images/leepoeaik.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":"[[github](http://github.com/leepoeaik)]","lastModifiedDate":"2024-03-14"},{"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":"justinlengch"},"content":"* Role: Developer","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Chiarena"},"content":"### Chia Rena","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Chiarena"},"content":"\u003cimg src\u003d\"images/chiarena.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"Chiarena"},"content":"[[github](http://github.com/Chiarena)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"Chiarena"},"content":"* Responsibilities: Deliverables and Deadlines ","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"HusseinSafwan02"},"content":"### Safwan Hussein","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"HusseinSafwan02"},"content":"\u003cimg src\u003d\"images/husseinsafwan02.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"HusseinSafwan02"},"content":"[[github](http://github.com/HusseinSafwan02)]","lastModifiedDate":"2024-03-21"},{"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":"HusseinSafwan02"},"content":"* Responsibilities: UI, Documentation and Integration","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"justinlengch":4,"Chiarena":4,"leepoeaik":4,"HusseinSafwan02":4,"-":37}},{"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":"justinlengch"},"content":"# TutorTrack Developer Guide","lastModifiedDate":"2024-03-18"},{"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":"justinlengch"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2024-03-18"},{"lineNumber":278,"author":{"gitId":"justinlengch"},"content":"* has a need to quickly manage all their lesson plans","lastModifiedDate":"2024-03-18"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":282,"author":{"gitId":"justinlengch"},"content":"* prefers to view all their students in a centralized platform instead of across separate apps","lastModifiedDate":"2024-03-18"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"justinlengch"},"content":"**Value proposition**: TutorTrack revolutionizes private tutoring with intuitive keyboard navigation, integrated ","lastModifiedDate":"2024-03-18"},{"lineNumber":285,"author":{"gitId":"justinlengch"},"content":"calendar features, and detailed student profiles. \u003c/br\u003e Automated reminders keep tutors organized while robust ","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"justinlengch"},"content":"security measures and responsive support ensure a seamless user experience. \u003c/br\u003e Experience efficient student management ","lastModifiedDate":"2024-03-18"},{"lineNumber":287,"author":{"gitId":"justinlengch"},"content":"with TutorTrack – the ultimate solution for private tutors.","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"justinlengch"},"content":"|----------|-----------------|--------------------------------------------------------|---------------------------------------------------------------------------|","lastModifiedDate":"2024-03-20"},{"lineNumber":296,"author":{"gitId":"HusseinSafwan02"},"content":"| `* * *` | new user | view a guide of useful commands | refer to instructions when I forget how to use TutorTrack |","lastModifiedDate":"2024-03-12"},{"lineNumber":297,"author":{"gitId":"HusseinSafwan02"},"content":"| `* * *` | freelance tutor | add a new student | |","lastModifiedDate":"2024-03-12"},{"lineNumber":298,"author":{"gitId":"HusseinSafwan02"},"content":"| `* * *` | freelance tutor | delete an existing | remove entries that I no longer need |","lastModifiedDate":"2024-03-12"},{"lineNumber":299,"author":{"gitId":"HusseinSafwan02"},"content":"| `* * *` | freelance tutor | find a student by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-12"},{"lineNumber":300,"author":{"gitId":"HusseinSafwan02"},"content":"| `* *` | freelance tutor | view all my students\u0027 information | view all my students at the same time |","lastModifiedDate":"2024-03-12"},{"lineNumber":301,"author":{"gitId":"justinlengch"},"content":"| `* * *` | freelance tutor | view a specific student\u0027s information | specifically refer to a particular student\u0027s information |","lastModifiedDate":"2024-03-18"},{"lineNumber":302,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | edit student information | student information can be edited and changed |","lastModifiedDate":"2024-03-18"},{"lineNumber":303,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | schedule meeting times with students | set lessons |","lastModifiedDate":"2024-03-18"},{"lineNumber":304,"author":{"gitId":"justinlengch"},"content":"| `* * *` | freelance tutor | delete meeting times with students | cancel lessons |","lastModifiedDate":"2024-03-18"},{"lineNumber":305,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | edit meeting times with students | reschedule lessons |","lastModifiedDate":"2024-03-18"},{"lineNumber":306,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | view meeting times in a calender view with students | track when I have scheduled lessons |","lastModifiedDate":"2024-03-18"},{"lineNumber":307,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | mark attendance for each week | keep an accurate record of student attendance and participation over time |","lastModifiedDate":"2024-03-18"},{"lineNumber":308,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | edit milestones on the progress tracker | change milestone plans anytime |","lastModifiedDate":"2024-03-18"},{"lineNumber":309,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | add milestones to a progress tracker | keep track of topics covered |","lastModifiedDate":"2024-03-18"},{"lineNumber":310,"author":{"gitId":"justinlengch"},"content":"| `*` | student | access a summary page with my progress information | keep track of my progress |","lastModifiedDate":"2024-03-18"},{"lineNumber":311,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | view my schedule in a calendar form | keep track of lessons for the week/day |","lastModifiedDate":"2024-03-18"},{"lineNumber":312,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | view a progress tracking meter | have a visual representation of a students progress |","lastModifiedDate":"2024-03-18"},{"lineNumber":313,"author":{"gitId":"justinlengch"},"content":"| `* *` | new user | create account using email | have an account that stores all the information |","lastModifiedDate":"2024-03-18"},{"lineNumber":314,"author":{"gitId":"justinlengch"},"content":"| `* *` | registered user | login to my account | all the information is tracked and stored properly in the account |","lastModifiedDate":"2024-03-18"},{"lineNumber":315,"author":{"gitId":"justinlengch"},"content":"| `* *` | freelance tutor | upload files and materials | students can access to them |","lastModifiedDate":"2024-03-18"},{"lineNumber":316,"author":{"gitId":"justinlengch"},"content":"| `*` | student | download files and materials | review and revise the materials |","lastModifiedDate":"2024-03-18"},{"lineNumber":317,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | send message to students | chat with them |","lastModifiedDate":"2024-03-18"},{"lineNumber":318,"author":{"gitId":"justinlengch"},"content":"| `*` | student | receive message from tutor | be informed with any announcements |","lastModifiedDate":"2024-03-18"},{"lineNumber":319,"author":{"gitId":"justinlengch"},"content":"| `*` | student | receive notification from messages | be aware of messages send by tutors |","lastModifiedDate":"2024-03-18"},{"lineNumber":320,"author":{"gitId":"justinlengch"},"content":"| `*` | freelance tutor | note down basic lesson plans (remarks) for each lesson | have a structure to follow for each lesson |","lastModifiedDate":"2024-03-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"HusseinSafwan02"},"content":"(For all use cases below, the **System** is `TutorTrack` and the **Actor** is the `Tutor`, unless specified otherwise)","lastModifiedDate":"2024-03-22"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"### **Use case: UC01 Add a student**","lastModifiedDate":"2024-04-05"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"HusseinSafwan02"},"content":"1. User enters command to add a specific student in the list","lastModifiedDate":"2024-03-22"},{"lineNumber":331,"author":{"gitId":"HusseinSafwan02"},"content":"2. System adds the student","lastModifiedDate":"2024-03-22"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"HusseinSafwan02"},"content":"* 1a. The given syntax is incorrect.","lastModifiedDate":"2024-03-22"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"HusseinSafwan02"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-22"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"HusseinSafwan02"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-22"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"### **Use case: UC02 Find a student**","lastModifiedDate":"2024-04-05"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":345,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-04-05"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":347,"author":{"gitId":"-"},"content":"1. User enters command to search for a specific student in the list.","lastModifiedDate":"2024-04-05"},{"lineNumber":348,"author":{"gitId":"-"},"content":"2. System searches for the student.","lastModifiedDate":"2024-04-05"},{"lineNumber":349,"author":{"gitId":"-"},"content":"3. If the student is found:","lastModifiedDate":"2024-04-05"},{"lineNumber":350,"author":{"gitId":"-"},"content":" 1. System displays the student\u0027s information.","lastModifiedDate":"2024-04-05"},{"lineNumber":351,"author":{"gitId":"-"},"content":"4. If the student is not found:","lastModifiedDate":"2024-04-05"},{"lineNumber":352,"author":{"gitId":"-"},"content":" 1. System displays a message indicating that the student was not found.","lastModifiedDate":"2024-04-05"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":354,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":356,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-04-05"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":358,"author":{"gitId":"-"},"content":"* 3a. The student is not found.","lastModifiedDate":"2024-04-05"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * 3a1. System displays a message indicating that the student was not found.","lastModifiedDate":"2024-04-05"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * 3a2. Use case resumes at step 4.","lastModifiedDate":"2024-04-05"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":362,"author":{"gitId":"-"},"content":"* 1a. The given syntax is incorrect.","lastModifiedDate":"2024-04-05"},{"lineNumber":363,"author":{"gitId":"-"},"content":" * 1a1. System shows an error message.","lastModifiedDate":"2024-04-05"},{"lineNumber":364,"author":{"gitId":"-"},"content":" * 1a2. Use case resumes at step 1.","lastModifiedDate":"2024-04-05"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":366,"author":{"gitId":"-"},"content":"### **Use case: UC03 Edit student information**","lastModifiedDate":"2024-04-05"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":368,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-04-05"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":370,"author":{"gitId":"-"},"content":"1. User enters the command to edit a specific student\u0027s information, specifying the index of the student and the desired fields to edit (name, phone number, email, address, or lessons).","lastModifiedDate":"2024-04-05"},{"lineNumber":371,"author":{"gitId":"-"},"content":"2. System verifies the validity of the index and the specified fields.","lastModifiedDate":"2024-04-05"},{"lineNumber":372,"author":{"gitId":"-"},"content":"3. If the specified student exists and the fields to edit are valid:","lastModifiedDate":"2024-04-05"},{"lineNumber":373,"author":{"gitId":"-"},"content":" 1. System prompts user to enter the new information for each specified field.","lastModifiedDate":"2024-04-05"},{"lineNumber":374,"author":{"gitId":"-"},"content":" 2. User enters the new information for each specified field.","lastModifiedDate":"2024-04-05"},{"lineNumber":375,"author":{"gitId":"-"},"content":" 3. System updates the student\u0027s information with the new data.","lastModifiedDate":"2024-04-05"},{"lineNumber":376,"author":{"gitId":"-"},"content":"4. If the specified student does not exist or the specified fields are invalid:","lastModifiedDate":"2024-04-05"},{"lineNumber":377,"author":{"gitId":"-"},"content":" 1. System displays an error message indicating the issue.","lastModifiedDate":"2024-04-05"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-04-05"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The specified student index is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":384,"author":{"gitId":"-"},"content":" * 2a1. System displays an error message indicating that the index is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":385,"author":{"gitId":"-"},"content":" * 2a2. Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":387,"author":{"gitId":"-"},"content":"* 3a. The specified student does not exist or the specified fields are invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":388,"author":{"gitId":"-"},"content":" * 3a1. System displays an error message indicating that the specified student does not exist or the specified fields are invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":389,"author":{"gitId":"-"},"content":" * 3a2. Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":391,"author":{"gitId":"-"},"content":"* 4a. User cancels the editing process.","lastModifiedDate":"2024-04-05"},{"lineNumber":392,"author":{"gitId":"-"},"content":" * 4a1. System cancels the editing process and returns to the main menu.","lastModifiedDate":"2024-04-05"},{"lineNumber":393,"author":{"gitId":"-"},"content":" * 4a2. Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":395,"author":{"gitId":"-"},"content":"### **Use case: UC04 Schedule lesson for a student**","lastModifiedDate":"2024-04-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":397,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-04-05"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":399,"author":{"gitId":"-"},"content":"1. User enters the command to schedule a lesson for a specific student, specifying the index of the student and the lesson to schedule.","lastModifiedDate":"2024-04-05"},{"lineNumber":400,"author":{"gitId":"-"},"content":"2. System verifies the validity of the index and the specified lesson.","lastModifiedDate":"2024-04-05"},{"lineNumber":401,"author":{"gitId":"-"},"content":"3. If the specified student exists and the lesson to schedule is valid:","lastModifiedDate":"2024-04-05"},{"lineNumber":402,"author":{"gitId":"-"},"content":" 1. System schedules the lesson for the student.","lastModifiedDate":"2024-04-05"},{"lineNumber":403,"author":{"gitId":"-"},"content":"4. If the specified student does not exist or the specified lesson is invalid:","lastModifiedDate":"2024-04-05"},{"lineNumber":404,"author":{"gitId":"-"},"content":" 1. System displays an error message indicating the issue.","lastModifiedDate":"2024-04-05"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":406,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":408,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-04-05"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":410,"author":{"gitId":"-"},"content":"* 2a. The specified student index is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":411,"author":{"gitId":"-"},"content":" * 2a1. System displays an error message indicating that the index is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":412,"author":{"gitId":"-"},"content":" * 2a2. Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":414,"author":{"gitId":"-"},"content":"* 3a. The specified student does not exist or the specified lesson is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":415,"author":{"gitId":"-"},"content":" * 3a1. System displays an error message indicating that the specified student does not exist or the specified lesson is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":416,"author":{"gitId":"-"},"content":" * 3a2. Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":418,"author":{"gitId":"-"},"content":"* 4a. User cancels the scheduling process by deleting the command.","lastModifiedDate":"2024-04-05"},{"lineNumber":419,"author":{"gitId":"-"},"content":" * 4a1. Scheduling process is not done in the System.","lastModifiedDate":"2024-04-05"},{"lineNumber":420,"author":{"gitId":"-"},"content":" * 4a2. Use case ends.","lastModifiedDate":"2024-04-05"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"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":426,"author":{"gitId":"leepoeaik"},"content":"2. Should be able to hold up to 1000 students without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-20"},{"lineNumber":427,"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":428,"author":{"gitId":"leepoeaik"},"content":"4. Should be able to hold up to 100 lessons per students without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-20"},{"lineNumber":429,"author":{"gitId":"leepoeaik"},"content":"5. Documentation should cover at least 90% of system functionality and architecture.","lastModifiedDate":"2024-03-20"},{"lineNumber":430,"author":{"gitId":"-"},"content":"6. The system should be able to support a minimum of 100 concurrent users without performance degradation.","lastModifiedDate":"2024-04-05"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":436,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"Chiarena"},"content":"* **Freelance Tutor**: A tutor that teaches privately, such as a student that teaches on the side","lastModifiedDate":"2024-03-21"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":447,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"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/box\u003e","lastModifiedDate":"2023-09-12"},{"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":{"justinlengch":29,"Chiarena":1,"HusseinSafwan02":11,"leepoeaik":3,"-":448}},{"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":"leepoeaik"},"content":"# TutorTrack User Guide ","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Chiarena"},"content":"TutorTrack is a **desktop app for tutors to manage their students and scheduled classes, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TutorTrack can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"Chiarena"},"content":"### What is in this user guide","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"Chiarena"},"content":"- Quick start","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"Chiarena"},"content":"- Features","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"Chiarena"},"content":" - Help : Viewing help","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"Chiarena"},"content":" - Add : Adding a student","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"Chiarena"},"content":" - List : Listing all students","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"Chiarena"},"content":" - Edit : Editing a student","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"Chiarena"},"content":" - Find : Finding a student","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" - Schedule: Scheduling a lesson","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" - Mark: Marking a lesson as done","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" - Remark: Add remark to a student","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"Chiarena"},"content":" - Delete : Deleting a student","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" - Schedule : Adding a lesson schedule to a student","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" - Mark : Mark a lesson as complete","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"Chiarena"},"content":" - Clear : Clearing all entries ","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"Chiarena"},"content":" - Exit : Exiting the program","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"Chiarena"},"content":" - Saving data","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"Chiarena"},"content":" - Editing the data file","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"Chiarena"},"content":" - Archiving data files ","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"Chiarena"},"content":"- FAQs","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"Chiarena"},"content":"- Known issues","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"Chiarena"},"content":"- Command summary","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Chiarena"},"content":"### How to use this guide ","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"Chiarena"},"content":"**Navigation** : Use the table of contents to find the section you are looking for. \u003c/br\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"Chiarena"},"content":"**Features** : Each feature and what they do are listed with their commands for you to understand what our app can do. \u003c/br\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"Chiarena"},"content":"**Examples** : Under each feature, examples of commands and ui are given for you to better understand how the app should work.\u003c/br\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"Chiarena"},"content":"**Getting started** : For first time users, refer to the \"Quick start\" segment to start up the app for the first time ","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":"1. Download the latest `TutorTrack.jar` from [here](https://github.com/AY2324S2-CS2103T-T16-4/tp/releases).","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your TutorTrack.","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar TutorTrack.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 s/Maths` : Adds a student named `John Doe` to the Address Book.","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" * `delete 3` : Deletes the 3rd student shown in the current list.","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"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":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" e.g `n/NAME [l/LESSON]` can be used as `n/John Doe l/Physics|2024-05-01|09:00` or as `n/John Doe`.","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" e.g. `[l/LESSON]…​` can be used as ` ` (i.e. 0 times), `l/Physics|2024-05-01|09:00`, `l/Maths|2024-05-03|10:30 l/Biology|2024-05-05|11:00` etc.","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"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":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"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":96,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":98,"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":99,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"justinlengch"},"content":"Adds a student to the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SUBJECT [l/LESSON]…​`","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":118,"author":{"gitId":"justinlengch"},"content":"**Tip:** A student can have any number of lessons (including 0)","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"justinlengch"},"content":"* `add n/John Poe p/84920491 e/poe@yuh.com a/RVRC s/Physics`","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"justinlengch"},"content":"![addStudentExample.png](addStudentExample.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"justinlengch"},"content":"### Listing all students : `list`","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"justinlengch"},"content":"Shows a list of all students in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Format: `list`","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":"justinlengch"},"content":"### Editing a student : `edit`","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"justinlengch"},"content":"Edits an existing student in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"justinlengch"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [s/SUBJECT]…​`","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":"* Edits the student at the specified `INDEX`. The index refers to the index number shown in the displayed student list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"justinlengch"},"content":"* When editing lessons, the existing lessons of the student will be removed i.e adding of lessons is not cumulative.","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"justinlengch"},"content":"* You can remove all the person’s lessons by typing `l/` without","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" specifying any lessons after it.","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":"* `edit 1 a/Yale-nus l/` Edits the address of the first person to be `Yale-nus` and clears all existing lessons.","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"justinlengch"},"content":"![editStudentExample.png](editStudentExample.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"justinlengch"},"content":"### Locating students by name: `find`","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"justinlengch"},"content":"* Students matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"justinlengch"},"content":"* `find poe` returns `Poe` `John Poe` \u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"justinlengch"},"content":"![findCommandExample.png](findCommandExample.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"Chiarena"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"Chiarena"},"content":"* `list` followed by `delete 2` deletes the 2nd student in TutorTrack.","lastModifiedDate":"2024-03-27"},{"lineNumber":179,"author":{"gitId":"Chiarena"},"content":"* `find Jessica Jane` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-03-27"},{"lineNumber":180,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"leepoeaik"},"content":"### Add a lessson schedule : `schedule`","lastModifiedDate":"2024-04-05"},{"lineNumber":182,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"leepoeaik"},"content":"Adds a lesson to a specific student.","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":185,"author":{"gitId":"leepoeaik"},"content":"Format : `schedule INDEX l/LESSON`","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"leepoeaik"},"content":"* Adds a lesson to the specified `INDEX`.","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"leepoeaik"},"content":"* `INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"leepoeaik"},"content":"* `INDEX` refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"leepoeaik"},"content":"* `LESSON` must be in the format of `dd-mm-yyyy|hh:mm` ","lastModifiedDate":"2024-04-05"},{"lineNumber":191,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":192,"author":{"gitId":"leepoeaik"},"content":"Examples:","lastModifiedDate":"2024-04-05"},{"lineNumber":193,"author":{"gitId":"leepoeaik"},"content":"* `schedule 1 l/09-09-2024|10:00` would add a new lesson at 09-09-2024, 10:00 to the first person on the student list.","lastModifiedDate":"2024-04-05"},{"lineNumber":194,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":195,"author":{"gitId":"leepoeaik"},"content":"\u003cimg width\u003d\"1552\" alt\u003d\"image\" src\u003d\"https://github.com/AY2324S2-CS2103T-T16-4/tp/assets/99176866/09b27706-101d-4d7c-b480-4c482c752e31\"\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":196,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":197,"author":{"gitId":"leepoeaik"},"content":"### Mark a lessson schedule : `schedule`","lastModifiedDate":"2024-04-05"},{"lineNumber":198,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":199,"author":{"gitId":"leepoeaik"},"content":"Mark a lesson as complete to a specific student and removing it from displaying.","lastModifiedDate":"2024-04-05"},{"lineNumber":200,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":201,"author":{"gitId":"leepoeaik"},"content":"Format : `mark INDEX l/LESSON`","lastModifiedDate":"2024-04-05"},{"lineNumber":202,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":203,"author":{"gitId":"leepoeaik"},"content":"* Adds a lesson to the specified `INDEX`.","lastModifiedDate":"2024-04-05"},{"lineNumber":204,"author":{"gitId":"leepoeaik"},"content":"* `INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-04-05"},{"lineNumber":205,"author":{"gitId":"leepoeaik"},"content":"* `INDEX` refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-05"},{"lineNumber":206,"author":{"gitId":"leepoeaik"},"content":"* `LESSON` must be in the format of `dd-mm-yyyy|hh:mm` ","lastModifiedDate":"2024-04-05"},{"lineNumber":207,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":208,"author":{"gitId":"leepoeaik"},"content":"Examples:","lastModifiedDate":"2024-04-05"},{"lineNumber":209,"author":{"gitId":"justinlengch"},"content":"* `mark 1 l/09-09-2024|10:00` would mark a lesson at 09-09-2024, 10:00 as completed to the first person on the student list.","lastModifiedDate":"2024-04-05"},{"lineNumber":210,"author":{"gitId":"justinlengch"},"content":"* Completed lessons will not show up in the list of lessons for the student.","lastModifiedDate":"2024-04-05"},{"lineNumber":211,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":212,"author":{"gitId":"leepoeaik"},"content":"\u003cimg width\u003d\"1552\" alt\u003d\"image\" src\u003d\"https://github.com/AY2324S2-CS2103T-T16-4/tp/assets/99176866/52f1981d-1e73-4aaf-95fb-ba6e8c2db054\"\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"justinlengch"},"content":"### Add remark to a student : `remark`","lastModifiedDate":"2024-04-05"},{"lineNumber":215,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":216,"author":{"gitId":"justinlengch"},"content":"Format : `remark INDEX r/REMARK`","lastModifiedDate":"2024-04-05"},{"lineNumber":217,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":218,"author":{"gitId":"justinlengch"},"content":"* Adds a remark to a student by specifying the `INDEX`.","lastModifiedDate":"2024-04-05"},{"lineNumber":219,"author":{"gitId":"justinlengch"},"content":"* `INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-04-05"},{"lineNumber":220,"author":{"gitId":"justinlengch"},"content":"* `INDEX` refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-04-05"},{"lineNumber":221,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":222,"author":{"gitId":"justinlengch"},"content":"Examples:","lastModifiedDate":"2024-04-05"},{"lineNumber":223,"author":{"gitId":"justinlengch"},"content":"* `remark 1 r/Student is very hardworking` would add a remark to the first student on the student list.","lastModifiedDate":"2024-04-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"Chiarena"},"content":"Clears all entries from TutorTrack.","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"Chiarena"},"content":"TutorTrack data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":243,"author":{"gitId":"Chiarena"},"content":"TutorTrack data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":247,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":248,"author":{"gitId":"justinlengch"},"content":"If your changes to the data file makes its format invalid, TutorTrack 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-04-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook 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":"2023-09-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"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":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":267,"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":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-05"},{"lineNumber":276,"author":{"gitId":"leepoeaik"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SUBJECT [l/LESSON]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 s/Maths l/Maths|2024-05-03|10:30`","lastModifiedDate":"2024-03-26"},{"lineNumber":277,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"leepoeaik"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [l/LESSONS]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-03-26"},{"lineNumber":280,"author":{"gitId":"-"},"content":"**Fee Status**| `feestatus INDEX f/FEESTATUS`","lastModifiedDate":"2024-04-05"},{"lineNumber":281,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"**Remark**| `remark INDEX r/REMARK` \u003cbr\u003e e.g., `remark 1 r/Needs extra practice`","lastModifiedDate":"2024-04-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"**Schedule**| `schedule INDEX l/LESSON` \u003cbr\u003e e.g., `schedule 1 l/Maths|2024-05-03|10:30`","lastModifiedDate":"2024-04-05"},{"lineNumber":284,"author":{"gitId":"leepoeaik"},"content":"**Mark** | `mark INDEX l/LESSON`","lastModifiedDate":"2024-04-05"},{"lineNumber":285,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"justinlengch":38,"Chiarena":34,"leepoeaik":44,"-":171}},{"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":"justinlengch"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eTutorTrack\u003c/a\u003e","lastModifiedDate":"2024-03-07"},{"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":{"justinlengch":1,"-":66}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"AddressBook *-right-\u003e \"1\" UniqueLessonList","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"UniqueLessonList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"UniqueLessonList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"UniqueLessonList -right-\u003e \"*\" Lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"Person -up-\u003e \"*\" Lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"Person *--\u003e Subject","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"justinlengch":6,"-":16}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"Class Subject","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"Class Lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"Person *--\u003e Subject","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":"Person *--\u003e \"*\" Lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"leepoeaik":4,"-":52}},{"path":"docs/index.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: \"\"","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":"justinlengch"},"content":"# TutorTrack Level-1","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-T16-4/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103T-T16-4/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-T16-4/tp/graph/badge.svg?token\u003dUeiVma0R4b)](https://codecov.io/gh/AY2324S2-CS2103T-T16-4/tp)","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"HusseinSafwan02"},"content":"**TutorTrack is a desktop application for managing students\u0027 details for private tutors.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"HusseinSafwan02"},"content":"* If you are interested in using TutorTrack, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"HusseinSafwan02"},"content":"* If you are interested about developing TutorTrack, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"justinlengch":3,"HusseinSafwan02":3,"-":15}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"leepoeaik"},"content":"Create a new `Remark` in `seedu.address.model.student`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"leepoeaik"},"content":"Simply add the following to [`seedu.address.ui.StudentCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-22"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"leepoeaik":2,"-":400}},{"path":"docs/tutorials/RemovingFields.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: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"# Tutorial: Removing Fields","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"success\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.student.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"leepoeaik":1,"-":114}},{"path":"src/main/java/seedu/address/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2019-02-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Builds a string representation of an object that is suitable as the return value of {@link Object#toString()}.","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" return stringBuilder + OBJECT_SUFFIX;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"justinlengch":1,"-":52}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" /** Returns an unmodifiable view of the filtered list of students */","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cStudent\u003e getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"leepoeaik":3,"-":46}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getFilteredStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" return model.getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"leepoeaik":3,"-":85}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX \u003d \"The student index provided is invalid\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_STUDENTS_LISTED_OVERVIEW \u003d \"%1$d students listed!\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_DUPLICATE_LESSON \u003d \"This lesson already exists in the student\u0027s lesson list\";","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_INVALID_LESSON \u003d \"The lesson does not exist for the specified student\";","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" * Formats the {@code student} for display to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" public static String format(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" builder.append(student.getName())","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" .append(student.getPhone())","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" .append(student.getEmail())","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" .append(student.getAddress())","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" .append(\"; Subject: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" .append((student.getSubject()))","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" .append(\"; Lessons: \");","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" student.getLessons().forEach(builder::append);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justinlengch":4,"leepoeaik":11,"-":40}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to the address book. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" + PREFIX_SUBJECT + \"SUBJECT \\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" + PREFIX_SUBJECT + \"Maths \"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" + PREFIX_LESSON + \"Maths|01-03-2023|10:00\";","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New student added: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"This student already exists in the address book\";","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" private final Student toAdd;","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" * Creates an AddCommand to add the specified {@code Student}","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" public AddCommand(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" toAdd \u003d student;","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" if (model.hasStudent(toAdd)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" model.addStudent(toAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justinlengch":4,"leepoeaik":14,"-":67}},{"path":"src/main/java/seedu/address/logic/commands/AddLessonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" * Adds a lesson to the student identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"public class AddLessonCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" + \": Adds a lesson to the student identified \"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" + \"l/ [LESSON]\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" + \"l/ 20-02-2002|10:00\";","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_ADD_LESSON_SUCCESS \u003d \"Scheduled lesson to student: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" private final Index index;","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" private final LocalDate date;","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private final LocalTime time;","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" private Integer isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" /***","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" * Creates a AddLessonCommand to add the lesson to the specified {@code Person},","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" * without the isCompleted field.","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" public AddLessonCommand(Index index, LocalDate date, LocalTime time) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" requireAllNonNull(index, date, time);","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" this.date \u003d date;","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" this.time \u003d time;","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" /***","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" * Creates a AddLessonCommand to add the lesson to the specified {@code Person},","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" * with the isCompleted field.","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" public AddLessonCommand(Index index, LocalDate date, LocalTime time, int isCompleted) {","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" this(index, date, time);","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d new ArrayList\u003c\u003e(studentToEdit.getLessons());","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" String studentToEditSubject \u003d studentToEdit.getSubject().value;","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" // Separate lesson constructors if isCompleted parameter is provided from user input.","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" Lesson newLesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" if (isCompleted !\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" newLesson \u003d new Lesson(studentToEditSubject, this.date, this.time, this.isCompleted);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" newLesson \u003d new Lesson(studentToEditSubject, this.date, this.time);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" // Check if the lesson already exists in the student\u0027s lesson list.","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" if (lessonList.contains(newLesson)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_LESSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" // Add the lesson to the student\u0027s lesson list.","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" lessonList.add(newLesson);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" Student editedStudent \u003d new Student(studentToEdit.getName(), studentToEdit.getPhone(), studentToEdit.getEmail(),","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" studentToEdit.getAddress(), studentToEdit.getSubject(),","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" studentToEdit.getRemark(), studentToEdit.getFeeStatus(), lessonList);","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" model.setStudent(studentToEdit, editedStudent);","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" return new CommandResult(generateSuccessMessage(editedStudent));","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" private String generateSuccessMessage(Student editedStudent) {","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" return String.format(MESSAGE_ADD_LESSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"justinlengch":91,"-":1}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" * Deletes a student identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" + \": Deletes the student identified by the index number used in the displayed student list.\\n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DELETE_STUDENT_SUCCESS \u003d \"Deleted Student: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" Student studentToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" model.deleteStudent(studentToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_STUDENT_SUCCESS, Messages.format(studentToDelete)));","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":9,"-":60}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" * Edits the details of an existing student in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" + \"by the index number used in the displayed student list. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" + \"[\" + PREFIX_SUBJECT + \"SUBJECT] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" + \"[\" + PREFIX_LESSON + \"LESSON]...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_EDIT_STUDENT_SUCCESS \u003d \"Edited Student: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"This student already exists in the address book.\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" private final EditStudentDescriptor editStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" * @param index of the student in the filtered student list to edit","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" * @param editStudentDescriptor details to edit the student with","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" public EditCommand(Index index, EditStudentDescriptor editStudentDescriptor) {","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" this.editStudentDescriptor \u003d new EditStudentDescriptor(editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d createEditedStudent(studentToEdit, editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" if (!studentToEdit.isSameStudent(editedStudent) \u0026\u0026 model.hasStudent(editedStudent)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" model.setStudent(studentToEdit, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_STUDENT_SUCCESS, Messages.format(editedStudent)));","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" * Creates and returns a {@code Student} with the details of {@code studentToEdit}","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" * edited with {@code editStudentDescriptor}.","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" private static Student createEditedStudent(Student studentToEdit, EditStudentDescriptor editStudentDescriptor) {","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" assert studentToEdit !\u003d null;","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"leepoeaik"},"content":" Name updatedName \u003d editStudentDescriptor.getName().orElse(studentToEdit.getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" Phone updatedPhone \u003d editStudentDescriptor.getPhone().orElse(studentToEdit.getPhone());","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" Email updatedEmail \u003d editStudentDescriptor.getEmail().orElse(studentToEdit.getEmail());","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" Address updatedAddress \u003d editStudentDescriptor.getAddress().orElse(studentToEdit.getAddress());","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e updatedLessons \u003d editStudentDescriptor.getLessons().orElse(studentToEdit.getLessons());","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" Remark updatedRemark \u003d studentToEdit.getRemark();","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" FeeStatus updatedFeeStatus \u003d studentToEdit.getFeeStatus();","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" Subject updatedSubject \u003d editStudentDescriptor.getSubject().orElse(studentToEdit.getSubject());","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" return new Student(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updatedSubject, updatedRemark, updatedFeeStatus, updatedLessons);","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 editStudentDescriptor.equals(otherEditCommand.editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" .add(\"editStudentDescriptor\", editStudentDescriptor)","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":" * Stores the details to edit the student with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":" * corresponding field value of the student.","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" public static class EditStudentDescriptor {","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":" private List\u003cLesson\u003e lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"justinlengch"},"content":" private Subject subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"justinlengch"},"content":" private Remark remark;","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptor() {}","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":153,"author":{"gitId":"justinlengch"},"content":" * A defensive copy of {@code lessons} is used internally.","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":155,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptor(EditStudentDescriptor toCopy) {","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":160,"author":{"gitId":"justinlengch"},"content":" setLessons(toCopy.lessons);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"justinlengch"},"content":" setSubject(toCopy.subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"justinlengch"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"justinlengch"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"justinlengch"},"content":" public Optional\u003cObject\u003e getRemark() {","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"justinlengch"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"justinlengch"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, subject, lessons, remark);","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"justinlengch"},"content":" * Sets {@code lessons} to this object\u0027s {@code lessons}.","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"justinlengch"},"content":" * A defensive copy of {@code lessons} is used internally.","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"justinlengch"},"content":" public void setLessons(List\u003cLesson\u003e lessons) {","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"justinlengch"},"content":" this.lessons \u003d lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":221,"author":{"gitId":"justinlengch"},"content":" * Returns an modifiable lesson list,","lastModifiedDate":"2024-04-03"},{"lineNumber":222,"author":{"gitId":"justinlengch"},"content":" * Returns {@code Optional#empty()} if {@code lessons} is null.","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"justinlengch"},"content":" public Optional\u003cList\u003cLesson\u003e\u003e getLessons() {","lastModifiedDate":"2024-04-03"},{"lineNumber":225,"author":{"gitId":"justinlengch"},"content":" return Optional.ofNullable(lessons);","lastModifiedDate":"2024-04-03"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"justinlengch"},"content":" public void setSubject(Subject subject) {","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"justinlengch"},"content":" public Optional\u003cSubject\u003e getSubject() {","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"justinlengch"},"content":" return Optional.ofNullable(subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"leepoeaik"},"content":" if (!(other instanceof EditStudentDescriptor)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor otherEditStudentDescriptor \u003d (EditStudentDescriptor) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":248,"author":{"gitId":"leepoeaik"},"content":" return Objects.equals(name, otherEditStudentDescriptor.name)","lastModifiedDate":"2024-03-22"},{"lineNumber":249,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(phone, otherEditStudentDescriptor.phone)","lastModifiedDate":"2024-03-22"},{"lineNumber":250,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(email, otherEditStudentDescriptor.email)","lastModifiedDate":"2024-03-22"},{"lineNumber":251,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(address, otherEditStudentDescriptor.address)","lastModifiedDate":"2024-03-22"},{"lineNumber":252,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(lessons, otherEditStudentDescriptor.lessons)","lastModifiedDate":"2024-03-22"},{"lineNumber":253,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 Objects.equals(subject, otherEditStudentDescriptor.subject);","lastModifiedDate":"2024-03-22"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"justinlengch"},"content":" .add(\"subject\", subject)","lastModifiedDate":"2024-03-20"},{"lineNumber":264,"author":{"gitId":"justinlengch"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"justinlengch"},"content":" .add(\"lessons\", lessons)","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"justinlengch":38,"leepoeaik":57,"-":174}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" * Finds and lists all students in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all students whose names contain any of \"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" String.format(Messages.MESSAGE_STUDENTS_LISTED_OVERVIEW, model.getFilteredStudentList().size()));","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"leepoeaik":5,"-":53}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" * Lists all students in the address book to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all students\";","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":4,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/MarkLessonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" * Marks a lesson as done for a student.","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":"public class MarkLessonCommand extends Command {","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" + \": Marks a lesson as completed to the student identified \"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" + \"l/ [LESSON]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" + \"l/ 20-02-2002|10:00\";","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_MARK_LESSON_SUCCESS \u003d \"Mark lesson %1$s to student: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" private final Index index;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" private final LocalDate dateDetail;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" private final LocalTime timeDetail;","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" * Creates a MarkLessonDoneCommand to mark the specified {@code Lesson} as done.","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" public MarkLessonCommand(Index index, LocalDate dateDetail, LocalTime timeDetail) {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" this.dateDetail \u003d dateDetail;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" this.timeDetail \u003d timeDetail;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d new ArrayList\u003c\u003e(studentToEdit.getLessons());","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" String studentToEditSubject \u003d studentToEdit.getSubject().value;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" Lesson lessonToMarkDone \u003d new Lesson(studentToEditSubject, dateDetail, timeDetail);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" // Iterate through lessonList and check if lessonToMark is found in list.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" Boolean lessonFound \u003d false;","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" for (Lesson l : lessonList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" if (l.equals(lessonToMarkDone)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" l.setLessonComplete();","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" lessonFound \u003d true;","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" // throw exception if lesson is not found in list.","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" if (!lessonFound) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_LESSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" Student editedStudent \u003d new Student(studentToEdit.getName(), studentToEdit.getPhone(), studentToEdit.getEmail(),","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" studentToEdit.getAddress(), studentToEdit.getSubject(),","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" studentToEdit.getRemark(), studentToEdit.getFeeStatus(), lessonList);","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" model.setStudent(studentToEdit, editedStudent);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" return new CommandResult(String.format(MESSAGE_MARK_LESSON_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" lessonToMarkDone.getLessonValue(), Messages.format(editedStudent)));","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"justinlengch":78,"-":1}},{"path":"src/main/java/seedu/address/logic/commands/RemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" * Changes the remark of an existing student in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" + \": Edits the remark of the student identified \"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" + \"by the index number used in the last student listing. \"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Student: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Deleted remark from Student: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" private final Index index;","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" /***","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" * Creates a RemarkCommand to change the remark of the specified {@code Student}","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" public RemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new Student(studentToEdit.getName(), studentToEdit.getPhone(), studentToEdit.getEmail(),","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" studentToEdit.getAddress(), studentToEdit.getSubject(),","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" studentToEdit.getRemark(), studentToEdit.getFeeStatus(), studentToEdit.getLessons());","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" model.setStudent(studentToEdit, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" return new CommandResult(generateSuccessMessage(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-03-07"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-07"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2024-03-07"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-07"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-07"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-07"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-07"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" * {@code studentToEdit}.","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" private String generateSuccessMessage(Student studentToEdit) {","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-03-07"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" return String.format(message, studentToEdit);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"justinlengch":64,"leepoeaik":20,"-":1}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"leepoeaik":2,"-":17}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEESTATUS;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" PREFIX_ADDRESS, PREFIX_SUBJECT, PREFIX_REMARK, PREFIX_LESSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" PREFIX_SUBJECT)","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_SUBJECT);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" Subject subject \u003d ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" Remark remark \u003d new Remark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\")); // default value","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" FeeStatus feeStatus \u003d new FeeStatus(argMultimap.getValue(PREFIX_FEESTATUS).orElse(\"\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" List\u003cLesson\u003e lessonList \u003d ParserUtil.parseLessons((argMultimap.getAllValues(PREFIX_LESSON)));","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Student student \u003d new Student(name, phone, email, address, subject, remark, feeStatus, lessonList);","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" return new AddCommand(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"justinlengch":12,"leepoeaik":9,"-":50}},{"path":"src/main/java/seedu/address/logic/parser/AddLessonCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.TIME_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.AddLessonCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" * Parses input arguments and creates a new AddLessonCommand object","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"public class AddLessonCommandParser implements Parser\u003cAddLessonCommand\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" * Parses the given {@code String} of arguments in the context of the AddLessonCommand","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" * and returns an AddLessonCommand object for execution.","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" public AddLessonCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_LESSON);","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" Index index;","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" AddLessonCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" String lesson \u003d argMultimap.getValue(PREFIX_LESSON).orElse(\"\");","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" if (!isValidLesson(lesson)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" AddLessonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" // split lesson into its attributes based on \"|\" character","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" LocalDate dateDetail \u003d LocalDate.parse(lessonDetails[0], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" LocalTime timeDetail \u003d LocalTime.parse(lessonDetails[1], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" int isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length \u003d\u003d 3) {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" isCompleted \u003d Integer.parseInt(lessonDetails[2]);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" return new AddLessonCommand(index, dateDetail, timeDetail, isCompleted);","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" return new AddLessonCommand(index, dateDetail, timeDetail);","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" * Checks if the lesson is in the correct format.","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" * @param lesson the lesson to be checked","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" * @return true if the lesson is in the correct format, false otherwise","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" public static boolean isValidLesson(String lesson) {","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length !\u003d 2 \u0026\u0026 lessonDetails.length !\u003d 3) {","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" LocalDate.parse(lessonDetails[0], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" LocalTime.parse(lessonDetails[1], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length \u003d\u003d 3) {","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" int isCompleted \u003d Integer.parseInt(lessonDetails[2]);","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" if (isCompleted !\u003d 0 \u0026\u0026 isCompleted !\u003d 1) {","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" } catch (DateTimeParseException | NumberFormatException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"justinlengch":82}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.AddLessonCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FeeStatusCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.MarkLessonCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case FeeStatusCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new FeeStatusCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" case RemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-07"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" return new RemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-07"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" case AddLessonCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" return new AddLessonCommandParser().parse(arguments);","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"justinlengch"},"content":" case MarkLessonCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"justinlengch"},"content":" return new MarkLessonCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justinlengch":13,"-":90}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" public static final Prefix PREFIX_SUBJECT \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" public static final Prefix PREFIX_LESSON \u003d new Prefix(\"l/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_FEESTATUS \u003d new Prefix(\"f\");","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"justinlengch":3,"-":16}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" PREFIX_SUBJECT, PREFIX_LESSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_SUBJECT);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" if (argMultimap.getValue(PREFIX_SUBJECT).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" editStudentDescriptor.setSubject(ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get()));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" parseLessonsForEdit(argMultimap.getAllValues(PREFIX_LESSON)).ifPresent(editStudentDescriptor::setLessons);","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" if (!editStudentDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" return new EditCommand(index, editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" * Parses {@code Collection\u003cString\u003e lessons} into a {@code List\u003cLesson\u003e} if {@code lessons} is non-empty.","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" * If {@code lessons} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" * {@code List\u003cLesson\u003e} containing zero lessons.","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" private Optional\u003cList\u003cLesson\u003e\u003e parseLessonsForEdit(Collection\u003cString\u003e lessons) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" assert lessons !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" if (lessons.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" Collection\u003cString\u003e lessonList \u003d lessons.size() \u003d\u003d 1 \u0026\u0026 lessons.contains(\"\") ? Collections.emptyList() : lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" return Optional.of(ParserUtil.parseLessons(lessonList));","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"justinlengch":17,"leepoeaik":11,"-":63}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"leepoeaik":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/MarkLessonCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.AddLessonCommandParser.isValidLesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.TIME_FORMATTER;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.MarkLessonCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" * Parses input arguments and creates a new MarkLessonCommand object","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"public class MarkLessonCommandParser implements Parser\u003cMarkLessonCommand\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" * Parses the given {@code String} of arguments in the context of the MarkLessonCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" * and returns an MarkLessonCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" public MarkLessonCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_LESSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" Index index;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" MarkLessonCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" String lesson \u003d argMultimap.getValue(PREFIX_LESSON).orElse(\"\");","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" if (!isValidLesson(lesson)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" MarkLessonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" // split lesson into its attributes based on \"|\" character","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" LocalDate dateDetail \u003d LocalDate.parse(lessonDetails[0], DATE_FORMATTER);","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" LocalTime timeDetail \u003d LocalTime.parse(lessonDetails[1], TIME_FORMATTER);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" return new MarkLessonCommand(index, dateDetail, timeDetail);","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"justinlengch":54}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.TIME_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.isValidLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.storage.JsonAdaptedLesson.isValidJsonLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"justinlengch"},"content":" * Parses a {@code String subject} into an {@code Subject}.","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"justinlengch"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the given {@code subject} is invalid.","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"justinlengch"},"content":" public static Subject parseSubject(String subject) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"justinlengch"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"justinlengch"},"content":" String trimmedSubject \u003d subject.trim();","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"justinlengch"},"content":" if (!Subject.isValidSubject(trimmedSubject)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(Subject.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":114,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"justinlengch"},"content":" return new Subject(trimmedSubject);","lastModifiedDate":"2024-04-03"},{"lineNumber":116,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"justinlengch"},"content":" * Parses a {@code String lesson} into a {@code Lesson}.","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the given {@code lesson} is invalid.","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"justinlengch"},"content":" public static Lesson parseLesson(String lesson) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"justinlengch"},"content":" requireNonNull(lesson);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"justinlengch"},"content":" if (!isValidLesson(lesson) \u0026\u0026 !isValidJsonLesson(lesson)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(Lesson.MESSAGE_CONSTRAINTS_1);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"justinlengch"},"content":" // split lesson into its attributes based on \"|\" character","lastModifiedDate":"2024-04-03"},{"lineNumber":130,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"justinlengch"},"content":" String subjectDetail \u003d lessonDetails[0];","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"justinlengch"},"content":" LocalDate dateDetail \u003d LocalDate.parse(lessonDetails[1], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"justinlengch"},"content":" LocalTime timeDetail \u003d LocalTime.parse(lessonDetails[2], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"justinlengch"},"content":" int isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length \u003d\u003d 4) {","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"justinlengch"},"content":" isCompleted \u003d Integer.parseInt(lessonDetails[3]);","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"justinlengch"},"content":" return new Lesson(subjectDetail, dateDetail, timeDetail, isCompleted);","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"justinlengch"},"content":" return new Lesson(subjectDetail, dateDetail, timeDetail);","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"justinlengch"},"content":" * Parses a {@code Collection\u003cString\u003e lessonList} into a {@code List\u003cLesson\u003e}.","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the given {@code lessonSet} is invalid.","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"justinlengch"},"content":" public static List\u003cLesson\u003e parseLessons(Collection\u003cString\u003e lessons) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"justinlengch"},"content":" requireNonNull(lessons);","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"justinlengch"},"content":" for (String lesson : lessons) {","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"justinlengch"},"content":" lessonList.add(parseLesson(lesson));","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"justinlengch"},"content":" return lessonList;","lastModifiedDate":"2024-04-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"justinlengch":48,"leepoeaik":6,"-":102}},{"path":"src/main/java/seedu/address/logic/parser/RemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.commands.RemarkCommand;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" * Parses input arguments and creates a new RemarkCommand object","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"public class RemarkCommandParser implements Parser\u003cRemarkCommand\u003e {","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" * Parses the given {@code String} of arguments in the context of the RemarkCommand","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" * and returns a RemarkCommand object for execution.","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_REMARK);","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" Index index;","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" return new RemarkCommand(index, new Remark(remark));","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"justinlengch":39,"leepoeaik":1}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.UniqueStudentList;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":" * Duplicates are not allowed (by .isSameStudent comparison)","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" private final UniqueStudentList students;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" students \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" * Creates an AddressBook using the Students in the {@code toBeCopied}","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" * Replaces the contents of the student list with {@code students}.","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" public void setStudents(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" this.students.setStudents(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" setStudents(newData.getStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" //// student-level operations","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" return students.contains(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" * The student must not already exist in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" public void addStudent(Student p) {","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" students.add(p);","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" * book.","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" students.setStudent(target, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" public void removeStudent(Student key) {","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" students.remove(key);","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" return students.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" return students.equals(otherAddressBook.students);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" return students.hashCode();","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":33,"-":98}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" Predicate\u003cStudent\u003e PREDICATE_SHOW_ALL_STUDENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" boolean hasStudent(Student student);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" * Deletes the given student.","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" * The student must exist in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" void deleteStudent(Student target);","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" * Adds the given student.","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" * {@code student} must not already exist in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" void addStudent(Student student);","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" * Replaces the given student {@code target} with {@code editedStudent}.","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" * book.","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" void setStudent(Student target, Student editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" /** Returns an unmodifiable view of the filtered student list */","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cStudent\u003e getFilteredStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" * Updates the filter of the filtered student list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" void updateFilteredStudentList(Predicate\u003cStudent\u003e predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"leepoeaik":18,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" private final FilteredList\u003cStudent\u003e filteredStudents;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" filteredStudents \u003d new FilteredList\u003c\u003e(this.addressBook.getStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" return addressBook.hasStudent(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" public void deleteStudent(Student target) {","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" addressBook.removeStudent(target);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" public void addStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":" addressBook.setStudent(target, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Student List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" * Returns an unmodifiable view of the list of {@code Student} backed by the internal list of","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getFilteredStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"justinlengch"},"content":" return FXCollections.unmodifiableObservableList(filteredStudents);","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" public void updateFilteredStudentList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" filteredStudents.setPredicate(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 filteredStudents.equals(otherModelManager.filteredStudents);","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"justinlengch":2,"leepoeaik":20,"-":127}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":" * Returns an unmodifiable view of the students list.","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":" * This list will not contain any duplicate students.","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cStudent\u003e getStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":4,"-":13}},{"path":"src/main/java/seedu/address/model/student/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":1,"-":64}},{"path":"src/main/java/seedu/address/model/student/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":1,"-":78}},{"path":"src/main/java/seedu/address/model/student/Lesson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":" * Represents a lesson in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"public class Lesson {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_CONSTRAINTS_1 \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" \"Lessons must be of the form subject|dd-MM-yyyy|hh:mm|0/1, where subject contains only alphabeths\"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" + \" and spaces, and indicate lesson incomplete/completed with 0 or 1 respectively.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_CONSTRAINTS_2 \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" \"Lessons must be of the form dd-MM-yyyy|hh:mm OR dd-MM-yyyy|hh:mm|0/1, where the last field of 0 or 1\"","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" + \" is optional, with 0 indicating lesson incomplete and 1 indicating lesson complete.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z][a-zA-Z ]*$\";","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public static final String DATE_REGEX \u003d \"\\\\d{2}-\\\\d{2}-\\\\d{4}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" public static final String TIME_REGEX \u003d \"\\\\d{2}:\\\\d{2}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" public static final DateTimeFormatter DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" public static final DateTimeFormatter TIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"HH:mm\");","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" private String value;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" private String jsonValue;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" private final Subject subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" private final LocalDate date;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" private final LocalTime time;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" private int isCompleted;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code Lesson} that is already parsed.","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" * @param subject A valid subject.","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" * @param date A valid date.","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" * @param time A valid time.","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" public Lesson(String subject, LocalDate date, LocalTime time) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" requireNonNull(date);","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" requireNonNull(time);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" checkArgument(subject.matches(VALIDATION_REGEX), MESSAGE_CONSTRAINTS_1);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" // assign the attributes to the lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d new Subject(subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" this.date \u003d LocalDate.parse(date.format(DATE_FORMATTER), DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" this.time \u003d time;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" this.isCompleted \u003d 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" // jSON readable form of lesson","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" this.jsonValue \u003d this.subject.value + \"|\" + this.date.format(DATE_FORMATTER) + \"|\"","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" + this.time.format(TIME_FORMATTER) + \"|\" + this.isCompleted;","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" // UI displayed form of lesson","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" this.value \u003d this.subject + \" \" + this.date + \" \" + this.time;","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code Lesson} that is already parsed, with the optional isCompleted field.","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" * @param subject A valid subject.","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" * @param date A valid date.","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" * @param time A valid time.","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" * @param isCompleted A valid isCompleted int field.","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" public Lesson(String subject, LocalDate date, LocalTime time, int isCompleted) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" this(subject, date, time);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" if (isCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" this.setLessonComplete();","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" this.setLessonIncomplete();","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" * Returns true if a given string is a valid lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" public static boolean isValidLesson(String lessonValue) {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d lessonValue.split(\"\\\\|\");","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length !\u003d 3) {","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" LocalDate.parse(lessonDetails[1], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":" LocalTime.parse(lessonDetails[2], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" return lessonDetails[0].matches(VALIDATION_REGEX)","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" \u0026\u0026 lessonDetails[1].matches(DATE_REGEX)","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" \u0026\u0026 lessonDetails[2].matches(TIME_REGEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"justinlengch"},"content":" * Gets the subject of the lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"justinlengch"},"content":" * @return The subject.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"justinlengch"},"content":" public Subject getSubject() {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"justinlengch"},"content":" return subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"justinlengch"},"content":" * Gets the date of the lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"justinlengch"},"content":" * @return The date.","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"justinlengch"},"content":" public LocalDate getDate() {","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"justinlengch"},"content":" return date;","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"justinlengch"},"content":" * Gets the time of the lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"justinlengch"},"content":" * @return The time.","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"justinlengch"},"content":" public LocalTime getTime() {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"justinlengch"},"content":" return time;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"justinlengch"},"content":" * Gets the status of the lesson.","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"justinlengch"},"content":" * @return The status.","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"justinlengch"},"content":" public int getLessonStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"justinlengch"},"content":" return isCompleted;","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"justinlengch"},"content":" public String getLessonValue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"justinlengch"},"content":" return value;","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"justinlengch"},"content":" public String getJsonValue() {","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"justinlengch"},"content":" return jsonValue;","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"justinlengch"},"content":" public void setLessonComplete() {","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":" this.isCompleted \u003d 1;","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"justinlengch"},"content":" public void setLessonIncomplete() {","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"justinlengch"},"content":" this.isCompleted \u003d 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"justinlengch"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"justinlengch"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"justinlengch"},"content":" if (!(other instanceof Lesson)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"justinlengch"},"content":" Lesson otherLesson \u003d (Lesson) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"justinlengch"},"content":" return value.equals(otherLesson.value);","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"justinlengch"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"justinlengch"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"justinlengch"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"justinlengch"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"justinlengch"},"content":" return this.subject + \" \" + this.date.toString() + \" \" + this.time + \" \";","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"justinlengch":170,"leepoeaik":1}},{"path":"src/main/java/seedu/address/model/student/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":1,"-":66}},{"path":"src/main/java/seedu/address/model/student/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":" * Tests that a {@code Student}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cStudent\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" public boolean test(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(student.getName().fullName, keyword));","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"leepoeaik":5,"-":39}},{"path":"src/main/java/seedu/address/model/student/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"leepoeaik":1,"-":60}},{"path":"src/main/java/seedu/address/model/student/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"public class Remark {","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Remarks can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":" public final String value;","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" * @param remark A valid remark.","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" value \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" public String toString() {","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" return value;","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"justinlengch":39,"leepoeaik":1}},{"path":"src/main/java/seedu/address/model/student/Student.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" * Represents a Student in the address book.","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"public class Student {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final FeeStatus feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" private List\u003cLesson\u003e lessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" private final Subject subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" * Student constructor with all fields.","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public Student(Name name, Phone phone, Email email, Address address, Subject subject,","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" Remark remark, FeeStatus feeStatus, List\u003cLesson\u003e lessons) {","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" requireAllNonNull(name, phone, email, address, subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" this.lessons.addAll(lessons);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.feeStatus \u003d feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" * Student constructor with default values for remark, fee status and lessons.","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" public Student(Name name, Phone phone, Email email, Address address, Subject subject) {","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" requireAllNonNull(name, phone, email, address, subject);","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" this.name \u003d name;","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" this.email \u003d email;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" this.address \u003d address;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" this.lessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" this.feeStatus \u003d new FeeStatus(\"\");","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d new Remark(\"\");","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public FeeStatus getFeeStatus() {","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" * Returns the ArrayList of lessons for the student, this list is mutable.","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" public List\u003cLesson\u003e getLessons() {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" return lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-07"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" return remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" public Subject getSubject() {","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" return subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" * Returns true if both Students have the same name.","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" * This defines a weaker notion of equality between two Students.","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" public boolean isSameStudent(Student otherStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" if (otherStudent \u003d\u003d this) {","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" return otherStudent !\u003d null","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 otherStudent.getName().equals(getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" * Returns true if both Students have the same identity and data fields.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" * This defines a stronger notion of equality between two Students.","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":" if (!(other instanceof Student)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" Student otherStudent \u003d (Student) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" return name.equals(otherStudent.name)","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 phone.equals(otherStudent.phone)","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 email.equals(otherStudent.email)","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 address.equals(otherStudent.address)","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 lessons.equals(otherStudent.lessons)","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" \u0026\u0026 subject.equals(otherStudent.subject);","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"justinlengch"},"content":" return Objects.hash(name, phone, email, address, subject, remark, lessons);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"justinlengch"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"justinlengch"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"justinlengch"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"justinlengch"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"justinlengch"},"content":" .add(\"subject\", subject)","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"justinlengch"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"fee status\", feeStatus)","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"justinlengch"},"content":" .add(\"lessons\", lessons)","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"justinlengch"},"content":" .toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justinlengch":46,"leepoeaik":21,"-":82}},{"path":"src/main/java/seedu/address/model/student/Subject.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":" * Represents a Person\u0027s subject in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSubject(String)}","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"public class Subject {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":" \"Subjects can only take alphanumeric values and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" public static final String VALIDATION_REGEX \u003d \"^[A-Z][a-zA-Z ]*$\";","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" public final String value;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code Subject}.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" * @param subject A valid subject.","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public Subject(String subject) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" requireNonNull(subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" checkArgument(isValidSubject(subject), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" value \u003d subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" * Returns true if a given string is a valid subject.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" public static boolean isValidSubject(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" return value;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" if (!(other instanceof Subject)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" Subject otherSubject \u003d (Subject) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" return value.equals(otherSubject.value);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"justinlengch":58,"leepoeaik":1}},{"path":"src/main/java/seedu/address/model/student/UniqueStudentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import java.util.List;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.DuplicateStudentException;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.StudentNotFoundException;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" * A list of students that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" * A student is considered unique by comparing using {@code Student#isSameStudent(Student)}. As such, adding and","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" * updating of students uses Student#isSameStudent(Student) for equality so as to ensure that the student being added","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" * or updated is unique in terms of identity in the UniqueStudentList. However, the removal of a student uses","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" * Student#equals(Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" * @see Student#isSameStudent(Student)","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":"public class UniqueStudentList implements Iterable\u003cStudent\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" private final ObservableList\u003cStudent\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" private final ObservableList\u003cStudent\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" public boolean contains(Student toCheck) {","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" return internalList.stream().anyMatch(toCheck::isSameStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" * Adds a student to the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" * The student must not already exist in the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" public void add(Student toAdd) {","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" throw new DuplicateStudentException();","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" throw new StudentNotFoundException();","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" if (!target.isSameStudent(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" throw new DuplicateStudentException();","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" public void remove(Student toRemove) {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" throw new StudentNotFoundException();","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" public void setStudents(UniqueStudentList replacement) {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" * Replaces the contents of this list with {@code students}.","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" public void setStudents(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" if (!studentsAreUnique(students)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" throw new DuplicateStudentException();","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" public Iterator\u003cStudent\u003e iterator() {","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"leepoeaik"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"leepoeaik"},"content":" if (!(other instanceof UniqueStudentList)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"leepoeaik"},"content":" return false;","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList otherUniqueStudentList \u003d (UniqueStudentList) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" return internalList.equals(otherUniqueStudentList.internalList);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" public String toString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":" * Returns true if {@code students} contains only unique students.","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"leepoeaik"},"content":" private boolean studentsAreUnique(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" for (int i \u003d 0; i \u003c students.size() - 1; i++) {","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" for (int j \u003d i + 1; j \u003c students.size(); j++) {","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" if (students.get(i).isSameStudent(students.get(j))) {","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"leepoeaik"},"content":" return false;","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"leepoeaik"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"leepoeaik":150}},{"path":"src/main/java/seedu/address/model/student/exceptions/DuplicateStudentException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"public class DuplicateStudentException extends RuntimeException {","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":" public DuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"leepoeaik":3,"-":8}},{"path":"src/main/java/seedu/address/model/student/exceptions/StudentNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":" * Signals that the operation is unable to find the specified student.","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"public class StudentNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"leepoeaik":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" public static Student[] getSampleStudents() {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" return new Student[] {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Subject(\"Math\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Subject(\"English\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Subject(\"Physics\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Student(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Subject(\"English\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Student(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Subject(\"Physics\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Subject(\"History\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new Subject(\"Chemistry\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" new Student(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new Subject(\"Biology\"))","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" for (Student sampleStudent : getSampleStudents()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" sampleAb.addStudent(sampleStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" * Returns a List containing the list of lesson strings given.","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" public static List\u003cLesson\u003e getLessonList(String... strings) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" for (String lessonString : strings) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" Lesson lesson \u003d ParserUtil.parseLesson(lessonString);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" if (lesson !\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" lessonList.add(lesson);","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" return lessonList;","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"justinlengch":15,"leepoeaik":18,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedLesson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.model.student.Lesson.TIME_FORMATTER;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" * Jackson-friendly version of {@link Lesson}.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"public class JsonAdaptedLesson {","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" private static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" \"Jackson-adapted Lessons must be of the form subject|dd-MM-yyyy|hh:mm|0/1, where subject contains only\"","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" + \" alphabets and spaces, and indicate lesson incomplete/completed with 0 or 1 respectively.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" private final String lesson;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" * Constructs a {@code JsonAdaptedLesson} with the given {@code lesson}.","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" @JsonCreator","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" public JsonAdaptedLesson(String lesson) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" this.lesson \u003d lesson;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" * Converts a given {@code Lesson} into this class for Jackson use.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" public JsonAdaptedLesson(Lesson source) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" lesson \u003d source.getJsonValue();","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" @JsonValue","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" public String getLessonName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" return lesson;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" * Converts this Jackson-friendly adapted lesson object into the model\u0027s {@code Lesson} object.","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted lesson.","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" public Lesson toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" if (!isValidJsonLesson(getLessonName())) {","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" throw new IllegalValueException(MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" return parseJsonLesson(getLessonName());","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" * Returns true if a given Jackson-friendly adapted lesson object is a valid lesson.","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" public static boolean isValidJsonLesson(String jsonLesson) {","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" requireNonNull(jsonLesson);","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d jsonLesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" if (lessonDetails.length !\u003d 4) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" if (!lessonDetails[0].matches(Lesson.VALIDATION_REGEX)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"justinlengch"},"content":" if (!lessonDetails[1].matches(Lesson.DATE_REGEX)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"justinlengch"},"content":" if (!lessonDetails[2].matches(Lesson.TIME_REGEX)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"justinlengch"},"content":" if (!lessonDetails[3].matches(\"0|1\")) {","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":" * Parses a Jackson-friendly adapted lesson into a model {@code Lesson} object.","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" public static Lesson parseJsonLesson(String jsonLesson) {","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" requireNonNull(jsonLesson);","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" assert isValidJsonLesson(jsonLesson);","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" String[] lessonDetails \u003d jsonLesson.trim().split(\"\\\\|\");","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":" String subjectDetail \u003d lessonDetails[0];","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"justinlengch"},"content":" LocalDate dateDetail \u003d LocalDate.parse(lessonDetails[1], DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"justinlengch"},"content":" LocalTime timeDetail \u003d LocalTime.parse(lessonDetails[2], TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"justinlengch"},"content":" int isCompleted \u003d Integer.parseInt(lessonDetails[3]);","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"justinlengch"},"content":" Lesson newLesson \u003d new Lesson(subjectDetail, dateDetail, timeDetail);","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"justinlengch"},"content":" if (isCompleted \u003d\u003d 1) {","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"justinlengch"},"content":" newLesson.setLessonComplete();","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"justinlengch"},"content":" return newLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justinlengch":102,"leepoeaik":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedStudent.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" * Jackson-friendly version of {@link Student}.","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"class JsonAdaptedStudent {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Student\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" private final List\u003cJsonAdaptedLesson\u003e lessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" private final String remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private final String subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" * Constructs a {@code JsonAdaptedStudent} with the given student details.","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" public JsonAdaptedStudent(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" @JsonProperty(\"subject\") String subject, @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"feeStatus\") String feeStatus,","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" @JsonProperty(\"lessons\") List\u003cJsonAdaptedLesson\u003e lessons) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.feeStatus \u003d feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" if (lessons !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" this.lessons.addAll(lessons);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" * Converts a given {@code Student} into this class for Jackson use.","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" public JsonAdaptedStudent(Student source) {","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" feeStatus \u003d source.getFeeStatus().status;","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" subject \u003d source.getSubject().value;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" lessons.addAll(source.getLessons().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" .map(lesson -\u003e new JsonAdaptedLesson(lesson.getJsonValue()))","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Student} object.","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" public Student toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" final List\u003cLesson\u003e modelLessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" for (JsonAdaptedLesson lesson : lessons) {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" modelLessons.add(lesson.toModelType());","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"justinlengch"},"content":" if (subject \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"justinlengch"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Subject.class.getSimpleName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (feeStatus \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" FeeStatus.class.getSimpleName()));","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" final FeeStatus modelFeeStatus \u003d new FeeStatus(feeStatus);","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"justinlengch"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"justinlengch"},"content":" final Subject modelSubject \u003d new Subject(subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" return new Student(modelName, modelPhone, modelEmail, modelAddress, modelSubject,","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" modelRemark, modelFeeStatus, modelLessons);","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"justinlengch":24,"leepoeaik":19,"-":89}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" public static final String MESSAGE_DUPLICATE_STUDENT \u003d \"Students list contains duplicate student(s).\";","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" private final List\u003cJsonAdaptedStudent\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given students.","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"students\") List\u003cJsonAdaptedStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" students.addAll(source.getStudentList().stream().map(JsonAdaptedStudent::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" for (JsonAdaptedStudent jsonAdaptedStudent : students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" Student student \u003d jsonAdaptedStudent.toModelType();","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" if (addressBook.hasStudent(student)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"leepoeaik":12,"-":48}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t16-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"justinlengch":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" private StudentListPanel studentListPanel;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" private ScheduleListPanel scheduleListPanel;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" private StackPane studentListPanelPlaceholder;","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" private StackPane scheduleListPanelPlaceholder;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" private HBox titleLogoLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" private HBox labelCommandHolder;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" studentListPanel \u003d new StudentListPanel(this, logic.getFilteredStudentList());","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" studentListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanel \u003d new ScheduleListPanel(logic.getFilteredStudentList());","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanelPlaceholder.getChildren().add(scheduleListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":132,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":181,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"justinlengch"},"content":" * Updates Schedule List Panel.","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"justinlengch"},"content":" public void updateScheduleListPanel() {","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"justinlengch"},"content":" scheduleListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-04-04"},{"lineNumber":186,"author":{"gitId":"justinlengch"},"content":" scheduleListPanel \u003d new ScheduleListPanel(logic.getFilteredStudentList());","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"justinlengch"},"content":" scheduleListPanelPlaceholder.getChildren().add(scheduleListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"leepoeaik"},"content":" * Updates Schedule List Panel with specific student input","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"leepoeaik"},"content":" * @param student selected student input","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"leepoeaik"},"content":" public void updateScheduleListPanel(Student student) {","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"leepoeaik"},"content":" if (student !\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cStudent\u003e temp \u003d FXCollections.observableArrayList(student);","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanel \u003d new ScheduleListPanel(temp);","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"leepoeaik"},"content":" scheduleListPanelPlaceholder.getChildren().add(scheduleListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":200,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"justinlengch"},"content":" * Updates Student List Panel.","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":205,"author":{"gitId":"justinlengch"},"content":" public void updateStudentListPanel() {","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"justinlengch"},"content":" studentListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"leepoeaik"},"content":" studentListPanel \u003d new StudentListPanel(this, logic.getFilteredStudentList());","lastModifiedDate":"2024-04-04"},{"lineNumber":208,"author":{"gitId":"justinlengch"},"content":" studentListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"justinlengch"},"content":" updateStudentListPanel();","lastModifiedDate":"2024-04-04"},{"lineNumber":230,"author":{"gitId":"justinlengch"},"content":" updateScheduleListPanel();","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":235,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"justinlengch":16,"leepoeaik":31,"-":192}},{"path":"src/main/java/seedu/address/ui/ScheduleCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.student.Lesson.DATE_FORMATTER;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"public class ScheduleCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" private static final String FXML \u003d \"ScheduleListCard.fxml\";","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" public final Lesson lesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public final String studentName;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" private HBox cardPane;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" private Label name;","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" private Label id;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" private Label phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" private Label address;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" private Label email;","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" private Label subject;","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" private Label date;","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" private Label time;","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" private FlowPane lessons;","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" private Label remark;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code StudentCode} with the given {@code Student} and index to display.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" public ScheduleCard(Pair\u003cStudent, Lesson\u003e pair, int displayedIndex) {","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" super(FXML);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" this.lesson \u003d pair.getValue();","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" this.studentName \u003d pair.getKey().getName().toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" name.setText(studentName);","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" subject.setText(lesson.getSubject().value);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" date.setText(lesson.getDate().format(DATE_FORMATTER));","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" time.setText(lesson.getTime().toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"leepoeaik":68}},{"path":"src/main/java/seedu/address/ui/ScheduleListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import java.util.Collections;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" * Panel containing the list of students.","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"public class ScheduleListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" private static final String FXML \u003d \"ScheduleListPanel.fxml\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ScheduleListPanel.class);","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" private ObservableList\u003cStudent\u003e studentList;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" private ListView\u003cPair\u003cStudent, Lesson\u003e\u003e scheduleListView;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code ScheduleListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" public ScheduleListPanel(ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" super(FXML);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" this.studentList \u003d studentList;","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" scheduleListView.setItems(transformList(this.studentList));","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" scheduleListView.setCellFactory(listView -\u003e new ScheduleListViewCell());","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" * Extracts lessons from studentList","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" * Adds the lessons together with student as a pair and sorts it","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" * @param studentList observable list of students","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" * @return an observable list of a pair of students and lessons","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cPair\u003cStudent, Lesson\u003e\u003e transformList(ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" List\u003cPair\u003cStudent, Lesson\u003e\u003e scheduleList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" for (Student student : studentList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" List\u003cLesson\u003e studentLesson \u003d student.getLessons();","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" for (Lesson l : studentLesson) {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" if (l.getLessonStatus() \u003d\u003d 0) {","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" scheduleList.add(new Pair(student, l));","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" Collections.sort(scheduleList, new SortDate());","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" ObservableList\u003cPair\u003cStudent, Lesson\u003e\u003e observableList \u003d FXCollections.observableList(scheduleList);","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" return observableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Student} using a {@code StudentCard}.","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" class ScheduleListViewCell extends ListCell\u003cPair\u003cStudent, Lesson\u003e\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" protected void updateItem(Pair\u003cStudent, Lesson\u003e pair, boolean empty) {","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" super.updateItem(pair, empty);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" if (empty || pair \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" setGraphic(null);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" setText(null);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" setGraphic(new ScheduleCard(pair, getIndex() + 1).getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" class SortDate implements Comparator\u003cPair\u003cStudent, Lesson\u003e\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" public int compare(Pair\u003cStudent, Lesson\u003e o1, Pair\u003cStudent, Lesson\u003e o2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" return o1.getValue().getDate().compareTo(o2.getValue().getDate());","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"justinlengch":5,"leepoeaik":84}},{"path":"src/main/java/seedu/address/ui/StudentCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * A UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"public class StudentCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" private static final String FXML \u003d \"StudentListCard.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" public final Student student;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" private Label subject;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" private FlowPane lessons;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" @FXML","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" private Label remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private Label feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code StudentCode} with the given {@code Student} and index to display.","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" public StudentCard(Student student, int displayedIndex) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" this.student \u003d student;","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" name.setText(student.getName().fullName);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" phone.setText(student.getPhone().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" address.setText(student.getAddress().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" email.setText(student.getEmail().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" subject.setText(student.getSubject().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" remark.setText(student.getRemark().value);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" feeStatus.setText(student.getFeeStatus().status);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" student.getLessons().stream()","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" .sorted(Comparator.comparing(Lesson::getLessonValue)).filter(lesson -\u003e lesson.getLessonStatus() \u003d\u003d 0)","lastModifiedDate":"2024-03-25"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" .forEach(lesson -\u003e lessons.getChildren().add(new Label(lesson.toString())));","lastModifiedDate":"2024-03-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"justinlengch":5,"leepoeaik":17,"-":47}},{"path":"src/main/java/seedu/address/ui/StudentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":" * Panel containing the list of students.","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"public class StudentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" private static final String FXML \u003d \"StudentListPanel.fxml\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" private final Logger logger \u003d LogsCenter.getLogger(StudentListPanel.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" private final MainWindow mainWindow;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" @FXML","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" private ListView\u003cStudent\u003e studentListView;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code StudentListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" public StudentListPanel(MainWindow mainWindow, ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" super(FXML);","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" this.mainWindow \u003d mainWindow;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" studentListView.setItems(studentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" studentListView.setCellFactory(listView -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" StudentListViewCell studentCells \u003d new StudentListViewCell();","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" studentCells.setOnMouseClicked(mouseEvent -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" StudentListViewCell clicked \u003d (StudentListViewCell) mouseEvent.getSource();","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" mainWindow.updateScheduleListPanel(clicked.getStudent());","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" return studentCells;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Student} using a {@code StudentCard}.","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" class StudentListViewCell extends ListCell\u003cStudent\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" private Student student;","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" protected void updateItem(Student student, boolean empty) {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" super.updateItem(student, empty);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" if (empty || student \u003d\u003d null) {","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" setText(null);","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" this.student \u003d student;","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" setGraphic(new StudentCard(student, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" public Student getStudent() {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" return this.student;","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"leepoeaik":64}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"justinlengch"},"content":"#lessons {","lastModifiedDate":"2024-03-21"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"justinlengch"},"content":"#lessons .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"justinlengch":2,"-":350}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":" -fx-background: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":1,"-":19}},{"path":"src/main/resources/view/LightTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"#titleLogoLabel {","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color:#FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius:10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 0 10 0 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":" -fx-min-height : 40px;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"#titleLogoLabel .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: #000000;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"#labelCommandHolder{","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #C7C8CC;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" -fx-spacing : 20px;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"#commandTextField {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color: transparent transparent #000000 transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: #000000;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":"#commandTextHBox{","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color : #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":"#resultDisplayPlaceholder{","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #C7C8CC;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" -fx-focus-color:transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"#result-display{","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #000000;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":".result-display {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" -fx-padding:5 5 5 5;","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":".result-display .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":"#studentList{","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #C7C8CC;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":"#studentListHBox{","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" -fx-spacing:20px;","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" -fx-padding:10 10 10 20;","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color:#C7C8CC;","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":"#scheduleBox{","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color:#FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":"#cardPane {","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #E3E1D9;","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets : 10 0 10 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color : transparent transparent #C7C8CC transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #F2EFE5;","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets : 10 0 10 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color : transparent transparent #C7C8CC transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #B4B4B8;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color : transparent transparent #C7C8CC transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"leepoeaik"},"content":" -fx-border-color: #000000;","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":".list-cell .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":"#scheduleListView .list-cell:filled:odd {","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #6aa9bf;","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets : 10 0 10 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 10 10 10 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 0px;","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"leepoeaik"},"content":"#scheduleListView .list-cell:filled:even {","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets : 10 0 10 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius : 30px;","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 10 10 10 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"leepoeaik"},"content":" -fx-border-width : 0px;","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"leepoeaik"},"content":"#scheduleListView .list-cell .label {","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"leepoeaik"},"content":"#scheduleListView {","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"leepoeaik"},"content":".scroll-bar {","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"leepoeaik"},"content":".scroll-bar .thumb {","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #B4B4B8;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"leepoeaik"},"content":".menu-bar {","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"leepoeaik"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"leepoeaik"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"leepoeaik"},"content":".menu .left-container {","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"leepoeaik"},"content":"#lessons {","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"leepoeaik"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"leepoeaik"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"leepoeaik"},"content":"#lessons .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"leepoeaik"},"content":" -fx-background-color: #6aa9bf;","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"leepoeaik"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"leepoeaik"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"leepoeaik"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 13;","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"leepoeaik"},"content":"#studentListView {","lastModifiedDate":"2024-03-22"},{"lineNumber":190,"author":{"gitId":"leepoeaik"},"content":" -fx-padding : 0 20 0 20;","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"leepoeaik"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"leepoeaik"},"content":"#upcomingLessonLabel {","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"leepoeaik"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"leepoeaik"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"leepoeaik"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"leepoeaik":198}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"TutorTrack\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox fx:id\u003d\"labelCommandHolder\" prefHeight\u003d\"18.0\" prefWidth\u003d\"340.0\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox fx:id\u003d\"titleLogoLabel\" alignment\u003d\"CENTER_LEFT\" prefHeight\u003d\"40.0\" prefWidth\u003d\"136.0\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel contentDisplay\u003d\"CENTER\" prefHeight\u003d\"22.0\" prefWidth\u003d\"86.0\" text\u003d\"TutorTrack\" textAlignment\u003d\"RIGHT\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" \u003cFont name\u003d\"System Bold\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" \u003cImageView fitHeight\u003d\"31.0\" fitWidth\u003d\"45.0\" nodeOrientation\u003d\"INHERIT\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" \u003cimage\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" \u003cImage url\u003d\"@/images/book-logo.png\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" \u003c/image\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox fx:id\u003d\"commandTextHBox\" alignment\u003d\"CENTER_RIGHT\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100\" minHeight\u003d\"100\" prefHeight\u003d\"100\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox fx:id\u003d\"studentListHBox\" prefHeight\u003d\"100.0\" prefWidth\u003d\"200.0\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" \u003cVBox fx:id\u003d\"scheduleBox\" alignment\u003d\"CENTER\" minWidth\u003d\"340\" prefWidth\u003d\"340\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"upcomingLessonLabel\" text\u003d\"Upcoming lessons\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" \u003cFont size\u003d\"24.0\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" \u003cStackPane fx:id\u003d\"scheduleListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" \u003cVBox fx:id\u003d\"studentList\" alignment\u003d\"CENTER_RIGHT\" minWidth\u003d\"340\" prefWidth\u003d\"340\" styleClass\u003d\"pane-with-border\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" \u003cStackPane fx:id\u003d\"studentListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" \u003cURL value\u003d\"@LightTheme.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"leepoeaik":59,"-":43}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":" \u003cFont size\u003d\"23.0\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" \u003c/font\u003e\u003c/TextArea\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"leepoeaik":6,"-":6}},{"path":"src/main/resources/view/ScheduleListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"subject\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$subject\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"date\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$date\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"time\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$time\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"leepoeaik":45}},{"path":"src/main/resources/view/ScheduleListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":" \u003cListView fx:id\u003d\"scheduleListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"leepoeaik":10}},{"path":"src/main/resources/view/StudentListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" \u003cFlowPane fx:id\u003d\"lessons\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" \u003cLabel fx:id\u003d\"subject\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$subject\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"feeStatus\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$feeStatus\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"justinlengch":3,"leepoeaik":8,"-":32}},{"path":"src/main/resources/view/StudentListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":" \u003cListView fx:id\u003d\"studentListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":1,"-":7}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_MATHS;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" public void getFilteredStudentList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredStudentList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"justinlengch"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + SUBJECT_DESC_MATHS + LESSON_DESC_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"leepoeaik"},"content":" Student expectedStudent \u003d new StudentBuilder(AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"leepoeaik"},"content":" expectedModel.addStudent(expectedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"justinlengch":3,"leepoeaik":9,"-":165}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public void execute_newStudent_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" Student validStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" expectedModel.addStudent(validStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" assertCommandSuccess(new AddCommand(validStudent), model,","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" public void execute_duplicateStudent_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" Student personInList \u003d model.getAddressBook().getStudentList().get(0);","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" AddCommand.MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"leepoeaik":11,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" public void constructor_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" public void execute_studentAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" ModelStubAcceptingStudentAdded modelStub \u003d new ModelStubAcceptingStudentAdded();","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" Student validStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" CommandResult commandResult \u003d new AddCommand(validStudent).execute(modelStub);","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" assertEquals(Arrays.asList(validStudent), modelStub.studentsAdded);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" public void execute_duplicateStudent_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" Student validStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" AddCommand addCommand \u003d new AddCommand(validStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" ModelStub modelStub \u003d new ModelStubWithStudent(validStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_STUDENT, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" Student alice \u003d new StudentBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" Student bob \u003d new StudentBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" public void addStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" public void deleteStudent(Student target) {","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"leepoeaik"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getFilteredStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"leepoeaik"},"content":" public void updateFilteredStudentList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"leepoeaik"},"content":" * A Model stub that contains a single student.","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"leepoeaik"},"content":" private class ModelStubWithStudent extends ModelStub {","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"leepoeaik"},"content":" private final Student student;","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"leepoeaik"},"content":" ModelStubWithStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"leepoeaik"},"content":" this.student \u003d student;","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"leepoeaik"},"content":" return this.student.isSameStudent(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"leepoeaik"},"content":" * A Model stub that always accept the student being added.","lastModifiedDate":"2024-03-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"leepoeaik"},"content":" private class ModelStubAcceptingStudentAdded extends ModelStub {","lastModifiedDate":"2024-03-22"},{"lineNumber":184,"author":{"gitId":"leepoeaik"},"content":" final ArrayList\u003cStudent\u003e studentsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"leepoeaik"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":188,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":189,"author":{"gitId":"leepoeaik"},"content":" return studentsAdded.stream().anyMatch(student::isSameStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"leepoeaik"},"content":" public void addStudent(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":194,"author":{"gitId":"leepoeaik"},"content":" requireNonNull(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":195,"author":{"gitId":"leepoeaik"},"content":" studentsAdded.add(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"leepoeaik":42,"-":162}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"leepoeaik":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_REMARK_BOB \u003d \"Likes to swim\";","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_REMARK_AMY \u003d \"Likes to run\";","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_SUBJECT_AMY \u003d \"Math\";","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_SUBJECT_BOB \u003d \"Science\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_LESSON_AMY \u003d \"Math|10-05-2002|13:00|0\";","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" public static final String VALID_LESSON_BOB \u003d \"Science|12-06-2003|14:30|0\";","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String VALID_FEESTATUS_AMY \u003d \"paid\";","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String VALID_FEESTATUS_BOB \u003d \"payment by Sunday\";","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" public static final String LESSON_DESC_COMPLETED \u003d \" \" + PREFIX_LESSON + VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" public static final String LESSON_DESC_INCOMPLETE \u003d \" \" + PREFIX_LESSON + VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" public static final String SUBJECT_DESC_MATHS \u003d \" \" + PREFIX_SUBJECT + VALID_SUBJECT_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" public static final String SUBJECT_DESC_SCIENCE \u003d \" \" + PREFIX_SUBJECT + VALID_SUBJECT_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" public static final String LESSON_DESC_AMY \u003d \" \" + PREFIX_LESSON + VALID_LESSON_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" public static final String INVALID_LESSON_DESC \u003d \" \" + PREFIX_LESSON","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" + \"yuh3|13-05-2002|13:00|0\"; // number not allowed in subject part of lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" public static final EditCommand.EditStudentDescriptor DESC_AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" public static final EditCommand.EditStudentDescriptor DESC_BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" DESC_AMY \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" .withSubject(VALID_SUBJECT_AMY).withLessons(VALID_LESSON_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" DESC_BOB \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"justinlengch"},"content":" .withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" * - the address book, filtered student list and selected student in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" * Updates {@code model}\u0027s filtered list to show only the student at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":" public static void showStudentAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"leepoeaik"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" Student student \u003d model.getFilteredStudentList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":" final String[] splitName \u003d student.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":" assertEquals(1, model.getFilteredStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"justinlengch":20,"leepoeaik":17,"-":104}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStudentAtIndex;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" Student personToDelete \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" expectedModel.deleteStudent(personToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStudentList().size() + 1);","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" Student personToDelete \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" expectedModel.deleteStudent(personToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" showNoStudent(expectedModel);","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" private void showNoStudent(Model model) {","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" model.updateFilteredStudentList(p -\u003e false);","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" assertTrue(model.getFilteredStudentList().isEmpty());","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"leepoeaik":27,"-":93}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStudentAtIndex;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder(editedStudent).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STUDENT, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" Messages.format(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(model.getFilteredStudentList().get(0), editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" Index indexLastStudent \u003d Index.fromOneBased(model.getFilteredStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" Student lastStudent \u003d model.getFilteredStudentList().get(indexLastStudent.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" StudentBuilder studentInList \u003d new StudentBuilder(lastStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d studentInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" .withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":" .withPhone(VALID_PHONE_BOB).withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastStudent, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" Messages.format(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(lastStudent, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STUDENT, new EditStudentDescriptor());","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" Messages.format(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" Student studentInFilteredList \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new StudentBuilder(studentInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_STUDENT_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" Messages.format(editedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(model.getFilteredStudentList().get(0), editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" public void execute_duplicateStudentUnfilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" Student firstStudent \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder(firstStudent).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_STUDENT, descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" public void execute_duplicateStudentFilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"leepoeaik"},"content":" // edit student in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"leepoeaik"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(INDEX_SECOND_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" new EditStudentDescriptorBuilder(studentInList).build());","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" public void execute_invalidStudentIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStudentList().size() + 1);","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" public void execute_invalidStudentIndexFilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"leepoeaik"},"content":" new EditStudentDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"leepoeaik"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_STUDENT, DESC_AMY);","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor copyDescriptor \u003d new EditStudentDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"leepoeaik"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_STUDENT, copyDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"leepoeaik"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_STUDENT, DESC_AMY)));","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"leepoeaik"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_STUDENT, DESC_BOB)));","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":182,"author":{"gitId":"leepoeaik"},"content":" EditCommand editCommand \u003d new EditCommand(index, editStudentDescriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":183,"author":{"gitId":"leepoeaik"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editStudentDescriptor\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":184,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"justinlengch":3,"leepoeaik":66,"-":119}},{"path":"src/test/java/seedu/address/logic/commands/EditStudentDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"public class EditStudentDescriptorTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptorWithSameValues \u003d new EditStudentDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" editedAmy \u003d new EditStudentDescriptorBuilder(DESC_AMY).withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor editStudentDescriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" String expected \u003d EditStudentDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getAddress().orElse(null) + \", subject\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getSubject().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getRemark().orElse(null) + \", lessons\u003d\"","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" + editStudentDescriptor.getLessons().orElse(null) + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expected, editStudentDescriptor.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"justinlengch":1,"leepoeaik":19,"-":53}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.Messages.MESSAGE_STUDENTS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.CARL;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ELLE;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.FIONA;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" public void execute_zeroKeywords_noStudentFound() {","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(MESSAGE_STUDENTS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" expectedModel.updateFilteredStudentList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" assertEquals(Collections.emptyList(), model.getFilteredStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" public void execute_multipleKeywords_multipleStudentsFound() {","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(MESSAGE_STUDENTS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" expectedModel.updateFilteredStudentList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"leepoeaik":15,"-":76}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStudentAtIndex;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"leepoeaik":4,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/RemarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showStudentAtIndex;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"class RemarkCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" private static final String REMARK_STUB \u003d \"She likes aardvarks.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" void execute_addRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" Student firstStudent \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new StudentBuilder(firstStudent).withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" new Remark(editedStudent.getRemark().value));","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(firstStudent, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" showStudentAtIndex(model, INDEX_FIRST_STUDENT);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" Student firstStudent \u003d model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" Student editedStudent \u003d new StudentBuilder(","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" model.getFilteredStudentList().get(INDEX_FIRST_STUDENT.getZeroBased()))","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" .withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(INDEX_FIRST_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" new Remark(editedStudent.getRemark().value));","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" String expectedMessage \u003d String.format(RemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" expectedModel.setStudent(firstStudent, editedStudent);","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" public void execute_invalidStudentIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredStudentList().size() + 1);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" RemarkCommand remarkCommand \u003d new RemarkCommand(outOfBoundIndex, new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" assertCommandFailure(remarkCommand, model, Messages.MESSAGE_INVALID_STUDENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"justinlengch":45,"leepoeaik":23}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_LESSON_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_INCOMPLETE;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_MATHS;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_SCIENCE;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" Student expectedStudent \u003d new StudentBuilder(BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" + ADDRESS_DESC_BOB + SUBJECT_DESC_SCIENCE","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" + REMARK_DESC_BOB + LESSON_DESC_COMPLETED, new AddCommand(expectedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" // multiple lesson - all accepted","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" Student expectedStudentMultipleLessons \u003d new StudentBuilder(BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" .withLessons(VALID_LESSON_BOB, VALID_LESSON_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + SUBJECT_DESC_SCIENCE","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" + REMARK_DESC_BOB + LESSON_DESC_COMPLETED + LESSON_DESC_INCOMPLETE,","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" new AddCommand(expectedStudentMultipleLessons));","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" public void parse_repeatedNonLessonValue_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" String validExpectedStudentString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"justinlengch"},"content":" + ADDRESS_DESC_BOB + SUBJECT_DESC_SCIENCE + LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" validExpectedStudentString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"justinlengch"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_EMAIL, PREFIX_SUBJECT,","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"justinlengch"},"content":" PREFIX_ADDRESS, PREFIX_PHONE));","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedStudentString,","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, validExpectedStudentString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, validExpectedStudentString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, validExpectedStudentString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" assertParseFailure(parser, validExpectedStudentString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":140,"author":{"gitId":"justinlengch"},"content":" // zero lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"justinlengch"},"content":" Student expectedStudent \u003d new StudentBuilder(AMY).withLessons().build();","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"justinlengch"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"justinlengch"},"content":" + ADDRESS_DESC_AMY + SUBJECT_DESC_MATHS,","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"leepoeaik"},"content":" new AddCommand(expectedStudent));","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS + LESSON_DESC_INCOMPLETE,","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"justinlengch"},"content":" + VALID_SUBJECT_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":188,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"justinlengch"},"content":" // invalid lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"justinlengch"},"content":" + SUBJECT_DESC_MATHS + INVALID_LESSON_DESC, Lesson.MESSAGE_CONSTRAINTS_1);","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"justinlengch"},"content":" + INVALID_ADDRESS_DESC + SUBJECT_DESC_MATHS,","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"justinlengch"},"content":" + ADDRESS_DESC_BOB + SUBJECT_DESC_MATHS + REMARK_DESC_BOB + LESSON_DESC_COMPLETED,","lastModifiedDate":"2024-03-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"justinlengch":40,"leepoeaik":29,"-":139}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FEESTATUS;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FeeStatusCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentUtil;","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" Student person \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(StudentUtil.getAddCommand(person));","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_STUDENT.getOneBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_STUDENT), command);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" Student person \u003d new StudentBuilder().build();","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" + INDEX_FIRST_STUDENT.getOneBased() + \" \" + StudentUtil.getEditStudentDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" assertEquals(new EditCommand(INDEX_FIRST_STUDENT, descriptor), command);","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_feeStatus() throws Exception {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" final FeeStatus feeStatus \u003d new FeeStatus(\"Some status.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FeeStatusCommand command \u003d (FeeStatusCommand) parser.parseCommand(FeeStatusCommand.COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + INDEX_FIRST_STUDENT.getOneBased()","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" + PREFIX_FEESTATUS","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" + feeStatus.status);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(new FeeStatusCommand(INDEX_FIRST_STUDENT, feeStatus), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"leepoeaik":15,"-":102}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_STUDENT));","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"leepoeaik":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_LESSON_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LESSON_DESC_INCOMPLETE;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SUBJECT_DESC_MATHS;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.EditStudentDescriptorBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":" assertParseFailure(parser, \"1\" + INVALID_LESSON_DESC, Lesson.MESSAGE_CONSTRAINTS_1); // invalid lesson","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" Index targetIndex \u003d INDEX_SECOND_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"justinlengch"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + LESSON_DESC_INCOMPLETE + SUBJECT_DESC_MATHS","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"justinlengch"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"justinlengch"},"content":" .withLessons(VALID_LESSON_AMY, VALID_LESSON_BOB).withSubject(VALID_SUBJECT_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" Index targetIndex \u003d INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":" Index targetIndex \u003d INDEX_THIRD_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" EditStudentDescriptor descriptor \u003d new EditStudentDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":151,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"justinlengch"},"content":" // lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"justinlengch"},"content":" userInput \u003d targetIndex.getOneBased() + LESSON_DESC_COMPLETED;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptorBuilder().withLessons(VALID_LESSON_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"leepoeaik"},"content":" Index targetIndex \u003d INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"justinlengch"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"justinlengch"},"content":" + LESSON_DESC_INCOMPLETE + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + LESSON_DESC_COMPLETED","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"justinlengch"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + SUBJECT_DESC_MATHS;","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"justinlengch":16,"leepoeaik":21,"-":156}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"leepoeaik":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_STUDENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" private static final String INVALID_LESSON \u003d \"#MATH|10-05-2002|13:00\";","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_LESSON_1 \u003d \"Maths|10-05-2002|13:00\";","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_LESSON_2 \u003d \"Science|10-05-2002|13:00\";","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_SUBJECT_MATHS \u003d \"Maths\";","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_SUBJECT_SCIENCE \u003d \"Science\";","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" private static final LocalDate VALID_DATE_1 \u003d LocalDate.parse(\"10-05-2002\", Lesson.DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" private static final LocalTime VALID_TIME_1 \u003d LocalTime.parse(\"13:00\", Lesson.TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" assertEquals(INDEX_FIRST_STUDENT, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" assertEquals(INDEX_FIRST_STUDENT, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail(null));","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"justinlengch"},"content":" public void parseLesson_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLesson(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"justinlengch"},"content":" public void parseLesson_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"justinlengch"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLesson(INVALID_LESSON));","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"justinlengch"},"content":" public void parseLessons_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLessons(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":172,"author":{"gitId":"justinlengch"},"content":" public void parseLessons_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"justinlengch"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLessons(","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"justinlengch"},"content":" Arrays.asList(VALID_LESSON_1, INVALID_LESSON)));","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"justinlengch"},"content":" public void parseLessons_emptyCollection_returnsEmptyList() throws Exception {","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"justinlengch"},"content":" assertTrue(ParserUtil.parseLessons(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"justinlengch"},"content":" public void parseLessons_collectionWithValidLessons_returnsLessonList() throws Exception {","lastModifiedDate":"2024-04-03"},{"lineNumber":184,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e actualLessonList \u003d ParserUtil.parseLessons(Arrays.asList(VALID_LESSON_1, VALID_LESSON_2));","lastModifiedDate":"2024-04-03"},{"lineNumber":185,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e expectedLessonSet \u003d new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2024-04-03"},{"lineNumber":186,"author":{"gitId":"justinlengch"},"content":" new Lesson(VALID_SUBJECT_MATHS, VALID_DATE_1, VALID_TIME_1),","lastModifiedDate":"2024-04-03"},{"lineNumber":187,"author":{"gitId":"justinlengch"},"content":" new Lesson(VALID_SUBJECT_SCIENCE, VALID_DATE_1, VALID_TIME_1)));","lastModifiedDate":"2024-04-03"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"justinlengch"},"content":" assertEquals(expectedLessonSet, actualLessonList);","lastModifiedDate":"2024-04-03"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"justinlengch":32,"leepoeaik":8,"-":151}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.DuplicateStudentException;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" assertEquals(Collections.emptyList(), addressBook.getStudentList());","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" public void resetData_withDuplicateStudents_throwsDuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" // Two students with the same identity fields","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e newStudents \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" AddressBookStub newData \u003d new AddressBookStub(newStudents);","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DuplicateStudentException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasStudent(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" assertFalse(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" assertTrue(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" assertTrue(addressBook.hasStudent(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" public void getStudentList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getStudentList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{students\u003d\" + addressBook.getStudentList() + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" * A stub ReadOnlyAddressBook whose students list can violate interface constraints.","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" private final ObservableList\u003cStudent\u003e students \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" AddressBookStub(Collection\u003cStudent\u003e students) {","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" this.students.setAll(students);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" return students;","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"justinlengch":1,"leepoeaik":32,"-":75}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_STUDENTS;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BENSON;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasStudent(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" assertFalse(modelManager.hasStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":" public void hasStudent_studentInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" modelManager.addStudent(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" assertTrue(modelManager.hasStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" public void getFilteredStudentList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredStudentList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withStudent(ALICE).withStudent(BENSON).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" modelManager.updateFilteredStudentList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" modelManager.updateFilteredStudentList(PREDICATE_SHOW_ALL_STUDENTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"leepoeaik":16,"-":116}},{"path":"src/test/java/seedu/address/model/student/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"leepoeaik":1,"-":55}},{"path":"src/test/java/seedu/address/model/student/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"leepoeaik":1,"-":87}},{"path":"src/test/java/seedu/address/model/student/LessonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"public class LessonTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e new Lesson(null, null, null));","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" public void constructor_invalidLesson_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" String invalidSubject \u003d \"\";","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" LocalDate validDate \u003d LocalDate.parse(\"10-01-2023\", Lesson.DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" LocalTime validTime \u003d LocalTime.parse(\"23:00\", Lesson.TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Lesson(invalidSubject, validDate, validTime));","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" public void isValidLesson() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" // null lesson","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e Lesson.isValidLesson(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" // invalid lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" assertFalse(Lesson.isValidLesson(\"\")); // empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" assertFalse(Lesson.isValidLesson(\" \")); // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" assertFalse(Lesson.isValidLesson(\"Math|invalidDate|09:00\")); // invalid date format","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" assertFalse(Lesson.isValidLesson(\"Math|01-01-2023|invalidTime\")); // invalid time format","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" // valid lessons","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" assertTrue(Lesson.isValidLesson(\"Math|01-01-2023|09:00\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":" assertTrue(Lesson.isValidLesson(\"Science|01-01-2023|10:00\"));","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" Lesson lesson \u003d new Lesson(\"Math\", LocalDate.parse(\"01-01-2023\", Lesson.DATE_FORMATTER),","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" LocalTime.parse(\"09:00\", Lesson.TIME_FORMATTER));","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" String validLesson \u003d \"Math\";","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" LocalDate validDate \u003d LocalDate.parse(\"01-01-2023\", Lesson.DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" LocalTime validTime \u003d LocalTime.parse(\"09:00\", Lesson.TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" assertTrue(lesson.equals(new Lesson(validLesson, validDate, validTime)));","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" assertEquals(lesson, lesson);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" assertFalse(lesson.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" assertFalse(lesson.equals(5.0f));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"justinlengch"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" String differentLesson \u003d \"Science\";","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"justinlengch"},"content":" assertFalse(lesson.equals(new Lesson(differentLesson, validDate, validTime)));","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justinlengch":67,"leepoeaik":1}},{"path":"src/test/java/seedu/address/model/student/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" assertTrue(predicate.test(new StudentBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" assertTrue(predicate.test(new StudentBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" assertTrue(predicate.test(new StudentBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" assertTrue(predicate.test(new StudentBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" assertFalse(predicate.test(new StudentBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" assertFalse(predicate.test(new StudentBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" assertFalse(predicate.test(new StudentBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"leepoeaik":9,"-":76}},{"path":"src/test/java/seedu/address/model/student/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"leepoeaik":1,"-":59}},{"path":"src/test/java/seedu/address/model/student/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"leepoeaik":1,"-":59}},{"path":"src/test/java/seedu/address/model/student/StudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"public class StudentTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" public void isSameStudent() {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" assertTrue(ALICE.isSameStudent(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" assertFalse(ALICE.isSameStudent(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" .withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" assertTrue(ALICE.isSameStudent(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" assertFalse(ALICE.isSameStudent(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" Student editedBob \u003d new StudentBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" assertFalse(BOB.isSameStudent(editedBob));","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" editedBob \u003d new StudentBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" assertFalse(BOB.isSameStudent(editedBob));","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" Student aliceCopy \u003d new StudentBuilder(ALICE).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" editedAlice \u003d new StudentBuilder(ALICE).withLessons(VALID_LESSON_AMY).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" String expected \u003d Student.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"justinlengch"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", subject\u003d\" + ALICE.getSubject()","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + \", remark\u003d\" + ALICE.getRemark() + \", fee status\u003d\" + ALICE.getFeeStatus()","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \", lessons\u003d\" + ALICE.getLessons() + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"justinlengch":3,"leepoeaik":23,"-":68}},{"path":"src/test/java/seedu/address/model/student/SubjectTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"public class SubjectTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e new Subject(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":" public void constructor_invalidSubject_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justinlengch"},"content":" String invalidSubject \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Subject(invalidSubject));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" public void isValidSubject() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" // null subject","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" assertThrows(NullPointerException.class, () -\u003e Subject.isValidSubject(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" // invalid subjects","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" assertFalse(Subject.isValidSubject(\"\")); // empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" assertFalse(Subject.isValidSubject(\" \")); // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" assertFalse(Subject.isValidSubject(\"123\")); // numeric characters","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" assertFalse(Subject.isValidSubject(\"!@#$%\")); // special characters","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" // valid subjects","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" assertTrue(Subject.isValidSubject(\"Math\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" assertTrue(Subject.isValidSubject(\"English Literature\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" assertTrue(Subject.isValidSubject(\"Computer Science\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justinlengch"},"content":" assertTrue(Subject.isValidSubject(\"Social Studies\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" Subject subject \u003d new Subject(\"Math\");","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justinlengch"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"justinlengch"},"content":" assertEquals(subject, new Subject(\"Math\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"justinlengch"},"content":" assertEquals(subject, subject);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"justinlengch"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"justinlengch"},"content":" assertNotEquals(null, subject);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" assertNotEquals(5.0f, subject, String.valueOf(0.0));","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"justinlengch"},"content":" assertNotEquals(subject, new Subject(\"Science\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justinlengch":60,"leepoeaik":1}},{"path":"src/test/java/seedu/address/model/student/UniqueStudentListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"leepoeaik"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"leepoeaik"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import java.util.List;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.DuplicateStudentException;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.exceptions.StudentNotFoundException;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.StudentBuilder;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":"public class UniqueStudentListTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" private final UniqueStudentList uniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" public void contains_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.contains(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" public void contains_studentNotInList_returnsFalse() {","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" assertFalse(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" public void contains_studentInList_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" assertTrue(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" public void contains_studentWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" .build();","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" assertTrue(uniqueStudentList.contains(editedAlice));","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" public void add_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.add(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" public void add_duplicateStudent_throwsDuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DuplicateStudentException.class, () -\u003e uniqueStudentList.add(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_nullTargetStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setStudent(null, ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_nullEditedStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setStudent(ALICE, null));","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_targetStudentNotInList_throwsStudentNotFoundException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"leepoeaik"},"content":" assertThrows(StudentNotFoundException.class, () -\u003e uniqueStudentList.setStudent(ALICE, ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_editedStudentIsSameStudent_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudent(ALICE, ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_editedStudentHasSameIdentity_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" Student editedAlice \u003d new StudentBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"leepoeaik"},"content":" .build();","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudent(ALICE, editedAlice);","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(editedAlice);","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_editedStudentHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudent(ALICE, BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"leepoeaik"},"content":" public void setStudent_editedStudentHasNonUniqueIdentity_throwsDuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DuplicateStudentException.class, () -\u003e uniqueStudentList.setStudent(ALICE, BOB));","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":" public void remove_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.remove(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"leepoeaik"},"content":" public void remove_studentDoesNotExist_throwsStudentNotFoundException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"leepoeaik"},"content":" assertThrows(StudentNotFoundException.class, () -\u003e uniqueStudentList.remove(ALICE));","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" public void remove_existingStudent_removesStudent() {","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.remove(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":129,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":130,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":131,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_nullUniqueStudentList_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setStudents((UniqueStudentList) null));","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_uniqueStudentList_replacesOwnListWithProvidedUniqueStudentList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudents(expectedUniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"leepoeaik"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setStudents((List\u003cStudent\u003e) null));","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e studentList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"leepoeaik"},"content":" uniqueStudentList.setStudents(studentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":155,"author":{"gitId":"leepoeaik"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"leepoeaik"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-03-22"},{"lineNumber":157,"author":{"gitId":"leepoeaik"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":160,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":161,"author":{"gitId":"leepoeaik"},"content":" public void setStudents_listWithDuplicateStudents_throwsDuplicateStudentException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"leepoeaik"},"content":" List\u003cStudent\u003e listWithDuplicateStudents \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":163,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DuplicateStudentException.class, () -\u003e uniqueStudentList.setStudents(listWithDuplicateStudents));","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":165,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"leepoeaik"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"leepoeaik"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"leepoeaik"},"content":" -\u003e uniqueStudentList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"leepoeaik"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"leepoeaik"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"leepoeaik"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"leepoeaik"},"content":" assertEquals(uniqueStudentList.asUnmodifiableObservableList().toString(), uniqueStudentList.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"leepoeaik"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"leepoeaik"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"leepoeaik":176}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"justinlengch"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"justinlengch"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" void getSampleStudents() {","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" Student[] sampleStudents \u003d SampleDataUtil.getSampleStudents();","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(8, sampleStudents.length);","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justinlengch"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justinlengch"},"content":" void getLessonList() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d SampleDataUtil.getLessonList(\"Maths|10-05-2004|12:29\", \"English|10-05-2004|12:29\");","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":" assertEquals(2, lessonList.size());","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"justinlengch"},"content":" assertTrue(lessonList.contains(ParserUtil.parseLesson(\"Maths|10-05-2004|12:29\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":" assertTrue(lessonList.contains(ParserUtil.parseLesson(\"English|10-05-2004|12:29\")));","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justinlengch":25,"leepoeaik":4,"-":1}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedStudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.storage.JsonAdaptedStudent.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.BENSON;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"public class JsonAdaptedStudentTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"justinlengch"},"content":" private static final String INVALID_LESSON \u003d \"#Math|10-05-2002|10:00|1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_FEE_STATUS \u003d BENSON.getFeeStatus().toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"justinlengch"},"content":" private static final List\u003cJsonAdaptedLesson\u003e VALID_LESSONS \u003d BENSON.getLessons().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justinlengch"},"content":" .map(JsonAdaptedLesson::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" private static final String VALID_SUBJECT \u003d \"Science\";","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" public void toModelType_validStudentDetails_returnsStudent() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(BENSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"leepoeaik"},"content":" assertEquals(BENSON, student.toModelType());","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" new JsonAdaptedStudent(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SUBJECT,","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SUBJECT,","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_SUBJECT,","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" VALID_SUBJECT, VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" VALID_SUBJECT, VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" VALID_SUBJECT, VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"leepoeaik"},"content":" new JsonAdaptedStudent(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_SUBJECT,","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d new JsonAdaptedStudent(","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_SUBJECT,","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" VALID_REMARK, VALID_FEE_STATUS, VALID_LESSONS);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, expectedMessage, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"justinlengch"},"content":" public void toModelType_invalidLessons_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"justinlengch"},"content":" List\u003cJsonAdaptedLesson\u003e invalidLessons \u003d new ArrayList\u003c\u003e(VALID_LESSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"justinlengch"},"content":" invalidLessons.add(new JsonAdaptedLesson(INVALID_LESSON));","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"leepoeaik"},"content":" JsonAdaptedStudent student \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"leepoeaik"},"content":" new JsonAdaptedStudent(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" VALID_SUBJECT, VALID_REMARK, VALID_FEE_STATUS, invalidLessons);","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, student::toModelType);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"justinlengch":11,"leepoeaik":31,"-":85}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.HOON;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.IDA;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"leepoeaik"},"content":" public void readAddressBook_invalidStudentAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidStudentAddressBook.json\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" public void readAddressBook_invalidAndValidStudentAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"leepoeaik"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidStudentAddressBook.json\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" original.addStudent(HOON);","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"leepoeaik"},"content":" original.removeStudent(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" original.addStudent(IDA);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"leepoeaik":11,"-":99}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.testutil.TypicalStudents;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"leepoeaik"},"content":" private static final Path TYPICAL_STUDENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalStudentAddressBook.json\");","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" private static final Path INVALID_STUDENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidStudentAddressBook.json\");","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"leepoeaik"},"content":" private static final Path DUPLICATE_STUDENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateStudentAddressBook.json\");","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" public void toModelType_typicalStudentsFile_success() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_STUDENTS_FILE,","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"leepoeaik"},"content":" AddressBook typicalStudentsAddressBook \u003d TypicalStudents.getTypicalAddressBook();","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" assertEquals(addressBookFromFile, typicalStudentsAddressBook);","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"leepoeaik"},"content":" public void toModelType_invalidStudentFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_STUDENT_FILE,","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"leepoeaik"},"content":" public void toModelType_duplicateStudents_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"leepoeaik"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_STUDENT_FILE,","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_STUDENT,","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"leepoeaik":13,"-":34}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"leepoeaik"},"content":"import static seedu.address.testutil.TypicalStudents.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withStudent(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" * Adds a new {@code Student} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" public AddressBookBuilder withStudent(Student person) {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" addressBook.addStudent(person);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":5,"-":29}},{"path":"src/test/java/seedu/address/testutil/EditStudentDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"justinlengch"},"content":"import seedu.address.storage.JsonAdaptedLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":" * A utility class to help with building EditStudentDescriptor objects.","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"public class EditStudentDescriptorBuilder {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":" private EditStudentDescriptor descriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder() {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder(EditStudentDescriptor descriptor) {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"leepoeaik"},"content":" this.descriptor \u003d new EditStudentDescriptor(descriptor);","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" * Returns an {@code EditStudentDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder(Student person) {","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" descriptor \u003d new EditStudentDescriptor();","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" descriptor.setLessons(person.getLessons());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" descriptor.setSubject(person.getSubject());","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Name} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":51,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Phone} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Email} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Address} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Subject} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withSubject(String subject) {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" descriptor.setSubject(new Subject(subject));","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Remark} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"justinlengch"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" public EditStudentDescriptor build() {","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"justinlengch"},"content":" * Sets the {@code Lessons} of the {@code EditStudentDescriptor} that we are building.","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"justinlengch"},"content":" public EditStudentDescriptorBuilder withLessons(String... lessons) {","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessonList \u003d Arrays.stream(lessons)","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"justinlengch"},"content":" .map(lesson -\u003e JsonAdaptedLesson.parseJsonLesson(lesson))","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"justinlengch"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"justinlengch"},"content":" descriptor.setLessons(lessonList);","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"justinlengch":28,"leepoeaik":32,"-":47}},{"path":"src/test/java/seedu/address/testutil/StudentBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"justinlengch"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"justinlengch"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Address;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.student.FeeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Phone;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Remark;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Subject;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"justinlengch"},"content":"import seedu.address.storage.JsonAdaptedLesson;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":" * A utility class to help with building Student objects.","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"leepoeaik"},"content":"public class StudentBuilder {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"justinlengch"},"content":" private static final String DEFAULT_REMARK \u003d \"\";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"justinlengch"},"content":" private static final String DEFAULT_SUBJECT \u003d \"Math\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String DEFAULT_FEE_STATUS \u003d \"Paid.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" private static final LocalDate DEFAULT_DATE \u003d LocalDate.parse(\"10-05-2002\", Lesson.DATE_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"justinlengch"},"content":" private static final LocalTime DEFAULT_TIME \u003d LocalTime.parse(\"13:00\", Lesson.TIME_FORMATTER);","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" private static final Lesson DEFAULT_LESSON \u003d new Lesson(DEFAULT_SUBJECT, DEFAULT_DATE, DEFAULT_TIME);","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FeeStatus feeStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" private Subject subject;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" private List\u003cLesson\u003e lessons;","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"justinlengch"},"content":" private Remark remark;","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" * Creates a {@code StudentBuilder} with the default details.","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder() {","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" feeStatus \u003d new FeeStatus(DEFAULT_FEE_STATUS);","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" subject \u003d new Subject(DEFAULT_SUBJECT);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" lessons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" * Initializes the StudentBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder(Student personToCopy) {","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" feeStatus \u003d personToCopy.getFeeStatus();","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"justinlengch"},"content":" subject \u003d personToCopy.getSubject();","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" lessons \u003d personToCopy.getLessons();","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Name} of the {@code Student} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withName(String name) {","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"justinlengch"},"content":" * Parses the {@code lessons} into a {@code List\u003cLesson\u003e} and set it to the {@code Student} that we are building.","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withLessons(String... lessons) {","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"justinlengch"},"content":" this.lessons \u003d Arrays.stream(lessons)","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"justinlengch"},"content":" .map(JsonAdaptedLesson::parseJsonLesson)","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"justinlengch"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Address} of the {@code Student} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withAddress(String address) {","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Phone} of the {@code Student} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Email} of the {@code Student} that we are building.","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withEmail(String email) {","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Sets the {@code FeeStatus} of the {@code Student} that we are building.","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public StudentBuilder withFeeStatus(String feeStatus) {","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.feeStatus \u003d new FeeStatus(feeStatus);","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Remark} of the {@code Student} that being built.","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-22"},{"lineNumber":128,"author":{"gitId":"justinlengch"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"justinlengch"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"leepoeaik"},"content":" * Sets the {@code Subject} of the {@code Student} that being built.","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"justinlengch"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"leepoeaik"},"content":" public StudentBuilder withSubject(String subject) {","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"justinlengch"},"content":" this.subject \u003d new Subject(subject);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"justinlengch"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"justinlengch"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"justinlengch"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"leepoeaik"},"content":" public Student build() {","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return new Student(name, phone, email, address, subject, remark, feeStatus, lessons);","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"justinlengch":38,"leepoeaik":28,"-":77}},{"path":"src/test/java/seedu/address/testutil/StudentUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LESSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"justinlengch"},"content":"import java.util.List;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":13,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.logic.commands.EditCommand.EditStudentDescriptor;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Lesson;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"leepoeaik"},"content":" * A utility class for Student.","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"leepoeaik"},"content":"public class StudentUtil {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"leepoeaik"},"content":" * Returns an add command string for adding the {@code student}.","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" public static String getAddCommand(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"leepoeaik"},"content":" return AddCommand.COMMAND_WORD + \" \" + getStudentDetails(student);","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"leepoeaik"},"content":" * Returns the part of command string for the given {@code student}\u0027s details.","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"leepoeaik"},"content":" public static String getStudentDetails(Student student) {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_NAME + student.getName().fullName + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_PHONE + student.getPhone().value + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_EMAIL + student.getEmail().value + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_ADDRESS + student.getAddress().value + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"leepoeaik"},"content":" sb.append(PREFIX_SUBJECT + student.getSubject().value + \" \");","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" student.getLessons().stream().forEach(","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" s -\u003e sb.append(PREFIX_LESSON).append(s.getLessonValue()).append(\" \")","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" * Returns the part of command string for the given {@code EditStudentDescriptor}\u0027s details.","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"leepoeaik"},"content":" public static String getEditStudentDescriptorDetails(EditStudentDescriptor descriptor) {","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" descriptor.getSubject().ifPresent(subject -\u003e sb.append(PREFIX_SUBJECT).append(subject.value).append(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"justinlengch"},"content":" if (descriptor.getLessons().isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"justinlengch"},"content":" List\u003cLesson\u003e lessons \u003d descriptor.getLessons().get();","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" if (lessons.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"justinlengch"},"content":" sb.append(PREFIX_LESSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"justinlengch"},"content":" lessons.forEach(s -\u003e sb.append(PREFIX_LESSON).append(s.getLessonValue()).append(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"justinlengch":10,"leepoeaik":18,"-":37}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"leepoeaik"},"content":" * Returns the middle index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":39,"author":{"gitId":"leepoeaik"},"content":" return Index.fromOneBased(model.getFilteredStudentList().size() / 2);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"leepoeaik"},"content":" * Returns the last index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"leepoeaik"},"content":" return Index.fromOneBased(model.getFilteredStudentList().size());","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" * Returns the student in the {@code model}\u0027s student list at {@code index}.","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"leepoeaik"},"content":" public static Student getStudent(Model model, Index index) {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" return model.getFilteredStudentList().get(index.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"leepoeaik":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"leepoeaik"},"content":" public static final Index INDEX_FIRST_STUDENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"leepoeaik"},"content":" public static final Index INDEX_SECOND_STUDENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"leepoeaik"},"content":" public static final Index INDEX_THIRD_STUDENT \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"leepoeaik":3,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalStudents.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_AMY;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LESSON_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justinlengch"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SUBJECT_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"leepoeaik"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"leepoeaik"},"content":" * A utility class containing a list of {@code Student} objects to be used in tests.","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"leepoeaik"},"content":"public class TypicalStudents {","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"leepoeaik"},"content":" public static final Student ALICE \u003d new StudentBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Maths\")","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justinlengch"},"content":" .withRemark(\"She likes aardvarks.\")","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withFeeStatus(\"Paid.\")","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"justinlengch"},"content":" .withLessons(\"Maths|10-05-2004|12:29|1\", \"Physics|11-05-2004|12:29|0\")","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justinlengch"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"leepoeaik"},"content":" public static final Student BENSON \u003d new StudentBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Geography\")","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withFeeStatus(\"Paid.\")","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"justinlengch"},"content":" .withLessons(\"Geography|10-05-2004|12:29|1\")","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"justinlengch"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"leepoeaik"},"content":" public static final Student CARL \u003d new StudentBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"English\").withLessons(\"English|10-05-2004|12:29|0\")","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"leepoeaik"},"content":" public static final Student DANIEL \u003d new StudentBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"History\").withLessons(\"Geography|10-05-2004|12:29|0\")","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"justinlengch"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"leepoeaik"},"content":" public static final Student ELLE \u003d new StudentBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Psychology\").withLessons(\"Geography|10-05-2004|12:29|1\")","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":53,"author":{"gitId":"leepoeaik"},"content":" public static final Student FIONA \u003d new StudentBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"English\").withLessons(\"English|10-05-2004|12:29|0\")","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":56,"author":{"gitId":"leepoeaik"},"content":" public static final Student GEORGE \u003d new StudentBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Art\").withLessons(\"Art|10-05-2004|12:29|1\")","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":61,"author":{"gitId":"leepoeaik"},"content":" public static final Student HOON \u003d new StudentBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Music\").withLessons(\"Science|10-05-2004|12:29|1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":64,"author":{"gitId":"leepoeaik"},"content":" public static final Student IDA \u003d new StudentBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"justinlengch"},"content":" .withSubject(\"Dance\").withLessons(\"Maths|10-06-2004|12:29|0\")","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":68,"author":{"gitId":"leepoeaik"},"content":" // Manually added - Student\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"leepoeaik"},"content":" public static final Student AMY \u003d new StudentBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"justinlengch"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"justinlengch"},"content":" .withSubject(VALID_SUBJECT_AMY).withLessons(VALID_LESSON_AMY).build();","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"leepoeaik"},"content":" public static final Student BOB \u003d new StudentBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"justinlengch"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withLessons(VALID_LESSON_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"justinlengch"},"content":" .withSubject(VALID_SUBJECT_BOB).withRemark(VALID_REMARK_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":78,"author":{"gitId":"leepoeaik"},"content":" private TypicalStudents() {} // prevents instantiation","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"leepoeaik"},"content":" for (Student person : getTypicalStudents()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"leepoeaik"},"content":" ab.addStudent(person);","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":91,"author":{"gitId":"leepoeaik"},"content":" public static List\u003cStudent\u003e getTypicalStudents() {","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"justinlengch":24,"leepoeaik":19,"-":51}}] diff --git a/AY2324S2-CS2103T-T16-4_tp_master/commits.json b/AY2324S2-CS2103T-T16-4_tp_master/commits.json index 53cf03ce..68d03ff3 100644 --- a/AY2324S2-CS2103T-T16-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-T16-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"justinlengch":[{"date":"2024-03-07","commitResults":[{"hash":"52a74c389d5577d4f7953efa81f47d14e8273973","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-T16-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"59ef39f118ea2cf279eb0c8122038643d42c51fb","isMergeCommit":false,"messageTitle":"Edited markbind config files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e7d53b9b9062ec96f41c27cd75ef9570f405d14d","isMergeCommit":false,"messageTitle":"Added new Remark Command for tutorial","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":0}}},{"hash":"1c11cb9826319d7ce88bd8a58aeb75fc723f5bea","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ab4b73eba6c8c9f397b32ced5d38ba45960f878d","isMergeCommit":false,"messageTitle":"Added all funcitonaly for remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":176,"deletions":26},"test-code":{"insertions":6,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"88026b1e33dd5428fe6983edb1784732cf4d1328","isMergeCommit":false,"messageTitle":"fixed and passes all test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":33},"test-code":{"insertions":114,"deletions":14}}}]},{"date":"2024-03-12","commitResults":[{"hash":"48f797c7ef17a0b98e03350bc263f6cdda887fb9","isMergeCommit":true,"messageTitle":"Merge pull request #22 from HusseinSafwan02/updating-index.md","messageBody":"index.md: updating to reflect information about TutorTrack","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"87d088e4075648abbeda10927b88c2c4c613c45a","isMergeCommit":true,"messageTitle":"Merge pull request #28 from leepoeaik/update-aboutus","messageBody":"Add details in AboutUs","fileTypesAndContributionMap":{}},{"hash":"644ac02795619e2cecd1d3aa232ece45be1f1e2c","isMergeCommit":false,"messageTitle":"Updated AboutUs.md and added image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"4a2da069ed7675abb10f57b640836d8cf79b0c4e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b83af3b0b10d11ab107e15162c29e5d22de40263","isMergeCommit":true,"messageTitle":"Merge pull request #29 from justinlengch/documentation","messageBody":"Updated AboutUs.md and added photo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"f4fc4d8656bd3561dda28841e8087921af9e44fa","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Chiarena/About-us","messageBody":"About us added","fileTypesAndContributionMap":{}},{"hash":"85044d4e5db484950de4ecd579306c331b8109cc","isMergeCommit":false,"messageTitle":"Added target user profile, value propositions and rest of the user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":13}}},{"hash":"7307e4514545bf83aef52b238578a87cb6a9447e","isMergeCommit":true,"messageTitle":"Merge pull request #31 from justinlengch/documentation","messageBody":"Added target user profile, value propositions and rest of the user stories.","fileTypesAndContributionMap":{}},{"hash":"08e3d74d7a0c6315639f8b1ec4b051679c756367","isMergeCommit":false,"messageTitle":"Changed wordings in user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"9cf57192a2cd2d8461c34b53025bbe27f172e786","isMergeCommit":true,"messageTitle":"Merge pull request #34 from justinlengch/documentation","messageBody":"Changed wordings in user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"85ab92a8b222e47362b26dd3cedbef3a68f6ba03","isMergeCommit":false,"messageTitle":"Created Subject and Lesson class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":329,"deletions":15},"docs":{"insertions":27,"deletions":27},"test-code":{"insertions":49,"deletions":1}}},{"hash":"99ec1bf717a9ee3ac5688bcf0881a828da557378","isMergeCommit":false,"messageTitle":"Fixed checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"da52e1bfc639d90d81b6f0f55a7c93a3625ca192","isMergeCommit":true,"messageTitle":"Merge pull request #36 from leepoeaik/update-dg","messageBody":"Update non functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d0ba70e058b635c74bef1d6af8d13725563e6183","isMergeCommit":false,"messageTitle":"Added Lesson and Command classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":249,"deletions":266},"test-code":{"insertions":205,"deletions":219}}},{"hash":"282e9843830a82c4ce25ab736167219c1c9ffe8e","isMergeCommit":false,"messageTitle":"Fixed checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"1f5277db3131fa1893f4c47111469715b949cfd9","isMergeCommit":false,"messageTitle":"Added unit tests for Lesson and Subject classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":73},"test-code":{"insertions":120,"deletions":26}}},{"hash":"95ee409008ab53795aeae52aae7a53ec6d3b179e","isMergeCommit":false,"messageTitle":"Updated badges for Java CI and CodeCov for readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0eb34b17e08dc119f78c4b50a4c41c5f80b4b313","isMergeCommit":false,"messageTitle":"Added unit tests for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"b81adfb38d75255bb5311edceec0cd3ba2f61543","isMergeCommit":true,"messageTitle":"Merge pull request #41 from justinlengch/lesson-and-subject-classes","messageBody":"Added Lesson and Subject classes","fileTypesAndContributionMap":{}},{"hash":"32dd476d40daf6225ee2a24bb8f68f171659b0b1","isMergeCommit":false,"messageTitle":"Changed photo to .png format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2d58849a5e6b80a5a63f833fa437e6d832ab97e6","isMergeCommit":true,"messageTitle":"Merge pull request #45 from justinlengch/lesson-and-subject-classes","messageBody":"Changed photo to .png format","fileTypesAndContributionMap":{}},{"hash":"579f64893c3fcb7005bd9a9c4f3dd1d7be851c01","isMergeCommit":true,"messageTitle":"Merge pull request #47 from leepoeaik/update-UI","messageBody":"upload logo and change path","fileTypesAndContributionMap":{}},{"hash":"6a7f0cb0c47344df9828d85d1ed3d3898d4ac18d","isMergeCommit":false,"messageTitle":"Update UML diagram for BetterModelClassDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}}]},{"date":"2024-03-22","commitResults":[{"hash":"04049659e8f7fc145091fa05b79545fc8d42932a","isMergeCommit":false,"messageTitle":"Fix adding remark to a Student bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"095c9821f118369fb7e3a1719cc793442dd3fabb","isMergeCommit":true,"messageTitle":"Merge pull request #52 from leepoeaik/master","messageBody":"Fix minor bugs for producing jar","fileTypesAndContributionMap":{}},{"hash":"d719a28462c2d806561d875d4ccf278e22822f36","isMergeCommit":true,"messageTitle":"Merge pull request #53 from leepoeaik/update-personToStudent","messageBody":"Update person to student","fileTypesAndContributionMap":{}},{"hash":"909c570949a866ad9f6b7510ef29e08d2b8e13b5","isMergeCommit":false,"messageTitle":"Update Java CI badges and product website link in README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"c5097b45f84205c248575881ad099751927f4e05","isMergeCommit":true,"messageTitle":"Merge pull request #54 from justinlengch/master","messageBody":"Update Java CI badges and product website link in README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"81c4fec6216f04488970293309f0bb1197f8633b","isMergeCommit":false,"messageTitle":"Update lesson class to use arraylist, and add schedule lesson command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":387,"deletions":128},"test-code":{"insertions":100,"deletions":76}}},{"hash":"985b0261d5ccf2da73d181810c2335ad712886ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into updated-lesson-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5c1807f87b640795e141c01bc9c84fe273a3ff14","isMergeCommit":false,"messageTitle":"Sync branch to master and fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":15}}},{"hash":"716643129fa865efe0ee65313f345126edc056b5","isMergeCommit":true,"messageTitle":"Merge pull request #62 from justinlengch/updated-lesson-class","messageBody":"Update lesson class to use arraylist, and add schedule lesson command","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"b55a7aa10ee7ec7a1d79b9b3a95b1fe070a7a73b","isMergeCommit":true,"messageTitle":"Merge pull request #64 from leepoeaik/update-displayUpcomingLessons","messageBody":"Add display upcoming lesson function","fileTypesAndContributionMap":{}},{"hash":"38fa4bdf224157efd21315c2681e7008c36a6b1b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from leepoeaik/update-displayUpcomingLessons","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"139a7c19d4a26bf4b6aecf3c3a12b95c1686d485","isMergeCommit":false,"messageTitle":"Change MainWindow to update student and schedule list after each command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":10}}},{"hash":"67d05b6b4ce206f089e6e19999fa16fdaffb9da2","isMergeCommit":true,"messageTitle":"Merge pull request #67 from leepoeaik/master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"595c771fed77bfb1d6f6d837ad2cfe073cb9ab15","isMergeCommit":false,"messageTitle":"Add functionality to mark lesson as done for a specified student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":159,"deletions":7},"test-code":{"insertions":2,"deletions":2}}},{"hash":"b805baad72ff01a7f4f8a4fbd63ba0bda8ffa6a7","isMergeCommit":true,"messageTitle":"Merge pull request #69 from justinlengch/mark-lesson-done","messageBody":"Add functionality to mark lesson as done for a specified student","fileTypesAndContributionMap":{}},{"hash":"66b2d81c7c5ffbe5bdf9f0b0bfc738e06a8628ac","isMergeCommit":true,"messageTitle":"Merge pull request #70 from leepoeaik/master","messageBody":"Add select student to display lesson function","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"6a06391178ab7bb7054790be2e666312fc1e5760","isMergeCommit":true,"messageTitle":"Merge pull request #73 from AY2324S2-CS2103T-T16-4/leepoeaik-patch-1","messageBody":"Update build.gradle","fileTypesAndContributionMap":{}},{"hash":"a06b5653e7c0cd2197a41a0c5a58a64432c2eaa7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fee-status-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"520f1e9e9c03677c79f082ab54783c3ed84d14de","isMergeCommit":false,"messageTitle":"Update Student.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"74395bb80e0225a8a4aa56ce377093136d2d52ab","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"d2d2f76b322662d9ae7cdddf3f44f15721835dea","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":27,"deletions":26}}},{"hash":"195e86a53acb2e927fd8542aae227789c1bea20a","isMergeCommit":true,"messageTitle":"Merge pull request #74 from justinlengch/documentation","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"04000e201b8182c6771f45c6d75bdede8c8516f2","isMergeCommit":true,"messageTitle":"Merge pull request #75 from AY2324S2-CS2103T-T16-4/leepoeaik-patch-2","messageBody":"Update UserGuide.md","tags":["v1.3"],"fileTypesAndContributionMap":{}}]}],"Chiarena":[{"date":"2024-03-12","commitResults":[{"hash":"95a45ac4fb6612f4478da44ffba694c731c9f93b","isMergeCommit":true,"messageTitle":"Merge pull request #25 from HusseinSafwan02/updating-README.md","messageBody":"Updating README.md","fileTypesAndContributionMap":{}},{"hash":"ab869a9bd4ecce8ef23564c282dad344029c06cc","isMergeCommit":true,"messageTitle":"Merge pull request #26 from HusseinSafwan02/updating-user-stories","messageBody":"DeveloperGuide.md: updating to reflect user stories for TutorTrack","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"0d630d9f13601b581eaf3dd60fc0accd5b48deb2","isMergeCommit":false,"messageTitle":"About us added","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-21","commitResults":[{"hash":"e76609b5bdff2560d35c7314227508584baa7869","isMergeCommit":false,"messageTitle":"updated glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"071503035cf63bd96ee6139a2ef297e1957bbdf2","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Chiarena/updated-glossary","messageBody":"updated glossary","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"dafb1e6c97a32edb9b034c044afcc600bc838b6f","isMergeCommit":true,"messageTitle":"Merge pull request #55 from HusseinSafwan02/updating-use-cases","messageBody":"Updated use cases.","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"92f8489fe673592ac5b325ac5a9822a0512c5714","isMergeCommit":false,"messageTitle":"Updating-UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":14}}},{"hash":"b6da46ec738013d34eefff45ef3523830d85abad","isMergeCommit":false,"messageTitle":"updating userguide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]},{"date":"2024-04-05","commitResults":[{"hash":"92f9fe1712e26843d46707a615477b1a7eb953da","isMergeCommit":true,"messageTitle":"Merge pull request #72 from HusseinSafwan02/fee-status-feature","messageBody":"Fee status feature","fileTypesAndContributionMap":{}}]}],"HusseinSafwan02":[{"date":"2024-03-12","commitResults":[{"hash":"c61a5ecad76dc6abcf5a74b0ddf014fb60fc776f","isMergeCommit":false,"messageTitle":"index.md: updating to reflect information about TutorTrack","messageBody":"index.md currently reflects information about AddressBook.\n\nUpdating index.md ensures that it reflects the desired information about\nTutorTrack which can be referred to.\n\nLet\u0027s update the relevant information on index.md.\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"967497fbeed0f78ff127482df4a703ec4d7c51ca","isMergeCommit":false,"messageTitle":"README.md currently reflects information about AddressBook.","messageBody":"Updating README.md ensures that it reflects the desired information\nabout TutorTrack which can be referred to.\n\nLet\u0027s update the relevant information on README.md\n","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":8}}},{"hash":"1b1c2c0870238215723323f62870c10637c62a84","isMergeCommit":false,"messageTitle":"Missed out a small portion of README file.","messageBody":"Let\u0027s correct the overlooked portion.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5f340d5b583f5cf13ac2171e2b300127073f88fa","isMergeCommit":false,"messageTitle":"DeveloperGuide.md: updating to reflect user stories for TutorTrack","messageBody":"DeveloperGuide.md currently reflects user stories for AddressBook.\n\nUpdating DeveloperGuide.md ensures that it reflects the desired user\nstories for TutorTrack.\n\nLet\u0027s update the relevant user stories on DeveloperGuide.md.\n\nUser guides are important to identify features that TutorTrack requires.\n","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-21","commitResults":[{"hash":"fc917963f187bded867dc45c731715510c1a7ac3","isMergeCommit":true,"messageTitle":"Merge pull request #42 from justinlengch/documentation","messageBody":"Updated badges for Java CI and CodeCov for readme","fileTypesAndContributionMap":{}},{"hash":"65b29002fb219c355db7028056dc77d0619428d3","isMergeCommit":false,"messageTitle":"Updated AboutUs.md","messageBody":"AboutUs.md currently does not have information about all members.\n\nUpdated the file to include information about all members.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":12}}},{"hash":"9dfdc724b87ed1e545470ee201f8986af7961265","isMergeCommit":true,"messageTitle":"Merge pull request #43 from HusseinSafwan02/updating-AboutUs.md","messageBody":"Updated AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"4de09395d8ce0a0402c5da1f4eca6d5c57198404","isMergeCommit":true,"messageTitle":"Merge pull request #46 from leepoeaik/update-UI","messageBody":"Update UI to match mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"90fee84e127e1dee70919fbe70f87c0745b25656","isMergeCommit":false,"messageTitle":"Updated use cases.","messageBody":"Use cases are currently incomplete.\n\nUpdated use cases based on current functionalities.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":13}}}]},{"date":"2024-03-27","commitResults":[{"hash":"c579d875a90d922fdce8c2e1c02a0cbb85dd64a0","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Chiarena/UserGuide","messageBody":"updating User guide","tags":["v1.3.trial"],"fileTypesAndContributionMap":{}}]}],"leepoeaik":[{"date":"2024-03-14","commitResults":[{"hash":"4129aab57a48ea7429dfd3f06ae5edacd1f4609b","isMergeCommit":false,"messageTitle":"Add details in aboutus","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-20","commitResults":[{"hash":"5aaaf59d7ae6c4b1bcaf5159c91b620cbe6fb1ec","isMergeCommit":false,"messageTitle":"Update non functional requirement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"65afc551697fae76e4da2bb716d29b2d8473fd9e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a5255e50730dbffd9d7af7359acef1382dfd6e74","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"2f2a8470a0d99e3eef765e4102fd8cfb045ad441","isMergeCommit":false,"messageTitle":"Change UI into mockup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":186,"deletions":23}}},{"hash":"e3e38e6d2c3cfbcb12e31e4eed297c53ceccb163","isMergeCommit":false,"messageTitle":"revert changes to default dark theme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"67d794a48bd7f0f3f6e3a4bc5958bd89bd76cd03","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-UI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e1d667cbfbc620986a88ff6f1fcdb3a44b89865f","isMergeCommit":false,"messageTitle":"Make changes to ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":7}}},{"hash":"dae06c6022d1430352ba447cff8776fa3d58c233","isMergeCommit":false,"messageTitle":"Fix checkstyle issue:","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"401b0242c388635b07af9543ba2cbe581f720a0c","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"64ec5afe5299613a7c4f15a9d7c19548dd535b39","isMergeCommit":false,"messageTitle":"upload logo and change path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"11a71e1d2d12711ee70429b97448fef74500f403","isMergeCommit":false,"messageTitle":"fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"d1d77521360585c6a3c89c9cf7d5524e3df17729","isMergeCommit":true,"messageTitle":"Merge pull request #48 from justinlengch/documentation","messageBody":"Update UML diagram for BetterModelClassDiagram","fileTypesAndContributionMap":{}},{"hash":"f00153354a5cb8ecde49d1fbbd30ce2fc2a64157","isMergeCommit":false,"messageTitle":"Update UML diagram for ModelClassDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"4a49d28feb00274cc095429ade1b54471a9701cb","isMergeCommit":true,"messageTitle":"Merge pull request #49 from leepoeaik/update-UML","messageBody":"Update UML diagram for ModelClassDiagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9520f9d3818767f5b5111d449b949a4103f740e2","isMergeCommit":false,"messageTitle":"change person to student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":469,"deletions":469},"other":{"insertions":213,"deletions":213},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":368,"deletions":368}}},{"hash":"81bee3392f3eb8aeba3e1c90f185e4433b1ae42d","isMergeCommit":true,"messageTitle":"Merge pull request #51 from justinlengch/master","messageBody":"Fix adding remark to a Student bug","fileTypesAndContributionMap":{}},{"hash":"801b5e69dc7d04ff5daa2a3cc0e59f957d1ac14f","isMergeCommit":false,"messageTitle":"Fix minor bugs for producing jar","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"709bc7cb3c51ae802ba8230560a6e54fd318794f","isMergeCommit":false,"messageTitle":"change person to student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"test-code":{"insertions":76,"deletions":76}}},{"hash":"82bc34a3151c67d3f19f43769512e5abb0ad4640","isMergeCommit":false,"messageTitle":"Final changes and bug fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":18},"test-code":{"insertions":225,"deletions":218}}},{"hash":"12a57e3bf74e051f8b2c6a99bb59b2ffb0e3aa11","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"efcb580982670121dd487932aa805f0451ce059f","isMergeCommit":false,"messageTitle":"update lesson labels to not display when completed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"ff1347da81f98a565d6980b3c1a4dd3e2bf9eb1f","isMergeCommit":false,"messageTitle":"Fix codecov issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"6a47a65a79854547e7017d2bdf70eca8d2d6e371","isMergeCommit":false,"messageTitle":"Fix codecov issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":0}}},{"hash":"ece91b3ee2c8ea8c52d403cb296b378982a2e26d","isMergeCommit":false,"messageTitle":"Fix codecov issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"11e60568381d59210eb578ed0733bbe0802a4760","isMergeCommit":true,"messageTitle":"Merge pull request #56 from leepoeaik/master","messageBody":"update lesson labels to not display when completed","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"45480b8323c5fe75c1ead0cdff623b9ba470bb79","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":16}}}]},{"date":"2024-04-04","commitResults":[{"hash":"face80a60314ee59f59abac6bf02c2f38469f0e2","isMergeCommit":false,"messageTitle":"Add display upcoming lesson function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":215,"deletions":3}}},{"hash":"a612858084d7a5aa9fa3b4dfa5611110f807d951","isMergeCommit":false,"messageTitle":"Add javadoc for new method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"0498fb8205d557ece48ca3dc399375fb359a5d9d","isMergeCommit":true,"messageTitle":"Merge pull request #66 from justinlengch/updated-lesson-class","messageBody":"Change MainWindow to update student and schedule list after each command","fileTypesAndContributionMap":{}},{"hash":"2368e4f6c64abf649c85a60995a71bf949db40fe","isMergeCommit":false,"messageTitle":"Change UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":1}}},{"hash":"ca4196011ae8525608beee264ec62ec91e444465","isMergeCommit":false,"messageTitle":"Improve GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":78}}},{"hash":"48ab305838a7b0247e36faaf3c49e0a566a2ea23","isMergeCommit":false,"messageTitle":"Add select student to display lessons function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":13}}},{"hash":"dfb894c4f196db894b56adbc5b66e75941a2e889","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/leepoeaik/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"268285e3fc4ae8838308a8d58614a8c7818fcfea","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}}]},{"date":"2024-04-05","commitResults":[{"hash":"b3029d595bdbbb25dbc1666ac609a701cc0e552a","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":14}}},{"hash":"7f3ffa4c759630b6f6d48d8339f7c5f366ab45bf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into leepoeaik-patch-2","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"justinlengch":{"docs":72,"functional-code":1036,"test-code":427,"other":1},"Chiarena":{"docs":39,"functional-code":0,"test-code":0},"HusseinSafwan02":{"docs":29,"functional-code":0,"test-code":0},"leepoeaik":{"docs":62,"functional-code":1065,"test-code":745,"other":2}},"authorContributionVariance":{"justinlengch":49504.11,"Chiarena":93.88534,"HusseinSafwan02":56.817764,"leepoeaik":177189.53},"authorDisplayNameMap":{"justinlengch":"CS2103T-T16-4 JUST..HARN","Chiarena":"CS2103T-T16-4 CHIA..RENA","HusseinSafwan02":"CS2103T-T16-4 MUHA..SEIN","leepoeaik":"CS2103T-T16-4 LEE .. AIK"}} +{"authorDailyContributionsMap":{"justinlengch":[{"date":"2024-03-07","commitResults":[{"hash":"52a74c389d5577d4f7953efa81f47d14e8273973","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-T16-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"59ef39f118ea2cf279eb0c8122038643d42c51fb","isMergeCommit":false,"messageTitle":"Edited markbind config files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e7d53b9b9062ec96f41c27cd75ef9570f405d14d","isMergeCommit":false,"messageTitle":"Added new Remark Command for tutorial","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":0}}},{"hash":"1c11cb9826319d7ce88bd8a58aeb75fc723f5bea","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ab4b73eba6c8c9f397b32ced5d38ba45960f878d","isMergeCommit":false,"messageTitle":"Added all funcitonaly for remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":176,"deletions":26},"test-code":{"insertions":6,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"88026b1e33dd5428fe6983edb1784732cf4d1328","isMergeCommit":false,"messageTitle":"fixed and passes all test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":33},"test-code":{"insertions":114,"deletions":14}}}]},{"date":"2024-03-12","commitResults":[{"hash":"48f797c7ef17a0b98e03350bc263f6cdda887fb9","isMergeCommit":true,"messageTitle":"Merge pull request #22 from HusseinSafwan02/updating-index.md","messageBody":"index.md: updating to reflect information about TutorTrack","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"87d088e4075648abbeda10927b88c2c4c613c45a","isMergeCommit":true,"messageTitle":"Merge pull request #28 from leepoeaik/update-aboutus","messageBody":"Add details in AboutUs","fileTypesAndContributionMap":{}},{"hash":"644ac02795619e2cecd1d3aa232ece45be1f1e2c","isMergeCommit":false,"messageTitle":"Updated AboutUs.md and added image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"4a2da069ed7675abb10f57b640836d8cf79b0c4e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b83af3b0b10d11ab107e15162c29e5d22de40263","isMergeCommit":true,"messageTitle":"Merge pull request #29 from justinlengch/documentation","messageBody":"Updated AboutUs.md and added photo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"f4fc4d8656bd3561dda28841e8087921af9e44fa","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Chiarena/About-us","messageBody":"About us added","fileTypesAndContributionMap":{}},{"hash":"85044d4e5db484950de4ecd579306c331b8109cc","isMergeCommit":false,"messageTitle":"Added target user profile, value propositions and rest of the user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":13}}},{"hash":"7307e4514545bf83aef52b238578a87cb6a9447e","isMergeCommit":true,"messageTitle":"Merge pull request #31 from justinlengch/documentation","messageBody":"Added target user profile, value propositions and rest of the user stories.","fileTypesAndContributionMap":{}},{"hash":"08e3d74d7a0c6315639f8b1ec4b051679c756367","isMergeCommit":false,"messageTitle":"Changed wordings in user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"9cf57192a2cd2d8461c34b53025bbe27f172e786","isMergeCommit":true,"messageTitle":"Merge pull request #34 from justinlengch/documentation","messageBody":"Changed wordings in user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"85ab92a8b222e47362b26dd3cedbef3a68f6ba03","isMergeCommit":false,"messageTitle":"Created Subject and Lesson class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":329,"deletions":15},"docs":{"insertions":27,"deletions":27},"test-code":{"insertions":49,"deletions":1}}},{"hash":"99ec1bf717a9ee3ac5688bcf0881a828da557378","isMergeCommit":false,"messageTitle":"Fixed checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"da52e1bfc639d90d81b6f0f55a7c93a3625ca192","isMergeCommit":true,"messageTitle":"Merge pull request #36 from leepoeaik/update-dg","messageBody":"Update non functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d0ba70e058b635c74bef1d6af8d13725563e6183","isMergeCommit":false,"messageTitle":"Added Lesson and Command classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":249,"deletions":266},"test-code":{"insertions":205,"deletions":219}}},{"hash":"282e9843830a82c4ce25ab736167219c1c9ffe8e","isMergeCommit":false,"messageTitle":"Fixed checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"1f5277db3131fa1893f4c47111469715b949cfd9","isMergeCommit":false,"messageTitle":"Added unit tests for Lesson and Subject classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":73},"test-code":{"insertions":120,"deletions":26}}},{"hash":"95ee409008ab53795aeae52aae7a53ec6d3b179e","isMergeCommit":false,"messageTitle":"Updated badges for Java CI and CodeCov for readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0eb34b17e08dc119f78c4b50a4c41c5f80b4b313","isMergeCommit":false,"messageTitle":"Added unit tests for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"b81adfb38d75255bb5311edceec0cd3ba2f61543","isMergeCommit":true,"messageTitle":"Merge pull request #41 from justinlengch/lesson-and-subject-classes","messageBody":"Added Lesson and Subject classes","fileTypesAndContributionMap":{}},{"hash":"32dd476d40daf6225ee2a24bb8f68f171659b0b1","isMergeCommit":false,"messageTitle":"Changed photo to .png format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2d58849a5e6b80a5a63f833fa437e6d832ab97e6","isMergeCommit":true,"messageTitle":"Merge pull request #45 from justinlengch/lesson-and-subject-classes","messageBody":"Changed photo to .png format","fileTypesAndContributionMap":{}},{"hash":"579f64893c3fcb7005bd9a9c4f3dd1d7be851c01","isMergeCommit":true,"messageTitle":"Merge pull request #47 from leepoeaik/update-UI","messageBody":"upload logo and change path","fileTypesAndContributionMap":{}},{"hash":"6a7f0cb0c47344df9828d85d1ed3d3898d4ac18d","isMergeCommit":false,"messageTitle":"Update UML diagram for BetterModelClassDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}}]},{"date":"2024-03-22","commitResults":[{"hash":"04049659e8f7fc145091fa05b79545fc8d42932a","isMergeCommit":false,"messageTitle":"Fix adding remark to a Student bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"095c9821f118369fb7e3a1719cc793442dd3fabb","isMergeCommit":true,"messageTitle":"Merge pull request #52 from leepoeaik/master","messageBody":"Fix minor bugs for producing jar","fileTypesAndContributionMap":{}},{"hash":"d719a28462c2d806561d875d4ccf278e22822f36","isMergeCommit":true,"messageTitle":"Merge pull request #53 from leepoeaik/update-personToStudent","messageBody":"Update person to student","fileTypesAndContributionMap":{}},{"hash":"909c570949a866ad9f6b7510ef29e08d2b8e13b5","isMergeCommit":false,"messageTitle":"Update Java CI badges and product website link in README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"c5097b45f84205c248575881ad099751927f4e05","isMergeCommit":true,"messageTitle":"Merge pull request #54 from justinlengch/master","messageBody":"Update Java CI badges and product website link in README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"81c4fec6216f04488970293309f0bb1197f8633b","isMergeCommit":false,"messageTitle":"Update lesson class to use arraylist, and add schedule lesson command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":387,"deletions":128},"test-code":{"insertions":100,"deletions":76}}},{"hash":"985b0261d5ccf2da73d181810c2335ad712886ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into updated-lesson-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5c1807f87b640795e141c01bc9c84fe273a3ff14","isMergeCommit":false,"messageTitle":"Sync branch to master and fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":15}}},{"hash":"716643129fa865efe0ee65313f345126edc056b5","isMergeCommit":true,"messageTitle":"Merge pull request #62 from justinlengch/updated-lesson-class","messageBody":"Update lesson class to use arraylist, and add schedule lesson command","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"b55a7aa10ee7ec7a1d79b9b3a95b1fe070a7a73b","isMergeCommit":true,"messageTitle":"Merge pull request #64 from leepoeaik/update-displayUpcomingLessons","messageBody":"Add display upcoming lesson function","fileTypesAndContributionMap":{}},{"hash":"38fa4bdf224157efd21315c2681e7008c36a6b1b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from leepoeaik/update-displayUpcomingLessons","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"139a7c19d4a26bf4b6aecf3c3a12b95c1686d485","isMergeCommit":false,"messageTitle":"Change MainWindow to update student and schedule list after each command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":10}}},{"hash":"67d05b6b4ce206f089e6e19999fa16fdaffb9da2","isMergeCommit":true,"messageTitle":"Merge pull request #67 from leepoeaik/master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"595c771fed77bfb1d6f6d837ad2cfe073cb9ab15","isMergeCommit":false,"messageTitle":"Add functionality to mark lesson as done for a specified student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":159,"deletions":7},"test-code":{"insertions":2,"deletions":2}}},{"hash":"b805baad72ff01a7f4f8a4fbd63ba0bda8ffa6a7","isMergeCommit":true,"messageTitle":"Merge pull request #69 from justinlengch/mark-lesson-done","messageBody":"Add functionality to mark lesson as done for a specified student","fileTypesAndContributionMap":{}},{"hash":"66b2d81c7c5ffbe5bdf9f0b0bfc738e06a8628ac","isMergeCommit":true,"messageTitle":"Merge pull request #70 from leepoeaik/master","messageBody":"Add select student to display lesson function","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"6a06391178ab7bb7054790be2e666312fc1e5760","isMergeCommit":true,"messageTitle":"Merge pull request #73 from AY2324S2-CS2103T-T16-4/leepoeaik-patch-1","messageBody":"Update build.gradle","fileTypesAndContributionMap":{}},{"hash":"a06b5653e7c0cd2197a41a0c5a58a64432c2eaa7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fee-status-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"520f1e9e9c03677c79f082ab54783c3ed84d14de","isMergeCommit":false,"messageTitle":"Update Student.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"74395bb80e0225a8a4aa56ce377093136d2d52ab","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"d2d2f76b322662d9ae7cdddf3f44f15721835dea","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":27,"deletions":26}}},{"hash":"195e86a53acb2e927fd8542aae227789c1bea20a","isMergeCommit":true,"messageTitle":"Merge pull request #74 from justinlengch/documentation","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"04000e201b8182c6771f45c6d75bdede8c8516f2","isMergeCommit":true,"messageTitle":"Merge pull request #75 from AY2324S2-CS2103T-T16-4/leepoeaik-patch-2","messageBody":"Update UserGuide.md","tags":["v1.3"],"fileTypesAndContributionMap":{}},{"hash":"dc55e4839eec2956f7b427ec00e037f450cea30c","isMergeCommit":false,"messageTitle":"Edit userguide to reflect remark command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":1}}},{"hash":"6f13a37fdd290e35f45f706b00cab732d3e6e0b5","isMergeCommit":true,"messageTitle":"Merge pull request #78 from justinlengch/master","messageBody":"Edit userguide to reflect remark command","fileTypesAndContributionMap":{}}]}],"Chiarena":[{"date":"2024-03-12","commitResults":[{"hash":"95a45ac4fb6612f4478da44ffba694c731c9f93b","isMergeCommit":true,"messageTitle":"Merge pull request #25 from HusseinSafwan02/updating-README.md","messageBody":"Updating README.md","fileTypesAndContributionMap":{}},{"hash":"ab869a9bd4ecce8ef23564c282dad344029c06cc","isMergeCommit":true,"messageTitle":"Merge pull request #26 from HusseinSafwan02/updating-user-stories","messageBody":"DeveloperGuide.md: updating to reflect user stories for TutorTrack","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"0d630d9f13601b581eaf3dd60fc0accd5b48deb2","isMergeCommit":false,"messageTitle":"About us added","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-21","commitResults":[{"hash":"e76609b5bdff2560d35c7314227508584baa7869","isMergeCommit":false,"messageTitle":"updated glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"071503035cf63bd96ee6139a2ef297e1957bbdf2","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Chiarena/updated-glossary","messageBody":"updated glossary","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"dafb1e6c97a32edb9b034c044afcc600bc838b6f","isMergeCommit":true,"messageTitle":"Merge pull request #55 from HusseinSafwan02/updating-use-cases","messageBody":"Updated use cases.","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"92f8489fe673592ac5b325ac5a9822a0512c5714","isMergeCommit":false,"messageTitle":"Updating-UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":14}}},{"hash":"b6da46ec738013d34eefff45ef3523830d85abad","isMergeCommit":false,"messageTitle":"updating userguide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]},{"date":"2024-04-05","commitResults":[{"hash":"92f9fe1712e26843d46707a615477b1a7eb953da","isMergeCommit":true,"messageTitle":"Merge pull request #72 from HusseinSafwan02/fee-status-feature","messageBody":"Fee status feature","tags":["v1.3.1"],"fileTypesAndContributionMap":{}}]}],"HusseinSafwan02":[{"date":"2024-03-12","commitResults":[{"hash":"c61a5ecad76dc6abcf5a74b0ddf014fb60fc776f","isMergeCommit":false,"messageTitle":"index.md: updating to reflect information about TutorTrack","messageBody":"index.md currently reflects information about AddressBook.\n\nUpdating index.md ensures that it reflects the desired information about\nTutorTrack which can be referred to.\n\nLet\u0027s update the relevant information on index.md.\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"967497fbeed0f78ff127482df4a703ec4d7c51ca","isMergeCommit":false,"messageTitle":"README.md currently reflects information about AddressBook.","messageBody":"Updating README.md ensures that it reflects the desired information\nabout TutorTrack which can be referred to.\n\nLet\u0027s update the relevant information on README.md\n","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":8}}},{"hash":"1b1c2c0870238215723323f62870c10637c62a84","isMergeCommit":false,"messageTitle":"Missed out a small portion of README file.","messageBody":"Let\u0027s correct the overlooked portion.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5f340d5b583f5cf13ac2171e2b300127073f88fa","isMergeCommit":false,"messageTitle":"DeveloperGuide.md: updating to reflect user stories for TutorTrack","messageBody":"DeveloperGuide.md currently reflects user stories for AddressBook.\n\nUpdating DeveloperGuide.md ensures that it reflects the desired user\nstories for TutorTrack.\n\nLet\u0027s update the relevant user stories on DeveloperGuide.md.\n\nUser guides are important to identify features that TutorTrack requires.\n","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-21","commitResults":[{"hash":"fc917963f187bded867dc45c731715510c1a7ac3","isMergeCommit":true,"messageTitle":"Merge pull request #42 from justinlengch/documentation","messageBody":"Updated badges for Java CI and CodeCov for readme","fileTypesAndContributionMap":{}},{"hash":"65b29002fb219c355db7028056dc77d0619428d3","isMergeCommit":false,"messageTitle":"Updated AboutUs.md","messageBody":"AboutUs.md currently does not have information about all members.\n\nUpdated the file to include information about all members.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":12}}},{"hash":"9dfdc724b87ed1e545470ee201f8986af7961265","isMergeCommit":true,"messageTitle":"Merge pull request #43 from HusseinSafwan02/updating-AboutUs.md","messageBody":"Updated AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"4de09395d8ce0a0402c5da1f4eca6d5c57198404","isMergeCommit":true,"messageTitle":"Merge pull request #46 from leepoeaik/update-UI","messageBody":"Update UI to match mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"90fee84e127e1dee70919fbe70f87c0745b25656","isMergeCommit":false,"messageTitle":"Updated use cases.","messageBody":"Use cases are currently incomplete.\n\nUpdated use cases based on current functionalities.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":13}}}]},{"date":"2024-03-27","commitResults":[{"hash":"c579d875a90d922fdce8c2e1c02a0cbb85dd64a0","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Chiarena/UserGuide","messageBody":"updating User guide","tags":["v1.3.trial"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"e1eea6b0e69f50773dabd76e76df1c74525f0a35","isMergeCommit":true,"messageTitle":"Merge pull request #79 from HusseinSafwan02/update-user-guide","messageBody":"Updated user guide","fileTypesAndContributionMap":{}},{"hash":"016e2ea6caccaf6f01ab06fbbdbe6afc94850bbd","isMergeCommit":true,"messageTitle":"Merge pull request #80 from HusseinSafwan02/updating-developer-guide","messageBody":"Further updated use cases.","fileTypesAndContributionMap":{}}]}],"leepoeaik":[{"date":"2024-03-14","commitResults":[{"hash":"4129aab57a48ea7429dfd3f06ae5edacd1f4609b","isMergeCommit":false,"messageTitle":"Add details in aboutus","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-20","commitResults":[{"hash":"5aaaf59d7ae6c4b1bcaf5159c91b620cbe6fb1ec","isMergeCommit":false,"messageTitle":"Update non functional requirement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"65afc551697fae76e4da2bb716d29b2d8473fd9e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a5255e50730dbffd9d7af7359acef1382dfd6e74","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"2f2a8470a0d99e3eef765e4102fd8cfb045ad441","isMergeCommit":false,"messageTitle":"Change UI into mockup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":186,"deletions":23}}},{"hash":"e3e38e6d2c3cfbcb12e31e4eed297c53ceccb163","isMergeCommit":false,"messageTitle":"revert changes to default dark theme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"67d794a48bd7f0f3f6e3a4bc5958bd89bd76cd03","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-UI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e1d667cbfbc620986a88ff6f1fcdb3a44b89865f","isMergeCommit":false,"messageTitle":"Make changes to ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":7}}},{"hash":"dae06c6022d1430352ba447cff8776fa3d58c233","isMergeCommit":false,"messageTitle":"Fix checkstyle issue:","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"401b0242c388635b07af9543ba2cbe581f720a0c","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"64ec5afe5299613a7c4f15a9d7c19548dd535b39","isMergeCommit":false,"messageTitle":"upload logo and change path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"11a71e1d2d12711ee70429b97448fef74500f403","isMergeCommit":false,"messageTitle":"fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"d1d77521360585c6a3c89c9cf7d5524e3df17729","isMergeCommit":true,"messageTitle":"Merge pull request #48 from justinlengch/documentation","messageBody":"Update UML diagram for BetterModelClassDiagram","fileTypesAndContributionMap":{}},{"hash":"f00153354a5cb8ecde49d1fbbd30ce2fc2a64157","isMergeCommit":false,"messageTitle":"Update UML diagram for ModelClassDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"4a49d28feb00274cc095429ade1b54471a9701cb","isMergeCommit":true,"messageTitle":"Merge pull request #49 from leepoeaik/update-UML","messageBody":"Update UML diagram for ModelClassDiagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9520f9d3818767f5b5111d449b949a4103f740e2","isMergeCommit":false,"messageTitle":"change person to student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":469,"deletions":469},"other":{"insertions":213,"deletions":213},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":368,"deletions":368}}},{"hash":"81bee3392f3eb8aeba3e1c90f185e4433b1ae42d","isMergeCommit":true,"messageTitle":"Merge pull request #51 from justinlengch/master","messageBody":"Fix adding remark to a Student bug","fileTypesAndContributionMap":{}},{"hash":"801b5e69dc7d04ff5daa2a3cc0e59f957d1ac14f","isMergeCommit":false,"messageTitle":"Fix minor bugs for producing jar","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"709bc7cb3c51ae802ba8230560a6e54fd318794f","isMergeCommit":false,"messageTitle":"change person to student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"test-code":{"insertions":76,"deletions":76}}},{"hash":"82bc34a3151c67d3f19f43769512e5abb0ad4640","isMergeCommit":false,"messageTitle":"Final changes and bug fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":18},"test-code":{"insertions":225,"deletions":218}}},{"hash":"12a57e3bf74e051f8b2c6a99bb59b2ffb0e3aa11","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"efcb580982670121dd487932aa805f0451ce059f","isMergeCommit":false,"messageTitle":"update lesson labels to not display when completed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"ff1347da81f98a565d6980b3c1a4dd3e2bf9eb1f","isMergeCommit":false,"messageTitle":"Fix codecov issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"6a47a65a79854547e7017d2bdf70eca8d2d6e371","isMergeCommit":false,"messageTitle":"Fix codecov issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":6,"deletions":0}}},{"hash":"ece91b3ee2c8ea8c52d403cb296b378982a2e26d","isMergeCommit":false,"messageTitle":"Fix codecov issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"11e60568381d59210eb578ed0733bbe0802a4760","isMergeCommit":true,"messageTitle":"Merge pull request #56 from leepoeaik/master","messageBody":"update lesson labels to not display when completed","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"45480b8323c5fe75c1ead0cdff623b9ba470bb79","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":16}}}]},{"date":"2024-04-04","commitResults":[{"hash":"face80a60314ee59f59abac6bf02c2f38469f0e2","isMergeCommit":false,"messageTitle":"Add display upcoming lesson function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":215,"deletions":3}}},{"hash":"a612858084d7a5aa9fa3b4dfa5611110f807d951","isMergeCommit":false,"messageTitle":"Add javadoc for new method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"0498fb8205d557ece48ca3dc399375fb359a5d9d","isMergeCommit":true,"messageTitle":"Merge pull request #66 from justinlengch/updated-lesson-class","messageBody":"Change MainWindow to update student and schedule list after each command","fileTypesAndContributionMap":{}},{"hash":"2368e4f6c64abf649c85a60995a71bf949db40fe","isMergeCommit":false,"messageTitle":"Change UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":1}}},{"hash":"ca4196011ae8525608beee264ec62ec91e444465","isMergeCommit":false,"messageTitle":"Improve GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":78}}},{"hash":"48ab305838a7b0247e36faaf3c49e0a566a2ea23","isMergeCommit":false,"messageTitle":"Add select student to display lessons function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":13}}},{"hash":"dfb894c4f196db894b56adbc5b66e75941a2e889","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/leepoeaik/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"268285e3fc4ae8838308a8d58614a8c7818fcfea","isMergeCommit":false,"messageTitle":"Update build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}}]},{"date":"2024-04-05","commitResults":[{"hash":"b3029d595bdbbb25dbc1666ac609a701cc0e552a","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":14}}},{"hash":"7f3ffa4c759630b6f6d48d8339f7c5f366ab45bf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into leepoeaik-patch-2","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"justinlengch":{"docs":84,"functional-code":1036,"test-code":427,"other":1},"Chiarena":{"docs":39,"functional-code":0,"test-code":0},"HusseinSafwan02":{"docs":28,"functional-code":0,"test-code":0},"leepoeaik":{"docs":58,"functional-code":1065,"test-code":745,"other":2}},"authorContributionVariance":{"justinlengch":49500.984,"Chiarena":93.88534,"HusseinSafwan02":56.817764,"leepoeaik":177189.53},"authorDisplayNameMap":{"justinlengch":"CS2103T-T16-4 JUST..HARN","Chiarena":"CS2103T-T16-4 CHIA..RENA","HusseinSafwan02":"CS2103T-T16-4 MUHA..SEIN","leepoeaik":"CS2103T-T16-4 LEE .. AIK"}} diff --git a/AY2324S2-CS2103T-W09-1_tp_master/authorship.json b/AY2324S2-CS2103T-W09-1_tp_master/authorship.json index c54c3b9c..5f9a0cfd 100644 --- a/AY2324S2-CS2103T-W09-1_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W09-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-W09-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W09-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W09-1/tp/graph/badge.svg?token\u003dVTN6SDBFUZ)](https://codecov.io/gh/AY2324S2-CS2103T-W09-1/tp)","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"# HouseKeeping Hub","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"## Description","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"HouseKeeping Hub is a desktop app 💻, which aims to transform the management of client relationships within","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"housekeeping companies. Our system prioritises the storage and organisation of client and housekeeper contacts,","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"providing unmatched efficiency and convenience for customer service admin. 👌👌👌","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"## Usages","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"* Organising and managing client and housekeeper contact details for your housekeeping company with ease.","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"* A starting point of a Software Engineering course project (as opposed to writing everything from scratch).","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"## Documentation","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"For comprehensive details about HouseKeeping Hub, please refer to the website","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"[HouseKeeping Hub](https://ay2324s2-cs2103t-w09-1.github.io/tp/).","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"## Acknowledgements","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"gosongying":19,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":"run {","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":"run {","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" archiveBaseName \u003d \"HousekeepingHub\"","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" archiveVersion \u003d \"v1.3.1\"","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LimZiJia":11,"-":71}},{"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":"LimZiJia"},"content":"You can reach us at the email `e0960005@comp.nus.edu`","lastModifiedDate":"2024-03-06"},{"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":"LimZiJia"},"content":"### Lim Zi Jia","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"\u003cimg src\u003d\"images/limzijia.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"[[github](https://github.com/limzijia)]","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"* Role: Developer","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"* Responsibilities: Testing + logic","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"### Gerard Jeremiah Matthew","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"\u003cimg src\u003d\"images/gerardjm018.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":"[[github](https://github.com/GERARDJM018)]","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"* Responsibilities: Scheduling and Tracking + Model","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"### Go Song Ying","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":"\u003cimg src\u003d\"images/gosongying.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"[[github](https://github.com/gosongying)]","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":"* Responsibilities: Deliverables and deadlines + UI","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"### Huang Zhuoyan, Celeste","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":"\u003cimg src\u003d\"images/moguries.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"[[github](https://github.com/moguries)]","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"* Responsibilities: Code quality and Integration + Storage","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LimZiJia":8,"moguries":4,"gosongying":4,"-":29,"GERARDJM018":3}},{"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":"GERARDJM018"},"content":"Here are other sequence diagram to illustrate the interactions within the `Logic` component, taking `execute(\"list client\")` API call:","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"GERARDJM018"},"content":"![Interactions Inside the Logic Component for the `list client` Command](images/ListSequenceDiagram.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"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":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"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":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"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":131,"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":132,"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":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"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":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"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":150,"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":151,"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":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"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":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"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":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"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":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"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":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"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":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"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":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":214,"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":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"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":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"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":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"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":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"LimZiJia"},"content":"### \\[Proposed\\] Sorting cleints by predicted next cleaning date","lastModifiedDate":"2024-03-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"LimZiJia"},"content":"#### Proposed Implementation","lastModifiedDate":"2024-03-29"},{"lineNumber":250,"author":{"gitId":"LimZiJia"},"content":"We assume clients who do not have `HousekeepingDetails` do not want to be disturbed by the housekeeping company.","lastModifiedDate":"2024-03-29"},{"lineNumber":251,"author":{"gitId":"LimZiJia"},"content":"Therefore, the client list should be first filtered by `Client.hasHousekeepingDetais()` then sorted by `HousekeepingDetails`.","lastModifiedDate":"2024-03-29"},{"lineNumber":252,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":253,"author":{"gitId":"LimZiJia"},"content":"To do the sorting, the `Client` class now implements `Comparable\u003cClient\u003e` interface, and the `compareTo()` method is ","lastModifiedDate":"2024-03-29"},{"lineNumber":254,"author":{"gitId":"LimZiJia"},"content":"overridden to compare the `HousekeepingDetails` of two clients.","lastModifiedDate":"2024-03-29"},{"lineNumber":255,"author":{"gitId":"LimZiJia"},"content":"The `compareTo()` method calls the `HousekeepingDetails`\u0027s `compareTo()` method to if both clients have `HousekeepingDetails`.","lastModifiedDate":"2024-03-29"},{"lineNumber":256,"author":{"gitId":"LimZiJia"},"content":"The `compareTo()` method in `HousekeepingDetails` uses the `getNextHousekeepingDate()` method which is calculated by ","lastModifiedDate":"2024-03-29"},{"lineNumber":257,"author":{"gitId":"LimZiJia"},"content":"`lastHousekeepingDate.plus(preferredInterval)`. ","lastModifiedDate":"2024-03-29"},{"lineNumber":258,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"GERARDJM018"},"content":"### \\[Completed\\] Find using multiple attributes","lastModifiedDate":"2024-03-29"},{"lineNumber":260,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":261,"author":{"gitId":"GERARDJM018"},"content":"The Find feature has already been developed in AB3. However, it only searches the keywords given in the Name attribute.","lastModifiedDate":"2024-03-29"},{"lineNumber":262,"author":{"gitId":"GERARDJM018"},"content":"To increase the functionality of the feature, we plan to make it accept keywords for multiple attributes (address and","lastModifiedDate":"2024-03-29"},{"lineNumber":263,"author":{"gitId":"GERARDJM018"},"content":"area). This changes will also be used to fulfil one of our user stories (As an Operator, I can retrieve details from ","lastModifiedDate":"2024-03-29"},{"lineNumber":264,"author":{"gitId":"GERARDJM018"},"content":"specified contacts by their name or other criteria. So that I can save a lot of time to find specific clients and ","lastModifiedDate":"2024-03-29"},{"lineNumber":265,"author":{"gitId":"GERARDJM018"},"content":"housekeepers.) which is to increase the efficiency in finding specific Person. ","lastModifiedDate":"2024-03-29"},{"lineNumber":266,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":267,"author":{"gitId":"GERARDJM018"},"content":"#### How the feature is implemented","lastModifiedDate":"2024-03-29"},{"lineNumber":268,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":269,"author":{"gitId":"GERARDJM018"},"content":"The previous Find feature implementation use a predicate specifically for Name attribute ","lastModifiedDate":"2024-03-29"},{"lineNumber":270,"author":{"gitId":"GERARDJM018"},"content":"(NameContainsKeywordsPredicate). To make it able use multiple attributes, we create a new predicate that can be used for ","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"GERARDJM018"},"content":"Name, Address, and Area attributes (ContainsKeywordsPredicate). The new predicate can be used either with keywords for ","lastModifiedDate":"2024-03-29"},{"lineNumber":272,"author":{"gitId":"GERARDJM018"},"content":"one attribute or multiple attributes. It first checks, what attribute keywords are provided by the user. The attributes ","lastModifiedDate":"2024-03-29"},{"lineNumber":273,"author":{"gitId":"GERARDJM018"},"content":"that doesn\u0027t have keywords will automatically true. The attributes that have keywords will be checked using the give ","lastModifiedDate":"2024-03-29"},{"lineNumber":274,"author":{"gitId":"GERARDJM018"},"content":"keywords.","lastModifiedDate":"2024-03-29"},{"lineNumber":275,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":276,"author":{"gitId":"GERARDJM018"},"content":"Here is how the activity diagram looks like:","lastModifiedDate":"2024-03-29"},{"lineNumber":277,"author":{"gitId":"GERARDJM018"},"content":"![FindActivityDiagram](images/FindActivityDiagram.png)","lastModifiedDate":"2024-03-29"},{"lineNumber":278,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":279,"author":{"gitId":"GERARDJM018"},"content":"#### Why is it implemented this way","lastModifiedDate":"2024-03-29"},{"lineNumber":280,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":281,"author":{"gitId":"GERARDJM018"},"content":"The current implementation was chosen because it can handle multiple attributes at the same time. The other alternatives","lastModifiedDate":"2024-03-29"},{"lineNumber":282,"author":{"gitId":"GERARDJM018"},"content":"we considered can only handle one attribute at the same time or ineffective to makes it able to handle multiple","lastModifiedDate":"2024-03-29"},{"lineNumber":283,"author":{"gitId":"GERARDJM018"},"content":"attributes at the same time (needs multiple predicate and if-else statement consist of 9 conditions). Therefore, we ","lastModifiedDate":"2024-03-29"},{"lineNumber":284,"author":{"gitId":"GERARDJM018"},"content":"chose the current implementation as it more effective than the other alternatives.","lastModifiedDate":"2024-03-29"},{"lineNumber":285,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":286,"author":{"gitId":"GERARDJM018"},"content":"#### Alternatives considered","lastModifiedDate":"2024-03-29"},{"lineNumber":287,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":288,"author":{"gitId":"GERARDJM018"},"content":"##### Alternative 1","lastModifiedDate":"2024-03-29"},{"lineNumber":289,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":290,"author":{"gitId":"GERARDJM018"},"content":"Using multiple predicate for each attribute. This way, the Find feature can handle all the attributes. So, to use the","lastModifiedDate":"2024-03-29"},{"lineNumber":291,"author":{"gitId":"GERARDJM018"},"content":"Find feature, the user needs to give the attribute type of which the keywords will be checked. However, it can only ","lastModifiedDate":"2024-03-29"},{"lineNumber":292,"author":{"gitId":"GERARDJM018"},"content":"handle one attribute at the same time as each FindCommand can only use one predicate. It can be implemented to handle","lastModifiedDate":"2024-03-29"},{"lineNumber":293,"author":{"gitId":"GERARDJM018"},"content":"multiple attributes at the same time using chain test on multiple predicate. However, it is ineffective as it needs to","lastModifiedDate":"2024-03-29"},{"lineNumber":294,"author":{"gitId":"GERARDJM018"},"content":"check multiple situation (use 1 attribute, 2 attributes, or 3 attributes).","lastModifiedDate":"2024-03-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"gosongying"},"content":"### \\[Completed\\] Separate client and housekeeper list","lastModifiedDate":"2024-03-29"},{"lineNumber":297,"author":{"gitId":"gosongying"},"content":"In the previous iteration, both clients and housekeepers were consolidated into a single list, presenting them together.","lastModifiedDate":"2024-03-29"},{"lineNumber":298,"author":{"gitId":"gosongying"},"content":"However, this amalgamation didn\u0027t offer enhanced visualization or convenience for our intended users. Hence, we opted to ","lastModifiedDate":"2024-03-29"},{"lineNumber":299,"author":{"gitId":"gosongying"},"content":"segregate the client and housekeeper lists. This adjustment aims to streamline efficiency for our target users, ","lastModifiedDate":"2024-03-29"},{"lineNumber":300,"author":{"gitId":"gosongying"},"content":"specifically housekeeping company administrators, enabling easier access to clients and assignment of housekeepers.","lastModifiedDate":"2024-03-29"},{"lineNumber":301,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":302,"author":{"gitId":"gosongying"},"content":"#### How the feature is implemented","lastModifiedDate":"2024-03-29"},{"lineNumber":303,"author":{"gitId":"gosongying"},"content":"The `UniquePersonList` class has been transformed into a generic class. Within the `AddressBook` class, two distinct ","lastModifiedDate":"2024-03-29"},{"lineNumber":304,"author":{"gitId":"gosongying"},"content":"lists have been instantiated: one for clients and another for housekeepers. These lists store the respective entities, ","lastModifiedDate":"2024-03-29"},{"lineNumber":305,"author":{"gitId":"gosongying"},"content":"ensuring separation of concerns. Both the saving and loading functionalities now operate independently on these ","lastModifiedDate":"2024-03-29"},{"lineNumber":306,"author":{"gitId":"gosongying"},"content":"segregated lists.","lastModifiedDate":"2024-03-29"},{"lineNumber":307,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":308,"author":{"gitId":"gosongying"},"content":"#### Why is it implemented this way","lastModifiedDate":"2024-03-29"},{"lineNumber":309,"author":{"gitId":"gosongying"},"content":"This approach offers improvements in both efficiency and performance. By separating clients and housekeepers into ","lastModifiedDate":"2024-03-29"},{"lineNumber":310,"author":{"gitId":"gosongying"},"content":"distinct lists, interactions between these entities are minimized. This segregation enhances organization and simplifies","lastModifiedDate":"2024-03-29"},{"lineNumber":311,"author":{"gitId":"gosongying"},"content":"maintenance of the system, as each list can be managed independently without impacting the other.","lastModifiedDate":"2024-03-29"},{"lineNumber":312,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":313,"author":{"gitId":"gosongying"},"content":"#### Alternatives considered","lastModifiedDate":"2024-03-29"},{"lineNumber":314,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":315,"author":{"gitId":"gosongying"},"content":"##### Alternative 1","lastModifiedDate":"2024-03-29"},{"lineNumber":316,"author":{"gitId":"gosongying"},"content":"Store clients and housekeepers together in a single list on the hard disk, they are separated upon application startup. ","lastModifiedDate":"2024-03-29"},{"lineNumber":317,"author":{"gitId":"gosongying"},"content":"Although this method is functional, it introduces overhead by requiring filtering of the single list to achieve ","lastModifiedDate":"2024-03-29"},{"lineNumber":318,"author":{"gitId":"gosongying"},"content":"eparation, potentially impacting performance negatively. Furthermore, the code complexity increases as it must handle ","lastModifiedDate":"2024-03-29"},{"lineNumber":319,"author":{"gitId":"gosongying"},"content":"the filtering process, making maintenance more challenging.","lastModifiedDate":"2024-03-29"},{"lineNumber":320,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":321,"author":{"gitId":"gosongying"},"content":"### \\[Completed\\] Delete feature with Type","lastModifiedDate":"2024-03-29"},{"lineNumber":322,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":323,"author":{"gitId":"gosongying"},"content":"In the previous iteration, both clients and housekeepers were contained within a singular list, limiting the delete ","lastModifiedDate":"2024-03-29"},{"lineNumber":324,"author":{"gitId":"gosongying"},"content":"functionality to operate solely within this unified list. In the current iteration, we\u0027ve segregated these entities into ","lastModifiedDate":"2024-03-29"},{"lineNumber":325,"author":{"gitId":"gosongying"},"content":"distinct lists—one for clients and another for housekeepers. Consequently, we\u0027ve introduced an updated Delete feature ","lastModifiedDate":"2024-03-29"},{"lineNumber":326,"author":{"gitId":"gosongying"},"content":"capable of removing entries from either of these individual lists.","lastModifiedDate":"2024-03-29"},{"lineNumber":327,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":328,"author":{"gitId":"gosongying"},"content":"#### How the feature is implemented","lastModifiedDate":"2024-03-29"},{"lineNumber":329,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":330,"author":{"gitId":"gosongying"},"content":"Two subclasses, namely `DeleteClientCommand` and `DeleteHousekeeperCommand`, have been developed as subclasses of the ","lastModifiedDate":"2024-03-29"},{"lineNumber":331,"author":{"gitId":"gosongying"},"content":"abstract class `DeleteCommand`. Each subclass is designed to operate on its respective list. During parsing, the system ","lastModifiedDate":"2024-03-29"},{"lineNumber":332,"author":{"gitId":"gosongying"},"content":"now evaluates the type specified within the Delete command entered by the user. If the type is identified as \"client\", ","lastModifiedDate":"2024-03-29"},{"lineNumber":333,"author":{"gitId":"gosongying"},"content":"the parser returns a `DeleteClientCommand`, enabling deletion of the client identified by the index within the client ","lastModifiedDate":"2024-03-29"},{"lineNumber":334,"author":{"gitId":"gosongying"},"content":"list. Conversely, if the type is recognized as \"housekeeper\", a `DeleteHousekeeperCommand` is utilized to remove the ","lastModifiedDate":"2024-03-29"},{"lineNumber":335,"author":{"gitId":"gosongying"},"content":"housekeeper at the specified index within the housekeeper list.","lastModifiedDate":"2024-03-29"},{"lineNumber":336,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":337,"author":{"gitId":"gosongying"},"content":"Here is how the activity diagram looks like: \u003cbr\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":338,"author":{"gitId":"gosongying"},"content":"![DeleteActivityDiagram](images/DeleteActivityDiagram.png)","lastModifiedDate":"2024-03-29"},{"lineNumber":339,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":340,"author":{"gitId":"gosongying"},"content":"#### Why is it implemented this way","lastModifiedDate":"2024-03-29"},{"lineNumber":341,"author":{"gitId":"gosongying"},"content":"The existing implementation now employs two distinct subclasses: `DeleteClientCommand` and `DeleteHousekeeperCommand`, ","lastModifiedDate":"2024-03-29"},{"lineNumber":342,"author":{"gitId":"gosongying"},"content":"each tailored for deleting entries from their respective lists. By segregating these functionalities into separate ","lastModifiedDate":"2024-03-29"},{"lineNumber":343,"author":{"gitId":"gosongying"},"content":"classes, the code adheres more closely to object-oriented programming (OOP) principles, enhancing clarity and ","lastModifiedDate":"2024-03-29"},{"lineNumber":344,"author":{"gitId":"gosongying"},"content":"maintainability. This approach ensures that each command operates distinctly on its designated list, promoting a more ","lastModifiedDate":"2024-03-29"},{"lineNumber":345,"author":{"gitId":"gosongying"},"content":"organized and modular codebase.","lastModifiedDate":"2024-03-29"},{"lineNumber":346,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":347,"author":{"gitId":"gosongying"},"content":"#### Alternatives considered","lastModifiedDate":"2024-03-29"},{"lineNumber":348,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":349,"author":{"gitId":"gosongying"},"content":"##### Alternative 1","lastModifiedDate":"2024-03-29"},{"lineNumber":350,"author":{"gitId":"gosongying"},"content":"Introducing a new attribute, \"Type\", within the `DeleteCommand` class may effectively accomplish the task at hand; ","lastModifiedDate":"2024-03-29"},{"lineNumber":351,"author":{"gitId":"gosongying"},"content":"however, it also brings the drawback of potentially increasing the number of conditional statements, which could degrade ","lastModifiedDate":"2024-03-29"},{"lineNumber":352,"author":{"gitId":"gosongying"},"content":"readability and maintainability. Moreover, the internal nature of the \"Type\" attribute might obscure its purpose to ","lastModifiedDate":"2024-03-29"},{"lineNumber":353,"author":{"gitId":"gosongying"},"content":"developers, leading to confusion.","lastModifiedDate":"2024-03-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":359,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":360,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":361,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":362,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"LimZiJia"},"content":"* is a busy operator of a housekeeping company","lastModifiedDate":"2024-03-06"},{"lineNumber":373,"author":{"gitId":"LimZiJia"},"content":"* makes and receives calls to clients/housekeepers","lastModifiedDate":"2024-03-06"},{"lineNumber":374,"author":{"gitId":"LimZiJia"},"content":"* is responsible for managing a team of housekeepers","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":378,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"LimZiJia"},"content":"* works alone","lastModifiedDate":"2024-03-06"},{"lineNumber":380,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":381,"author":{"gitId":"LimZiJia"},"content":"**Value proposition**: HouseKeeping Hub is designed to revolutionise the way housekeeping companies manage their client relationships. By focusing on storing and organising client and housekeeper contacts, our system offers unparalleled efficiency and convenience for housekeeping customer service admins, leading to improved service delivery and customer satisfaction.","lastModifiedDate":"2024-03-06"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"LimZiJia"},"content":"| Priority | As a/an …​ | I can …​ | So that …​ |","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"LimZiJia"},"content":"|----------|-------------------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"LimZiJia"},"content":"| `* * *` | operator | view the list of contacts | I can manage calling them if I have to. |","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"LimZiJia"},"content":"| `* * *` | operator | load contacts from a saved file | I can maintain my contact list. |","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"LimZiJia"},"content":"| `* * *` | operator | add/save the details of a new client/housekeeper | I can keep track of the list of the client/housekeeper. |","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"LimZiJia"},"content":"| `* * *` | operator | remove the contact of clients/housekeepers by some criteria | I can maintain a up-to-date and organised contact list. |","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | update a client/housekeeper\u0027s information | I will not get details wrong even if they change. |","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | remove the whole contact list with one click | I can remove all dummy data that I have added for trial. |","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | retrieve details from specified contacts by their name or other criteria | I can save a lot of time to find specific clients and housekeepers. |","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | check if clients that want a cleaning | I can provide timely housekeeping services and get more revenue for the business. |","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"LimZiJia"},"content":"| `* *` | careless operator | undo any accidental deletion or change made to the contact list | I will not mess the contact list up. |","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | check the preferred housekeeper and their availability | I can inform the client whether the service could be operated or no. |","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | retrieve details of a scheduled service | I can rectify on the ground situations. |","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | check if a housekeeper is available | I can schedule for cleaning in emergency scenarios. |","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"LimZiJia"},"content":"| `* *` | fast-typing operator | quickly type CLI commands | I can perform my task efficiently. |","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"LimZiJia"},"content":"| `* *` | novice operator | use the easy-to-remember and well defined commands | I can adapt to the role of the operator quickly. |","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | access to the contact list from different devices or platforms | I can manage the contact list on-the-go. |","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"LimZiJia"},"content":"| `* *` | novice operator | query for a help list of commands and how to use them | I can learn the functionalities of the app quickly. |","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"LimZiJia"},"content":"| `* *` | impatient operator | the command to response quickly | I can finish my job fast. |","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | diffrentiate between the clients and housekeeper data | I will not be confused by the data. |","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"LimZiJia"},"content":"| `* *` | large company operator | to be able to save more than 1000 client\u0027s data/contact | I can list all the company\u0027s client. |","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | the company clients\u0027 data safe | the clients can feel assured to give us their data. |","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"LimZiJia"},"content":"| `* *` | not tech savvy operator | the program to be easy to use | I don\u0027t need extra time to study how to use the program. |","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | search and retrieve information quickly | I can relay information in real time. |","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | Save housekeeping session details | I can prove a housekeeper has done the job. |","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | sort the contact list by days to next preferred cleaning date | I can remind clients to book their next service soon. |","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | sort the contact list by some parameters | I can have a better visualisation of the data. |","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | filter for housekeepers from some parameters | it is easier for me to schedule appointments. |","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"LimZiJia"},"content":"| `*` | forgetful operator | add tags to contacts | I can make notes on what I want to do with the contact. |","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"LimZiJia"},"content":"| `*` | operator | import a contact list from an external file | I can easily transform existing contact information from other sources. |","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"LimZiJia"},"content":"| `*` | Anxious Operator | the program to have auto-save function | I can feel assured if anything happen to my device. |","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"LimZiJia"},"content":"| `*` | Expert CLI user | Define my own command aliases | I can better optimise the speed of my work. |","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"LimZiJia"},"content":"| `*` | operator | Add multiple of each action at once | I can improve my work flow. |","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"LimZiJia"},"content":"| `*` | operator | group clients/housekeepers by certain features (area) | I can organise the data better and make better client-housekeeper matches. |","lastModifiedDate":"2024-03-06"},{"lineNumber":423,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"moguries"},"content":"(For all use cases below, the **System** is the `HouseKeeping Hub` and the **Actor** is the `operator`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"moguries"},"content":"Preconditions: Operator is logged in.","lastModifiedDate":"2024-03-07"},{"lineNumber":431,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":432,"author":{"gitId":"moguries"},"content":"**Use case: UC01 - List clients**","lastModifiedDate":"2024-03-07"},{"lineNumber":433,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":434,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":436,"author":{"gitId":"moguries"},"content":"1. Operator requests to list clients","lastModifiedDate":"2024-03-07"},{"lineNumber":437,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub shows the list of clients","lastModifiedDate":"2024-03-07"},{"lineNumber":438,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":439,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":440,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":441,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":442,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"moguries"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":444,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":445,"author":{"gitId":"moguries"},"content":" * 2a1. HouseKeeping Hub shows a message that the list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":446,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":447,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":448,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":449,"author":{"gitId":"moguries"},"content":"**Use case: UC02 - List housekeepers**","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":451,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":452,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":453,"author":{"gitId":"moguries"},"content":"1. Operator requests to list housekeepers","lastModifiedDate":"2024-03-07"},{"lineNumber":454,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub shows the list of housekeepers","lastModifiedDate":"2024-03-07"},{"lineNumber":455,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":456,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":457,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":458,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":459,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":460,"author":{"gitId":"moguries"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":461,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":462,"author":{"gitId":"moguries"},"content":" * 2a1. HouseKeeping Hub shows a message that the list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":463,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":464,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":465,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":466,"author":{"gitId":"moguries"},"content":"**Use case: UC03 - Add client**","lastModifiedDate":"2024-03-07"},{"lineNumber":467,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":468,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":469,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":470,"author":{"gitId":"moguries"},"content":"1. Operator requests to add a client","lastModifiedDate":"2024-03-07"},{"lineNumber":471,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub adds the client","lastModifiedDate":"2024-03-07"},{"lineNumber":472,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":473,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":474,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":475,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":476,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":477,"author":{"gitId":"moguries"},"content":"* 1a. An [/argument] is spelled incorrectly.","lastModifiedDate":"2024-03-07"},{"lineNumber":478,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":479,"author":{"gitId":"moguries"},"content":" * 1a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":480,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":481,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":482,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":483,"author":{"gitId":"moguries"},"content":"* 1a. A given argument is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":484,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":485,"author":{"gitId":"moguries"},"content":" * 1a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":486,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":487,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":488,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":489,"author":{"gitId":"moguries"},"content":"**Use case: UC04 - Add housekeeper**","lastModifiedDate":"2024-03-07"},{"lineNumber":490,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":491,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":492,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":493,"author":{"gitId":"moguries"},"content":"1. Operator requests to add a housekeeper","lastModifiedDate":"2024-03-07"},{"lineNumber":494,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub adds the housekeeper","lastModifiedDate":"2024-03-07"},{"lineNumber":495,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":496,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":497,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":498,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":499,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":500,"author":{"gitId":"moguries"},"content":"* 1a. An [/argument] is spelled incorrectly.","lastModifiedDate":"2024-03-07"},{"lineNumber":501,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":502,"author":{"gitId":"moguries"},"content":" * 1a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":503,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":504,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":505,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":506,"author":{"gitId":"moguries"},"content":"* 1a. A given argument is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":508,"author":{"gitId":"moguries"},"content":" * 1a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":509,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":510,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":511,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":512,"author":{"gitId":"moguries"},"content":"**Use case: UC05 - Delete client**","lastModifiedDate":"2024-03-07"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"moguries"},"content":"1. Operator requests to list clients","lastModifiedDate":"2024-03-07"},{"lineNumber":517,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub shows the list of clients","lastModifiedDate":"2024-03-07"},{"lineNumber":518,"author":{"gitId":"moguries"},"content":"3. Operator requests to delete a specific client in the list","lastModifiedDate":"2024-03-07"},{"lineNumber":519,"author":{"gitId":"moguries"},"content":"4. HouseKeeping Hub deletes the client","lastModifiedDate":"2024-03-07"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"moguries"},"content":" * 3a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"moguries"},"content":"**Use case: UC06 - Delete housekeeper**","lastModifiedDate":"2024-03-07"},{"lineNumber":536,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":537,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":538,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":539,"author":{"gitId":"moguries"},"content":"1. Operator requests to list housekeepers","lastModifiedDate":"2024-03-07"},{"lineNumber":540,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub shows the list of housekeepers","lastModifiedDate":"2024-03-07"},{"lineNumber":541,"author":{"gitId":"moguries"},"content":"3. Operator requests to delete a specific housekeeper in the list","lastModifiedDate":"2024-03-07"},{"lineNumber":542,"author":{"gitId":"moguries"},"content":"4. HouseKeeping Hub deletes the housekeeper","lastModifiedDate":"2024-03-07"},{"lineNumber":543,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":544,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":545,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":546,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":547,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":548,"author":{"gitId":"moguries"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":549,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":550,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":551,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":552,"author":{"gitId":"moguries"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":553,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":554,"author":{"gitId":"moguries"},"content":" * 3a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":555,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":556,"author":{"gitId":"moguries"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"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":561,"author":{"gitId":"GERARDJM018"},"content":"2. Should be able to hold up to 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":562,"author":{"gitId":"GERARDJM018"},"content":"3. A user not familiar with CLI but has an 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-07"},{"lineNumber":563,"author":{"gitId":"GERARDJM018"},"content":"4. All user operations should completed within 3 seconds.","lastModifiedDate":"2024-03-07"},{"lineNumber":564,"author":{"gitId":"GERARDJM018"},"content":"5. Should lose no more than 2 user operations worth of work in case of system crash.","lastModifiedDate":"2024-03-07"},{"lineNumber":565,"author":{"gitId":"GERARDJM018"},"content":"6. Should not take memory more than 200 MB while in operation.","lastModifiedDate":"2024-03-07"},{"lineNumber":566,"author":{"gitId":"GERARDJM018"},"content":"7. Will not use a DataBase Management System e.g., MySQL, and PostgreSQL to store data. And hence, will use flat file as a storage.","lastModifiedDate":"2024-03-07"},{"lineNumber":567,"author":{"gitId":"GERARDJM018"},"content":"8. Should be portable (able to work without requiring an installer).","lastModifiedDate":"2024-03-07"},{"lineNumber":568,"author":{"gitId":"GERARDJM018"},"content":"9. Should not use or depend on a remote server.","lastModifiedDate":"2024-03-07"},{"lineNumber":569,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":574,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"LimZiJia"},"content":"* **CLI**: Short for Command Line Interface. User\u0027s of our application mainly interact with our program by typing commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":582,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":583,"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":584,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":586,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":588,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":594,"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":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"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":599,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":600,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":601,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":603,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":605,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":607,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":609,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":610,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":611,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":612,"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":613,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":614,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":615,"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":616,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":617,"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":618,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":620,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":622,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":624,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":625,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":626,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":627,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":628,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LimZiJia":53,"moguries":110,"gosongying":58,"-":358,"GERARDJM018":49}},{"path":"docs/UserGuide.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":"moguries"},"content":"title: Housekeeping Hub User Guide","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"Welcome to HouseKeeping Hub, the premier **desktop solution for managing client and housekeeper contacts**. ","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"Combining the **efficiency of a Command Line Interface ([CLI](#cli)) with the convenience of a Graphical User Interface ([GUI](#gui))**,","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"HouseKeeping Hub offers unparalleled speed and ease of use. Whether you\u0027re a typist or a clicker, ","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"HouseKeeping Hub ensures swift completion of all your contact management tasks. ","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"Bid farewell to the sluggishness of traditional GUI apps - with HouseKeeping Hub, managing your contacts has never been faster or simpler.","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"## Table of Contents","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"## Purpose of this guide","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"This guide has been created to help you understand and utilize the features and functionalities of our software","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" effectively. Whether you\u0027re a new user who is not familiar with command line interface or an expert looking to enhance ","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":"your skills, this guide aims to provide you with the information you need to make the most of our product. In this guide ","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"you will find a quick start (guide to install and start using our product), a list of features and how to use them, and ","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":"a glossary to help you understand some jargon. This guide is designed to provide you with clear and concise instructions ","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"and a reader-friendly format to enhance your experience in using our product.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"## How to use this guide:question:","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":"Let\u0027s get started! Here\u0027s a rundown of every section in this guide:","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"If you have yet to install Housekeeping Hub, you can refer to the [installation instructions](#installation).","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":"After installing the application, you can start off by following our [tutorial](#tutorial) to familiarise yourself","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"with the basic features of the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":"The [features](#features) section provides the detailed overview of each command, command formats and examples.","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"If you\u0027d like a quick reference of all available commands, check out the [command summary](#command-summary).","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"You can head over to the [Frequently Asked Questions](#faq) section to view answers to common queries regarding the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":"Finally, we have the [glossary](#glossary) section to clarify any technical jargon used.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"Now you have successfully mastered how to use this guide! One last thing: learn how to **navigate the guide**","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":"in the section below.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":"## Navigating our guide :mag:","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":"Words highlighted in blue in our guide can direct you to a specific section in our guide ([FAQ](#faq)), ","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":"an external link ([download link](https://github.com/AY2324S2-CS2103T-W09-1/tp/releases)), or to an explanation of a term in the glossary ([CLI](#cli)).","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":"There will be [:arrow_up_small:](#table-of-contents) links, which you can click on to return to the table of contents.","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"LimZiJia"},"content":"## Installation :computer:","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"installation\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":"1. Download the latest `HousekeepingHub-v1.3.1.jar` from [here](https://github.com/AY2324S2-CS2103T-W09-1/tp/releases).","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your HouseKeeping Hub.","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":"1. Open a [command terminal](#terminal), and type in `cd` to navigate into the folder you placed the [jar](#jar) file in.","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":"1. Type in `java -jar HousekeepingHub-v1.3.1.jar` to run the application.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"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":77,"author":{"gitId":"gosongying"},"content":" ![Ui](./images/Ui.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":"## Tutorial","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"tutorial\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"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":87,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" * `list client` : Lists all client contacts.","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" * `add housekeeper n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 ar/west` : Adds a housekeeper named `John Doe`.","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" * `delete client 3` : Deletes the 3rd contact shown in the last shown list.","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"features\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"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":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"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":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"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":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"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":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"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":125,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":127,"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":128,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":"![help message](./images/helpMessage.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"LimZiJia"},"content":"Adds a client or housekeeper to Housekeeping Hub.","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"LimZiJia"},"content":"Format: `add TYPE n/NAME e/EMAIL p/PHONE_NUMBER a/ADDRESS ar/AREA [d/DETAILS] [t/TAG]…​`","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"LimZiJia"},"content":"Notes: ","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"LimZiJia"},"content":"* `TYPE` can be either \u0027client\u0027 or \u0027housekeeper\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"GERARDJM018"},"content":"* `AREA` can be either \u0027east\u0027, \u0027southeast\u0027, \u0027south\u0027, \u0027southwest\u0027, \u0027west\u0027, \u0027northwest\u0027, \u0027north\u0027, or \u0027northeast\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"LimZiJia"},"content":"* `DETAILS` is optional and refers to the housekeeping details for CLIENT ONLY. It is not applicable for housekeepers.","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"LimZiJia"},"content":"The format for `DETAILS` is `d/yyyy-MM-dd NUMBER INTERVAL` where `yyyy-MM-dd` is the date of the last","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"LimZiJia"},"content":"housekeeping, `NUMBER` is the quantity of `INTERVAL`(s) which can be ***\u0027days\u0027, \u0027weeks\u0027, \u0027months\u0027 or \u0027years\u0027.***","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-04"},{"lineNumber":164,"author":{"gitId":"LimZiJia"},"content":"Housekeeping details of the client can be modified using the `booking` command. Without housekeeping details,","lastModifiedDate":"2024-04-04"},{"lineNumber":165,"author":{"gitId":"LimZiJia"},"content":"the customer is assumed to not want notifications for housekeeping. Therefore, `leads` will not include clients without housekeeping details.","lastModifiedDate":"2024-04-04"},{"lineNumber":166,"author":{"gitId":"LimZiJia"},"content":"To set or remove housekeeping details after initiation, refer to `set` and `remove` under `booking` below.","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":168,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"GERARDJM018"},"content":"* `add client n/Elon e/elon@gmail.com p/088888888 a/Elon Street, Block 123, 101010 Singapore ar/west`","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":"* `add housekeeper n/Betsy Crowe p/441234567 e/betsycrowe@example.com a/Newgate Prison t/criminal t/famous ar/south`","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":"Shows a list of all persons with the given type in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":"Format: `list TYPE`","lastModifiedDate":"2024-03-15"},{"lineNumber":182,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":183,"author":{"gitId":"LimZiJia"},"content":"Notes: ","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"LimZiJia"},"content":"* `TYPE` can only be either \u0027client\u0027 or \u0027housekeeper\u0027","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":186,"author":{"gitId":"GERARDJM018"},"content":"Example:","lastModifiedDate":"2024-03-15"},{"lineNumber":187,"author":{"gitId":"GERARDJM018"},"content":"* `list client`","lastModifiedDate":"2024-03-15"},{"lineNumber":188,"author":{"gitId":"GERARDJM018"},"content":"* `list housekeeper`","lastModifiedDate":"2024-03-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":194,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"moguries"},"content":"Deletes the specified client or housekeeper from the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"LimZiJia"},"content":"Format: `delete TYPE INDEX`","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":200,"author":{"gitId":"GERARDJM018"},"content":"Notes:","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":"* `TYPE` can be either \u0027client\u0027 or \u0027housekeeper\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"moguries"},"content":"* Deletes the client or housekeeper at the specified `INDEX`.","lastModifiedDate":"2024-03-15"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":"* The index refers to the index number shown in the displayed list.","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"LimZiJia"},"content":"The index to delete will work for any displayed list. i.e. What you see is what you get.","lastModifiedDate":"2024-04-04"},{"lineNumber":208,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"moguries"},"content":"* `list client` followed by `delete client 2` deletes the 2nd person in the client list.","lastModifiedDate":"2024-03-15"},{"lineNumber":212,"author":{"gitId":"moguries"},"content":"* `list housekeeper` followed by `delete housekeeper 1` deletes the 1st person in the housekeeper list.","lastModifiedDate":"2024-03-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":216,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2024-04-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":"Format: `edit TYPE INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [ar/AREA] [t/TAG]…​`","lastModifiedDate":"2024-04-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"GERARDJM018"},"content":"Notes:","lastModifiedDate":"2024-04-04"},{"lineNumber":224,"author":{"gitId":"GERARDJM018"},"content":"* `TYPE` can be either \u0027client\u0027 or \u0027housekeeper\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"GERARDJM018"},"content":"* `AREA` can be either \u0027east\u0027, \u0027southeast\u0027, \u0027south\u0027, \u0027southwest\u0027, \u0027west\u0027, \u0027northwest\u0027, \u0027north\u0027, or \u0027northeast\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2024-04-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2024-04-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-04-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"GERARDJM018"},"content":" specifying any tags after it.","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":234,"author":{"gitId":"GERARDJM018"},"content":"* `edit client 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st client to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-04-04"},{"lineNumber":235,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":236,"author":{"gitId":"GERARDJM018"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":237,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":238,"author":{"gitId":"GERARDJM018"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"GERARDJM018"},"content":"### Locating persons by keywords: `find`","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"GERARDJM018"},"content":"Finds client or housekeeper whose names, address, or area contain any of the given keywords.","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":244,"author":{"gitId":"GERARDJM018"},"content":"Format: `find TYPE n/KEYWORD [MORE_KEYWORDS] ar/KEYWORD [MORE_KEYWORDS] a/KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-04-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":246,"author":{"gitId":"GERARDJM018"},"content":"Notes:","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"GERARDJM018"},"content":"* `TYPE` can be either \u0027client\u0027 or \u0027housekeeper\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"GERARDJM018"},"content":"* `AREA` can be either \u0027east\u0027, \u0027southeast\u0027, \u0027south\u0027, \u0027southwest\u0027, \u0027west\u0027, \u0027northwest\u0027, \u0027north\u0027, or \u0027northeast\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"GERARDJM018"},"content":"* `find client n/John` returns `john` and `John Doe`","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"GERARDJM018"},"content":"* `find housekeeper n/alex david ar/west` returns housekeeper which name is alex or david and cover the service of west area\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"GERARDJM018"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"GERARDJM018"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"LimZiJia"},"content":"### Getting client call list: `leads`","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"LimZiJia"},"content":"Generates a list of leads by sorting the clients based on the predicted next time of housekeeping. ","lastModifiedDate":"2024-04-05"},{"lineNumber":266,"author":{"gitId":"LimZiJia"},"content":"Clients with predicted next housekeeping date which is in the future will not be included.","lastModifiedDate":"2024-04-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"LimZiJia"},"content":"Format: `leads`","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"LimZiJia"},"content":"The leads are sorted with the client with the earliest predicted next housekeeping date at the top. Housekeeping details are optional so clients without housekeeping details will not be included in the leads.","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":276,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":277,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":278,"author":{"gitId":"LimZiJia"},"content":"### Booking commands: `booking`","lastModifiedDate":"2024-04-04"},{"lineNumber":279,"author":{"gitId":"LimZiJia"},"content":"We have booking functionality for both client and housekeepers. The booking command allows you to update the housekeeping details of a client and update bookings for a housekeeper.","lastModifiedDate":"2024-04-04"},{"lineNumber":280,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":281,"author":{"gitId":"LimZiJia"},"content":"General format: `booking TYPE ACTION INDEX [PARAMETERS]`","lastModifiedDate":"2024-04-04"},{"lineNumber":282,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-04"},{"lineNumber":284,"author":{"gitId":"LimZiJia"},"content":"For the subcommands of booking below, here are some clarifications.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":285,"author":{"gitId":"LimZiJia"},"content":"`INDEX` refers to the index of the observed client/housekeeper list.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":286,"author":{"gitId":"LimZiJia"},"content":"`NUMBER` refers to any integer. This could represent the quantity of `INTERVAL`(s).\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":287,"author":{"gitId":"LimZiJia"},"content":"`INTERVAL` refers to a period, which can be \u0027days\u0027, \u0027weeks\u0027, \u0027months\u0027 or \u0027years\u0027.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":288,"author":{"gitId":"LimZiJia"},"content":"`AREA` refers to the \u0027north\u0027, \u0027south\u0027, \u0027east\u0027, \u0027west\u0027, \u0027northeast\u0027, \u0027northwest\u0027, \u0027southeast\u0027, \u0027southwest\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":289,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":290,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":291,"author":{"gitId":"LimZiJia"},"content":"##### Updating client\u0027s housekeeping details: `booking client`","lastModifiedDate":"2024-04-04"},{"lineNumber":292,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":293,"author":{"gitId":"LimZiJia"},"content":"Client\u0027s housekeeping details are optional, and it has 4 attributes: ","lastModifiedDate":"2024-04-04"},{"lineNumber":294,"author":{"gitId":"LimZiJia"},"content":"\u003cu\u003e[1] last booking date, [2] preferred interval, [3] booking time slot, and [4] deferment.\u003c/u\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":295,"author":{"gitId":"LimZiJia"},"content":"This is a value added service for you to keep track of your client\u0027s housekeeping schedule and call clients for housekeeping at the right time.","lastModifiedDate":"2024-04-04"},{"lineNumber":296,"author":{"gitId":"LimZiJia"},"content":"If clients do not have housekeeping details, they are assumed to not want notifications for housekeeping. Therefore, `leads` will not include clients without housekeeping details.","lastModifiedDate":"2024-04-04"},{"lineNumber":297,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":298,"author":{"gitId":"LimZiJia"},"content":"*** [1] and [2] are mandatory while [3] and [4] are optional. ([4] deferment will be set to 0 by default)","lastModifiedDate":"2024-04-04"},{"lineNumber":299,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":300,"author":{"gitId":"LimZiJia"},"content":"We have 6 commands for updating client\u0027s housekeeping details. `edit`, `defer`, `add`, `delete`, `set`, and `remove`.","lastModifiedDate":"2024-04-05"},{"lineNumber":301,"author":{"gitId":"LimZiJia"},"content":"Without a housekeeping detail, `edit`, `defer`, `add`, `delete` will not work. To set housekeeping detail after initiation, use `set`.","lastModifiedDate":"2024-04-05"},{"lineNumber":302,"author":{"gitId":"LimZiJia"},"content":"`edit` has prefixes `lhd/`, `pi/`, `bd/` and `d/` to edit last housekeeping date, preferred interval, booking date and deferment respectively.","lastModifiedDate":"2024-04-05"},{"lineNumber":303,"author":{"gitId":"LimZiJia"},"content":"More than one prefix can be used in a single `edit` command.","lastModifiedDate":"2024-04-05"},{"lineNumber":304,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":305,"author":{"gitId":"LimZiJia"},"content":"Action | Format, Explainations, Examples ","lastModifiedDate":"2024-04-04"},{"lineNumber":306,"author":{"gitId":"GERARDJM018"},"content":"--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":307,"author":{"gitId":"GERARDJM018"},"content":"`edit lhd/` | Edit client\u0027s last housekeeping date with `edit lhd/`\u003cbr\u003eFormat: `booking client edit INDEX lhd/yyyy-MM-dd`\u003cbr\u003eExample: `booking client edit 2 lhd/2024-04-01` ","lastModifiedDate":"2024-04-04"},{"lineNumber":308,"author":{"gitId":"GERARDJM018"},"content":"`edit pi/` | Edit client\u0027s preferred interval with `edit pi/`\u003cbr\u003eFormat: `booking client edit INDEX pi/NUMBER INTERVAL`\u003cbr\u003eExample: `booking client edit 2 pi/2 weeks`","lastModifiedDate":"2024-04-04"},{"lineNumber":309,"author":{"gitId":"GERARDJM018"},"content":"`edit bd/` | Edit client\u0027s booking date with `edit bd/`\u003cbr\u003eFormat: `booking client edit INDEX bd/BOOKING DATE`\u003cbr\u003eExample: `booking client edit 2 bd/2024-04-02 am`","lastModifiedDate":"2024-04-04"},{"lineNumber":310,"author":{"gitId":"LimZiJia"},"content":"`edit d/` | Edit deferment with `edit d/`\u003cbr\u003eFormat: `booking client edit INDEX d/NUMBER INTERVAL`\u003cbr\u003eExample: `booking client edit 2 d/2 months`","lastModifiedDate":"2024-04-05"},{"lineNumber":311,"author":{"gitId":"LimZiJia"},"content":"`defer` | Add period to delay calling clients with `defer`\u003cbr\u003eFormat: `booking client defer INDEX NUMBER INTERVAL`\u003cbr\u003eExample: `booking client defer 2 1 months` ","lastModifiedDate":"2024-04-04"},{"lineNumber":312,"author":{"gitId":"GERARDJM018"},"content":"`add` | Add client\u0027s booking date with `add`\u003cbr\u003eFormat: `booking client add INDEX yyyy-MM-dd (am|pm)`\u003cbr\u003eExample: `booking client add 2 2024-04-01 am` ","lastModifiedDate":"2024-04-04"},{"lineNumber":313,"author":{"gitId":"LimZiJia"},"content":"`delete` | Delete client\u0027s booking date with `delete`\u003cbr\u003eFormat: `booking client delete INDEX` \u003cbr\u003eExample: `booking client delete 2` ","lastModifiedDate":"2024-04-04"},{"lineNumber":314,"author":{"gitId":"LimZiJia"},"content":"`set` | Set client\u0027s housekeeping details with `set`. Same format as initiation, you can set last housekeeping date and preferred interval. \u003cbr\u003eFormat: `booking client set INDEX yyyy-MM-dd NUMBER INTERVAL`\u003cbr\u003eExample: `booking client set 2 2024-04-01 15 days`","lastModifiedDate":"2024-04-04"},{"lineNumber":315,"author":{"gitId":"LimZiJia"},"content":"`remove` | Remove client\u0027s housekeeping details with `remove`\u003cbr\u003eFormat: `booking client remove INDEX`\u003cbr\u003eExample: `booking client remove 2`","lastModifiedDate":"2024-04-04"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":317,"author":{"gitId":"moguries"},"content":"##### Updating housekeeper\u0027s housekeeping details: `booking housekeeper`","lastModifiedDate":"2024-04-04"},{"lineNumber":318,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":319,"author":{"gitId":"LimZiJia"},"content":"Housekeepers all have a list of bookings (that can be empty). This allows for Housekeeping Hub to suggest housekeepers for clients based on their availability. There are 4 commands `add`, `delete`, `list` and `search`.","lastModifiedDate":"2024-04-04"},{"lineNumber":320,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":321,"author":{"gitId":"LimZiJia"},"content":"Action | Format, Explainations, Examples ","lastModifiedDate":"2024-04-04"},{"lineNumber":322,"author":{"gitId":"LimZiJia"},"content":"--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":323,"author":{"gitId":"LimZiJia"},"content":"`add` | Add booking to a housekeeper\u0027s list with `add`\u003cbr\u003eFormat: `booking housekeeper add INDEX yyyy-MM-dd (am|pm)`\u003cbr\u003eExample: `booking housekeeper add 2 2024-04-01 am` ","lastModifiedDate":"2024-04-04"},{"lineNumber":324,"author":{"gitId":"LimZiJia"},"content":"`delete` | Delete booking from a housekeeper\u0027s list with `delete`\u003cbr\u003eFormat: `booking housekeeper delete INDEX INDEX`\u003cbr\u003eExample: `booking housekeeper delete 1 2`\u003cbr\u003e* The first INDEX refers to the housekeeper index and the second INDEX refers to the booking index (shown in `list` action).","lastModifiedDate":"2024-04-04"},{"lineNumber":325,"author":{"gitId":"LimZiJia"},"content":"`list` | List all bookings of a housekeeper with `list`\u003cbr\u003eFormat: `booking housekeeper list INDEX`\u003cbr\u003eExample: `booking housekeeper list 2`","lastModifiedDate":"2024-04-04"},{"lineNumber":326,"author":{"gitId":"LimZiJia"},"content":"`search` | Search for housekeepers available on a specific area and date date with `search`\u003cbr\u003eFormat: `booking housekeeper search AREA yyyy-MM-dd (am|pm)`\u003cbr\u003eExample: `booking housekeeper search east 2024-04-05 pm`","lastModifiedDate":"2024-04-04"},{"lineNumber":327,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":328,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":329,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":330,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":331,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2024-04-04"},{"lineNumber":338,"author":{"gitId":"LimZiJia"},"content":"This command is irreversible. All data will be lost.","lastModifiedDate":"2024-04-04"},{"lineNumber":339,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":340,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":341,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"gosongying"},"content":"HouseKeeping Hub data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-20"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":353,"author":{"gitId":"gosongying"},"content":"HouseKeeping Hub data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-20"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":355,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-05"},{"lineNumber":356,"author":{"gitId":"LimZiJia"},"content":"If you wish to load our sample data, you must delete the existing `addressbook.json` from the stated location and restart the app.","lastModifiedDate":"2024-04-05"},{"lineNumber":357,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":359,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":360,"author":{"gitId":"gosongying"},"content":"If your changes to the data file makes its format invalid, HouseKeeping Hub 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-20"},{"lineNumber":361,"author":{"gitId":"gosongying"},"content":"Furthermore, certain edits can cause the HouseKeeping Hub to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-20"},{"lineNumber":362,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":364,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"faq\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"gosongying"},"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 HouseKeeping Hub home folder.","lastModifiedDate":"2024-03-20"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":376,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"command-summary\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":381,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2024-03-19"},{"lineNumber":382,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2024-03-19"},{"lineNumber":383,"author":{"gitId":"GERARDJM018"},"content":"[**Add**](#adding-a-person-add) | `add TYPE n/NAME e/EMAIL p/PHONE_NUMBER a/ADDRESS [d/DETAILS] [ar/AREA] [t/TAG]…​` \u003cbr\u003e e.g., `add client n/Elon e/elon@gmail.com p/088888888 a/Elon Street, Block 123, 101010 Singapore ar/west`","lastModifiedDate":"2024-04-04"},{"lineNumber":384,"author":{"gitId":"LimZiJia"},"content":"[**Delete**](#deleting-a-person--delete) | `delete TYPE INDEX`\u003cbr\u003e e.g., `delete housekeeper 3`","lastModifiedDate":"2024-04-04"},{"lineNumber":385,"author":{"gitId":"LimZiJia"},"content":"[**List**](#listing-all-persons--list) | `list TYPE`\u003cbr\u003e e.g., `list client`","lastModifiedDate":"2024-04-04"},{"lineNumber":386,"author":{"gitId":"LimZiJia"},"content":"[**Edit**](#editing-a-person--edit) | `edit TYPE INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [d/DETAILS] [ar/AREA] [t/TAG]…​`\u003cbr\u003e e.g., `edit client 1 p/91234567 e/johndoe@example.com`","lastModifiedDate":"2024-04-05"},{"lineNumber":387,"author":{"gitId":"LimZiJia"},"content":"[**Find**](#locating-persons-by-keywords--find) | `find TYPE n/KEYWORD [MORE_KEYWORDS] ar/KEYWORD [MORE_KEYWORDS] a/KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find client n/John`","lastModifiedDate":"2024-04-05"},{"lineNumber":388,"author":{"gitId":"LimZiJia"},"content":"[**Leads**](#getting-client-call-list-leads) | `leads`","lastModifiedDate":"2024-04-04"},{"lineNumber":389,"author":{"gitId":"LimZiJia"},"content":"[**Booking**](#booking-commands-booking) | `booking TYPE ACTION INDEX [PARAMETERS]`\u003cbr\u003e e.g., `booking client last 2 2024-04-01`\u003cbr\u003e * This has many commands and it is recommended to refer to the [Booking commands](#booking-commands-booking) section for more details.","lastModifiedDate":"2024-04-04"},{"lineNumber":390,"author":{"gitId":"LimZiJia"},"content":"[**Clear**](#clearing-all-entries--clear) | `clear`","lastModifiedDate":"2024-04-04"},{"lineNumber":391,"author":{"gitId":"LimZiJia"},"content":"[**Exit**](#exiting-the-program--exit) | `exit`","lastModifiedDate":"2024-04-04"},{"lineNumber":392,"author":{"gitId":"LimZiJia"},"content":"[**Help**](#viewing-help--help) | `help` |","lastModifiedDate":"2024-04-04"},{"lineNumber":393,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":394,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":395,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":396,"author":{"gitId":"LimZiJia"},"content":"----------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-20"},{"lineNumber":397,"author":{"gitId":"LimZiJia"},"content":"## Glossary :book:","lastModifiedDate":"2024-04-04"},{"lineNumber":398,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"glossary\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":399,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":400,"author":{"gitId":"LimZiJia"},"content":"**JAR**","lastModifiedDate":"2024-03-20"},{"lineNumber":401,"author":{"gitId":"gosongying"},"content":"\u003ca id\u003d\"jar\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":402,"author":{"gitId":"LimZiJia"},"content":": JAR stands for Java Archive. It is based on the ZIP file format that is commonly used to store java programs.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":403,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":404,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":405,"author":{"gitId":"LimZiJia"},"content":"**CLI**","lastModifiedDate":"2024-03-20"},{"lineNumber":406,"author":{"gitId":"gosongying"},"content":"\u003ca id\u003d\"cli\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":407,"author":{"gitId":"LimZiJia"},"content":": CLI stands for Command Line Interface. It refers to programs that are primarily **text-based** where users interact with the program by typing **commands**. ","lastModifiedDate":"2024-03-20"},{"lineNumber":408,"author":{"gitId":"LimZiJia"},"content":"As such, users will use their keyboards more, in contrast to a Graphical User Interface (GUI) where users will use their mouse to interact with the graphical elements.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":409,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":410,"author":{"gitId":"LimZiJia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":411,"author":{"gitId":"gosongying"},"content":"**GUI**","lastModifiedDate":"2024-03-20"},{"lineNumber":412,"author":{"gitId":"gosongying"},"content":"\u003ca id\u003d\"gui\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":413,"author":{"gitId":"LimZiJia"},"content":": GUI stands for Graphical User Interface. It refers to programs that are primarily **graphical** where users interact with the program by clicking on **buttons** and **menus**.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":414,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":415,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":416,"author":{"gitId":"LimZiJia"},"content":"**Terminal**","lastModifiedDate":"2024-03-20"},{"lineNumber":417,"author":{"gitId":"gosongying"},"content":"\u003ca id\u003d\"terminal\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":418,"author":{"gitId":"LimZiJia"},"content":": A terminal is a Command Line Interface (CLI) that allows users to interact with computers by executing commands and viewing the results. ","lastModifiedDate":"2024-03-20"},{"lineNumber":419,"author":{"gitId":"LimZiJia"},"content":"Popular terminals in mainstream operating systems include command prompt (CMD) for windows and Terminal in macOS and Linux.\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":420,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":421,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":422,"author":{"gitId":"LimZiJia"},"content":"**CMD**\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":423,"author":{"gitId":"LimZiJia"},"content":"\u003cimg src\u003d\"https://www.auslogics.com/en/articles/wp-content/uploads/2023/07/Command-Prompt-PING.png\" alt\u003d\"drawing\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":424,"author":{"gitId":"LimZiJia"},"content":"\u003cbr\u003e\u003cbr\u003e**Terminal (macOS)**\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":425,"author":{"gitId":"LimZiJia"},"content":"\u003cimg src\u003d\"https://forums.macrumors.com/attachments/screen-shot-2020-12-09-at-4-50-12-pm-png.1690397/\" alt\u003d\"drawing\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":426,"author":{"gitId":"LimZiJia"},"content":"\u003cbr\u003e\u003cbr\u003e **Terminal (Linux)** \u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":427,"author":{"gitId":"LimZiJia"},"content":"\u003cimg src\u003d\"https://static1.howtogeekimages.com/wordpress/wp-content/uploads/2013/03/linux-terminal-on-ubuntu.png\" alt\u003d\"drawing\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":428,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":429,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":178,"moguries":37,"gosongying":15,"-":156,"GERARDJM018":43}},{"path":"docs/diagrams/AddSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"participant \"a:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"participant \":AddressBook\" as AddressBook MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"[-\u003e LogicManager : execute(\"add client n/John p/90868245 e/john@gmail.com a/43 Lee Street t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add client n/John p/90868245 e/john@gmail.com a/43 Lee Street t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\"client n/John p/90868245 e/john@gmail.com a/43 Lee Street t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"create AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":"AddCommandParser -\u003e AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"activate AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":"AddCommand --\u003e AddCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":"activate AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"AddCommand -\u003e Model : addPerson(client)","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":"Model -\u003e AddressBook : addPerson(client)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":"activate AddressBook","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":"AddressBook --\u003e Model","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":"deactivate AddressBook","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":"AddCommand -\u003e Model : updatedFilteredPersonList(predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"moguries":83}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"Person \u003c|-right- Housekeeper","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"Person \u003c|-right- Client","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"Client *-down-\u003e \"0..1\" HousekeepingDetails","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"Client .up.|\u003e Comparable","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Type","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Area","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"HousekeepingDetails *--\u003e \"1\" LocalDate","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"HousekeepingDetails *--\u003e \"1\" Period","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"LimZiJia":14,"-":18}},{"path":"docs/diagrams/DeleteActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"skin rose","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"start","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":":User executes delete command (eg. delete client 1);","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"\u0027Since the beta syntax does not support placing the condition outside the","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"\u0027diamond we place it as the true branch instead.","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"fork","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" :Check Type specified;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" if () then ([client])","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" :Return DeleteClientCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" else ([housekeeper])","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" :Return DeleteHousekeeperCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"end fork","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":":Delete person from the corresponding list;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"stop","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"gosongying":21}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"[-\u003e LogicManager : execute(\"delete client 1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete client 1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"client\"), parse(\"1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gosongying":3,"-":67}},{"path":"docs/diagrams/FindActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"skin rose","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"start","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":":User executes command;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"\u0027Since the beta syntax does not support placing the condition outside the","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"\u0027diamond we place it as the true branch instead.","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"fork","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":" :Check Name keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" if () then ([keywords available])","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" :Check using the keywords given;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":" else ([keywords unavailable])","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"fork again","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" :Check Area keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" if () then ([keywords available])","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" :Check using the keywords given;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" else ([keywords unavailable])","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"fork again","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" :Check Address keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" if () then ([keywords available])","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" :Check using the keywords given;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" else ([keywords unavailable])","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":"end fork","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":":Check the results from all attributes;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":"stop","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"GERARDJM018":32}},{"path":"docs/diagrams/ListSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"participant \":ListCommandParser\" as ListCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"participant \"c:ListCommand\" as ListCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"[-\u003e LogicManager : execute(\"list client\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"list client\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"create ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":"AddressBookParser -\u003e ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":"activate ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":"ListCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"deactivate ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":"AddressBookParser -\u003e ListCommandParser : parse(\"client\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":"activate ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":"create ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":"ListCommandParser -\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":"activate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":"ListCommand --\u003e ListCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":"ListCommandParser --\u003e AddressBookParser : c","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":"deactivate ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":"ListCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":"destroy ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":"AddressBookParser --\u003e LogicManager : c","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":"LogicManager -\u003e ListCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":"activate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":"ListCommand -\u003e Model : updateFilteredPersonList(typePredicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":"Model --\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":"ListCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":"CommandResult --\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":"ListCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"GERARDJM018":70}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nComparable\" as Comparable","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"Class Client","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"Class Housekeeper","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":"Class Type","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"Class HousekeepingDetails","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"Class Area","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"Person *-left-\u003e Name","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":"Person *-right-\u003e Type","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e Area","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":"Client *--\u003e \"0..1\" HousekeepingDetails","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":"Client .up.|\u003e Comparable","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":"Client -up-|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":"Housekeeper -up-|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":"Address -[hidden]left-\u003e Housekeeper","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"LimZiJia":7,"gosongying":8,"-":50}},{"path":"docs/index.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":"GERARDJM018"},"content":"title: Housekeeping Hub","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-W09-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W09-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W09-1/tp/graph/badge.svg?token\u003dVTN6SDBFUZ)](https://codecov.io/gh/AY2324S2-CS2103T-W09-1/tp)","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"**Housekeeping Hub is a desktop application for managing your contact (clients or housekeepers) details.** ","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"It is an address book which tailored for housekeeping services. ","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"* If you are interested in using Housekeeping Hub, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"* If you are interested about developing Housekeeping Hub, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":13,"GERARDJM018":8}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":157,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":185,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gosongying":3,"-":186}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" //ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" /** Returns an unmodifiable view of the filtered list of clients */","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" /** Returns an unmodifiable view of the filtered list of housekeepers */","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"gosongying":9,"-":49}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" return model.getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" return model.getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"gosongying":9,"-":86}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_AVAILABLE_HOUSEKEEPERS_LISTED_OVERVIEW \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" \"%1$d housekeepers available at [%2$s, %3$s] listed!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_NO_AVAILABLE_HOUSEKEEPERS_LISTED_OVERVIEW \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" \"No housekeepers available at [%1$s, %2$s]!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX \u003d \"The client index provided is invalid\";","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" \"The housekeeper index provided is invalid\";","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d person(s) listed!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_CLIENTS_LISTED_OVERVIEW \u003d \"%1$d client(s) listed!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_HOUSEKEEPERS_LISTED_OVERVIEW \u003d \"%1$d housekeeper(s) listed!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" * Formats the {@code client} for display to the user.","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" public static String formatClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" final HousekeepingDetails housekeepingDetails \u003d client.getDetails();","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" final String details;","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" if (housekeepingDetails \u003d\u003d null) {","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" details \u003d HousekeepingDetails.NO_DETAILS_PROVIDED;","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" details \u003d HousekeepingDetails.makeStoredDetailsReadableWithDeferment(housekeepingDetails.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e tags \u003d client.getTags();","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" builder.append(\"\\nName: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" .append(client.getName())","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" .append(client.getPhone())","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" .append(client.getEmail())","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" .append(client.getAddress())","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" .append(\"; Area: \")","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" .append(client.getArea())","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" builder.append(\"No tags\");","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" tags.forEach(builder::append);","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" builder.append(\"; Details: \")","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" .append(details);","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" * Formats the {@code housekeeper} for display to the user.","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" public static String formatHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e tags \u003d housekeeper.getTags();","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" builder.append(\"\\nName: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getName())","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getPhone())","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getEmail())","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" .append(\"; Address: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getAddress())","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" .append(\"; Area: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getArea())","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" builder.append(\"No tags\");","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" tags.forEach(builder::append);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" builder.append(\"; Booking List: \")","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getBookingList());","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" return builder.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":7,"moguries":4,"gosongying":54,"-":43,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/logic/commands/AddClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"public class AddClientCommand extends AddCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New client added: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"This client already exists in the address book\";","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" public AddClientCommand(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" super(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" if (model.hasClient((Client) toAdd)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" throw new CommandException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" model.addClient((Client) toAdd);","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatClient((Client) toAdd)));","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"gosongying":30}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"abstract public class AddCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a client or housekeeper to the address book.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" + \"TYPE(client or housekeeper) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" + PREFIX_AREA + \"AREA \"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" + \"[\" + PREFIX_DETAILS + \"DETAILS](for client only) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" + \"Example: \" + COMMAND_WORD + \" client \"","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" + PREFIX_AREA + \"west \"","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" + PREFIX_DETAILS + \"2024-01-01 2 months\";","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" protected final Person toAdd;","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":2,"gosongying":10,"-":64}},{"path":"src/main/java/seedu/address/logic/commands/AddHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"public class AddHousekeeperCommand extends AddCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New housekeeper added: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_DUPLICATE_HOUSEKEEPER \u003d \"This housekeeper already exists in the address book\";","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_NO_HOUSEKEEPING_DETAILS \u003d \"Housekeeper should not have housekeeping details, \" +","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" \"that is specifically for client.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" public AddHousekeeperCommand(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" super(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" if (model.hasHousekeeper((Housekeeper) toAdd)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" throw new CommandException(MESSAGE_DUPLICATE_HOUSEKEEPER);","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" model.addHousekeeper((Housekeeper) toAdd);","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatHousekeeper((Housekeeper) toAdd)));","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"gosongying":31}},{"path":"src/main/java/seedu/address/logic/commands/BookingCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CLIENTS;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_HOUSEKEEPERS;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"import java.util.List;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.Booking;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.BookingSearchPredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" * Encapsulates booking actions (add, delete, list) for a housekeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":"public class BookingCommand extends Command {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" public static final String COMMAND_WORD \u003d \"booking\";","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public static final String ACTION_WORD_HOUSEKEEPER_ADD \u003d \"add\";","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" public static final String ACTION_WORD_HOUSEKEEPER_DELETE \u003d \"delete\";","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" public static final String ACTION_WORD_HOUSEKEEPER_LIST \u003d \"list\";","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" public static final String ACTION_WORD_HOUSEKEEPER_SEARCH \u003d \"search\";","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_DEFER_PERSON_SUCCESS \u003d \"Deferment Success: Now the deferment value is %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_INVALID_ACTION \u003d \"Invalid action. Action words include {add, delete, list}.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_USAGE \u003d \"\\nCLIENT COMMANDS:\\n\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" +\"[edit last housekeeping date] : edits last housekeeping date for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX lhd/DATE(yyyy-mm-dd)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" + \"Example: booking client edit 2 lhd/2024-05-12\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" + \"edit preferred interval\"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" + \"] : edits preferred housekeeping interval for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX pi/NUMBER INTERVAL(days|weeks|months|years)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" + \"Example: booking client edit 1 pi/2 weeks\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" + \"edit booking date\"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" + \"] : edits booking date for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX bd/DATE(yyyy-mm-dd) TIME(am|pm)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" + \"Example: booking client edit 7 bd/2024-01-17 pm\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" + \"edit deferment\"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" + \"] : adds period to delay before sending reminder about next housekeeping,\"","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" + \" for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX INTERVAL(number days|weeks|months|years)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" + \"Example: booking client edit 10 d/1 months\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" + \"add booking\"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" + \"] : adds a booking date for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX DATE(yyyy-mm-dd) TIME(am|pm)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" + \"Example: booking client add 1 2024-01-01 am\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" + \"delete booking\"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" + \"] : deletes booking date for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" + \"Example: booking client delete 3\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" + \"set housekeeping details\"","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" + \"] : sets housekeeping details for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX DATE(yyyy-mm-dd) NUMBER INTERVAL(days|weeks|months|years)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" + \"Example: booking client set 2 2024-01-01 15 days\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" + \"remove housekeeping details\"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" + \"] : removes housekeeping details for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" + \"Example: booking client remove 2\\n\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" + \"HOUSEKEEPER COMMANDS:\\n\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" + \"[add booking] : adds a booking for the housekeeper at \"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" + \"the specified index.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX DATE(yyyy-mm-dd) TIME(am|pm)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper \" + ACTION_WORD_HOUSEKEEPER_ADD + \" 1 2024-05-12 am\\n\\n[\"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" + \"delete booking] : deletes the specified booking for the housekeeper at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" + \"Parameters: HOUSEKEEPER_INDEX BOOKING_INDEX\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper \"+ ACTION_WORD_HOUSEKEEPER_DELETE + \" 1 1\\n\\n[\"","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" + \"list bookings] : lists all bookings for the housekeeper at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper \" + ACTION_WORD_HOUSEKEEPER_LIST + \" 1\\n\\n[\"","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" + \"search bookings] : searches for housekeepers who are available at the specified area and timing.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" + \"Parameters: AREA DATE(yyyy-mm-dd) TIME(am|pm)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper \" + ACTION_WORD_HOUSEKEEPER_SEARCH + \" west 2024-01-01 am\";","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"LimZiJia"},"content":" public static final String NO_DETAILS_MESSAGE_CONSTRAINT \u003d \"If client does not have housekeeping details, \"","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"LimZiJia"},"content":" + \"please set housekeeping details first using \u0027set\u0027.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" private String actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":" private Index index;","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" private int bookingToDeleteIndex;","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" private String bookedDateAndTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" private String type;","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" private HousekeepingDetails housekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" private Period defer;","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" private BookingSearchPredicate bookingSearchPredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" * Constructs a BookingCommand for the \"add\" action.","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" * @param type \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" * @param actionWord \"add\"","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" * @param index of housekeeper to add booking to","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime in the form of a string","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" public BookingCommand(String type, String actionWord, Index index, String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" this.bookedDateAndTime \u003d bookedDateAndTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" * Constructs a BookingCommand for the \"delete\" action.","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" * @param type \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" * @param actionWord \"delete\"","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" * @param index of housekeeper to delete booking from","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" * @param bookingToDeleteIndex of booking to delete","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"LimZiJia"},"content":" public BookingCommand(String type, String actionWord, Index index, int bookingToDeleteIndex) {","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"LimZiJia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" this.bookingToDeleteIndex \u003d bookingToDeleteIndex;","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" * Constructs a BookingCommand for the \"list\" action.","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" * @param type \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" * @param actionWord \"list\"","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" * @param index of housekeeper whose bookings to list","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"LimZiJia"},"content":" public BookingCommand(String type, String actionWord, Index index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"moguries"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"LimZiJia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"moguries"},"content":" * Constructs a BookingCommand for the \"search\" action.","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"moguries"},"content":" * @param type \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":148,"author":{"gitId":"moguries"},"content":" * @param actionWord \"search\"","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"moguries"},"content":" * @param bookingSearchPredicate for area and booked date and time","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"moguries"},"content":" public BookingCommand(String type, String actionWord, BookingSearchPredicate bookingSearchPredicate) {","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"moguries"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"moguries"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-03"},{"lineNumber":154,"author":{"gitId":"moguries"},"content":" this.bookingSearchPredicate \u003d bookingSearchPredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":155,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":156,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":157,"author":{"gitId":"LimZiJia"},"content":" public BookingCommand(String type, String actionWord, Index index, HousekeepingDetails housekeepingDetails) {","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":159,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-02"},{"lineNumber":160,"author":{"gitId":"LimZiJia"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":161,"author":{"gitId":"LimZiJia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-02"},{"lineNumber":162,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":165,"author":{"gitId":"GERARDJM018"},"content":" public BookingCommand(String type, String actionWord, Index index, Period defer) {","lastModifiedDate":"2024-04-03"},{"lineNumber":166,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-03"},{"lineNumber":167,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(defer);","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(actionWord);","lastModifiedDate":"2024-04-03"},{"lineNumber":169,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(type);","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"GERARDJM018"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-03"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"GERARDJM018"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"GERARDJM018"},"content":" this.defer \u003d defer;","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":175,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":176,"author":{"gitId":"GERARDJM018"},"content":" public BookingCommand() {","lastModifiedDate":"2024-04-03"},{"lineNumber":177,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"moguries"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"LimZiJia"},"content":" if (type.equals(\"client\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"LimZiJia"},"content":" switch (actionWord) {","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"LimZiJia"},"content":" case \"add\":","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"LimZiJia"},"content":" return clientAdd(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"LimZiJia"},"content":" case \"delete\":","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"LimZiJia"},"content":" return clientDelete(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"LimZiJia"},"content":" case \"set\":","lastModifiedDate":"2024-04-02"},{"lineNumber":189,"author":{"gitId":"LimZiJia"},"content":" return clientSet(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":190,"author":{"gitId":"LimZiJia"},"content":" case \"remove\":","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"LimZiJia"},"content":" return clientRemove(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"GERARDJM018"},"content":" case \"defer\":","lastModifiedDate":"2024-04-03"},{"lineNumber":193,"author":{"gitId":"GERARDJM018"},"content":" return clientDefer(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":194,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(MESSAGE_INVALID_ACTION);","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"LimZiJia"},"content":" } else if (type.equals(\"housekeeper\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"moguries"},"content":" switch (actionWord) {","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"moguries"},"content":" case \"add\":","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"LimZiJia"},"content":" return housekeeperAdd(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":201,"author":{"gitId":"LimZiJia"},"content":" case \"delete\":","lastModifiedDate":"2024-04-02"},{"lineNumber":202,"author":{"gitId":"LimZiJia"},"content":" return housekeeperDelete(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":" case \"list\":","lastModifiedDate":"2024-04-02"},{"lineNumber":204,"author":{"gitId":"LimZiJia"},"content":" return housekeeperList(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"moguries"},"content":" case \"search\":","lastModifiedDate":"2024-04-03"},{"lineNumber":206,"author":{"gitId":"moguries"},"content":" return housekeeperSearch(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-04-02"},{"lineNumber":208,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(MESSAGE_INVALID_ACTION);","lastModifiedDate":"2024-04-02"},{"lineNumber":209,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":210,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":211,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(MESSAGE_INVALID_ACTION);","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"LimZiJia"},"content":" private CommandResult clientAdd(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"LimZiJia"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":220,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"moguries"},"content":" Booking booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":224,"author":{"gitId":"moguries"},"content":" booking \u003d new Booking(bookedDateAndTime);","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"moguries"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"moguries"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-04-04"},{"lineNumber":227,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":228,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":229,"author":{"gitId":"LimZiJia"},"content":" Client clientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":230,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":231,"author":{"gitId":"LimZiJia"},"content":" if (!clientToEdit.hasHousekeepingDetails()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":232,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(NO_DETAILS_MESSAGE_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":233,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":234,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":235,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails details \u003d clientToEdit.getDetails();","lastModifiedDate":"2024-04-02"},{"lineNumber":236,"author":{"gitId":"LimZiJia"},"content":" details.setBooking(booking);","lastModifiedDate":"2024-04-02"},{"lineNumber":237,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":238,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":239,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.setDetails(details);","lastModifiedDate":"2024-04-02"},{"lineNumber":240,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":241,"author":{"gitId":"LimZiJia"},"content":" Command editClientCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":242,"author":{"gitId":"moguries"},"content":" model.updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"LimZiJia"},"content":" return editClientCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":244,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":245,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"LimZiJia"},"content":" private CommandResult clientDelete(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":247,"author":{"gitId":"LimZiJia"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":249,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":250,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":251,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":252,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":253,"author":{"gitId":"LimZiJia"},"content":" Client clientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":254,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":255,"author":{"gitId":"LimZiJia"},"content":" if (!clientToEdit.hasHousekeepingDetails()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":256,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(NO_DETAILS_MESSAGE_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":257,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":258,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":259,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails details \u003d clientToEdit.getDetails();","lastModifiedDate":"2024-04-02"},{"lineNumber":260,"author":{"gitId":"LimZiJia"},"content":" details.deleteBooking();","lastModifiedDate":"2024-04-02"},{"lineNumber":261,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":262,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":263,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.setDetails(details);","lastModifiedDate":"2024-04-02"},{"lineNumber":264,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":265,"author":{"gitId":"LimZiJia"},"content":" Command editClientCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":266,"author":{"gitId":"LimZiJia"},"content":" return editClientCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"LimZiJia"},"content":" private CommandResult clientSet(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"LimZiJia"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-02"},{"lineNumber":271,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":272,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":273,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":274,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":275,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":276,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":277,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.setDetails(housekeepingDetails);","lastModifiedDate":"2024-04-02"},{"lineNumber":278,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":279,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":280,"author":{"gitId":"LimZiJia"},"content":" Command editClientCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":281,"author":{"gitId":"LimZiJia"},"content":" return editClientCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":282,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":283,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":284,"author":{"gitId":"GERARDJM018"},"content":" private CommandResult clientDefer(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":285,"author":{"gitId":"GERARDJM018"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-03"},{"lineNumber":286,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":287,"author":{"gitId":"GERARDJM018"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":288,"author":{"gitId":"GERARDJM018"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":289,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":290,"author":{"gitId":"LimZiJia"},"content":" Client clientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":291,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":292,"author":{"gitId":"LimZiJia"},"content":" if (!clientToEdit.hasHousekeepingDetails()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":293,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(NO_DETAILS_MESSAGE_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":294,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":295,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":296,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails detailsToEdit \u003d clientToEdit.getDetails();","lastModifiedDate":"2024-04-05"},{"lineNumber":297,"author":{"gitId":"GERARDJM018"},"content":" detailsToEdit.addDeferment(defer);","lastModifiedDate":"2024-04-03"},{"lineNumber":298,"author":{"gitId":"GERARDJM018"},"content":" return new CommandResult(String.format(MESSAGE_DEFER_PERSON_SUCCESS, detailsToEdit.getDefermentToString()));","lastModifiedDate":"2024-04-03"},{"lineNumber":299,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":300,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":301,"author":{"gitId":"LimZiJia"},"content":" private CommandResult clientRemove(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":302,"author":{"gitId":"LimZiJia"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-02"},{"lineNumber":303,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":304,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":305,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":306,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":307,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":308,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":309,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.setDetails(HousekeepingDetails.empty);","lastModifiedDate":"2024-04-02"},{"lineNumber":310,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":311,"author":{"gitId":"LimZiJia"},"content":" Command editClientCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":312,"author":{"gitId":"LimZiJia"},"content":" return editClientCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":313,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":314,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":315,"author":{"gitId":"LimZiJia"},"content":" private CommandResult housekeeperList(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":316,"author":{"gitId":"LimZiJia"},"content":" List\u003cHousekeeper\u003e lastShownListList \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-04-02"},{"lineNumber":317,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":318,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownListList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":319,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":320,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":321,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":322,"author":{"gitId":"LimZiJia"},"content":" Housekeeper housekeeperToListBooking \u003d lastShownListList.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":323,"author":{"gitId":"LimZiJia"},"content":" String listResult \u003d housekeeperToListBooking.listBooking();","lastModifiedDate":"2024-04-02"},{"lineNumber":324,"author":{"gitId":"LimZiJia"},"content":" return new CommandResult(listResult);","lastModifiedDate":"2024-04-02"},{"lineNumber":325,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":326,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":327,"author":{"gitId":"LimZiJia"},"content":" private CommandResult housekeeperDelete(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":328,"author":{"gitId":"moguries"},"content":" List\u003cHousekeeper\u003e lastShownListDelete \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-04-02"},{"lineNumber":329,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":330,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownListDelete.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":331,"author":{"gitId":"moguries"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":332,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":333,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":334,"author":{"gitId":"LimZiJia"},"content":" Housekeeper housekeeperToDeleteBooking \u003d lastShownListDelete.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":335,"author":{"gitId":"moguries"},"content":" if (!housekeeperToDeleteBooking.isValidDeleteIndex(bookingToDeleteIndex)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":336,"author":{"gitId":"moguries"},"content":" throw new CommandException((BookingList.MESSAGE_INVALID_DELETE));","lastModifiedDate":"2024-04-02"},{"lineNumber":337,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":338,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":339,"author":{"gitId":"moguries"},"content":" if (bookingToDeleteIndex \u003d\u003d 0) {","lastModifiedDate":"2024-04-02"},{"lineNumber":340,"author":{"gitId":"moguries"},"content":" throw new CommandException(BookingList.MESSAGE_INVALID_DELETE);","lastModifiedDate":"2024-04-02"},{"lineNumber":341,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":342,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":343,"author":{"gitId":"moguries"},"content":" String deleteResult \u003d housekeeperToDeleteBooking.deleteBooking(bookingToDeleteIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":344,"author":{"gitId":"moguries"},"content":" return new CommandResult(deleteResult);","lastModifiedDate":"2024-04-02"},{"lineNumber":345,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":346,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":347,"author":{"gitId":"LimZiJia"},"content":" private CommandResult housekeeperAdd(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":348,"author":{"gitId":"LimZiJia"},"content":" List\u003cHousekeeper\u003e lastShownListAdd \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-04-02"},{"lineNumber":349,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":350,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownListAdd.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":351,"author":{"gitId":"moguries"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":352,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":353,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":354,"author":{"gitId":"LimZiJia"},"content":" try {","lastModifiedDate":"2024-04-02"},{"lineNumber":355,"author":{"gitId":"LimZiJia"},"content":" Housekeeper housekeeperToAddBooking \u003d lastShownListAdd.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":356,"author":{"gitId":"LimZiJia"},"content":" if (housekeeperToAddBooking.hasDuplicateBooking(bookedDateAndTime)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":357,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(housekeeperToAddBooking.getName() + \" \" + BookingList.MESSAGE_DUPLICATE);","lastModifiedDate":"2024-04-02"},{"lineNumber":358,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":359,"author":{"gitId":"LimZiJia"},"content":" String addResult \u003d housekeeperToAddBooking.addBooking(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":360,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":361,"author":{"gitId":"LimZiJia"},"content":" // edit housekeeper with updated booking list","lastModifiedDate":"2024-04-02"},{"lineNumber":362,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editHousekeeperDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":363,"author":{"gitId":"LimZiJia"},"content":" editHousekeeperDescriptor.setBookingList(housekeeperToAddBooking.getBookingList());","lastModifiedDate":"2024-04-02"},{"lineNumber":364,"author":{"gitId":"LimZiJia"},"content":" EditHousekeeperCommand command \u003d new EditHousekeeperCommand(index, editHousekeeperDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":365,"author":{"gitId":"LimZiJia"},"content":" Housekeeper editedHousekeeper \u003d command.createEditedPerson(housekeeperToAddBooking, editHousekeeperDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":366,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":367,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":368,"author":{"gitId":"gosongying"},"content":" model.setHousekeeper(housekeeperToAddBooking, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":369,"author":{"gitId":"LimZiJia"},"content":" model.updateFilteredHousekeeperList(PREDICATE_SHOW_ALL_HOUSEKEEPERS);","lastModifiedDate":"2024-04-02"},{"lineNumber":370,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":371,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(addResult, Messages.formatHousekeeper(housekeeperToAddBooking)));","lastModifiedDate":"2024-04-03"},{"lineNumber":372,"author":{"gitId":"LimZiJia"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-02"},{"lineNumber":373,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-04-02"},{"lineNumber":374,"author":{"gitId":"LimZiJia"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-04-02"},{"lineNumber":375,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-04-02"},{"lineNumber":376,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":377,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":378,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":379,"author":{"gitId":"moguries"},"content":" private CommandResult housekeeperSearch(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":380,"author":{"gitId":"moguries"},"content":" // check if area is valid","lastModifiedDate":"2024-04-03"},{"lineNumber":381,"author":{"gitId":"moguries"},"content":" if (!Area.isValidArea(bookingSearchPredicate.getArea())) {","lastModifiedDate":"2024-04-03"},{"lineNumber":382,"author":{"gitId":"moguries"},"content":" throw new CommandException(Area.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":383,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":384,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":385,"author":{"gitId":"moguries"},"content":" // check if booked date and time is valid","lastModifiedDate":"2024-04-03"},{"lineNumber":386,"author":{"gitId":"moguries"},"content":" if (!Booking.isValidBookedDateAndTime(bookingSearchPredicate.getBookingToSearch())) {","lastModifiedDate":"2024-04-03"},{"lineNumber":387,"author":{"gitId":"moguries"},"content":" throw new CommandException(Booking.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":388,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":389,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":390,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":391,"author":{"gitId":"moguries"},"content":" String[] bookedDateAndTime \u003d bookingSearchPredicate.getBookingToSearch().split(\" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":392,"author":{"gitId":"moguries"},"content":" LocalDate.parse(bookedDateAndTime[0]);","lastModifiedDate":"2024-04-03"},{"lineNumber":393,"author":{"gitId":"moguries"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":394,"author":{"gitId":"moguries"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-04-03"},{"lineNumber":395,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":396,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":397,"author":{"gitId":"LimZiJia"},"content":" model.updateFilteredHousekeeperList(bookingSearchPredicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":398,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":399,"author":{"gitId":"moguries"},"content":" if (model.getFilteredHousekeeperList().size() \u003d\u003d 0) {","lastModifiedDate":"2024-04-03"},{"lineNumber":400,"author":{"gitId":"moguries"},"content":" return new CommandResult(String.format(Messages.MESSAGE_NO_AVAILABLE_HOUSEKEEPERS_LISTED_OVERVIEW,","lastModifiedDate":"2024-04-03"},{"lineNumber":401,"author":{"gitId":"moguries"},"content":" bookingSearchPredicate.getArea(), bookingSearchPredicate.getBookingToSearch()));","lastModifiedDate":"2024-04-03"},{"lineNumber":402,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":403,"author":{"gitId":"moguries"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-03"},{"lineNumber":404,"author":{"gitId":"moguries"},"content":" String.format(Messages.MESSAGE_AVAILABLE_HOUSEKEEPERS_LISTED_OVERVIEW,","lastModifiedDate":"2024-04-03"},{"lineNumber":405,"author":{"gitId":"moguries"},"content":" model.getFilteredHousekeeperList().size(), bookingSearchPredicate.getArea(),","lastModifiedDate":"2024-04-03"},{"lineNumber":406,"author":{"gitId":"moguries"},"content":" bookingSearchPredicate.getBookingToSearch()));","lastModifiedDate":"2024-04-03"},{"lineNumber":407,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":408,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":409,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":410,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":411,"author":{"gitId":"moguries"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-02"},{"lineNumber":412,"author":{"gitId":"moguries"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-02"},{"lineNumber":413,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":414,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":415,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":416,"author":{"gitId":"moguries"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-02"},{"lineNumber":417,"author":{"gitId":"moguries"},"content":" if (!(other instanceof BookingCommand)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":418,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":419,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":420,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":421,"author":{"gitId":"moguries"},"content":" BookingCommand otherBookingCommand \u003d (BookingCommand) other;","lastModifiedDate":"2024-04-02"},{"lineNumber":422,"author":{"gitId":"moguries"},"content":" return actionWord.equals(otherBookingCommand.actionWord)","lastModifiedDate":"2024-04-02"},{"lineNumber":423,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 index.equals(otherBookingCommand.index)","lastModifiedDate":"2024-04-02"},{"lineNumber":424,"author":{"gitId":"moguries"},"content":" \u0026\u0026 (bookingToDeleteIndex \u003d\u003d otherBookingCommand.bookingToDeleteIndex)","lastModifiedDate":"2024-04-02"},{"lineNumber":425,"author":{"gitId":"moguries"},"content":" \u0026\u0026 bookedDateAndTime.equals(otherBookingCommand.bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":426,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":427,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":428,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":429,"author":{"gitId":"moguries"},"content":" public String toString() {","lastModifiedDate":"2024-04-02"},{"lineNumber":430,"author":{"gitId":"moguries"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-02"},{"lineNumber":431,"author":{"gitId":"moguries"},"content":" .add(\"actionWord\", actionWord)","lastModifiedDate":"2024-04-02"},{"lineNumber":432,"author":{"gitId":"LimZiJia"},"content":" .add(\"housekeeperIndex\", index)","lastModifiedDate":"2024-04-02"},{"lineNumber":433,"author":{"gitId":"moguries"},"content":" .add(\"bookingToDeleteIndex\", bookingToDeleteIndex)","lastModifiedDate":"2024-04-02"},{"lineNumber":434,"author":{"gitId":"moguries"},"content":" .add(\"bookedDateAndTime\", bookedDateAndTime)","lastModifiedDate":"2024-04-02"},{"lineNumber":435,"author":{"gitId":"moguries"},"content":" .toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":436,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":437,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":169,"moguries":235,"gosongying":2,"GERARDJM018":31}},{"path":"src/main/java/seedu/address/logic/commands/DeleteClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"public class DeleteClientCommand extends DeleteCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_DELETE_CLIENT_SUCCESS \u003d \"Deleted Client: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" public DeleteClientCommand(Index targetIndex) {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" super(targetIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" Client clientToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" model.deleteClient(clientToDelete);","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_CLIENT_SUCCESS, Messages.formatClient(clientToDelete)));","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"gosongying":33}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"abstract public class DeleteCommand extends Command {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" + \": Deletes the client or housekeeper identified by the index number used in the displayed client or \"","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" + \"housekeeper list.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" + \"Parameters: TYPE(client or housekeeper) INDEX(must be a positive integer)\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" + \"Example: \" + COMMAND_WORD + \" client 1\";","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" protected final Index targetIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"gosongying":8,"-":47}},{"path":"src/main/java/seedu/address/logic/commands/DeleteHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"public class DeleteHousekeeperCommand extends DeleteCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_DELETE_HOUSEKEEPER_SUCCESS \u003d \"Deleted Housekeeper: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" public DeleteHousekeeperCommand(Index targetIndex) {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" super(targetIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" List\u003cHousekeeper\u003e lastShownList \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeperToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" model.deleteHousekeeper(housekeeperToDelete);","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" Messages.formatHousekeeper(housekeeperToDelete)));","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"gosongying":35}},{"path":"src/main/java/seedu/address/logic/commands/EditClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CLIENTS;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"public class EditClientCommand extends EditCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_EDIT_CLIENT_SUCCESS \u003d \"Edited Client: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"This client already exists in the address book.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public EditClientCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" super(index, editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" Client personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" Client editedClient \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" if (!personToEdit.isSamePerson(editedClient) \u0026\u0026 model.hasClient(editedClient)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" throw new CommandException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" model.setClient(personToEdit, editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedClient)));","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" * Creates and returns a {@code Client} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" protected Client createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":" Area updatedArea \u003d editPersonDescriptor.getArea().orElse(personToEdit.getArea());","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails updatedDetails \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.getDetails().orElse(personToEdit.getDetails());","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" return new Client(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedDetails,","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" updatedArea);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LimZiJia":3,"gosongying":68,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":"abstract public class EditCommand extends Command {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the client or housekeeper \"","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" + \"identified by the index number used in the displayed person list. \"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" + \"TYPE(client or housekeeper) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" + \"Example: \" + COMMAND_WORD + \" client 1 \"","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" protected final Index index;","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" protected final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" abstract protected Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" private BookingList bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":" private HousekeepingDetails details;","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"GERARDJM018"},"content":" private Area area;","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" setBookingList(toCopy.bookingList);","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":" setDetails(toCopy.details);","lastModifiedDate":"2024-03-28"},{"lineNumber":126,"author":{"gitId":"GERARDJM018"},"content":" setArea(toCopy.area);","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, area, bookingList);","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":185,"author":{"gitId":"moguries"},"content":" public void setBookingList(BookingList bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"moguries"},"content":" this.bookingList \u003d bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":189,"author":{"gitId":"moguries"},"content":" public Optional\u003cBookingList\u003e getBookingList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":190,"author":{"gitId":"moguries"},"content":" return Optional.ofNullable(bookingList);","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"LimZiJia"},"content":" public void setDetails(HousekeepingDetails details) {","lastModifiedDate":"2024-03-28"},{"lineNumber":194,"author":{"gitId":"LimZiJia"},"content":" this.details \u003d details;","lastModifiedDate":"2024-03-28"},{"lineNumber":195,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":196,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":197,"author":{"gitId":"LimZiJia"},"content":" public Optional\u003cHousekeepingDetails\u003e getDetails() {","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"LimZiJia"},"content":" return Optional.ofNullable(details);","lastModifiedDate":"2024-03-28"},{"lineNumber":199,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":" public void setArea(Area area) {","lastModifiedDate":"2024-03-28"},{"lineNumber":202,"author":{"gitId":"GERARDJM018"},"content":" this.area \u003d area;","lastModifiedDate":"2024-03-28"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":204,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":205,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cArea\u003e getArea() {","lastModifiedDate":"2024-03-28"},{"lineNumber":206,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":207,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":208,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":225,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 Objects.equals(area, otherEditPersonDescriptor.area)","lastModifiedDate":"2024-03-28"},{"lineNumber":226,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"moguries"},"content":" \u0026\u0026 Objects.equals(bookingList, otherEditPersonDescriptor.bookingList);","lastModifiedDate":"2024-04-02"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"GERARDJM018"},"content":" .add(\"area\", area)","lastModifiedDate":"2024-03-28"},{"lineNumber":239,"author":{"gitId":"moguries"},"content":" .add(\"booking list\", bookingList)","lastModifiedDate":"2024-04-02"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"LimZiJia":13,"moguries":14,"gosongying":11,"-":195,"GERARDJM018":10}},{"path":"src/main/java/seedu/address/logic/commands/EditHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_HOUSEKEEPERS;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"public class EditHousekeeperCommand extends EditCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_EDIT_HOUSEKEEPER_SUCCESS \u003d \"Edited Housekeeper: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_DUPLICATE_HOUSEKEEPER \u003d \"This housekeeper already exists in the address book.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public EditHousekeeperCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" super(index, editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" List\u003cHousekeeper\u003e lastShownList \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" Housekeeper personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" Housekeeper editedHousekeeper \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" if (!personToEdit.isSamePerson(editedHousekeeper) \u0026\u0026 model.hasHousekeeper(editedHousekeeper)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" throw new CommandException(MESSAGE_DUPLICATE_HOUSEKEEPER);","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" model.setHousekeeper(personToEdit, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" model.updateFilteredHousekeeperList(PREDICATE_SHOW_ALL_HOUSEKEEPERS);","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" Messages.formatHousekeeper(editedHousekeeper)));","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" * Creates and returns a {@code Housekeeper} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" protected Housekeeper createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" Housekeeper housekeeperToEdit \u003d (Housekeeper) personToEdit; // to use getBookingList()","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" Area updatedArea \u003d editPersonDescriptor.getArea().orElse(personToEdit.getArea());","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" BookingList updatedBookingList \u003d editPersonDescriptor.getBookingList()","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" .orElse(housekeeperToEdit.getBookingList());","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" return new Housekeeper(","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedArea, updatedBookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"moguries":5,"gosongying":68,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/logic/commands/EditHousekeepingDetailsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LHD;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PI;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"import java.util.*;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":"public class EditHousekeepingDetailsCommand extends BookingCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" public static final String COMMAND_WORD \u003d \"booking client edit\";","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the booking details of the person identified \"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" + \"[\" + PREFIX_PI + \"PREFERRED INTERVAL] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" + \"[\" + PREFIX_LHD + \"LAST HOUSEKEEPING DATE] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" + PREFIX_PI + \"1 months \"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" + PREFIX_LHD + \"2024-01-02\";","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" protected final Index index;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" protected final EditHousekeepingDetailsDescriptor editPersonDescriptor;","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" * @param editHousekeepingDetailsDescriptor details to edit the person with","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" public EditHousekeepingDetailsCommand(Index index,","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsDescriptor editHousekeepingDetailsDescriptor) {","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(editHousekeepingDetailsDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" this.editPersonDescriptor \u003d new EditHousekeepingDetailsDescriptor(editHousekeepingDetailsDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"GERARDJM018"},"content":" Client personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" if (!personToEdit.hasHousekeepingDetails()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(NO_DETAILS_MESSAGE_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":" Client editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasClient(editedPerson)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"GERARDJM018"},"content":" model.setClient(personToEdit, editedPerson);","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatClient(editedPerson)));","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"GERARDJM018"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"GERARDJM018"},"content":" * edited with {@code editHousekeepingDetailsDescriptor}.","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"GERARDJM018"},"content":" protected Client createEditedPerson","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" (Person personToEdit,","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsCommand.EditHousekeepingDetailsDescriptor editHousekeepingDetailsDescriptor) {","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"GERARDJM018"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"GERARDJM018"},"content":" Name updatedName \u003d personToEdit.getName();","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"GERARDJM018"},"content":" Phone updatedPhone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"GERARDJM018"},"content":" Email updatedEmail \u003d personToEdit.getEmail();","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"GERARDJM018"},"content":" Address updatedAddress \u003d personToEdit.getAddress();","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"GERARDJM018"},"content":" Set\u003cTag\u003e updatedTags \u003d personToEdit.getTags();","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"GERARDJM018"},"content":" Area updatedArea \u003d personToEdit.getArea();","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"GERARDJM018"},"content":" LocalDate updatedLastHousekeepingDate \u003d editHousekeepingDetailsDescriptor.getLastHousekeepingDate()","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"GERARDJM018"},"content":" .orElse(personToEdit.getDetails().getLastHousekeepingDate());","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"GERARDJM018"},"content":" Period updatedPreferredInterval \u003d editHousekeepingDetailsDescriptor.getPreferredInterval()","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"GERARDJM018"},"content":" .orElse(personToEdit.getDetails().getPreferredInterval());","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" Period updatedDeferment \u003d editHousekeepingDetailsDescriptor.getDeferment()","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"GERARDJM018"},"content":" .orElse(personToEdit.getDetails().getDeferment());","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"GERARDJM018"},"content":" Booking updatedBooking \u003d editHousekeepingDetailsDescriptor.getBooking()","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"GERARDJM018"},"content":" .orElse(personToEdit.getDetails().getBooking());","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"GERARDJM018"},"content":" HousekeepingDetails updatedDetails \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":114,"author":{"gitId":"GERARDJM018"},"content":" new HousekeepingDetails(updatedLastHousekeepingDate, updatedPreferredInterval);","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"GERARDJM018"},"content":" updatedDetails.addDeferment(updatedDeferment);","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"GERARDJM018"},"content":" updatedDetails.setBooking(updatedBooking);","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" return new Client(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"GERARDJM018"},"content":" updatedDetails, updatedArea);","lastModifiedDate":"2024-04-03"},{"lineNumber":120,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":126,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":128,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-03"},{"lineNumber":129,"author":{"gitId":"GERARDJM018"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":130,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"GERARDJM018"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"GERARDJM018"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"GERARDJM018"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"GERARDJM018"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"GERARDJM018"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"GERARDJM018"},"content":" .toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"GERARDJM018"},"content":" * Stores the booking details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-04-03"},{"lineNumber":148,"author":{"gitId":"GERARDJM018"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" public static class EditHousekeepingDetailsDescriptor {","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"GERARDJM018"},"content":" private LocalDate lastHousekeepingDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"GERARDJM018"},"content":" private Period preferredInterval;","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"GERARDJM018"},"content":" private Period deferment;","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" private Booking booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"GERARDJM018"},"content":" public EditHousekeepingDetailsDescriptor() {}","lastModifiedDate":"2024-04-03"},{"lineNumber":157,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":158,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":159,"author":{"gitId":"GERARDJM018"},"content":" * Copy constructor.","lastModifiedDate":"2024-04-03"},{"lineNumber":160,"author":{"gitId":"GERARDJM018"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-04-03"},{"lineNumber":161,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":162,"author":{"gitId":"GERARDJM018"},"content":" public EditHousekeepingDetailsDescriptor(EditHousekeepingDetailsDescriptor toCopy) {","lastModifiedDate":"2024-04-03"},{"lineNumber":163,"author":{"gitId":"GERARDJM018"},"content":" setLastHousekeepingDate(toCopy.lastHousekeepingDate);","lastModifiedDate":"2024-04-03"},{"lineNumber":164,"author":{"gitId":"GERARDJM018"},"content":" setPreferredInterval(toCopy.preferredInterval);","lastModifiedDate":"2024-04-03"},{"lineNumber":165,"author":{"gitId":"GERARDJM018"},"content":" setDeferment(toCopy.deferment);","lastModifiedDate":"2024-04-04"},{"lineNumber":166,"author":{"gitId":"GERARDJM018"},"content":" setBooking(toCopy.booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":169,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"GERARDJM018"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-04-03"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"GERARDJM018"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"GERARDJM018"},"content":" return CollectionUtil.isAnyNonNull(lastHousekeepingDate, preferredInterval, booking, deferment);","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":175,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":176,"author":{"gitId":"GERARDJM018"},"content":" public void setLastHousekeepingDate(LocalDate lHD) {","lastModifiedDate":"2024-04-03"},{"lineNumber":177,"author":{"gitId":"GERARDJM018"},"content":" lastHousekeepingDate \u003d lHD;","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":180,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cLocalDate\u003e getLastHousekeepingDate() {","lastModifiedDate":"2024-04-03"},{"lineNumber":181,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(lastHousekeepingDate);","lastModifiedDate":"2024-04-03"},{"lineNumber":182,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":183,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":184,"author":{"gitId":"GERARDJM018"},"content":" public void setPreferredInterval(Period preferredInterval) {","lastModifiedDate":"2024-04-03"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":" this.preferredInterval \u003d preferredInterval;","lastModifiedDate":"2024-04-03"},{"lineNumber":186,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":187,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":188,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cPeriod\u003e getPreferredInterval() {","lastModifiedDate":"2024-04-03"},{"lineNumber":189,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(preferredInterval);","lastModifiedDate":"2024-04-03"},{"lineNumber":190,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":191,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":192,"author":{"gitId":"GERARDJM018"},"content":" public void setDeferment(Period deferment) {","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"GERARDJM018"},"content":" this.deferment \u003d deferment;","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cPeriod\u003e getDeferment() {","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(deferment);","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"GERARDJM018"},"content":" public void setBooking(Booking booking) {","lastModifiedDate":"2024-04-04"},{"lineNumber":200,"author":{"gitId":"GERARDJM018"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cBooking\u003e getBooking() {","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":205,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":208,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":209,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":210,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-03"},{"lineNumber":211,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":212,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":213,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":214,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-03"},{"lineNumber":215,"author":{"gitId":"GERARDJM018"},"content":" if (!(other instanceof EditHousekeepingDetailsDescriptor)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":216,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":219,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsDescriptor otherEditPersonDescriptor \u003d (EditHousekeepingDetailsDescriptor) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":220,"author":{"gitId":"GERARDJM018"},"content":" return Objects.equals(lastHousekeepingDate, otherEditPersonDescriptor.lastHousekeepingDate)","lastModifiedDate":"2024-04-03"},{"lineNumber":221,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 Objects.equals(deferment, otherEditPersonDescriptor.deferment)","lastModifiedDate":"2024-04-04"},{"lineNumber":222,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 Objects.equals(booking, otherEditPersonDescriptor.booking)","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 Objects.equals(preferredInterval, otherEditPersonDescriptor.preferredInterval);","lastModifiedDate":"2024-04-03"},{"lineNumber":224,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":225,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":226,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":227,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":228,"author":{"gitId":"GERARDJM018"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-03"},{"lineNumber":229,"author":{"gitId":"GERARDJM018"},"content":" .add(\"last housekeeping date\", lastHousekeepingDate)","lastModifiedDate":"2024-04-03"},{"lineNumber":230,"author":{"gitId":"GERARDJM018"},"content":" .add(\"preferred interval\", preferredInterval)","lastModifiedDate":"2024-04-03"},{"lineNumber":231,"author":{"gitId":"GERARDJM018"},"content":" .add(\"booking date\", booking)","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"GERARDJM018"},"content":" .add(\"deferment\", deferment)","lastModifiedDate":"2024-04-04"},{"lineNumber":233,"author":{"gitId":"GERARDJM018"},"content":" .toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":234,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":235,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":236,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":3,"gosongying":1,"GERARDJM018":232}},{"path":"src/main/java/seedu/address/logic/commands/FindClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"public class FindClientCommand extends FindCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" public FindClientCommand(ContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" super(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" model.updateFilteredClientList(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" String.format(Messages.MESSAGE_CLIENTS_LISTED_OVERVIEW, model.getFilteredClientList().size()));","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"gosongying":21}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.Collections;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import java.util.Objects;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"abstract public class FindCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all clients or housekeepers filtered by \"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" + \"the specified attribute(s). Valid attributes: {name, phone, address, area}\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" + \"Parameters: TYPE(client or housekeeper) PREFIX/KEYWORD [PREFIX/KEYWORDS...] (optional)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" client n/alice p/90274629\";","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_NOT_FOUND \u003d \"At least one field to find must be provided.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" protected final ContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" public FindCommand(ContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"moguries":4,"gosongying":21,"-":43,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/logic/commands/FindHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"public class FindHousekeeperCommand extends FindCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" public FindHousekeeperCommand(ContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" super(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" model.updateFilteredHousekeeperList(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" String.format(Messages.MESSAGE_HOUSEKEEPERS_LISTED_OVERVIEW, model.getFilteredHousekeeperList().size()));","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"gosongying":21}},{"path":"src/main/java/seedu/address/logic/commands/LeadsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-01"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-01"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.ClientComparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.LeadsFilterPredicate;","lastModifiedDate":"2024-04-01"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-04-01"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" * Generates a list of leads based on the client\u0027s predicted next housekeeping date.","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"public class LeadsCommand extends Command {","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" public static final String COMMAND_WORD \u003d \"leads\";","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Generates a list of leads based on the client\u0027s \"","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" + \"predicted next housekeeping date.\\n\"","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" private final LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" private final Comparator\u003cClient\u003e comparator \u003d new ClientComparator();","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public LeadsCommand() {}","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" model.updateAndSortFilteredClientList(predicate, comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredClientList().size()));","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" if (!(other instanceof LeadsCommand)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-04-01"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-01"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-04-01"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" .toString();","lastModifiedDate":"2024-04-01"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-04-01"}],"authorContributionMap":{"LimZiJia":58}},{"path":"src/main/java/seedu/address/logic/commands/ListClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.TypePredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"public class ListClientCommand extends ListCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" public ListClientCommand() {","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" super(new TypePredicate(\"client\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" model.updateFilteredClientList(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" return new CommandResult(MESSAGE_SUCCESS + \"all \" + predicate.getType() + \"s\");","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"gosongying":19}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.TypePredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"abstract public class ListCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed \";","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Show list of the contacts with the given type.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" + \"Parameters: TYPE\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" protected final TypePredicate predicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" public ListCommand(TypePredicate predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" if (!(other instanceof ListCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" ListCommand otherListCommand \u003d (ListCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" return predicate.equals(otherListCommand.predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"gosongying":14,"-":18,"GERARDJM018":7}},{"path":"src/main/java/seedu/address/logic/commands/ListHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.TypePredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"public class ListHousekeeperCommand extends ListCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" public ListHousekeeperCommand() {","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" super(new TypePredicate(\"housekeeper\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" model.updateFilteredHousekeeperList(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" return new CommandResult(MESSAGE_SUCCESS + \"all \" + predicate.getType() + \"s\");","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"gosongying":19}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static seedu.address.model.person.Type.preambleIsAllowed;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.AddClientCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.AddHousekeeperCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-01"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_DETAILS, PREFIX_AREA); ","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AREA)","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" || !preambleIsAllowed(argMultimap.getPreamble())) {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_AREA);","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" String type \u003d ParserUtil.parseType(argMultimap.getPreamble());","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" Area area \u003d ParserUtil.parseArea(argMultimap.getValue(PREFIX_AREA).get());","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" HousekeepingDetails details;","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" BookingList bookingList \u003d new BookingList();","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" details \u003d ParserUtil.parseHousekeepingDetails(argMultimap.getValue(PREFIX_DETAILS));","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" System.out.println(details);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" switch (type) {","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":" case \"client\":","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" Client client \u003d new Client(name, phone, email, address, tagList, details, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" return new AddClientCommand(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":" case \"housekeeper\":","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" if (!details.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" System.out.println(details);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" throw new ParseException(AddHousekeeperCommand.MESSAGE_NO_HOUSEKEEPING_DETAILS);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeper \u003d new Housekeeper(name, phone, email, address, tagList, area, bookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" return new AddHousekeeperCommand(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"LimZiJia":11,"moguries":8,"gosongying":17,"-":54,"GERARDJM018":5}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.logic.commands.*;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" case LeadsCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-01"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" return new LeadsCommand();","lastModifiedDate":"2024-04-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" case BookingCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" return new BookingCommandParser().parse(arguments);","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":2,"moguries":3,"-":77,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/logic/parser/BookingCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"import seedu.address.logic.commands.BookingCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.BookingSearchPredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"public class BookingCommandParser implements Parser\u003cBookingCommand\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_TYPE \u003d Pattern.compile(\"^(client|housekeeper).*\");","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_ADD \u003d Pattern.compile(","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" \".*add\\\\s+(\\\\d+)\\\\s+(\\\\d{4}-\\\\d{2}-\\\\d{2}\\\\s+(am|pm))\");","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_DELETE_HOUSEKEEPER \u003d Pattern.compile(\".*delete\\\\s+(\\\\d+)\\\\s+(\\\\d+)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_DELETE_CLIENT \u003d Pattern.compile(\".*delete\\\\s+(\\\\d+)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_LIST \u003d Pattern.compile(\".*list\\\\s+(\\\\d+)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_SEARCH \u003d Pattern.compile(","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" \".*search\\\\s+(\\\\w+)\\\\s+(\\\\d{4}-\\\\d{2}-\\\\d{2})\\\\s+(\\\\w{2})\");","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_SET \u003d Pattern.compile(","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" \".*set\\\\s+(\\\\d+)\\\\s+(\\\\d{4}-\\\\d{2}-\\\\d{2}\\\\s+\\\\d+\\\\s+(days|weeks|months|years))\");","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_REMOVE \u003d Pattern.compile(\".*remove\\\\s+(\\\\d+)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" private static final Pattern PATTERN_EDIT \u003d Pattern.compile(\".*edit\\\\s+(.*)\");","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" private static final Pattern PATTERN_DEFERMENT \u003d Pattern.compile(","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" \".*defer\\\\s+(\\\\d+)\\\\s+(\\\\d+\\\\s+(days|weeks|months|years))\");","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" private static final String CLIENT \u003d \"client\";","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" private static final String HOUSEKEEPER \u003d \"housekeeper\";","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" private static final String ADD_COMMAND \u003d \"add\";","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" private static final String DELETE_COMMAND \u003d \"delete\";","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" private static final String LIST_COMMAND \u003d \"list\";","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" private static final String DEFERMENT_COMMAND \u003d \"defer\";","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" private static final String SEARCH_COMMAND \u003d \"search\";","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" private static final String EDIT_LAST_HOUSEKEEPING_DATE_COMMAND \u003d \"last\";","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" private static final String EDIT_PREFERRED_INTERVAL_COMMAND \u003d \"interval\";","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" private static final String SET_HOUSEKEEPING_DETAILS_COMMAND \u003d \"set\";","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" private static final String REMOVE_HOUSEKEEPING_DETAILS_COMMAND \u003d \"remove\";","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" public BookingCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" Matcher addMatcher \u003d PATTERN_ADD.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" Matcher deleteHousekeeperMatcher \u003d PATTERN_DELETE_HOUSEKEEPER.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" Matcher deleteClientMatcher \u003d PATTERN_DELETE_CLIENT.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" Matcher listMatcher \u003d PATTERN_LIST.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" Matcher searchMatcher \u003d PATTERN_SEARCH.matcher(args.trim());","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" Matcher typeMatcher \u003d PATTERN_TYPE.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" Matcher setMatcher \u003d PATTERN_SET.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" Matcher removeMatcher \u003d PATTERN_REMOVE.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" Matcher editMatcher \u003d PATTERN_EDIT.matcher(args.trim());","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" Matcher deferMatcher \u003d PATTERN_DEFERMENT.matcher(args.trim());","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" if (!typeMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookingCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":" } else if (typeMatcher.group(1).equals(\"client\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" return clientBookingCommandParser(addMatcher, deleteClientMatcher, listMatcher, setMatcher, removeMatcher,","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" editMatcher, deferMatcher, args);","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":" } else if (typeMatcher.group(1).equals(\"housekeeper\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" return housekeeperBookingCommandParser(addMatcher, deleteHousekeeperMatcher, listMatcher, searchMatcher);","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookingCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"LimZiJia"},"content":" private static BookingCommand clientBookingCommandParser","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"LimZiJia"},"content":" (Matcher addMatcher, Matcher deleteMatcher, Matcher listMatcher,","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" Matcher setMatcher, Matcher removeMatcher, Matcher editMatcher,","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" Matcher deferMatcher, String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" if (setMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(setMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":" // Date and period is not really optional since it is guaranteed by the regex.","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" ParserUtil.parseHousekeepingDetails(Optional.of(setMatcher.group(2)));","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(CLIENT, SET_HOUSEKEEPING_DETAILS_COMMAND, clientIndex, housekeepingDetails);","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":" } else if (removeMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(removeMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(CLIENT, REMOVE_HOUSEKEEPING_DETAILS_COMMAND, clientIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" } else if (editMatcher.matches()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":" return new EditHousekeepingDetailsParser().parse(args);","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" } else if (deferMatcher.matches()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"GERARDJM018"},"content":" Period deferment \u003d ParserUtil.parsePreferredInterval(deferMatcher.group(2));","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"GERARDJM018"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(deferMatcher.group(1));","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" return new BookingCommand(CLIENT, DEFERMENT_COMMAND, clientIndex, deferment);","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" } else if (addMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(addMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":" String bookedDateAndTime \u003d addMatcher.group(2);","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(CLIENT, ADD_COMMAND, clientIndex, bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"LimZiJia"},"content":" } else if (deleteMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(deleteMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(CLIENT, DELETE_COMMAND, clientIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookingCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" private static BookingCommand housekeeperBookingCommandParser","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" (Matcher addMatcher, Matcher deleteMatcher, Matcher listMatcher,","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" Matcher searchMatcher) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" if (addMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" Index housekeeperIndex \u003d ParserUtil.parseIndex(addMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" String bookedDateAndTime \u003d addMatcher.group(2);","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(HOUSEKEEPER, ADD_COMMAND, housekeeperIndex, bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" } else if (deleteMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" Index housekeeperIndex \u003d ParserUtil.parseIndex(deleteMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" int bookingToDeleteIndex \u003d Integer.parseInt(deleteMatcher.group(2));","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(HOUSEKEEPER, DELETE_COMMAND, housekeeperIndex, bookingToDeleteIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" } else if (listMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" Index housekeeperIndex \u003d ParserUtil.parseIndex(listMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(HOUSEKEEPER, LIST_COMMAND, housekeeperIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" } else if (searchMatcher.matches()){","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" String area \u003d searchMatcher.group(1);","lastModifiedDate":"2024-04-03"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" String bookedDateAndTime \u003d searchMatcher.group(2) + \" \" + searchMatcher.group(3);","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" BookingSearchPredicate bookingSearchPredicate \u003d new BookingSearchPredicate(area, bookedDateAndTime);","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" return new BookingCommand(HOUSEKEEPER, SEARCH_COMMAND, bookingSearchPredicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookingCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":62,"moguries":44,"GERARDJM018":17}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_AREA \u003d new Prefix(\"ar/\");","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" public static final Prefix PREFIX_DETAILS \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_LHD \u003d new Prefix(\"lhd/\");","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_PI \u003d new Prefix(\"pi/\");","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_BD \u003d new Prefix(\"bd/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_DEFERMENT \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" public static final String[] ALLOWED_PREAMBLES \u003d new String[] {\"client\", \"housekeeper\"};","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" public static final String[] ALLOWED_PREAMBLES_TYPE \u003d new String[] {\"client\", \"housekeeper\"};","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" public static final String[] ALLOWED_PREAMBLES_AREA \u003d new String[] {\"north\", \"northeast\", \"east\", \"southeast\"","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" , \"south\", \"southwest\", \"west\", \"northwest\"};","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"LimZiJia":3,"-":14,"GERARDJM018":8}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.DeleteClientCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.DeleteHousekeeperCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" String[] splitArgs \u003d args.trim().split(\" \");","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" // check that input is valid","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" if (splitArgs.length \u003c 2 || splitArgs.length \u003e 2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" if (Integer.parseInt(splitArgs[1]) \u003c 0) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" String type \u003d ParserUtil.parseType(splitArgs[0]);","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" Index index \u003d ParserUtil.parseIndex(splitArgs[1]);","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" if (type.equals(\"client\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" return new DeleteClientCommand(index);","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" } else if (type.equals(\"housekeeper\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" return new DeleteHousekeeperCommand(index);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" throw new ParseException(pe.getMessage());","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"moguries":18,"gosongying":14,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.*;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.EditClientCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.EditHousekeeperCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" PREFIX_AREA);","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" String type;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" // check that input is valid","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" String[] splitArgs \u003d argMultimap.getPreamble().trim().split(\" \");","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" if (splitArgs.length \u003c 2 || splitArgs.length \u003e 2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" if (Integer.parseInt(splitArgs[1]) \u003c\u003d 0) {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" type \u003d ParserUtil.parseType(splitArgs[0]);","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" index \u003d ParserUtil.parseIndex(splitArgs[1]);","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_AREA);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_AREA).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setArea(ParserUtil.parseArea(argMultimap.getValue(PREFIX_AREA).get()));","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" if (type.equals(\"client\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" return new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" } else if (type.equals(\"housekeeper\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" return new EditHousekeeperCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"moguries":15,"gosongying":16,"-":76,"GERARDJM018":7}},{"path":"src/main/java/seedu/address/logic/parser/EditHousekeepingDetailsParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BD;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEFERMENT;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LHD;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PI;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.logic.commands.EditHousekeepingDetailsCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.logic.commands.EditHousekeepingDetailsCommand.EditHousekeepingDetailsDescriptor;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"public class EditHousekeepingDetailsParser implements Parser\u003cEditHousekeepingDetailsCommand\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" * Parses the given {@code String} of arguments in the context of the EditHousekeepingDetailsCommand","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" public EditHousekeepingDetailsCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_LHD, PREFIX_PI, PREFIX_BD,","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" PREFIX_DEFERMENT);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" Index index;","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" String[] splitArgs \u003d argMultimap.getPreamble().trim().split(\"edit \");","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" index \u003d ParserUtil.parseIndex(splitArgs[1]);","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" } catch (Exception pe) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_LHD, PREFIX_PI, PREFIX_BD, PREFIX_DEFERMENT);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsDescriptor editPersonDescriptor \u003d new EditHousekeepingDetailsDescriptor();","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_LHD).isPresent()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setLastHousekeepingDate(ParserUtil","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" .parseLastHousekeepingDate(argMultimap.getValue(PREFIX_LHD).get()));","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_PI).isPresent()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setPreferredInterval(ParserUtil","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" .parsePreferredInterval(argMultimap.getValue(PREFIX_PI).get()));","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_BD).isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setBooking(ParserUtil","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" .parseBooking(argMultimap.getValue(PREFIX_BD).get()));","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_DEFERMENT).isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setDeferment(ParserUtil","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" .parsePreferredInterval(argMultimap.getValue(PREFIX_DEFERMENT).get()));","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(EditHousekeepingDetailsCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" return new EditHousekeepingDetailsCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"GERARDJM018":66}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.*;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.FindClientCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.FindHousekeeperCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" private String name \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" private String address \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" private String area \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" String[] subArgs \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_AREA);","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" if (subArgs.length \u003c 2) {","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" String type \u003d ParserUtil.parseType(subArgs[0]);","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_AREA);","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" address \u003d argMultimap.getValue(PREFIX_ADDRESS).get();","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_AREA).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" area \u003d argMultimap.getValue(PREFIX_AREA).get();","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" String trimmedArea \u003d area.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" String[] nameKeywords \u003d trimmedName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":" String[] addressKeywords \u003d trimmedAddress.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" String[] areaKeywords \u003d trimmedArea.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" for (int i \u003d 0; i \u003c areaKeywords.length ; i++) {","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":" if (!Area.isValidArea(areaKeywords[i])) {","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, Area.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" if (nameKeywords[0].isEmpty() \u0026\u0026 addressKeywords[0].isEmpty() \u0026\u0026 areaKeywords[0].isEmpty()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" throw new ParseException(FindCommand.MESSAGE_NOT_FOUND);","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" if (type.equals(\"client\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" return new FindClientCommand(new ContainsKeywordsPredicate(Arrays.asList(nameKeywords),","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" Arrays.asList(addressKeywords), Arrays.asList(areaKeywords)));","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" // As type is ensured to be either client or housekeeper before, it is safe to assume that the type is","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" // housekeeper, so we can directly return a FindHousekeeperCommand object.","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" return new FindHousekeeperCommand(new ContainsKeywordsPredicate(Arrays.asList(nameKeywords),","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":" Arrays.asList(addressKeywords), Arrays.asList(areaKeywords)));","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"gosongying":17,"-":32,"GERARDJM018":38}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.ListClientCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.ListHousekeeperCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.TypePredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" String[] type \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" if (type.length !\u003d 1) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" if (!trimmedArgs.equals(\"client\") \u0026\u0026 !trimmedArgs.equals(\"housekeeper\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" if (trimmedArgs.equals(\"client\")) {","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" return new ListClientCommand();","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" // As the type is either \"client\" or \"housekeeper\", we can safely assume that the type is \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" return new ListHousekeeperCommand();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"gosongying":12,"GERARDJM018":37}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.parser.CliSyntax.ALLOWED_PREAMBLES_TYPE;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.time.Period;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.*;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" private static final Pattern PATTERN_BOOKING \u003d Pattern.compile(","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" \"(\\\\d{4}-\\\\d{2}-\\\\d{2}\\\\s+(am|pm))\");","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" public static final String TYPE_VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"GERARDJM018"},"content":" * Parses a {@code String type} into a {@code type}.","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"GERARDJM018"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"GERARDJM018"},"content":" * @throws ParseException if the given {@code type} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" public static String parseType(String type) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(type);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"GERARDJM018"},"content":" String trimmedType \u003d type.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":" if (!(trimmedType.matches(TYPE_VALIDATION_REGEX) \u0026\u0026 preambleIsAllowed(trimmedType))) {","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(Type.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" return trimmedType;","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" * Checks if a given command uses a preamble that is allowed. (we define preamble as TYPE)","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" * @param preamble","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" * @return true if the preamble is allowed and no if it is not.","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"gosongying"},"content":" public static boolean preambleIsAllowed(String preamble) {","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":" for (String s : ALLOWED_PREAMBLES_TYPE) {","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":" if (s.equals(preamble)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":151,"author":{"gitId":"GERARDJM018"},"content":" * Parses a {@code String area} into an {@code Area}.","lastModifiedDate":"2024-03-28"},{"lineNumber":152,"author":{"gitId":"GERARDJM018"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":153,"author":{"gitId":"GERARDJM018"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":154,"author":{"gitId":"GERARDJM018"},"content":" * @throws ParseException if the given {@code area} is invalid.","lastModifiedDate":"2024-03-28"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":156,"author":{"gitId":"GERARDJM018"},"content":" public static Area parseArea(String area) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":157,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"GERARDJM018"},"content":" String trimmedArea \u003d area.trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"GERARDJM018"},"content":" if (!Area.isValidArea(trimmedArea)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(Area.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":162,"author":{"gitId":"GERARDJM018"},"content":" return new Area(trimmedArea);","lastModifiedDate":"2024-03-28"},{"lineNumber":163,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":164,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":176,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":177,"author":{"gitId":"GERARDJM018"},"content":" public static LocalDate parseLastHousekeepingDate(String lHD) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(lHD);","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"GERARDJM018"},"content":" LocalDate parsedLHD \u003d LocalDate.parse(lHD);","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"GERARDJM018"},"content":" return parsedLHD;","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"GERARDJM018"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":186,"author":{"gitId":"GERARDJM018"},"content":" public static Booking parseBooking(String booking) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"GERARDJM018"},"content":" if (PATTERN_BOOKING.matcher(booking.trim()).matches()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"GERARDJM018"},"content":" Booking parsedBooking \u003d new Booking(booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"GERARDJM018"},"content":" return parsedBooking;","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"GERARDJM018"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":195,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":196,"author":{"gitId":"GERARDJM018"},"content":" public static Period parsePreferredInterval(String pI) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":197,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(pI);","lastModifiedDate":"2024-04-03"},{"lineNumber":198,"author":{"gitId":"GERARDJM018"},"content":" String trimmedPI \u003d pI.trim();","lastModifiedDate":"2024-04-03"},{"lineNumber":199,"author":{"gitId":"GERARDJM018"},"content":" String[] splitPI \u003d trimmedPI.split(\"\\\\s+\");","lastModifiedDate":"2024-04-03"},{"lineNumber":200,"author":{"gitId":"GERARDJM018"},"content":" Period period;","lastModifiedDate":"2024-04-03"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":" int quantity \u003d Integer.parseInt(splitPI[0]);","lastModifiedDate":"2024-04-03"},{"lineNumber":202,"author":{"gitId":"GERARDJM018"},"content":" switch (splitPI[1]) {","lastModifiedDate":"2024-04-03"},{"lineNumber":203,"author":{"gitId":"GERARDJM018"},"content":" case \"days\":","lastModifiedDate":"2024-04-03"},{"lineNumber":204,"author":{"gitId":"GERARDJM018"},"content":" period \u003d Period.ofDays(quantity);","lastModifiedDate":"2024-04-03"},{"lineNumber":205,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":206,"author":{"gitId":"GERARDJM018"},"content":" case \"weeks\":","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"GERARDJM018"},"content":" period \u003d Period.ofWeeks(quantity);","lastModifiedDate":"2024-04-03"},{"lineNumber":208,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":209,"author":{"gitId":"GERARDJM018"},"content":" case \"months\":","lastModifiedDate":"2024-04-03"},{"lineNumber":210,"author":{"gitId":"GERARDJM018"},"content":" period \u003d Period.ofMonths(quantity);","lastModifiedDate":"2024-04-03"},{"lineNumber":211,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":212,"author":{"gitId":"GERARDJM018"},"content":" case \"years\":","lastModifiedDate":"2024-04-03"},{"lineNumber":213,"author":{"gitId":"GERARDJM018"},"content":" period \u003d Period.ofYears(quantity);","lastModifiedDate":"2024-04-03"},{"lineNumber":214,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":215,"author":{"gitId":"GERARDJM018"},"content":" default:","lastModifiedDate":"2024-04-03"},{"lineNumber":216,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"GERARDJM018"},"content":" return period;","lastModifiedDate":"2024-04-03"},{"lineNumber":219,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":220,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":" public static HousekeepingDetails parseHousekeepingDetails(Optional\u003cString\u003e details) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":222,"author":{"gitId":"LimZiJia"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":223,"author":{"gitId":"LimZiJia"},"content":" return HousekeepingDetails.empty;","lastModifiedDate":"2024-03-31"},{"lineNumber":224,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":225,"author":{"gitId":"LimZiJia"},"content":" String trimmedDetails \u003d details.get().trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":226,"author":{"gitId":"LimZiJia"},"content":" if (!HousekeepingDetails.isValidHousekeepingDetailsUser(trimmedDetails)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":227,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":228,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":229,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":230,"author":{"gitId":"moguries"},"content":" String[] s;","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"moguries"},"content":" LocalDate date;","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"LimZiJia"},"content":" Period period;","lastModifiedDate":"2024-03-28"},{"lineNumber":233,"author":{"gitId":"moguries"},"content":" int quantity;","lastModifiedDate":"2024-04-04"},{"lineNumber":234,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":235,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":236,"author":{"gitId":"moguries"},"content":" s \u003d trimmedDetails.split(\" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":237,"author":{"gitId":"moguries"},"content":" date \u003d LocalDate.parse(s[0]);","lastModifiedDate":"2024-04-04"},{"lineNumber":238,"author":{"gitId":"moguries"},"content":" quantity \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-04-04"},{"lineNumber":239,"author":{"gitId":"moguries"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"moguries"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":243,"author":{"gitId":"LimZiJia"},"content":" switch (s[2]) {","lastModifiedDate":"2024-03-28"},{"lineNumber":244,"author":{"gitId":"LimZiJia"},"content":" case \"days\":","lastModifiedDate":"2024-03-28"},{"lineNumber":245,"author":{"gitId":"LimZiJia"},"content":" period \u003d Period.ofDays(quantity);","lastModifiedDate":"2024-03-28"},{"lineNumber":246,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":247,"author":{"gitId":"LimZiJia"},"content":" case \"weeks\":","lastModifiedDate":"2024-03-28"},{"lineNumber":248,"author":{"gitId":"LimZiJia"},"content":" period \u003d Period.ofWeeks(quantity);","lastModifiedDate":"2024-03-28"},{"lineNumber":249,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":250,"author":{"gitId":"LimZiJia"},"content":" case \"months\":","lastModifiedDate":"2024-03-28"},{"lineNumber":251,"author":{"gitId":"LimZiJia"},"content":" period \u003d Period.ofMonths(quantity);","lastModifiedDate":"2024-03-28"},{"lineNumber":252,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":253,"author":{"gitId":"LimZiJia"},"content":" case \"years\":","lastModifiedDate":"2024-03-28"},{"lineNumber":254,"author":{"gitId":"LimZiJia"},"content":" period \u003d Period.ofYears(quantity);","lastModifiedDate":"2024-03-28"},{"lineNumber":255,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":256,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-03-28"},{"lineNumber":257,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":258,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":259,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":260,"author":{"gitId":"LimZiJia"},"content":" return new HousekeepingDetails(date, period);","lastModifiedDate":"2024-03-28"},{"lineNumber":261,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"LimZiJia":38,"moguries":12,"gosongying":20,"-":120,"GERARDJM018":72}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" private final UniquePersonList\u003cClient\u003e clients;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" private final UniquePersonList\u003cHousekeeper\u003e housekeepers;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" clients \u003d new UniquePersonList\u003cClient\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" housekeepers \u003d new UniquePersonList\u003cHousekeeper\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" * Replaces the contents of the client list with {@code clients}.","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" this.clients.setPersons(clients);","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" * Replaces the contents of the housekeeper list with {@code housekeepers}.","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" * {@code housekeepers} must not contain duplicate housekeepers.","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" public void setHousekeepers(List\u003cHousekeeper\u003e housekeepers) {","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" this.housekeepers.setPersons(housekeepers);","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":" public void sortClients(Comparator\u003c? super Client\u003e comparator) {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" clients.sort(comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" setClients(newData.getClientList());","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" setHousekeepers(newData.getHousekeeperList());","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" * Returns true if a client with the same identity as {@code client} exists in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" return clients.contains(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" * Returns true if a housekeeper with the same identity as {@code housekeeper} exists in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" return housekeepers.contains(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" * The client must not already exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" clients.add(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" * Adds a housekeeper to the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" * The housekeeper must not already exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" public void addHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" housekeepers.add(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" * Replaces the given client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" requireNonNull(editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" clients.setPerson(target, editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" * Replaces the given housekeeper {@code target} in the list with {@code editedHousekeeper}.","lastModifiedDate":"2024-04-03"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" * The housekeeper identity of {@code editedHousekeeper} must not be the same as another existing housekeeper in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":129,"author":{"gitId":"gosongying"},"content":" public void setHousekeeper(Housekeeper target, Housekeeper editedHousekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":" requireNonNull(editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" housekeepers.setPerson(target, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" * Removes {@code client} from this {@code AddressBook}.","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" * {@code client} must exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" public void removeClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" clients.remove(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"gosongying"},"content":" * Removes {@code housekeeper} from this {@code AddressBook}.","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"gosongying"},"content":" * {@code housekeeper} must exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" public void removeHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":148,"author":{"gitId":"gosongying"},"content":" housekeepers.remove(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"gosongying"},"content":" .add(\"clients\", clients)","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"gosongying"},"content":" .add(\"housekeepers\", housekeepers)","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"gosongying"},"content":" //.add(\"persons\", persons)","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"gosongying"},"content":" return clients.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getHousekeeperList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"gosongying"},"content":" return housekeepers.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":184,"author":{"gitId":"gosongying"},"content":" return clients.equals(otherAddressBook.clients)","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 housekeepers.equals(otherAddressBook.housekeepers);","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":190,"author":{"gitId":"gosongying"},"content":" int result \u003d 17;","lastModifiedDate":"2024-03-26"},{"lineNumber":191,"author":{"gitId":"gosongying"},"content":" result \u003d 31 * result + clients.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":192,"author":{"gitId":"gosongying"},"content":" result \u003d 31 * result + housekeepers.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":193,"author":{"gitId":"gosongying"},"content":" return result;","lastModifiedDate":"2024-03-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":4,"gosongying":82,"-":109}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_CLIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_HOUSEKEEPERS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" * Returns true if a client with the same identity as {@code client} exists in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" boolean hasClient(Client client);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" * Returns true if a housekeeper with the same identity as {@code housekeeper} exists in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" boolean hasHousekeeper(Housekeeper housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" * Deletes the given client.","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" * The client must exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" void deleteClient(Client target);","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" * Deletes the given housekeeper.","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" * The housekeeper must exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" void deleteHousekeeper(Housekeeper target);","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" * Adds the given client.","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" * {@code client} must not already exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" void addClient(Client client);","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" * Adds the given housekeeper.","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" * {@code housekeeper} must not already exist in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" void addHousekeeper(Housekeeper housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" * Replaces the given client {@code target} with {@code editedClient}.","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" void setClient(Client target, Client editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" * Replaces the given housekeeper {@code target} with {@code editedHousekeeper}.","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" * The housekeeper identity of {@code editedHousekeeper} must not be the same as another existing housekeeper in the address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" void setHousekeeper(Housekeeper target, Housekeeper editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" * Returns an unmodifiable view of the filtered client list","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" * Returns an unmodifiable view of the filtered housekeeper list","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" * Updates the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" void updateFilteredClientList(Predicate\u003c? extends Person\u003e predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":130,"author":{"gitId":"LimZiJia"},"content":" * Updates and sorts the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-04-01"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-04-01"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":133,"author":{"gitId":"LimZiJia"},"content":" void updateAndSortFilteredClientList(Predicate\u003cClient\u003e predicate, Comparator\u003cClient\u003e comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" * Updates the filter of the filtered housekeeper list to filter by the given {@code predicate}.","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-26"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" void updateFilteredHousekeeperList(Predicate\u003c? extends Person\u003e predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":" * Updates the filter of the filtered housekeeper list to filter by the given {@code housekeeperPredicate}.","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":" * @throws NullPointerException if {@code housekeeperPredicate} is null.","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"gosongying"},"content":" void updateFilteredHousekeeperListWithHousekeeperPredicate(Predicate\u003cHousekeeper\u003e housekeeperPredicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"LimZiJia":4,"moguries":3,"gosongying":53,"-":84,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" private final FilteredList\u003cClient\u003e filteredClients;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" private final FilteredList\u003cHousekeeper\u003e filteredHousekeepers;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" filteredClients \u003d new FilteredList\u003c\u003e(this.addressBook.getClientList());","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" filteredHousekeepers \u003d new FilteredList\u003c\u003e(this.addressBook.getHousekeeperList());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" return addressBook.hasClient(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" return addressBook.hasHousekeeper(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" addressBook.removeClient(target);","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" public void deleteHousekeeper(Housekeeper target) {","lastModifiedDate":"2024-04-03"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" addressBook.removeHousekeeper(target);","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" public void addHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" updateFilteredHousekeeperList(PREDICATE_SHOW_ALL_HOUSEKEEPERS);","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":129,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" addressBook.setClient(target, editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" public void setHousekeeper(Housekeeper target, Housekeeper editedHousekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" requireAllNonNull(target, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" addressBook.setHousekeeper(target, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":150,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"gosongying"},"content":" return filteredClients;","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"gosongying"},"content":" return filteredHousekeepers;","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"gosongying"},"content":" public void updateFilteredClientList(Predicate\u003c? extends Person\u003e predicate) {","lastModifiedDate":"2024-04-02"},{"lineNumber":161,"author":{"gitId":"gosongying"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"gosongying"},"content":" filteredClients.setPredicate((Predicate\u003c? super Client\u003e) predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":165,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":166,"author":{"gitId":"LimZiJia"},"content":" public void updateAndSortFilteredClientList(Predicate\u003cClient\u003e predicate, Comparator\u003cClient\u003e comparator) {","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-04-01"},{"lineNumber":168,"author":{"gitId":"LimZiJia"},"content":" addressBook.sortClients(comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"LimZiJia"},"content":" filteredClients.setPredicate(predicate);","lastModifiedDate":"2024-04-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":173,"author":{"gitId":"gosongying"},"content":" public void updateFilteredHousekeeperList(Predicate\u003c? extends Person\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":175,"author":{"gitId":"gosongying"},"content":" filteredHousekeepers.setPredicate((Predicate\u003c? super Housekeeper\u003e) predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":178,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"LimZiJia"},"content":" public void updateFilteredHousekeeperListWithHousekeeperPredicate(Predicate\u003cHousekeeper\u003e housekeeperPredicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(housekeeperPredicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":" filteredHousekeepers.setPredicate(housekeeperPredicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":195,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":198,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 filteredClients.equals(otherModelManager.filteredClients)","lastModifiedDate":"2024-03-26"},{"lineNumber":199,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 filteredHousekeepers.equals(otherModelManager.filteredHousekeepers);","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":10,"gosongying":54,"-":137}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" //ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" * Returns an unmodifiable view of the clients list.","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" * This list will not contain any duplicate clients.","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cClient\u003e getClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" * Returns an unmodifiable view of the housekeepers list.","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" * This list will not contain any duplicate housekeepers.","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cHousekeeper\u003e getHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gosongying":15,"-":16}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gosongying":1,"-":88}},{"path":"src/main/java/seedu/address/model/person/Area.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.ALLOWED_PREAMBLES_AREA;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":" * Represents a Person\u0027s area in the address book.","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidArea(String)}","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"public class Area {","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Area can only take [north, northeast, east, southeast, south,\"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" + \" southwest, west, northwest] and it should not be blank\";","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" public final String value;","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" * Constructs an {@code area}.","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" * @param area A valid area.","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" public Area(String area) {","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" checkArgument(isValidArea(area), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" value \u003d area;","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" * Returns true if a given string is a valid area.","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" public static boolean isValidArea(String test) {","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" return test.matches(VALIDATION_REGEX) \u0026\u0026 preambleIsAllowed(test);","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" * Checks if a given command uses a preamble that is allowed. (we define preamble as AREA)","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" * @param preamble","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" * @return true if the preamble is allowed and no if it is not.","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" public static boolean preambleIsAllowed(String preamble) {","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" for (String s : ALLOWED_PREAMBLES_AREA) {","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" if (s.equals(preamble)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" return value;","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" if (!(other instanceof Area)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" Area otherArea \u003d (Area) other;","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" return value.equals(otherArea.value);","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":73,"author":{"gitId":"GERARDJM018"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-28"},{"lineNumber":74,"author":{"gitId":"GERARDJM018"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-28"},{"lineNumber":75,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":76,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":77,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"moguries":1,"GERARDJM018":76}},{"path":"src/main/java/seedu/address/model/person/Booking.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" * Represents a booking for a housekeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"public class Booking implements Comparable\u003cBooking\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Booked date and time should be in the format: yyyy-mm-dd (am|pm).\"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" + \"Both date and time fields must be filled. Time field can only take values {am, pm}.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_BOOKED_DATE_AND_TIME \u003d Pattern.compile(\"(\\\\d{4}-\\\\d{2}-\\\\d{2})\\\\s+(am|pm)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" private static final DateTimeFormatter FORMATTER_BOOKED_DATE \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" private final LocalDate bookedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" private final String bookedTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" * Creates a Booking object.","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" * @param bookedDate The booked date.","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" * @param bookedTime The booked time, either \"am\" or \"pm\".","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" public Booking(LocalDate bookedDate, String bookedTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" this.bookedDate \u003d bookedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" this.bookedTime \u003d bookedTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" * Creates a Booking object using a string representation of the booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime String representation of the booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" public Booking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" requireNonNull(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" checkArgument(isValidBookedDateAndTime(bookedDateAndTime), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" bookedDate \u003d retrieveDate(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" bookedTime \u003d retrieveTime(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" * Checks if specified string representation of booked date and time is in a valid format.","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime String representation of the booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" * @return True if valid, false otherwise.","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" public static boolean isValidBookedDateAndTime(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" Matcher matcher \u003d PATTERN_BOOKED_DATE_AND_TIME.matcher(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" return matcher.matches();","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" * Retrieve LocalDate object of booked date from a string representation of booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime String representation of the booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" * @return LocalDate object","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" public static LocalDate retrieveDate(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" Matcher matcher \u003d PATTERN_BOOKED_DATE_AND_TIME.matcher(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" LocalDate parsedDate \u003d LocalDate.ofEpochDay(2024-01-02);","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" String dateString \u003d matcher.group(1);","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" parsedDate \u003d LocalDate.parse(dateString, FORMATTER_BOOKED_DATE);","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" return parsedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" return parsedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" * Retrieve String object of booked time from a string representation of booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime String representation of booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" * @return String object","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" public static String retrieveTime(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" Matcher matcher \u003d PATTERN_BOOKED_DATE_AND_TIME.matcher(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" String timeString \u003d \"\";","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" timeString \u003d matcher.group(2);","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" return timeString;","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" public LocalDate getBookedDate() {","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" return this.bookedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" public String getBookedTime() {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" return this.bookedTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" * Formats booked date and time in this format: yyyy-MM-dd (am|pm)","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" * @return Formatted string of booked date and time","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" public String formatBookedCleaning() {","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" String formattedDateString \u003d bookedDate.format(FORMATTER_BOOKED_DATE);","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" return formattedDateString + \" \" + bookedTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" public int compareTo(Booking other) {","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" LocalDate thisDate \u003d this.getBookedDate();","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" LocalDate otherDate \u003d other.getBookedDate();","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" String thisTime \u003d this.getBookedTime();","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" String otherTime \u003d other.getBookedTime();","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" int dateComparison \u003d thisDate.compareTo(otherDate);","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" if (dateComparison !\u003d 0) {","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" return dateComparison;","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" return thisTime.compareTo(otherTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" public String toString() {","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" return formatBookedCleaning();","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" if (!(other instanceof Booking)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":" Booking otherBooking \u003d (Booking) other;","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"moguries"},"content":" return bookedDate.equals(otherBooking.getBookedDate()) \u0026\u0026 bookedTime.equals(otherBooking.getBookedTime());","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"moguries":142}},{"path":"src/main/java/seedu/address/model/person/BookingList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import java.util.Collections;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * Encapsulates the behaviour of a list of Bookings.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"public class BookingList {","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_DUPLICATE \u003d \"is unavailable at the specified date and time.\"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" + \" Please input a different date and time.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_INVALID_DELETE \u003d \"The booking index provided is invalid.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private static final String MESSAGE_SUCCESS_ADD \u003d \"This booking has successfully been added: %1$s.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" private static final String MESSAGE_SUCCESS_DELETE \u003d \"This booking has successfully been deleted: %1$s.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" private static final String MESSAGE_SUCCESS_LIST \u003d \"Bookings:%1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" private ArrayList\u003cBooking\u003e bookings;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" * Constructs an BookingList object with an empty list of bookings.","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public BookingList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" bookings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" * Constructs a BookingList object with another Bookinglist.","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" * @param bookingList other BookingList whose list to copy","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public BookingList(BookingList bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" this.bookings \u003d bookingList.getBookings();","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" * Constructs a BookingList object with an ArrayList\u003cBooking\u003e.","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" * @param bookingList ArrayList\u003cBooking\u003e containing list of bookings","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" public BookingList(ArrayList\u003cBooking\u003e bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" this.bookings \u003d bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" * Creates a new booking with the specified booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime of the booking to be created","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" * @return Booking object","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" public Booking createBooking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" Booking booking \u003d new Booking(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" return booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" * Checks if a booking with the specified booked date and time already exists in the booking list.","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime of booking to be checked","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" * @return True if there is a duplicate, false otherwise","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" public boolean hasDuplicate(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" Booking bookingToCheck \u003d new Booking(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" for (Booking booking : bookings) {","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" if (booking.equals(bookingToCheck)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" * Adds a new booking with the specified date and time to the booking list.","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime of new booking to be added","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" * @return String containing message for successfully adding a booking","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" public String addBooking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" Booking booking \u003d createBooking(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" bookings.add(booking);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" return String.format(MESSAGE_SUCCESS_ADD, booking.toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" * Checks if provided index is valid.","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" * @param index to be checked","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" * @return True if valid, false otherwise","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" public boolean isValidDeleteIndex(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" if (index \u003c\u003d bookings.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" * Deletes the booking at the specified index from the booking list.","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" * @param index of booking to be deleted","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" * @return String containing message for successfully deleting the booking","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" public String deleteBooking(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" int targetIndex \u003d index - 1;","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" Booking targetBooking \u003d bookings.get(targetIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" bookings.remove(targetIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" return String.format(MESSAGE_SUCCESS_DELETE, targetBooking.toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" * Lists all bookings in the booking list.","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" * @return String containing message of the list of bookings","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" public String listBooking() {","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" Collections.sort(bookings);","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" String listMessage \u003d \"\";","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" for (int i \u003d 0; i \u003c bookings.size(); i++) {","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" String bookingString \u003d (i + 1) + \". \" + bookings.get(i).toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" listMessage +\u003d \"\\n\" + bookingString;","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" return String.format(MESSAGE_SUCCESS_LIST, listMessage);","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" public ArrayList\u003cBooking\u003e getBookings() {","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" if (bookings \u003d\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" return bookings;","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" if (bookings.isEmpty()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" return \"No bookings available\";","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" return bookings.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"moguries":130,"gosongying":8}},{"path":"src/main/java/seedu/address/model/person/BookingSearchPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-03"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" * Tests that a {@code Housekeeper}\u0027s {@code Area} matches the specified area and that they do not have a booking","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" * at the specified date and time.","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"public class BookingSearchPredicate implements Predicate\u003cHousekeeper\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private final String area;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" private final String bookingToSearch;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" * Constructs a BookingSearchPredicate with the given area and booked date and time.","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" * @param area area to test","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" * @param bookingToSearch booked date and time to test","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public BookingSearchPredicate(String area, String bookingToSearch) {","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" this.area \u003d area;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" this.bookingToSearch \u003d bookingToSearch;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" public String getArea() {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" return area;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public String getBookingToSearch() {","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" return bookingToSearch;","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" public boolean test(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" boolean hasArea \u003d StringUtil.containsWordIgnoreCase(housekeeper.getArea().toString(), area);","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" return !housekeeper.hasDuplicateBooking(bookingToSearch) \u0026\u0026 hasArea;","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" if (!(other instanceof BookingSearchPredicate)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" BookingSearchPredicate otherBookingSearchPredicate \u003d (BookingSearchPredicate) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" boolean isSameBooking \u003d bookingToSearch.equals(otherBookingSearchPredicate.bookingToSearch);","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" return isSameBooking;","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" .add(\"booking to search\", bookingToSearch).toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"moguries":62}},{"path":"src/main/java/seedu/address/model/person/Client.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"public class Client extends Person implements Comparable\u003cClient\u003e {","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" /** The housekeeping details of the client. Used to generate call list by predicting next session date */","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" private HousekeepingDetails housekeepingDetails;","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" * @param name","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" * @param phone","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" * @param email","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" * @param address","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" * @param tags","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public Client(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e tags, HousekeepingDetails housekeepingDetails, Area area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" super(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" * Returns true if a client has housekeeping details.","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" public boolean hasHousekeepingDetails() {","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" return !housekeepingDetails.isEmpty();","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" public void setHousekeepingDetails(HousekeepingDetails housekeepingDetails) {","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" public LocalDate getNextHousekeepingDate() {","lastModifiedDate":"2024-04-01"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" return this.housekeepingDetails.getNextHousekeepingDate();","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" public boolean hasBooking() {","lastModifiedDate":"2024-04-01"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":" return this.housekeepingDetails.hasBooking();","lastModifiedDate":"2024-04-01"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" * Returns the housekeeping details of the client.","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails getDetails() {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":" return this.housekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" if (!(other instanceof Client)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" Client otherPerson \u003d (Client) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" return this.getName().equals(otherPerson.getName())","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getPhone().equals(otherPerson.getPhone())","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getEmail().equals(otherPerson.getEmail())","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getAddress().equals(otherPerson.getAddress())","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 this.getTags().equals(otherPerson.getTags())","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getArea().equals(otherPerson.getArea());","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" public boolean isClient() {","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" public int compareTo(Client other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":92,"author":{"gitId":"LimZiJia"},"content":" if (this.hasHousekeepingDetails() \u0026\u0026 other.hasHousekeepingDetails()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" return this.housekeepingDetails.compareTo(other.housekeepingDetails);","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" } else if (this.hasHousekeepingDetails()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"LimZiJia"},"content":" return -1; // this client has housekeeping details but the other does not, so this client is less.","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" } else if (other.hasHousekeepingDetails()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" return 1; // the other client has housekeeping details but this client does not, so this client is greater.","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":" return 0; // neither client has housekeeping details, so they are considered equal","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" .add(\"name\", this.getName())","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"LimZiJia"},"content":" .add(\"phone\", this.getPhone())","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" .add(\"email\", this.getEmail())","lastModifiedDate":"2024-03-28"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":" .add(\"address\", this.getAddress())","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" .add(\"tags\", this.getTags())","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"LimZiJia"},"content":" .add(\"housekeepingDetails\", this.housekeepingDetails)","lastModifiedDate":"2024-03-28"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":" .toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":114,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"LimZiJia":84,"gosongying":30}},{"path":"src/main/java/seedu/address/model/person/ClientComparator.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":" * Compares two clients based predicted next housekeeping date.","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"public class ClientComparator implements Comparator\u003cClient\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" public int compare(Client c1, Client c2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":" return c1.compareTo(c2);","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":13}},{"path":"src/main/java/seedu/address/model/person/ContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"public class ContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" private final List\u003cString\u003e keywordsN;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" private final List\u003cString\u003e keywordsAd;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":" private final List\u003cString\u003e keywordsAr;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" public ContainsKeywordsPredicate(List\u003cString\u003e keywordsN, List\u003cString\u003e keywordsAd, List\u003cString\u003e keywordsAr) {","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" this.keywordsN \u003d keywordsN;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" this.keywordsAd \u003d keywordsAd;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" this.keywordsAr \u003d keywordsAr;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" boolean hasNameKeyword \u003d true;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" boolean hasAddressKeyword \u003d true;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" boolean hasAreaKeyword \u003d true;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" if (keywordsN.get(0) !\u003d \"\") {","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" hasNameKeyword \u003d keywordsN.stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" if (keywordsAd.get(0) !\u003d \"\") {","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" hasAddressKeyword \u003d keywordsAd.stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getAddress().toString(), keyword));","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" if (keywordsAr.get(0) !\u003d \"\") {","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" hasAreaKeyword \u003d keywordsAr.stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getArea().toString(), keyword));","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" return hasNameKeyword \u0026\u0026 hasAddressKeyword \u0026\u0026 hasAreaKeyword;","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" if (!(other instanceof ContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" ContainsKeywordsPredicate otherContainsKeywordsPredicate \u003d (ContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" boolean isSameName \u003d keywordsN.equals(otherContainsKeywordsPredicate.keywordsN);","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" boolean isSameAddress \u003d keywordsAd.equals(otherContainsKeywordsPredicate.keywordsAd);","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" boolean isSameArea \u003d keywordsAr.equals(otherContainsKeywordsPredicate.keywordsAr);","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" return isSameName \u0026\u0026 isSameAddress \u0026\u0026 isSameArea;","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywordsN).toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"GERARDJM018":66}},{"path":"src/main/java/seedu/address/model/person/Housekeeper.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Represents a Housekeeper in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"public class Housekeeper extends Person {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" private BookingList bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" * @param name","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" * @param phone","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" * @param email","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" * @param address","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" * @param tags","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" public Housekeeper(","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Area area, BookingList bookingList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" super(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" this.bookingList \u003d bookingList !\u003d null ? bookingList : new BookingList();","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public boolean hasDuplicateBooking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" return bookingList.hasDuplicate(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" public String addBooking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" return \"Housekeeper: [ \" + this.getName() + \" ]\\n\\n\" + bookingList.addBooking(bookedDateAndTime);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" public boolean isValidDeleteIndex(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" return bookingList.isValidDeleteIndex(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" public String deleteBooking(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" return \"Housekeeper: [ \" + this.getName() + \" ]\\n\\n\" + bookingList.deleteBooking(index);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" public String listBooking() {","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" return \"Housekeeper: [ \" + this.getName() + \" ]\\n\\n\" + bookingList.listBooking();","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" public BookingList getBookingList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" return this.bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" * Returns true if both housekeepers have the same identity and data fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" * This defines a stronger notion of equality between two housekeepers.","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" if (!(other instanceof Housekeeper)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" Housekeeper otherPerson \u003d (Housekeeper) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" return this.getName().equals(otherPerson.getName())","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getPhone().equals(otherPerson.getPhone())","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getEmail().equals(otherPerson.getEmail())","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getAddress().equals(otherPerson.getAddress())","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 this.getTags().equals(otherPerson.getTags())","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getArea().equals(otherPerson.getArea());","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" public boolean isClient() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":85,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails getDetails() {","lastModifiedDate":"2024-03-28"},{"lineNumber":87,"author":{"gitId":"LimZiJia"},"content":" return null;","lastModifiedDate":"2024-03-28"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"LimZiJia":29,"moguries":30,"gosongying":30}},{"path":"src/main/java/seedu/address/model/person/HousekeepingDetails.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import java.time.Period;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Represents the housekeeping details of a client.","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"public class HousekeepingDetails implements Comparable\u003cHousekeepingDetails\u003e {","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern USER_FORMAT \u003d Pattern.compile(\"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d+ (days|weeks|months|years)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern STORAGE_FORMAT \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" Pattern.compile(\"(null|(\\\\d{4}-\\\\d{2}-\\\\d{2})\\\\s\" // Last housekeeping date","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" + \"(P(?!$)(\\\\d+Y)?(\\\\d+M)?(\\\\d+W)?(\\\\d+D)?)\\\\s\" // Preferred interval","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" + \"(null|\\\\d{4}-\\\\d{2}-\\\\d{2}\\\\s+(am|pm))\\\\s\" // Booking date (can be null)","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" + \"(P(?!$)(\\\\d+Y)?(\\\\d+M)?(\\\\d+W)?(\\\\d+D)?))\"); // Deferment","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" \"Housekeeping details should be in the format: yyyy-mm-dd n (days|weeks|months|years) \"","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" + \"where n is an integer quantity of days, weeks, months or years.\";","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_CONSTRAINTS_STORAGE \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" \"Housekeeping details should be in the format: \u0027yyyy-mm-dd P?Y?M?W?D? yyyy-mm-dd P?Y?M?W?D?\u0027 or \u0027null\u0027\"","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" + \"where P is the period designator, Y is years, M is months, W is weeks D is days. \"","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" + \"YMWD must be in that order. All fields are optional.\"","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" + \"The second date is the booking date and it can be null\";","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" public static final String NO_DETAILS_PROVIDED \u003d \"No housekeeping details provided\";","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public static final HousekeepingDetails empty \u003d new HousekeepingDetails();","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" /** The last date the housekeeping was done. */","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" private LocalDate lastHousekeepingDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" /** Client\u0027s preferred time between housekeeping services. */","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" private Period preferredInterval;","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" /** The date the housekeeping is booked or null if there is no booking */","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" private Booking booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" /** The period to delay calling the client */","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" private Period deferment;","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" /** User must add as \"yyyy-mm-dd n (days|weeks|months|years)\" */","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" public static boolean isValidHousekeepingDetailsUser(String test) {","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" Matcher userInputMatcher \u003d USER_FORMAT.matcher(test);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" return userInputMatcher.matches();","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" /** String can be stored as \"null\" or \"yyyy-mm-dd P?Y?M?W?D? (null|yyyy-mm-dd (am|pm)) P?Y?M?W?D?\" */","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" public static boolean isValidHousekeepingDetailsStorage(String test) {","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":" Matcher storageMatcher \u003d STORAGE_FORMAT.matcher(test);","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" return storageMatcher.matches();","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" * Converts the stored string representation of the housekeeping details to a readable format.","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" * @param details The stored string representation of the housekeeping details.","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" * @return Readable string representation of the housekeeping details.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":" public static String makeStoredDetailsReadable(String details) {","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" if (details.equals(\"null\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" return NO_DETAILS_PROVIDED;","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" else if (!isValidHousekeepingDetailsStorage(details)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" return \"Invalid housekeeping details format\";","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" // Converting Period of preferred interval to a readable format","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" String[] s \u003d details.split(\" \"); // If valid s[0] \u003d lastHousekeepingDate, s[1] \u003d preferredInterval,","lastModifiedDate":"2024-04-01"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" // s[2] \u003d booking, s[3] \u003d deferment","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" String num \u003d s[1].substring(1, s[1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" String unit \u003d s[1].substring(s[1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" String unitString;","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" switch (unit) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" case \"Y\":","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"years\";","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" case \"M\":","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"months\";","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" case \"W\":","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"weeks\";","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" case \"D\":","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"days\";","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" default:","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"Invalid unit\";","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" // Makes null booking readable","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" String booking \u003d s[2].equals(\"null\") ? \"No booking\" : s[2];","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" return String.format(\"Last housekeeping: %s\\nPreferred interval: %s %s\\nBooking date: %s\",","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" s[0], num, unitString, booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"GERARDJM018"},"content":" * Converts the stored string representation of the housekeeping details with deferment to a readable format.","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":" * @param details The stored string representation of the housekeeping details.","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" * @return Readable string representation of the housekeeping details.","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"GERARDJM018"},"content":" public static String makeStoredDetailsReadableWithDeferment(String details) {","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"LimZiJia"},"content":" if (details.equals(\"null\")) {","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"LimZiJia"},"content":" return NO_DETAILS_PROVIDED;","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" else if (!isValidHousekeepingDetailsStorage(details)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":107,"author":{"gitId":"LimZiJia"},"content":" return \"Invalid housekeeping details format\";","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" // Converting Period of preferred interval to a readable format","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"LimZiJia"},"content":" String[] s \u003d details.split(\" \"); // If valid s[0] \u003d lastHousekeepingDate, s[1] \u003d preferredInterval,","lastModifiedDate":"2024-04-01"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":" // s[2] \u003d booking, s[3] \u003d deferment","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"GERARDJM018"},"content":" String numPI \u003d s[1].substring(1, s[1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"GERARDJM018"},"content":" String unitPI \u003d s[1].substring(s[1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"GERARDJM018"},"content":" String unitStringPI;","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"GERARDJM018"},"content":" switch (unitPI) {","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"LimZiJia"},"content":" case \"Y\":","lastModifiedDate":"2024-03-28"},{"lineNumber":118,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"years\";","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":120,"author":{"gitId":"LimZiJia"},"content":" case \"M\":","lastModifiedDate":"2024-03-28"},{"lineNumber":121,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"months\";","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":123,"author":{"gitId":"LimZiJia"},"content":" case \"W\":","lastModifiedDate":"2024-03-28"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"weeks\";","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":126,"author":{"gitId":"LimZiJia"},"content":" case \"D\":","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"days\";","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":129,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-03-28"},{"lineNumber":130,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"Invalid unit\";","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"GERARDJM018"},"content":" String numD \u003d s[s.length-1].substring(1, s[s.length-1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"GERARDJM018"},"content":" String unitD\u003d s[s.length-1].substring(s[s.length-1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"GERARDJM018"},"content":" String unitStringD;","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"GERARDJM018"},"content":" switch (unitD) {","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"GERARDJM018"},"content":" case \"Y\":","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"years\";","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"GERARDJM018"},"content":" case \"M\":","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"months\";","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"GERARDJM018"},"content":" case \"W\":","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"weeks\";","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"GERARDJM018"},"content":" case \"D\":","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"days\";","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"GERARDJM018"},"content":" default:","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"Invalid unit\";","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":151,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":152,"author":{"gitId":"LimZiJia"},"content":" // Makes null booking readable","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"LimZiJia"},"content":" String booking \u003d s[2].equals(\"null\") ? \"No booking\" : s[2];","lastModifiedDate":"2024-03-31"},{"lineNumber":154,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" return String.format(\"Last housekeeping: %s, Preferred interval: %s %s, Booking date: %s, Deferment: %s %s\",","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"GERARDJM018"},"content":" s[0], numPI, unitStringPI, booking, numD, unitStringD);","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":160,"author":{"gitId":"LimZiJia"},"content":" * Creates a HousekeepingDetails object with no details provided.","lastModifiedDate":"2024-03-31"},{"lineNumber":161,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":162,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails() {","lastModifiedDate":"2024-03-31"},{"lineNumber":163,"author":{"gitId":"LimZiJia"},"content":" this.lastHousekeepingDate \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":164,"author":{"gitId":"LimZiJia"},"content":" this.preferredInterval \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":165,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":167,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":168,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":169,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":170,"author":{"gitId":"LimZiJia"},"content":" * Creates a HousekeepingDetails object.","lastModifiedDate":"2024-03-31"},{"lineNumber":171,"author":{"gitId":"LimZiJia"},"content":" * @param lastHousekeepingDate","lastModifiedDate":"2024-03-31"},{"lineNumber":172,"author":{"gitId":"LimZiJia"},"content":" * @param preferredInterval","lastModifiedDate":"2024-03-31"},{"lineNumber":173,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":174,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails(LocalDate lastHousekeepingDate, Period preferredInterval) {","lastModifiedDate":"2024-03-31"},{"lineNumber":175,"author":{"gitId":"LimZiJia"},"content":" this.lastHousekeepingDate \u003d lastHousekeepingDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":176,"author":{"gitId":"LimZiJia"},"content":" this.preferredInterval \u003d preferredInterval;","lastModifiedDate":"2024-03-31"},{"lineNumber":177,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d Period.ZERO;","lastModifiedDate":"2024-03-31"},{"lineNumber":179,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":180,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":182,"author":{"gitId":"LimZiJia"},"content":" * Creates a HousekeepingDetails object using a string representation of the housekeeping details used for storage.","lastModifiedDate":"2024-03-31"},{"lineNumber":183,"author":{"gitId":"LimZiJia"},"content":" * @param details A string representation of the housekeeping details in the format: \"null\" or","lastModifiedDate":"2024-03-31"},{"lineNumber":184,"author":{"gitId":"LimZiJia"},"content":" * yyyy-mm-dd P?Y?M?W?D? yyyy-mm-dd P?Y?M?W?D?","lastModifiedDate":"2024-03-31"},{"lineNumber":185,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":186,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails(String details) {","lastModifiedDate":"2024-03-31"},{"lineNumber":187,"author":{"gitId":"LimZiJia"},"content":" if (details.equals(\"null\")) {","lastModifiedDate":"2024-03-31"},{"lineNumber":188,"author":{"gitId":"LimZiJia"},"content":" this.lastHousekeepingDate \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":189,"author":{"gitId":"LimZiJia"},"content":" this.preferredInterval \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":190,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":192,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-03-31"},{"lineNumber":193,"author":{"gitId":"LimZiJia"},"content":" // Using groups to extract details","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"LimZiJia"},"content":" Matcher storageMatcher \u003d STORAGE_FORMAT.matcher(details);","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"LimZiJia"},"content":" storageMatcher.matches();","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"LimZiJia"},"content":" this.lastHousekeepingDate \u003d LocalDate.parse(storageMatcher.group(2));","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"LimZiJia"},"content":" this.preferredInterval \u003d Period.parse(storageMatcher.group(3));","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d storageMatcher.group(8).equals(\"null\") ? null : new Booking(storageMatcher.group(8));","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d Period.parse(storageMatcher.group(10));","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":201,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":202,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":" /** Checks if the housekeeping details is empty */","lastModifiedDate":"2024-03-31"},{"lineNumber":204,"author":{"gitId":"LimZiJia"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-31"},{"lineNumber":205,"author":{"gitId":"LimZiJia"},"content":" return this.equals(empty);","lastModifiedDate":"2024-03-31"},{"lineNumber":206,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":207,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":208,"author":{"gitId":"LimZiJia"},"content":" public boolean hasBooking() {","lastModifiedDate":"2024-03-31"},{"lineNumber":209,"author":{"gitId":"LimZiJia"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-04-04"},{"lineNumber":210,"author":{"gitId":"LimZiJia"},"content":" return booking !\u003d null \u0026\u0026 booking.getBookedDate().isAfter(currentDate);","lastModifiedDate":"2024-04-04"},{"lineNumber":211,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":212,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":213,"author":{"gitId":"LimZiJia"},"content":" public void setBooking(Booking booking) {","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":216,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":217,"author":{"gitId":"LimZiJia"},"content":" public void deleteBooking() {","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":220,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":" public void addDeferment(Period deferment) {","lastModifiedDate":"2024-03-31"},{"lineNumber":222,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d this.deferment.plus(deferment);","lastModifiedDate":"2024-03-31"},{"lineNumber":223,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":224,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":225,"author":{"gitId":"LimZiJia"},"content":" public LocalDate getNextHousekeepingDate() {","lastModifiedDate":"2024-03-31"},{"lineNumber":226,"author":{"gitId":"LimZiJia"},"content":" if (lastHousekeepingDate \u003d\u003d null || preferredInterval \u003d\u003d null || deferment \u003d\u003d null) {","lastModifiedDate":"2024-04-01"},{"lineNumber":227,"author":{"gitId":"LimZiJia"},"content":" return LocalDate.MAX; // If not enough details available, the client will not be called","lastModifiedDate":"2024-04-01"},{"lineNumber":228,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":229,"author":{"gitId":"LimZiJia"},"content":" return lastHousekeepingDate.plus(preferredInterval).plus(deferment);","lastModifiedDate":"2024-03-31"},{"lineNumber":230,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":231,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":232,"author":{"gitId":"GERARDJM018"},"content":" public LocalDate getLastHousekeepingDate() {","lastModifiedDate":"2024-04-03"},{"lineNumber":233,"author":{"gitId":"GERARDJM018"},"content":" return lastHousekeepingDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":234,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":235,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":236,"author":{"gitId":"GERARDJM018"},"content":" public Period getDeferment() {","lastModifiedDate":"2024-04-03"},{"lineNumber":237,"author":{"gitId":"GERARDJM018"},"content":" return deferment;","lastModifiedDate":"2024-04-03"},{"lineNumber":238,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":239,"author":{"gitId":"GERARDJM018"},"content":" public Booking getBooking() {","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"GERARDJM018"},"content":" return booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"GERARDJM018"},"content":" public String getDefermentToString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":243,"author":{"gitId":"GERARDJM018"},"content":" String details \u003d this.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":244,"author":{"gitId":"GERARDJM018"},"content":" String[] s \u003d details.split(\" \"); // If valid s[0] \u003d lastHousekeepingDate, s[1] \u003d preferredInterval,","lastModifiedDate":"2024-04-03"},{"lineNumber":245,"author":{"gitId":"GERARDJM018"},"content":" // s[2] \u003d bookingDate, s[4] \u003d deferment","lastModifiedDate":"2024-04-04"},{"lineNumber":246,"author":{"gitId":"GERARDJM018"},"content":" String num \u003d s[s.length-1].substring(1, s[3].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"GERARDJM018"},"content":" String unit \u003d s[s.length-1].substring(s[s.length-1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"GERARDJM018"},"content":" String unitString;","lastModifiedDate":"2024-04-03"},{"lineNumber":249,"author":{"gitId":"GERARDJM018"},"content":" switch (unit) {","lastModifiedDate":"2024-04-03"},{"lineNumber":250,"author":{"gitId":"GERARDJM018"},"content":" case \"Y\":","lastModifiedDate":"2024-04-03"},{"lineNumber":251,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"years\";","lastModifiedDate":"2024-04-03"},{"lineNumber":252,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":253,"author":{"gitId":"GERARDJM018"},"content":" case \"M\":","lastModifiedDate":"2024-04-03"},{"lineNumber":254,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"months\";","lastModifiedDate":"2024-04-03"},{"lineNumber":255,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":256,"author":{"gitId":"GERARDJM018"},"content":" case \"W\":","lastModifiedDate":"2024-04-03"},{"lineNumber":257,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"weeks\";","lastModifiedDate":"2024-04-03"},{"lineNumber":258,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":259,"author":{"gitId":"GERARDJM018"},"content":" case \"D\":","lastModifiedDate":"2024-04-03"},{"lineNumber":260,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"days\";","lastModifiedDate":"2024-04-03"},{"lineNumber":261,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":262,"author":{"gitId":"GERARDJM018"},"content":" default:","lastModifiedDate":"2024-04-03"},{"lineNumber":263,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"Invalid unit\";","lastModifiedDate":"2024-04-03"},{"lineNumber":264,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":265,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":266,"author":{"gitId":"GERARDJM018"},"content":" return num + \" \" + unitString;","lastModifiedDate":"2024-04-03"},{"lineNumber":267,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":268,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":269,"author":{"gitId":"GERARDJM018"},"content":" public Period getPreferredInterval() {","lastModifiedDate":"2024-04-03"},{"lineNumber":270,"author":{"gitId":"GERARDJM018"},"content":" return preferredInterval;","lastModifiedDate":"2024-04-03"},{"lineNumber":271,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":272,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":273,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":274,"author":{"gitId":"LimZiJia"},"content":" public int compareTo(HousekeepingDetails other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":275,"author":{"gitId":"LimZiJia"},"content":" return this.getNextHousekeepingDate().compareTo(other.getNextHousekeepingDate());","lastModifiedDate":"2024-03-28"},{"lineNumber":276,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":277,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":278,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":279,"author":{"gitId":"LimZiJia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":280,"author":{"gitId":"LimZiJia"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-31"},{"lineNumber":281,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-03-31"},{"lineNumber":282,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":283,"author":{"gitId":"LimZiJia"},"content":" if (!(other instanceof HousekeepingDetails)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":284,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-03-31"},{"lineNumber":285,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":286,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails otherDetails \u003d (HousekeepingDetails) other;","lastModifiedDate":"2024-03-31"},{"lineNumber":287,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":288,"author":{"gitId":"LimZiJia"},"content":" // First predicate of each \u0026\u0026 is for null values, second predicate is for non-null values","lastModifiedDate":"2024-04-01"},{"lineNumber":289,"author":{"gitId":"LimZiJia"},"content":" return ((lastHousekeepingDate \u003d\u003d otherDetails.lastHousekeepingDate","lastModifiedDate":"2024-04-01"},{"lineNumber":290,"author":{"gitId":"LimZiJia"},"content":" || lastHousekeepingDate.equals(otherDetails.lastHousekeepingDate))","lastModifiedDate":"2024-04-01"},{"lineNumber":291,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 (preferredInterval \u003d\u003d otherDetails.preferredInterval","lastModifiedDate":"2024-04-01"},{"lineNumber":292,"author":{"gitId":"LimZiJia"},"content":" ||preferredInterval.equals(otherDetails.preferredInterval))","lastModifiedDate":"2024-04-01"},{"lineNumber":293,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 (booking \u003d\u003d otherDetails.booking","lastModifiedDate":"2024-04-02"},{"lineNumber":294,"author":{"gitId":"LimZiJia"},"content":" || booking.equals(otherDetails.booking))","lastModifiedDate":"2024-04-02"},{"lineNumber":295,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 (deferment \u003d\u003d otherDetails.deferment","lastModifiedDate":"2024-04-01"},{"lineNumber":296,"author":{"gitId":"LimZiJia"},"content":" || deferment.equals(otherDetails.deferment)));","lastModifiedDate":"2024-04-01"},{"lineNumber":297,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":298,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":299,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":300,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":301,"author":{"gitId":"LimZiJia"},"content":" if (this.equals(empty)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":302,"author":{"gitId":"LimZiJia"},"content":" return \"null\";","lastModifiedDate":"2024-04-01"},{"lineNumber":303,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":304,"author":{"gitId":"LimZiJia"},"content":" return lastHousekeepingDate + \" \" + preferredInterval + \" \" + booking + \" \" + deferment;","lastModifiedDate":"2024-04-02"},{"lineNumber":305,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":306,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"LimZiJia":193,"gosongying":39,"GERARDJM018":74}},{"path":"src/main/java/seedu/address/model/person/LeadsFilterPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-01"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-01"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-04-01"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"public class LeadsFilterPredicate implements Predicate\u003cClient\u003e {","lastModifiedDate":"2024-04-01"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" public LeadsFilterPredicate() {}","lastModifiedDate":"2024-04-01"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" * Tests that a {@code Client}\u0027s predicted next housekeeping date is \u003c\u003d current date,","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" * and they do not have a booking yet. Also, clients without housekeeping details should be tested false.","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" public boolean test(Client client) {","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" return !client.hasBooking()","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 client.getNextHousekeepingDate().isBefore(currentDate)","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" || client.getNextHousekeepingDate().isEqual(currentDate);","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" if (!(other instanceof LeadsFilterPredicate)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" return new ToStringBuilder(this).toString();","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-04-01"}],"authorContributionMap":{"LimZiJia":45}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"public abstract class Person {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" private final Area area;","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Area area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" this.area \u003d area;","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" public Area getArea() {","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" return area;","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" return Objects.hash(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" * Returns true if it is a Client, false if it is a Housekeeper.","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" public abstract boolean isClient();","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" public abstract HousekeepingDetails getDetails();","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":2,"gosongying":7,"-":81,"GERARDJM018":5}},{"path":"src/main/java/seedu/address/model/person/Type.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.ALLOWED_PREAMBLES_TYPE;","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person\u0027s Type in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidType(String)}","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"public class Type {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Type can either be \\\"client\\\" or \\\"housekeeper\\\"\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" /*","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" * The first character of the type must not be a whitespace,","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" public final String value;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" * Constructs an {@code Type}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" * @param type A valid type.","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public Type(String type) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(type);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" checkArgument(isValidType(type), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" value \u003d type;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" * Returns true if a given string is a valid type.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" public static boolean isValidType(String test) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" return test.matches(VALIDATION_REGEX) \u0026\u0026 preambleIsAllowed(test);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" * Checks if a given command uses a preamble that is allowed. (we define preamble as TYPE)","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" * @param preamble","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" * @return true if the preamble is allowed and no if it is not.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" public static boolean preambleIsAllowed(String preamble) {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" for (String s : ALLOWED_PREAMBLES_TYPE) {","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" if (s.equals(preamble)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" return value;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" if (!(other instanceof Type)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"LimZiJia"},"content":" Type otherType \u003d (Type) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":" return value.equals(otherType.value);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"LimZiJia":79,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/model/person/TypePredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"public class TypePredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":" private final String type;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" public TypePredicate(String type) {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" this.type \u003d type;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" * Returns the type of the predicate.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public String getType() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" return type;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" if (type.equals(\"housekeeper\")) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" return !person.isClient();","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" } else if (type.equals(\"client\")) {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" return person.isClient();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" if (!(other instanceof TypePredicate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" TypePredicate otherTypePredicate \u003d (TypePredicate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" return type.equals(otherTypePredicate.type);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" return new ToStringBuilder(this).add(\"type\", type).toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"moguries":3,"gosongying":8,"GERARDJM018":44}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"public class UniquePersonList\u003cT extends Person\u003e implements Iterable\u003cT\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" private final ObservableList\u003cT\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" private final ObservableList\u003cT\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" public boolean contains(T toCheck) {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" public void add(T toAdd) {","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" * Sorts the persons in the list using the provided comparator.","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" public void sort(Comparator\u003c? super T\u003e comparator) {","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" FXCollections.sort(internalList, comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" public void setPerson(T target, T editedPerson) {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" public void remove(T toRemove) {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" public void setPersons(UniquePersonList\u003cT\u003e replacement) {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" public void setPersons(List\u003cT\u003e persons) {","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cT\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" public Iterator\u003cT\u003e iterator() {","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cT\u003e otherUniquePersonList \u003d (UniquePersonList\u003cT\u003e) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"gosongying"},"content":" private boolean personsAreUnique(List\u003cT\u003e persons) {","lastModifiedDate":"2024-03-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":8,"gosongying":14,"-":137}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" \"Tags names should be alphanumeric and can contain spaces, hyphens and underscores.\";","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum} -_]+\";","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":3,"-":60}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" public static Client[] getSampleClients() {","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" return new Client[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), getTagSet(\"friends\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-01-30 2 months\")), new Area(\"east\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-02-28 2 weeks\")), new Area(\"east\")),","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), getTagSet(\"neighbours\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-03-03 1 years\")), new Area(\"east\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), getTagSet(\"family\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-03-11 39 days\")), new Area(\"east\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), getTagSet(\"classmates\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-04-01 6 months\")), new Area(\"east\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), getTagSet(\"colleagues\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.empty()), new Area(\"east\"))","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" public static Housekeeper[] getSampleHousekeepers() {","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" return new Housekeeper[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"John Doe\"), new Phone(\"12345678\"), new Email(\"johndoe@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 123 Woodlands Street 45, #05-12\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" getTagSet(\"cleaning\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Jane Smith\"), new Phone(\"98765432\"), new Email(\"janesmith@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 456 Jurong East Avenue 89, #08-15\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" getTagSet(\"part-time\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Michael Tan\"), new Phone(\"87654321\"), new Email(\"michaeltan@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 789 Bukit Timah Road, #02-34\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" getTagSet(\"full-time\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Emily Lee\"), new Phone(\"98761234\"), new Email(\"emilylee@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 234 Sengkang Street 12, #07-23\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" getTagSet(\"pet-friendly\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Daniel Lim\"), new Phone(\"87651234\"), new Email(\"daniellim@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 345 Yishun Avenue 67, #10-45\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" getTagSet(\"experienced\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Samantha Tan\"), new Phone(\"76543210\"), new Email(\"samanthatan@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 678 Clementi Road, #03-21\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" getTagSet(\"trustworthy\"), new Area(\"east\"), new BookingList())","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" for (Client sampleClient : getSampleClients()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" sampleAb.addClient(sampleClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" for (Housekeeper sampleHousekeeper : getSampleHousekeepers()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" sampleAb.addHousekeeper(sampleHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" public static HousekeepingDetails getHousekeepingDetails(Optional\u003cString\u003e details) {","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"LimZiJia"},"content":" try {","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" return ParserUtil.parseHousekeepingDetails(details);","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" return null;","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"LimZiJia":16,"moguries":1,"gosongying":41,"-":40,"GERARDJM018":4}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedBooking.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.Booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" * Jackson-friendly version of {@link Booking}.","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"public class JsonAdaptedBooking {","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private final String booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" * Constructs a {@code JsonAdaptedBooking} with the given {@code booking}.","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" @JsonCreator","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" public JsonAdaptedBooking(String booking) {","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" * Converts a given {@code Booking} into this class for Jackson use.","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" @JsonCreator","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" public JsonAdaptedBooking(Booking source) {","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" booking \u003d source.toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" @JsonValue","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" public String getBooking() {","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" return booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" * Converts this Jackson-friendly adapted booking object into the model\u0027s {@code Booking} object.","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted booking.","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" public Booking toModelType() throws IllegalValueException {","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" if (!Booking.isValidBookedDateAndTime(booking)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" throw new IllegalValueException(Booking.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" return new Booking(booking);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"moguries":47}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedClient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"public class JsonAdaptedClient extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" protected final JsonAdaptedDetails details;","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" * Constructs a {@code JsonAdaptedClient} with the given client details.","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" @JsonCreator","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" public JsonAdaptedClient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"details\") JsonAdaptedDetails details, @JsonProperty(\"area\") String area) {","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" super(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" this.details \u003d details;","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" * Converts a given {@code Client} into this class for Jackson use.","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" public JsonAdaptedClient(Client source) {","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" super(source);","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" details \u003d new JsonAdaptedDetails(source.getDetails());","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" public Client toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LimZiJia"},"content":" if (details \u003d\u003d null) {","lastModifiedDate":"2024-03-28"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails.class.getSimpleName()));","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" final HousekeepingDetails modelDetail \u003d details.toModelType();","lastModifiedDate":"2024-03-28"},{"lineNumber":92,"author":{"gitId":"GERARDJM018"},"content":" final Area modelArea \u003d new Area(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" ","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" return new Client(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelDetail, modelArea);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LimZiJia":8,"gosongying":86,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedDetails.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-28"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" * Jackson-friendly version of {@link HousekeepingDetails}.","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"public class JsonAdaptedDetails {","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" private final String details;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" * Constructs a {@code JsonAdaptedDetails} with the given {@code details}.","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" @JsonCreator","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" public JsonAdaptedDetails(String details) {","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" this.details \u003d details;","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" * Converts a given {@code HousekeepingDetails} into this class for Jackson use.","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" public JsonAdaptedDetails(HousekeepingDetails source) {","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" this.details \u003d source.toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" @JsonValue","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" public String getDetails() {","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" return details;","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" if (!HousekeepingDetails.isValidHousekeepingDetailsStorage(details)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" throw new IllegalValueException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" return new HousekeepingDetails(details);","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"LimZiJia":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedHousekeeper.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.Booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"public class JsonAdaptedHousekeeper extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" protected final ArrayList\u003cJsonAdaptedBooking\u003e bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" * Constructs a {@code JsonAdaptedHousekeeper} with the given housekeeper details.","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" @JsonCreator","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" public JsonAdaptedHousekeeper(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"area\") String area,","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" @JsonProperty(\"booking list\") ArrayList\u003cJsonAdaptedBooking\u003e bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" super(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" this.bookingList \u003d bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" * Converts a given {@code Housekeeper} into this class for Jackson use.","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" public JsonAdaptedHousekeeper(Housekeeper source) {","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" super(source);","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" ArrayList\u003cJsonAdaptedBooking\u003e bookingList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" for (Booking booking : source.getBookingList().getBookings()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" JsonAdaptedBooking jsonAdaptedBooking \u003d new JsonAdaptedBooking(booking);","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" bookingList.add(jsonAdaptedBooking);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" this.bookingList \u003d bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" public Housekeeper toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" final Area modelArea \u003d new Area(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" final ArrayList\u003cBooking\u003e personBookings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" for (JsonAdaptedBooking booking : bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" personBookings.add(booking.toModelType());","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" final BookingList modelBookingList \u003d new BookingList(personBookings);","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" return new Housekeeper(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelArea, modelBookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"moguries":21,"gosongying":83,"GERARDJM018":2}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"abstract class JsonAdaptedPerson {","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" protected static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" protected final String name;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" protected final String phone;","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" protected final String email;","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" protected final String address;","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" protected final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" protected final String area;","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"area\") String area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" this.area \u003d area;","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" area \u003d source.getArea().value;","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" abstract public Person toModelType() throws IllegalValueException;","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":1,"gosongying":11,"-":59,"GERARDJM018":3}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" private final List\u003cJsonAdaptedClient\u003e clients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" private final List\u003cJsonAdaptedHousekeeper\u003e housekeepers \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"clients\") List\u003cJsonAdaptedClient\u003e clients,","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"housekeepers\") List\u003cJsonAdaptedHousekeeper\u003e housekeepers) {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" this.clients.addAll(clients);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" this.housekeepers.addAll(housekeepers);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" clients.addAll(source.getClientList().stream()","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" .map(JsonAdaptedClient::new)","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" housekeepers.addAll(source.getHousekeeperList().stream()","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" .map(JsonAdaptedHousekeeper::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" for (JsonAdaptedClient jsonAdaptedClient: clients) {","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" Client client \u003d jsonAdaptedClient.toModelType();","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" if (addressBook.hasClient(client)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" for (JsonAdaptedHousekeeper jsonAdaptedHousekeeper: housekeepers) {","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeper \u003d jsonAdaptedHousekeeper.toModelType();","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" if (addressBook.hasHousekeeper(housekeeper)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"gosongying":24,"-":51}},{"path":"src/main/java/seedu/address/ui/ClientCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"public class ClientCard extends PersonCard {","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" private static final String FXML \u003d \"ClientListCard.fxml\";","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" @FXML","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" private Label details;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" public ClientCard(Client client, int displayedIndex) {","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" super(client, displayedIndex, FXML);","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" HousekeepingDetails housekeepingDetails \u003d client.getDetails();","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" if (housekeepingDetails \u003d\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" details.setText(HousekeepingDetails.NO_DETAILS_PROVIDED);","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" details.setText(HousekeepingDetails.makeStoredDetailsReadable(housekeepingDetails.toString()));","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"gosongying":23}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w09-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"gosongying":1,"-":101}},{"path":"src/main/java/seedu/address/ui/HousekeeperCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"public class HousekeeperCard extends PersonCard {","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":" private static final String FXML \u003d \"HousekeeperListCard.fxml\";","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":" public HousekeeperCard(Housekeeper housekeeper, int displayedIndex) {","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":" super(housekeeper, displayedIndex, FXML);","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"gosongying":10}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" private PersonListPanel\u003cClient\u003e clientListPanel;","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" private PersonListPanel\u003cHousekeeper\u003e housekeeperListPanel;","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" private StackPane clientListPanelPlaceholder;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" private StackPane housekeeperListPanelPlaceholder;","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" //@FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" //private HBox clientAndHousekeeperLists;","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" clientListPanel \u003d new PersonListPanel\u003c\u003e(logic.getFilteredClientList());","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" housekeeperListPanel \u003d new PersonListPanel\u003c\u003e(logic.getFilteredHousekeeperList());","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" clientListPanelPlaceholder.getChildren().add(clientListPanel.getRoot());","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" housekeeperListPanelPlaceholder.getChildren().add(housekeeperListPanel.getRoot());","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":178,"author":{"gitId":"gosongying"},"content":" public PersonListPanel\u003cClient\u003e getClientListPanel() {","lastModifiedDate":"2024-03-26"},{"lineNumber":179,"author":{"gitId":"gosongying"},"content":" return clientListPanel;","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"gosongying"},"content":" public PersonListPanel\u003cHousekeeper\u003e getHousekeeperListPanel() {","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"gosongying"},"content":" return housekeeperListPanel;","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"gosongying":22,"-":190}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"abstract public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" //private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" private Label area;","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" @FXML","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" public PersonCard(Person person, int displayedIndex, String FXML) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" area.setText(person.getArea().value);","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"LimZiJia":1,"gosongying":3,"-":56,"GERARDJM018":3}},{"path":"src/main/java/seedu/address/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"public class PersonListPanel\u003cT extends Person\u003e extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" private ListView\u003cT\u003e personListView;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public PersonListPanel(ObservableList\u003cT\u003e personList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" class PersonListViewCell extends ListCell\u003cT\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" protected void updateItem(T person, boolean empty) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" if (person.isClient()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" setGraphic(new ClientCard((Client) person, getIndex() + 1).getRoot());","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" setGraphic(new HousekeeperCard((Housekeeper) person, getIndex() + 1).getRoot());","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"gosongying":12,"-":43}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" private static final String ICON_APPLICATION \u003d \"/images/housekeepinghub.png\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"gosongying":1,"-":87}},{"path":"src/main/resources/view/ClientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gosongying"},"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-04-02"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\" prefWidth\u003d\"150\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"120\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"5\" bottom\u003d\"5\" right\u003d\"2\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" style\u003d\"-fx-text-fill: black\"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"area\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" \u003cRegion prefWidth\u003d\"50\" prefHeight\u003d\"100\" style\u003d\"-fx-background-color: #8A8A8A; -fx-max-width: 1; -fx-max-height: 90\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"5\" bottom\u003d\"5\" left\u003d\"10\" right\u003d\"5\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" \u003cLabel styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"details\" styleClass\u003d\"cell_small_label\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"gosongying":59}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-background-color: #ECE9E9; -fx-border-width: 0\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-border-color: #BFBFBF; -fx-border-radius: 10; -fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"gosongying":4,"-":7}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" -fx-padding: 0 0 20 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" -fx-border-color: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" -fx-border-width: 3;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #BFBFBF;","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":154,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":157,"author":{"gitId":"gosongying"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"gosongying"},"content":" -fx-border-width: 5;","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"gosongying"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"gosongying"},"content":" -fx-border-color: #BFBFBF;","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"gosongying"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"gosongying"},"content":" -fx-min-width: 500;","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"gosongying"},"content":" -fx-pref-width: 500;","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"gosongying"},"content":" -fx-max-width: 1000;","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"gosongying"},"content":" -fx-max-height: 200;","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"gosongying"},"content":" -fx-min-height: 100;","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"gosongying"},"content":" -fx-pref-height: 100;","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":198,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":216,"author":{"gitId":"gosongying"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":320,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":324,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":326,"author":{"gitId":"gosongying"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":327,"author":{"gitId":"gosongying"},"content":" -fx-border-color: #BFBFBF;","lastModifiedDate":"2024-03-20"},{"lineNumber":328,"author":{"gitId":"gosongying"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":329,"author":{"gitId":"gosongying"},"content":" -fx-alignment: center;","lastModifiedDate":"2024-04-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"gosongying"},"content":"#filterField, #clientListPanel, #housekeeperListPanel, #personWebpage {","lastModifiedDate":"2024-03-26"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":353,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":355,"author":{"gitId":"gosongying"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":356,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":358,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":360,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":361,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":366,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":368,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":369,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":370,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"gosongying":33,"-":337}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-background: #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gosongying":1,"-":20}},{"path":"src/main/resources/view/HousekeeperListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"gosongying"},"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-04-02"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" style\u003d\"-fx-text-fill: black\"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"area\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"gosongying":40}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" title\u003d\"Housekeeping Hub\" minWidth\u003d\"500\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" \u003cImage url\u003d\"@/images/housekeepinghub.png\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\" style\u003d\"-fx-background-color: #ECE9E9\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"stack-pane\"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-background-color: #ECE9E9; -fx-border-width: 3 0 0 0; -fx-border-color: #BFBFBF\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"stack-pane\"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-background-color: #ECE9E9; -fx-border-width: 0 0 3 0; -fx-border-color: #BFBFBF\"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"220\" maxHeight\u003d\"220\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" \u003cHBox VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" \u003cVBox fx:id\u003d\"clientList\" styleClass\u003d\"stack-pane\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" style\u003d\"-fx-background-color: #ECE9E9\" alignment\u003d\"TOP_LEFT\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" \u003cLabel styleClass\u003d\"column-header\" text\u003d\"Client :\"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-text-fill: black; -fx-background-radius: 10; -fx-border-color: #BFBFBF; -fx-border-radius: 10;","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":" -fx-padding: 0 2 0 8; -fx-alignment: CENTER_LEFT; -fx-font-weight: bold; -fx-font-size: 14px;","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":" -fx-background-color: #0095FF\" prefWidth\u003d\"70\"","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" \u003cStackPane fx:id\u003d\"clientListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" prefWidth\u003d\"320\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" \u003cVBox fx:id\u003d\"housekeeperList\" styleClass\u003d\"stack-pane\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" style\u003d\"-fx-background-color: #ECE9E9\" alignment\u003d\"TOP_LEFT\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" \u003cLabel styleClass\u003d\"column-header\" text\u003d\"Housekeeper :\"","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-text-fill: black; -fx-background-radius: 10; -fx-border-color: #BFBFBF;","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":" -fx-border-radius: 10; -fx-padding: 0 2 0 8; -fx-alignment: CENTER_LEFT; -fx-font-weight: bold;","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":" -fx-font-size: 14px; -fx-background-color: #FF6A00\" prefWidth\u003d\"127\"","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" \u003cStackPane fx:id\u003d\"housekeeperListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" prefWidth\u003d\"180\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"LimZiJia":6,"gosongying":29,"-":51}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.Pane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" \u003cLabel fx:id\u003d\"area\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" \u003cRegion prefWidth\u003d\"50\" prefHeight\u003d\"100\" style\u003d\"-fx-background-color: #8A8A8A; -fx-max-width: 1; -fx-max-height: 90\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" \u003cLabel styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" \u003cLabel fx:id\u003d\"details\" styleClass\u003d\"cell_small_label\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":1,"gosongying":26,"-":31,"GERARDJM018":1}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\" style\u003d\"-fx-background-color: transparent; -fx-border-width: 0\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"gosongying":3,"-":6}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD + \" housekeeper\";","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS + \"all housekeepers\", model);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredClientList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"gosongying"},"content":" Client expectedClient \u003d new ClientBuilder(AMY).withTags().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"gosongying"},"content":" expectedModel.addClient(expectedClient);","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"gosongying":6,"-":168,"GERARDJM018":1}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" public void execute_newClient_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" Client validClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" expectedModel.addClient(validClient);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(new AddClientCommand(validClient), model,","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" String.format(AddClientCommand.MESSAGE_SUCCESS, Messages.formatClient(validClient)),","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" public void execute_newHousekeeper_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" Housekeeper validHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" expectedModel.addHousekeeper(validHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(new AddHousekeeperCommand(validHousekeeper), model,","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" String.format(AddHousekeeperCommand.MESSAGE_SUCCESS, validHousekeeper),","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" public void execute_duplicateClient_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" Client clientInList \u003d model.getAddressBook().getClientList().get(0);","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(new AddClientCommand(clientInList), model,","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" AddClientCommand.MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" public void execute_duplicateHousekeeper_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeperInList \u003d model.getAddressBook().getHousekeeperList().get(0);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(new AddHousekeeperCommand(housekeeperInList), model,","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand.MESSAGE_DUPLICATE_HOUSEKEEPER);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"gosongying":32,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddClientCommand(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddHousekeeperCommand(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" public void execute_clientAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" Client validClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" CommandResult commandResult \u003d new AddClientCommand(validClient).execute(modelStub);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" assertEquals(String.format(AddClientCommand.MESSAGE_SUCCESS, Messages.formatClient(validClient)),","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" assertEquals(Arrays.asList(validClient), modelStub.clientsAdded);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" public void execute_housekeeperAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" Housekeeper validHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" CommandResult commandResult \u003d new AddHousekeeperCommand(validHousekeeper).execute(modelStub);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" assertEquals(String.format(AddHousekeeperCommand.MESSAGE_SUCCESS, Messages.formatHousekeeper(validHousekeeper)),","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" assertEquals(Arrays.asList(validHousekeeper), modelStub.housekeepersAdded);","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" public void execute_duplicateClient_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" Client validClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" Housekeeper validHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" AddClientCommand addClientCommand \u003d new AddClientCommand(validClient);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validClient, validHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" assertThrows(CommandException.class, AddClientCommand.MESSAGE_DUPLICATE_CLIENT,","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" () -\u003e addClientCommand.execute(modelStub));","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" public void execute_duplicateHousekeeper_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" Client validClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" Housekeeper validHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand addHousekeeperCommand \u003d new AddHousekeeperCommand(validHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validClient, validHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" assertThrows(CommandException.class, AddHousekeeperCommand.MESSAGE_DUPLICATE_HOUSEKEEPER,","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" () -\u003e addHousekeeperCommand.execute(modelStub));","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" Client alice \u003d new ClientBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" Housekeeper bob \u003d new HousekeeperBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" AddClientCommand addAliceCommand \u003d new AddClientCommand(alice);","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand addBobCommand \u003d new AddHousekeeperCommand(bob);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" AddClientCommand addAliceCommandCopy \u003d new AddClientCommand(alice);","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" assertTrue(addBobCommand.equals(addBobCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand addBobCommandCopy \u003d new AddHousekeeperCommand(bob);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" assertTrue(addBobCommand.equals(addBobCommandCopy));","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" assertFalse(addBobCommand.equals(1));","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" assertFalse(addBobCommand.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" AddClientCommand addClientCommand \u003d new AddClientCommand(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"gosongying"},"content":" String expectedOne \u003d AddClientCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"gosongying"},"content":" assertEquals(expectedOne, addClientCommand.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand addHousekeeperCommand \u003d new AddHousekeeperCommand(BOB);","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" String expectedTwo \u003d AddHousekeeperCommand.class.getCanonicalName() + \"{toAdd\u003d\" + BOB + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" assertEquals(expectedTwo, addHousekeeperCommand.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"gosongying"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"gosongying"},"content":" public void addHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":182,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":191,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"gosongying"},"content":" public void deleteClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"gosongying"},"content":" public void deleteHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"gosongying"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-04-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":216,"author":{"gitId":"gosongying"},"content":" public void setHousekeeper(Housekeeper target, Housekeeper editedHousekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":229,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":230,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"gosongying"},"content":" public void updateFilteredClientList(Predicate\u003c? extends Person\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":233,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":234,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":235,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":236,"author":{"gitId":"gosongying"},"content":" public void updateFilteredHousekeeperList(Predicate\u003c? extends Person\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":237,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":239,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"gosongying"},"content":" public void updateAndSortFilteredClientList(Predicate\u003cClient\u003e predicate, Comparator\u003cClient\u003e comparator) {","lastModifiedDate":"2024-04-05"},{"lineNumber":242,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-05"},{"lineNumber":243,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":244,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":245,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":246,"author":{"gitId":"gosongying"},"content":" public void updateFilteredHousekeeperListWithHousekeeperPredicate(Predicate\u003cHousekeeper\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":251,"author":{"gitId":"gosongying"},"content":" * A Model stub that contains a single client and housekeeper.","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":254,"author":{"gitId":"gosongying"},"content":" private final Client client;","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"gosongying"},"content":" private final Housekeeper housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"gosongying"},"content":" ModelStubWithPerson(Client client, Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"gosongying"},"content":" this.client \u003d client;","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"gosongying"},"content":" this.housekeeper \u003d housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":264,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":267,"author":{"gitId":"gosongying"},"content":" return this.client.isSamePerson(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":271,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"gosongying"},"content":" return this.housekeeper.isSamePerson(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":279,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":280,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":281,"author":{"gitId":"gosongying"},"content":" final ArrayList\u003cClient\u003e clientsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":282,"author":{"gitId":"gosongying"},"content":" final ArrayList\u003cHousekeeper\u003e housekeepersAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":284,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":285,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":286,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":287,"author":{"gitId":"gosongying"},"content":" return clientsAdded.stream().anyMatch(client::isSamePerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":288,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":289,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":290,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":291,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":292,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":293,"author":{"gitId":"gosongying"},"content":" return housekeepersAdded.stream().anyMatch(housekeeper::isSamePerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":294,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":296,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":297,"author":{"gitId":"gosongying"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":298,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":299,"author":{"gitId":"gosongying"},"content":" clientsAdded.add(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":302,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":303,"author":{"gitId":"gosongying"},"content":" public void addHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":304,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":305,"author":{"gitId":"gosongying"},"content":" housekeepersAdded.add(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":306,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":308,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":309,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":310,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":311,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"gosongying":140,"-":174}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" public static final String VALID_AREA_AMY \u003d \"north\";","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" public static final String VALID_AREA_BOB \u003d \"south\";","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" public static final BookingList VALID_BOOKING_LIST_BOB \u003d new BookingList();","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" public static final String AREA_DESC_AMY \u003d \" \" + PREFIX_AREA + VALID_AREA_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" public static final String AREA_DESC_BOB \u003d \" \" + PREFIX_AREA + VALID_AREA_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":" public static final String INVALID_AREA_DESC \u003d \" \" + PREFIX_AREA + \"central\"; // \u0027northwest\u0027 not allowed in area","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"GERARDJM018"},"content":" List\u003cClient\u003e expectedFilteredClientList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredClientList());","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"GERARDJM018"},"content":" List\u003cHousekeeper\u003e expectedFilteredHousekeeperList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredHousekeeperList());","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(expectedFilteredClientList, actualModel.getFilteredClientList());","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(expectedFilteredHousekeeperList, actualModel.getFilteredHousekeeperList());","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"GERARDJM018"},"content":" * Updates {@code model}\u0027s filtered client list to show only the client at the given {@code targetIndex} in the","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"GERARDJM018"},"content":" public static void showClientAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredClientList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d model.getFilteredClientList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"GERARDJM018"},"content":" final String[] splitName \u003d client.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"GERARDJM018"},"content":" model.updateFilteredClientList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(1, model.getFilteredClientList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"GERARDJM018"},"content":" * Updates {@code model}\u0027s filtered housekeeper list to show only the housekeeper at the given {@code targetIndex}","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"GERARDJM018"},"content":" * in the {@code model}\u0027s address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"GERARDJM018"},"content":" public static void showHousekeeperAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredHousekeeperList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"GERARDJM018"},"content":" Housekeeper housekeeper \u003d model.getFilteredHousekeeperList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" final String[] splitName \u003d housekeeper.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"GERARDJM018"},"content":" model.updateFilteredHousekeeperList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(1, model.getFilteredHousekeeperList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"-":120,"GERARDJM018":35}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showClientAtIndex;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showHousekeeperAtIndex;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" Client clientToDelete \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d new DeleteClientCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" String expectedMessageClient \u003d String.format(DeleteClientCommand.MESSAGE_DELETE_CLIENT_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" Messages.formatClient(clientToDelete));","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" expectedModel.deleteClient(clientToDelete);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(deleteClientCommand, model, expectedMessageClient, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeperToDelete \u003d model.getFilteredHousekeeperList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" String expectedMessage \u003d String.format(DeleteHousekeeperCommand.MESSAGE_DELETE_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" Messages.formatHousekeeper(housekeeperToDelete));","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" ModelManager expectedModelHousekeeper \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" expectedModelHousekeeper.deleteHousekeeper(housekeeperToDelete);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(deleteHousekeeperCommand, model, expectedMessage, expectedModelHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" Index outOfBoundIndexClient \u003d Index.fromOneBased(model.getFilteredClientList().size() + 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d new DeleteClientCommand(outOfBoundIndexClient);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(deleteClientCommand, model, Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" Index outOfBoundIndexHousekeeper \u003d Index.fromOneBased(model.getFilteredHousekeeperList().size() + 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(outOfBoundIndexHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(deleteHousekeeperCommand, model, Messages.MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" showClientAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" Client clientToDelete \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d new DeleteClientCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" String expectedClientMessage \u003d String.format(DeleteClientCommand.MESSAGE_DELETE_CLIENT_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" Messages.formatClient(clientToDelete));","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" expectedModel.deleteClient(clientToDelete);","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" showNoClient(expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(deleteClientCommand, model, expectedClientMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" showHousekeeperAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeperToDelete \u003d model.getFilteredHousekeeperList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" String expectedHousekeeperMessage \u003d String.format(DeleteHousekeeperCommand.MESSAGE_DELETE_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" Messages.formatHousekeeper(housekeeperToDelete));","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" expectedModel.deleteHousekeeper(housekeeperToDelete);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" showNoHousekeeper(expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(deleteHousekeeperCommand, model, expectedHousekeeperMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" showClientAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getClientList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteCommand \u003d new DeleteClientCommand(outOfBoundIndex);","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" showHousekeeperAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getHousekeeperList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(outOfBoundIndex);","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(deleteHousekeeperCommand, model, Messages.MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteFirstClientCommand \u003d new DeleteClientCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" DeleteCommand deleteSecondClientCommand \u003d new DeleteClientCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" assertTrue(deleteFirstClientCommand.equals(deleteFirstClientCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteFirstClientCommandCopy \u003d new DeleteClientCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":" assertTrue(deleteFirstClientCommand.equals(deleteFirstClientCommandCopy));","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"gosongying"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstClientCommand.equals(1));","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstClientCommand.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"gosongying"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstClientCommand.equals(deleteSecondClientCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteFirstHousekeeperCommand \u003d new DeleteHousekeeperCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"gosongying"},"content":" DeleteCommand deleteSecondHousekeeperCommand \u003d new DeleteHousekeeperCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"gosongying"},"content":" assertTrue(deleteFirstHousekeeperCommand.equals(deleteFirstHousekeeperCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":161,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteFirstHousekeeperCommandCopy \u003d new DeleteHousekeeperCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":162,"author":{"gitId":"gosongying"},"content":" assertTrue(deleteFirstHousekeeperCommand.equals(deleteFirstHousekeeperCommandCopy));","lastModifiedDate":"2024-04-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":165,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstHousekeeperCommand.equals(1));","lastModifiedDate":"2024-04-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":168,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstHousekeeperCommand.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":171,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstHousekeeperCommand.equals(deleteSecondHousekeeperCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d new DeleteClientCommand(targetIndex);","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"gosongying"},"content":" String expected \u003d DeleteClientCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"gosongying"},"content":" assertEquals(expected, deleteClientCommand.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(targetIndex);","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"gosongying"},"content":" expected \u003d DeleteHousekeeperCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"gosongying"},"content":" assertEquals(expected, deleteHousekeeperCommand.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":186,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"gosongying"},"content":" * Updates {@code model}\u0027s filtered client list to show no one.","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"gosongying"},"content":" private void showNoClient(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"gosongying"},"content":" model.updateFilteredClientList(p -\u003e false);","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"gosongying"},"content":" assertTrue(model.getFilteredClientList().isEmpty());","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":198,"author":{"gitId":"gosongying"},"content":" * Updates {@code model}\u0027s filtered housekeeper list to show no one.","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":200,"author":{"gitId":"gosongying"},"content":" private void showNoHousekeeper(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"gosongying"},"content":" model.updateFilteredHousekeeperList(p -\u003e false);","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":203,"author":{"gitId":"gosongying"},"content":" assertTrue(model.getFilteredHousekeeperList().isEmpty());","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"gosongying":125,"-":80}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showClientAtIndex;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" Client editedClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" Housekeeper editedHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" EditPersonDescriptor descriptorClient \u003d new EditPersonDescriptorBuilder(editedClient).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" EditPersonDescriptor descriptorHousekeeper \u003d new EditPersonDescriptorBuilder(editedHousekeeper).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editClientCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON, descriptorClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editHousekeeperCommand \u003d new EditHousekeeperCommand(INDEX_FIRST_PERSON, descriptorHousekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessageClient \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditClientCommand.MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedClient));","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessageHousekeeper \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditHousekeeperCommand.MESSAGE_EDIT_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" Messages.formatHousekeeper(editedHousekeeper));","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" Model expectedModelClient \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" expectedModelClient.setClient(model.getFilteredClientList().get(0), editedClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" Model expectedModelHousekeeper \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" expectedModelHousekeeper.setHousekeeper(model.getFilteredHousekeeperList().get(0), editedHousekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" assertCommandSuccess(editClientCommand, model, expectedMessageClient, expectedModelClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" Index indexLastClient \u003d Index.fromOneBased(model.getFilteredClientList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" Client lastClient \u003d model.getFilteredClientList().get(indexLastClient.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" Index indexLastHousekeeper \u003d Index.fromOneBased(model.getFilteredHousekeeperList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" Housekeeper lastHousekeeper \u003d model.getFilteredHousekeeperList().get(indexLastHousekeeper.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientInList \u003d new ClientBuilder(lastClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"GERARDJM018"},"content":" Client editedClient \u003d clientInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"GERARDJM018"},"content":" HousekeeperBuilder housekeeperInList \u003d new HousekeeperBuilder(lastHousekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":" Housekeeper editedHousekeeper \u003d housekeeperInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" EditPersonDescriptor descriptorC \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommandClient \u003d new EditClientCommand(indexLastClient, descriptorC);","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"GERARDJM018"},"content":" EditPersonDescriptor descriptorH \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommandHousekeeper \u003d new EditHousekeeperCommand(indexLastHousekeeper, descriptorH);","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessageC \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditClientCommand.MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedClient));","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessageH \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditHousekeeperCommand.MESSAGE_EDIT_HOUSEKEEPER_SUCCESS, Messages.formatHousekeeper(editedHousekeeper));","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" Model expectedModelClient \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"GERARDJM018"},"content":" expectedModelClient.setClient(lastClient, editedClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"GERARDJM018"},"content":" Model expectedModelHousekeeper \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"GERARDJM018"},"content":" expectedModelHousekeeper.setHousekeeper(lastHousekeeper, editedHousekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"GERARDJM018"},"content":" assertCommandSuccess(editCommandClient, model, expectedMessageC, expectedModelClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"GERARDJM018"},"content":" Client editedPerson \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditClientCommand.MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedPerson));","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":118,"author":{"gitId":"GERARDJM018"},"content":" Client personInFilteredList \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"GERARDJM018"},"content":" Client editedPerson \u003d new ClientBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditClientCommand.MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedPerson));","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":" expectedModel.setClient(model.getFilteredClientList().get(0), editedPerson);","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"GERARDJM018"},"content":" Client firstPerson \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"GERARDJM018"},"content":" assertCommandFailure(editCommand, model, EditClientCommand.MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":143,"author":{"gitId":"GERARDJM018"},"content":" showClientAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"GERARDJM018"},"content":" Person personInList \u003d model.getAddressBook().getClientList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" assertCommandFailure(editCommand, model, EditClientCommand.MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredClientList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":159,"author":{"gitId":"GERARDJM018"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":168,"author":{"gitId":"GERARDJM018"},"content":" showClientAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getClientList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":173,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(outOfBoundIndex,","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":176,"author":{"gitId":"GERARDJM018"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":181,"author":{"gitId":"GERARDJM018"},"content":" final EditCommand standardCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-04-05"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":" EditCommand commandWithSameValues \u003d new EditClientCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":198,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(standardCommand.equals(new EditClientCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-04-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(standardCommand.equals(new EditClientCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-04-05"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":208,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":209,"author":{"gitId":"GERARDJM018"},"content":" String expected \u003d EditClientCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":210,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"-":137,"GERARDJM018":77}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", area\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" + editPersonDescriptor.getArea().orElse(null) + \", booking list\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" + editPersonDescriptor.getBookingList().orElse(null)","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"gosongying":1,"-":70,"GERARDJM018":3}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.Messages.*;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" ContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" new ContainsKeywordsPredicate(Collections.singletonList(\"first\"), Collections.singletonList(\"Clementi\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" Collections.singletonList(\"north\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" ContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" new ContainsKeywordsPredicate(Collections.singletonList(\"second\"), Collections.singletonList(\"Jurong\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" Collections.singletonList(\"east\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" // Test for FindClientCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" FindClientCommand findFirstClientCommand \u003d new FindClientCommand(firstPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" FindClientCommand findSecondClientCommand \u003d new FindClientCommand(secondPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" assertTrue(findFirstClientCommand.equals(findFirstClientCommand));","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" FindCommand findFirstCommandCopy \u003d new FindClientCommand(firstPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" assertTrue(findFirstClientCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstClientCommand.equals(1));","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstClientCommand.equals(null));","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstClientCommand.equals(findSecondClientCommand));","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" // Test for FindHousekeeperCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" FindHousekeeperCommand findFirstHousekeeperCommand \u003d new FindHousekeeperCommand(firstPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" FindHousekeeperCommand findSecondHousekeeperCommand \u003d new FindHousekeeperCommand(secondPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" assertTrue(findFirstHousekeeperCommand.equals(findFirstHousekeeperCommand));","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" FindCommand findFirstHousekeeperCommandCopy \u003d new FindHousekeeperCommand(firstPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" assertTrue(findFirstHousekeeperCommand.equals(findFirstHousekeeperCommandCopy));","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstHousekeeperCommand.equals(1));","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstHousekeeperCommand.equals(null));","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstHousekeeperCommand.equals(findSecondHousekeeperCommand));","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" String expectedMessage \u003d String.format(MESSAGE_CLIENTS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" ContainsKeywordsPredicate predicate \u003d preparePredicate(\"a\", \"2\", \"west\");","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" FindClientCommand clientCommand \u003d new FindClientCommand(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" expectedModel.updateFilteredClientList(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(clientCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" assertEquals(Collections.emptyList(), model.getFilteredClientList());","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessage \u003d String.format(MESSAGE_HOUSEKEEPERS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" ContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\", \"\", \"\");","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"GERARDJM018"},"content":" FindHousekeeperCommand command \u003d new FindHousekeeperCommand(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"GERARDJM018"},"content":" expectedModel.updateFilteredHousekeeperList(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(Arrays.asList(ELLE, FIONA), model.getFilteredHousekeeperList());","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" ContainsKeywordsPredicate predicate \u003d new ContainsKeywordsPredicate(Arrays.asList(\"keyword1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" Arrays.asList(\"keyword2\"), Arrays.asList(\"keyword3\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" FindClientCommand findCommand \u003d new FindClientCommand(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" String expected \u003d FindClientCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" /*private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" }*/","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" * Parses {@code name}, {@code address} and {@code area} into a {@code ContainsKeywordsPredicate}.","lastModifiedDate":"2024-04-05"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" private ContainsKeywordsPredicate preparePredicate(String name, String address, String area) {","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" return new ContainsKeywordsPredicate(Arrays.asList(name.split(\"\\\\s+\")), Arrays.asList(address.split(\"\\\\s+\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" Arrays.asList(area.split(\"\\\\s+\")));","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"gosongying":57,"-":63,"GERARDJM018":7}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.TypePredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" public void execute_clientListIsFiltered_showsClientList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(new ListClientCommand(), model, ListCommand.MESSAGE_SUCCESS","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" + \"all clients\", expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" public void execute_housekeeperListIsFiltered_showsHousekeeperList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(new ListHousekeeperCommand(), model, ListCommand.MESSAGE_SUCCESS","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" + \"all housekeepers\", expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"gosongying":7,"-":32}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.AddClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" Client expectedClient \u003d new ClientBuilder(AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddClientCommand(expectedClient));","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" Client expectedClientMultipleTags \u003d new ClientBuilder(AMY).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" + TAG_DESC_FRIEND, new AddClientCommand(expectedClientMultipleTags));","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" Client expectedClient \u003d new ClientBuilder(AMY).withTags().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" new AddClientCommand(expectedClient));","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"GERARDJM018"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"GERARDJM018"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":" + INVALID_ADDRESS_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"GERARDJM018"},"content":" + ADDRESS_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"GERARDJM018"},"content":" + INVALID_ADDRESS_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"GERARDJM018"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"gosongying":19,"-":168,"GERARDJM018":7}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.parser.CliSyntax.ALLOWED_PREAMBLES_TYPE;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.AddClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.DeleteClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.DeleteHousekeeperCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.EditClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.EditHousekeeperCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" Client person \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" AddClientCommand command \u003d (AddClientCommand) parser.parseCommand(PersonUtil.getAddClientCommand(person));","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" assertEquals(new AddClientCommand(person), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" // Delete client","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d (DeleteClientCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand.COMMAND_WORD + \" client \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" assertEquals(new DeleteClientCommand(INDEX_FIRST_PERSON), deleteClientCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" // Delete housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d (DeleteHousekeeperCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand.COMMAND_WORD + \" housekeeper \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" assertEquals(new DeleteHousekeeperCommand(INDEX_FIRST_PERSON), deleteHousekeeperCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" // Edit client","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" Client client \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" EditPersonDescriptor clientDescriptor \u003d new EditPersonDescriptorBuilder(client).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" EditClientCommand editClientCommand \u003d (EditClientCommand) parser.parseCommand(EditClientCommand.COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" + \" client \" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" + PersonUtil.getEditPersonDescriptorDetails(clientDescriptor));","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" assertEquals(new EditClientCommand(INDEX_FIRST_PERSON, clientDescriptor), editClientCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" // Edit housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" EditPersonDescriptor housekeeperDescriptor \u003d new EditPersonDescriptorBuilder(housekeeper).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" EditHousekeeperCommand editHousekeeperCommand \u003d (EditHousekeeperCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" EditHousekeeperCommand.COMMAND_WORD + \" housekeeper \" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" + PersonUtil.getEditPersonDescriptorDetails(housekeeperDescriptor));","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" assertEquals(new EditHousekeeperCommand(INDEX_FIRST_PERSON, housekeeperDescriptor), editHousekeeperCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" /*@Test","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" List\u003cString\u003e name \u003d Arrays.asList(\"foo\", \"bar\");","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" List\u003cString\u003e address \u003d Arrays.asList(\"Clementi\", \"Jurong\");","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" List\u003cString\u003e area \u003d Arrays.asList(\"west\", \"east\");","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" FindClientCommand findClientCommand \u003d (FindClientCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" FindClientCommand.COMMAND_WORD + \" client \"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" assertEquals(new FindClientCommand(new ContainsKeywordsPredicate(Arrays.asList(keywords[0]),","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" Arrays.asList(addressKeywords), Arrays.asList(areaKeywords))), findClientCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" }*/","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"GERARDJM018"},"content":" ListCommand.COMMAND_WORD + \" \" + ALLOWED_PREAMBLES_TYPE[0]) instanceof ListCommand);","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" ListCommand.COMMAND_WORD + \" \" + ALLOWED_PREAMBLES_TYPE[1]) instanceof ListCommand);","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" client\") instanceof ListCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"LimZiJia":2,"gosongying":46,"-":71,"GERARDJM018":4}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.DeleteClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, \"client 1\", new DeleteClientCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \"client a\", String.format(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX));","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"gosongying":4,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.EditClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" String typeClient \u003d \"client \";","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeClient + VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeClient + \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeClient + \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"GERARDJM018"},"content":" String typeclient \u003d \"client \";","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":111,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" EditClientCommand expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":125,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"gosongying"},"content":" EditClientCommand expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" EditClientCommand expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":" expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" +targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"gosongying"},"content":" expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"gosongying"},"content":" expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"gosongying"},"content":" expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":175,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-04-05"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":203,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2024-04-05"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"gosongying"},"content":" EditClientCommand expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"gosongying":9,"-":175,"GERARDJM018":26}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.FindClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" FindClientCommand expectedFindCommand \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" new FindClientCommand(new ContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" Arrays.asList(\"Clementi\", \"Jurong\"), Arrays.asList(\"west\", \"east\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, \"client n/Alice Bob a/Clementi Jurong ar/west east\", expectedFindCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" //assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"gosongying":7,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/ListCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.ListClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.ListHousekeeperCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.TypePredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"public class ListCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" private ListCommandParser parser \u003d new ListCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public void parse_invalidArg_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \"invalid\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \"clint\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \"house keeper\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" public void parse_validArgs_returnsListCommand() {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, \"client\", new ListClientCommand());","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, \"housekeeper\", new ListHousekeeperCommand());","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"gosongying":46}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" assertEquals(Collections.emptyList(), addressBook.getClientList());","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" assertEquals(Collections.emptyList(), addressBook.getHousekeeperList());","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" // Two clients with the same identity fields","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" Housekeeper editedBob \u003d new HousekeeperBuilder(BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" .build();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e newClients \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" List\u003cHousekeeper\u003e newHousekeepers \u003d Arrays.asList(BOB, editedBob);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" AddressBookStub newData \u003d new AddressBookStub(newClients, newHousekeepers);","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasClient(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_nullHousekeeper_throwsNullPointerException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasHousekeeper(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" assertFalse(addressBook.hasClient(ALICE));","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" assertFalse(addressBook.hasHousekeeper(BOB));","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" assertTrue(addressBook.hasClient(ALICE));","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(BOB);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" assertTrue(addressBook.hasHousekeeper(BOB));","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" assertTrue(addressBook.hasClient(editedAlice));","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(BOB);","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" Housekeeper editedBob \u003d new HousekeeperBuilder(BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" .build();","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" assertTrue(addressBook.hasHousekeeper(editedBob));","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" public void getClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getClientList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" public void getHousekeeperList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getHousekeeperList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" /*@Test","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getClientList() + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" }*/","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" private final ObservableList\u003cClient\u003e clients \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" private final ObservableList\u003cHousekeeper\u003e housekeepers \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" AddressBookStub(Collection\u003cClient\u003e clients, Collection\u003cHousekeeper\u003e housekeepers) {","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" this.clients.setAll(clients);","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" this.housekeepers.setAll(housekeepers);","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":" return clients;","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getHousekeeperList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"gosongying"},"content":" return housekeepers;","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"gosongying":70,"-":82}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_CLIENTS;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasClient(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_nullHousekeeper_throwsNullPointerException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasHousekeeper(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" assertFalse(modelManager.hasClient(ALICE));","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" assertFalse(modelManager.hasHousekeeper(BOB));","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" modelManager.addClient(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" assertTrue(modelManager.hasClient(ALICE));","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" modelManager.addHousekeeper(BOB);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" assertTrue(modelManager.hasHousekeeper(BOB));","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredClientList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" public void getFilteredHousekeeperList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredHousekeeperList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withClient(ALICE).withClient(BENSON).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":" modelManager.updateFilteredClientList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" modelManager.updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"gosongying":35,"-":119}},{"path":"src/test/java/seedu/address/model/person/HousekeeperTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AREA_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BOOKING_LIST_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"import seedu.address.logic.parser.ParserUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":"public class HousekeeperTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" private static Housekeeper copyBob;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" static {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" ArrayList\u003cString\u003e bobTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" bobTags.add(VALID_TAG_HUSBAND);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" bobTags.add(VALID_TAG_FRIEND);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" copyBob \u003d new Housekeeper(","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" ParserUtil.parseName(VALID_NAME_BOB),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" ParserUtil.parsePhone(VALID_PHONE_BOB),","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" ParserUtil.parseEmail(VALID_EMAIL_BOB),","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" ParserUtil.parseAddress(VALID_ADDRESS_BOB),","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" ParserUtil.parseTags(bobTags),","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" ParserUtil.parseArea(VALID_AREA_BOB),","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" VALID_BOOKING_LIST_BOB);","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" //Assert that created Housekeeper object is not null","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" assertNotNull(copyBob);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(copyBob.equals(BOB));","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(copyBob.equals(copyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(5));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":" Person editedCopyBob \u003d new HousekeeperBuilder(BOB).withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":" editedCopyBob \u003d new HousekeeperBuilder(BOB).withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" editedCopyBob \u003d new HousekeeperBuilder(BOB).withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"GERARDJM018"},"content":" editedCopyBob \u003d new HousekeeperBuilder(BOB).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" editedCopyBob \u003d new HousekeeperBuilder(BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" public void isClient() {","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" //is a client -\u003e return true","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" assertTrue(AMY.isClient());","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" //is a housekeeper -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" assertFalse(BOB.isClient());","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" //is a housekeeper -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.isClient());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"moguries":73,"gosongying":12,"GERARDJM018":26}},{"path":"src/test/java/seedu/address/model/person/LeadsFilterPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"class LeadsFilterPredicateTest {","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" // The combination here gives a predicted housekeeping date that is in the past. Client should get notification.","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" private static final LocalDate DEFAULT_DATE \u003d LocalDate.parse(\"2023-04-01\");","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" private static final Period DEFAULT_PERIOD \u003d Period.ofMonths(1);","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" void client_no_housekeeping_details() {","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails();","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" void client_no_booking_date() {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(DEFAULT_DATE, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" void client_booking_date_after_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" Period period \u003d Period.ofMonths(1);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now().plus(period); // Create a date one month from now","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" void client_booking_date_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now(); // Create a date that is today","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":" void client_booking_date_before_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" Period period \u003d Period.ofMonths(1);","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now().minus(period); // Create a date that is before today","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" assertTrue(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" void client_predicted_housekeeping_date_before_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(DEFAULT_DATE, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"LimZiJia"},"content":" assertTrue(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" void client_predicted_housekeeping_date_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now();","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"LimZiJia"},"content":" Period period \u003d Period.ZERO;","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, period);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" assertTrue(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":" void client_predicted_housekeeping_date_after_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now();","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" Period period \u003d Period.ofMonths(1);","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, period);","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":98,"GERARDJM018":17}},{"path":"src/test/java/seedu/address/model/person/TypePredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"public class TypePredicateTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" private static final TypePredicate TEST_PREDICATE_CLIENT \u003d new TypePredicate(\"client\");","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" private static final TypePredicate TEST_PREDICATE_CLIENT_2 \u003d new TypePredicate(\"client\");","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" private static final TypePredicate TEST_PREDICATE_HOUSEKEEPER \u003d new TypePredicate(\"housekeeper\");","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" public void testTest() {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" //Person is a client and type predicate is \"client\" -\u003e return true","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" assertTrue(TEST_PREDICATE_CLIENT.test(AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" //Person is a client and type predicate is \"housekeeper\" -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_HOUSEKEEPER.test(AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" // same type value -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" assertTrue(TEST_PREDICATE_CLIENT.equals(TEST_PREDICATE_CLIENT_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" assertTrue(TEST_PREDICATE_HOUSEKEEPER.equals(TEST_PREDICATE_HOUSEKEEPER));","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_CLIENT.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_CLIENT_2.equals(5));","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" // different object -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_CLIENT.equals(TEST_PREDICATE_HOUSEKEEPER));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" // prints correct type (client) -\u003e return true","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" assertTrue(TEST_PREDICATE_CLIENT.toString().equals(\"seedu.address.model.person.TypePredicate{type\u003dclient}\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" // prints correct type (housekeeper) -\u003e return true","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(TEST_PREDICATE_HOUSEKEEPER.toString()","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" .equals(\"seedu.address.model.person.TypePredicate{type\u003dhousekeeper}\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" //prints wrong type -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(TEST_PREDICATE_CLIENT_2.toString()","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" .equals(\"seedu.address.model.person.TypePredicate{type\u003dhousekeeper}\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" // prints wrong string -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_CLIENT.toString().equals(\"{type\u003dclient}\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"moguries":53,"GERARDJM018":4}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" private final UniquePersonList\u003cClient\u003e uniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" uniquePersonList.setPerson(ALICE, HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" expectedUniquePersonList.add(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" uniquePersonList.add(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, HOON));","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList\u003cClient\u003e) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" expectedUniquePersonList.add(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cClient\u003e) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e personList \u003d Collections.singletonList(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"gosongying"},"content":" expectedUniquePersonList.add(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"gosongying":21,"-":155}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" private static final String INVALID_TYPE \u003d \"hoousekeeper\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" private static final String VALID_AREA \u003d BENSON.getArea().toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d new JsonAdaptedClient(BENSON);","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"LimZiJia"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"LimZiJia"},"content":" String expectedMessage \u003d Type.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":" public void toModelType_nullType_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"LimZiJia"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Type.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"LimZiJia"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":11,"gosongying":24,"-":97}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" original.addClient(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" original.removeClient(ALICE);","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" original.addHousekeeper(IDA);","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"gosongying":3,"-":107}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" * Adds a new {@code Client} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public AddressBookBuilder withClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" * Adds a new {@code Housekeeper} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" public AddressBookBuilder withHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gosongying":13,"-":31}},{"path":"src/test/java/seedu/address/testutil/ClientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" * A utility class to help with building Client objects.","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"public class ClientBuilder {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_AREA \u003d \"west\";","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_LAST_CLEANING_DATE \u003d \"2021-10-10\";","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_PREFERRED_INTERVAL \u003d \"1\";","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" private Name name;","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" private Phone phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" private Email email;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" private Address address;","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" private Area area;","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" private HousekeepingDetails housekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" * Creates a {@code ClientBuilder} with the default details.","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" public ClientBuilder() {","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" area \u003d new Area(DEFAULT_AREA);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" housekeepingDetails \u003d new HousekeepingDetails(LocalDate.parse(DEFAULT_LAST_CLEANING_DATE),","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" Period.ofMonths(Integer.parseInt(DEFAULT_PREFERRED_INTERVAL)));","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" * Initializes the ClientBuilder with the data of {@code clientToCopy}.","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" public ClientBuilder(Client clientToCopy) {","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" name \u003d clientToCopy.getName();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" phone \u003d clientToCopy.getPhone();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" email \u003d clientToCopy.getEmail();","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" address \u003d clientToCopy.getAddress();","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" area \u003d clientToCopy.getArea();","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" tags \u003d new HashSet\u003c\u003e(clientToCopy.getTags());","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" housekeepingDetails \u003d clientToCopy.getDetails();","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Name} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withName(String name) {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withTags(String ... tags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Address} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withAddress(String address) {","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Phone} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withPhone(String phone) {","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Email} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withEmail(String email) {","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Area} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withArea(String area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" this.area \u003d new Area(area);","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"LimZiJia"},"content":" * Sets the {@code HousekeepingDetails} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"LimZiJia"},"content":" public ClientBuilder withDetails(HousekeepingDetails housekeepingDetails) {","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"LimZiJia"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" * Returns client with the given data.","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" public Client build() {","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" return new Client(name, phone, email, address, tags, housekeepingDetails, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":8,"gosongying":120}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" descriptor.setArea(person.getArea());","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" if (person.isClient()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" Client client \u003d (Client) person;","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" descriptor.setDetails(client.getDetails());","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeper \u003d (Housekeeper) person;","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" descriptor.setBookingList(housekeeper.getBookingList());","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" public EditPersonDescriptorBuilder withArea(String area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" descriptor.setArea(new Area(area));","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" public EditPersonDescriptorBuilder withBookingList(BookingList bookingList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" descriptor.setBookingList(bookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" public EditPersonDescriptorBuilder withDetails(HousekeepingDetails details) {","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" descriptor.setDetails(details);","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"gosongying":28,"-":87}},{"path":"src/test/java/seedu/address/testutil/HousekeeperBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" * A utility class to help with building Housekeeper objects.","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"public class HousekeeperBuilder {","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_AREA \u003d \"west\";","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" private Name name;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" private Phone phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" private Email email;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" private Address address;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" private Area area;","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" private BookingList bookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" * Creates a {@code HousekeeperBuilder} with the default details.","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder() {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" area \u003d new Area(DEFAULT_AREA);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" bookingList \u003d new BookingList();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" * Initializes the HousekeeperBuilder with the data of {@code housekeeperToCopy}.","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder(Housekeeper housekeeperToCopy) {","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" name \u003d housekeeperToCopy.getName();","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" phone \u003d housekeeperToCopy.getPhone();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" email \u003d housekeeperToCopy.getEmail();","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" address \u003d housekeeperToCopy.getAddress();","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" area \u003d housekeeperToCopy.getArea();","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" tags \u003d new HashSet\u003c\u003e(housekeeperToCopy.getTags());","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" bookingList \u003d new BookingList();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Name} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withName(String name) {","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withTags(String ... tags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Address} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withAddress(String address) {","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Phone} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withPhone(String phone) {","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Email} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withEmail(String email) {","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Area} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withArea(String area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" this.area \u003d new Area(area);","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" * Sets the {@code BookingList} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withBookingList(BookingList bookingList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" this.bookingList \u003d bookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" * Returns housekeeper with the given data.","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" public Housekeeper build() {","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" return new Housekeeper(name, phone, email, address, tags, area, bookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"gosongying":123}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Area;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.BookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"import seedu.address.model.person.Type;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" public static final String DEFAULT_TYPE \u003d \"client\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" public static final String DEFAULT_AREA \u003d \"east\";","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" public static final String DEFAULT_HOUSEKEEPINGDETAILS \u003d \"null\";","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" private Type type;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" private HousekeepingDetails housekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" private Area area;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" private BookingList bookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" type \u003d new Type(DEFAULT_TYPE);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" housekeepingDetails \u003d new HousekeepingDetails();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" area \u003d new Area(DEFAULT_AREA);","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" bookingList \u003d new BookingList();","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" * Sets the {@code Type} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":" public PersonBuilder withType(String type) {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d new Type(type);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"LimZiJia"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"LimZiJia"},"content":" * Sets the {@code HousekeepingDetails} of the {@code Person} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"LimZiJia"},"content":" public PersonBuilder withHousekeepingDetails(HousekeepingDetails housekeepingDetails) {","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"LimZiJia"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":" * Returns either client or housekeeper with the given data","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"GERARDJM018"},"content":" * based on the {@code Type}.","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":" switch (type.toString()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"LimZiJia"},"content":" case \"client\":","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"GERARDJM018"},"content":" return new Client(name, phone, email, address, tags, housekeepingDetails, area);","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"LimZiJia"},"content":" case \"housekeeper\":","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"GERARDJM018"},"content":" return new Housekeeper(name, phone, email, address, tags, area, bookingList);","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"LimZiJia"},"content":" return null;","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"LimZiJia":35,"-":96,"GERARDJM018":9}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.AddClientCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"import seedu.address.logic.commands.AddHousekeeperCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static String getAddClientCommand(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" return AddClientCommand.COMMAND_WORD + \" \" + getClientDetails(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" public static String getAddHousekeeperCommand(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" return AddHousekeeperCommand.COMMAND_WORD + \" \" + getHousekeeperDetails(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" * Returns the part of command string for the given {@code client}\u0027s details.","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" public static String getClientDetails(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_NAME + client.getName().fullName + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_PHONE + client.getPhone().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_EMAIL + client.getEmail().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_ADDRESS + client.getAddress().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_AREA + client.getArea().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" client.getTags().stream().forEach(","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_DETAILS + client.getDetails().toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" return sb.toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" * Returns the part of command string for the given {@code housekeeper}\u0027s details.","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" public static String getHousekeeperDetails(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_NAME + housekeeper.getName().fullName + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_PHONE + housekeeper.getPhone().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_EMAIL + housekeeper.getEmail().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_ADDRESS + housekeeper.getAddress().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_AREA + housekeeper.getArea().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" housekeeper.getTags().stream().forEach(","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_DETAILS + housekeeper.getDetails().toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" descriptor.getArea().ifPresent(area -\u003e sb.append(PREFIX_AREA).append(area.value).append(\" \"));","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" descriptor.getDetails().ifPresent(details -\u003e sb.append(PREFIX_DETAILS).append(details.toString()));","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"gosongying":39,"-":52}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" * Returns the middle index of the client in the {@code model}\u0027s client list.","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" public static Index getMidClientIndex(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" return Index.fromOneBased(model.getFilteredClientList().size() / 2);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" * Returns the middle index of the housekeeper in the {@code model}\u0027s housekeeper list.","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" public static Index getMidHousekeeperIndex(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" return Index.fromOneBased(model.getFilteredHousekeeperList().size() / 2);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" * Returns the last index of the client in the {@code model}\u0027s client list.","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" public static Index getLastClientIndex(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" return Index.fromOneBased(model.getFilteredClientList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" * Returns the last index of the housekeeper in the {@code model}\u0027s housekeeper list.","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" public static Index getLastHousekeeperIndex(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" return Index.fromOneBased(model.getFilteredHousekeeperList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" * Returns the client in the {@code model}\u0027s client list at {@code index}.","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" public static Person getClient(Model model, Index index) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" return model.getFilteredClientList().get(index.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" * Returns the housekeeper in the {@code model}\u0027s housekeeper list at {@code index}.","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" public static Person getHousekeeper(Model model, Index index) {","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" return model.getFilteredHousekeeperList().get(index.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gosongying":30,"-":46}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AREA_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AREA_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"import seedu.address.model.person.Client;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import seedu.address.model.person.Housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" public static final Client ALICE \u003d new ClientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" .withPhone(\"94351253\").withTags(\"friends\").withArea(\"west\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" public static final Client BENSON \u003d new ClientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" .withTags(\"owesMoney\", \"friends\").withArea(\"east\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" public static final Client CARL \u003d new ClientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withArea(\"south\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" public static final Client DANIEL \u003d new ClientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").withArea(\"north\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper ELLE \u003d new HousekeeperBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withArea(\"southeast\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper FIONA \u003d new HousekeeperBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withArea(\"northwest\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper GEORGE \u003d new HousekeeperBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withArea(\"southwest\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" public static final Client HOON \u003d new ClientBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withArea(\"west\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper IDA \u003d new HousekeeperBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withArea(\"east\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" public static final Client AMY \u003d new ClientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" .withArea(VALID_AREA_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper BOB \u003d new HousekeeperBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" .withArea(VALID_AREA_BOB).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" for (Client client : getTypicalClients()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" ab.addClient(client);","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"GERARDJM018"},"content":" for (Housekeeper housekeeper : getTypicalHousekeepers()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"GERARDJM018"},"content":" ab.addHousekeeper(housekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":80,"author":{"gitId":"GERARDJM018"},"content":" public static List\u003cClient\u003e getTypicalClients() {","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL));","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" public static List\u003cHousekeeper\u003e getTypicalHousekeepers() {","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"GERARDJM018"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"LimZiJia":1,"moguries":1,"gosongying":2,"-":47,"GERARDJM018":36}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-W09-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W09-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W09-1/tp/graph/badge.svg?token\u003dVTN6SDBFUZ)](https://codecov.io/gh/AY2324S2-CS2103T-W09-1/tp)","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"# HouseKeeping Hub","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"## Description","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"HouseKeeping Hub is a desktop app 💻, which aims to transform the management of client relationships within","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"housekeeping companies. Our system prioritises the storage and organisation of client and housekeeper contacts,","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"providing unmatched efficiency and convenience for customer service admin. 👌👌👌","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"## Usages","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"* Organising and managing client and housekeeper contact details for your housekeeping company with ease.","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"* A starting point of a Software Engineering course project (as opposed to writing everything from scratch).","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"## Documentation","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"For comprehensive details about HouseKeeping Hub, please refer to the website","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"[HouseKeeping Hub](https://ay2324s2-cs2103t-w09-1.github.io/tp/).","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"## Acknowledgements","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"gosongying":19,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"mainClassName \u003d \u0027housekeeping.hub.Main\u0027","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":"run {","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":"run {","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" archiveBaseName \u003d \"HousekeepingHub\"","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" archiveVersion \u003d \"v1.3.1\"","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LimZiJia":12,"-":70}},{"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":"LimZiJia"},"content":"You can reach us at the email `e0960005@comp.nus.edu`","lastModifiedDate":"2024-03-06"},{"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":"LimZiJia"},"content":"### Lim Zi Jia","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"\u003cimg src\u003d\"images/limzijia.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"[[github](https://github.com/limzijia)]","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"* Role: Developer","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"* Responsibilities: Testing + logic","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"### Gerard Jeremiah Matthew","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"\u003cimg src\u003d\"images/gerardjm018.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":"[[github](https://github.com/GERARDJM018)]","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"* Responsibilities: Scheduling and Tracking + Model","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"### Go Song Ying","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":"\u003cimg src\u003d\"images/gosongying.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"[[github](https://github.com/gosongying)]","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":"* Responsibilities: Deliverables and deadlines + UI","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"### Huang Zhuoyan, Celeste","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":"\u003cimg src\u003d\"images/moguries.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"[[github](https://github.com/moguries)]","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"* Responsibilities: Code quality and Integration + Storage","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LimZiJia":8,"moguries":4,"gosongying":4,"-":29,"GERARDJM018":3}},{"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":"LimZiJia"},"content":"* Our project is forked from [AddressBook-Level3](https://github.com/nus-cs2103-AY2324S2/tp)","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S2-CS2103T-W09-1/tp/blob/master/src/main/java/housekeeping/hub/Main.java) and [`MainApp`](https://github.com/AY2324S2-CS2103T-W09-1/tp/blob/master/src/main/java/housekeeping/hub/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"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":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"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":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"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":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S2-CS2103T-W09-1/tp/blob/master/src/main/java/housekeeping/hub/ui/Ui.java)","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"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":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"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/AY2324S2-CS2103T-W09-1/tp/blob/master/src/main/java/housekeeping/hub/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S2-CS2103T-W09-1/tp/blob/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":83,"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":84,"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":85,"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":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":"**API** : [`Logic.java`](https://github.com/AY2324S2-CS2103T-W09-1/tp/blob/master/src/main/java/housekeeping/hub/logic/Logic.java)","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"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":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"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":100,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"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":"GERARDJM018"},"content":"Here are other sequence diagram to illustrate the interactions within the `Logic` component, taking `execute(\"list client\")` API call:","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"GERARDJM018"},"content":"![Interactions Inside the Logic Component for the `list client` Command](images/ListSequenceDiagram.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"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":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"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":121,"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":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"author":{"gitId":"LimZiJia"},"content":"**API** : [`Model.java`](https://github.com/AY2324S2-CS2103T-W09-1/tp/blob/master/src/main/java/housekeeping/hub/model/Model.java)","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"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":132,"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":133,"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":134,"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":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"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":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"LimZiJia"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S2-CS2103T-W09-1/tp/blob/master/src/main/java/housekeeping/hub/storage/Storage.java)","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"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":151,"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":152,"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":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"LimZiJia"},"content":"Classes used by multiple components are in the `housekeeping.hub.commons` package.","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"LimZiJia"},"content":"### \\[Completed\\] Generating leads for housekeeping services","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"LimZiJia"},"content":"In an admin operator\u0027s job there is a use case where they need to sort the clients by the predicted next cleaning date.","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"LimZiJia"},"content":"This is useful for the operator to remind the clients to book their next service soon. We have stored this housekeeping information","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"LimZiJia"},"content":"in `HousekeepingDetails` which also supports some other use cases such as the client does not want to be called or would","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"LimZiJia"},"content":"prefer to be called on a later date.","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"LimZiJia"},"content":"#### How it is implemented","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"LimZiJia"},"content":"We assume clients who do not have `HousekeepingDetails` do not want to be disturbed by the housekeeping company.","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"LimZiJia"},"content":"Therefore, the client list should be first filtered by `Client.hasHousekeepingDetais()` then sorted by `HousekeepingDetails`.","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"LimZiJia"},"content":"We will also not show clients who have their predicted next housekeeping date that is after the current date.","lastModifiedDate":"2024-03-31"},{"lineNumber":175,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"LimZiJia"},"content":"To do the sorting, the `Client` class now implements `Comparable\u003cClient\u003e` interface, and the `compareTo()` method is ","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"LimZiJia"},"content":"overridden to compare the `HousekeepingDetails` of two clients.","lastModifiedDate":"2024-03-29"},{"lineNumber":178,"author":{"gitId":"LimZiJia"},"content":"The `compareTo()` method calls the `HousekeepingDetails`\u0027s `compareTo()` method to if both clients have `HousekeepingDetails`.","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"LimZiJia"},"content":"The `compareTo()` method in `HousekeepingDetails` uses the `getNextHousekeepingDate()` method which is calculated by ","lastModifiedDate":"2024-03-29"},{"lineNumber":180,"author":{"gitId":"LimZiJia"},"content":"`lastHousekeepingDate.plus(preferredInterval)`.","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"LimZiJia"},"content":"`ClientComprator` is then used by `FXCollections.sort()` to sort the list of clients. `ClientComparator` compares `Client`s","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"LimZiJia"},"content":"using their `compareTo()` method.","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":185,"author":{"gitId":"LimZiJia"},"content":"We will also store `bookingDate` if the `Client` already made a booking. This is convenient for the admin to know and prevent","lastModifiedDate":"2024-03-31"},{"lineNumber":186,"author":{"gitId":"LimZiJia"},"content":"calling the client when it is not needed. Furthermore, `deferment` is also stored to know if the client wants to defer the","lastModifiedDate":"2024-03-31"},{"lineNumber":187,"author":{"gitId":"LimZiJia"},"content":"reminder to a later date.","lastModifiedDate":"2024-03-31"},{"lineNumber":188,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":189,"author":{"gitId":"LimZiJia"},"content":"Here is how `HousekeepingDetails` class looks like:\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"LimZiJia"},"content":"![HousekeepingDetailsClassDiagram](images/HousekeepingDetailsClassDiagram.png)","lastModifiedDate":"2024-03-31"},{"lineNumber":191,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":192,"author":{"gitId":"LimZiJia"},"content":"#### Why is it implemented this way","lastModifiedDate":"2024-03-31"},{"lineNumber":193,"author":{"gitId":"LimZiJia"},"content":"There are many considerations in the workflow of generating leads for housekeeping services. The proposed implementation","lastModifiedDate":"2024-03-31"},{"lineNumber":194,"author":{"gitId":"LimZiJia"},"content":"is chosen because it is able to handle a wide range of scenarios that we have considered. For example, `lastHousekeepingDate`","lastModifiedDate":"2024-03-31"},{"lineNumber":195,"author":{"gitId":"LimZiJia"},"content":"and `preferredInterval` are used to calculate the `nextHousekeepingDate`. This is for the convenience of the client as they","lastModifiedDate":"2024-03-31"},{"lineNumber":196,"author":{"gitId":"LimZiJia"},"content":"will only need to state their preference only once (when booking their first service).","lastModifiedDate":"2024-03-31"},{"lineNumber":197,"author":{"gitId":"LimZiJia"},"content":"`preferredInterval` is a natural aspect of housekeeping services and the client should know this at the top of their head","lastModifiedDate":"2024-03-31"},{"lineNumber":198,"author":{"gitId":"LimZiJia"},"content":"instead of concrete dates.","lastModifiedDate":"2024-03-31"},{"lineNumber":199,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":200,"author":{"gitId":"LimZiJia"},"content":"Having a `deferment` attribute is also important as it allows the client to defer the reminder to a later date. This is for","lastModifiedDate":"2024-03-31"},{"lineNumber":201,"author":{"gitId":"LimZiJia"},"content":"client satisfaction as it might not be a good time for housekeeping services when we call to remind them.","lastModifiedDate":"2024-03-31"},{"lineNumber":202,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":"#### Alternatives considered","lastModifiedDate":"2024-03-31"},{"lineNumber":204,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":205,"author":{"gitId":"LimZiJia"},"content":"##### Alternative 1","lastModifiedDate":"2024-03-31"},{"lineNumber":206,"author":{"gitId":"LimZiJia"},"content":"Only store `nexthousekeepingDate` and only call to ask the client on the housekeeping date. `nextHousekeepingDate` is maintained by asking the client everytime they have done a housekeeping service.","lastModifiedDate":"2024-03-31"},{"lineNumber":207,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":208,"author":{"gitId":"LimZiJia"},"content":"Pros: Very simple to implement.","lastModifiedDate":"2024-03-31"},{"lineNumber":209,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":210,"author":{"gitId":"LimZiJia"},"content":"Cons: [1] It adds more work for the admin but more importantly the client. This is because an additional call is required after every service.","lastModifiedDate":"2024-03-31"},{"lineNumber":211,"author":{"gitId":"LimZiJia"},"content":"[2] The client may not know an exact date far into the future. If the client is unsure and provide a general period, then we can save the work","lastModifiedDate":"2024-03-31"},{"lineNumber":212,"author":{"gitId":"LimZiJia"},"content":"of calling everytime by using `preferredInterval` as in our proposed implementation. [3] If the admin is sick or busy on `nextHousekeepingDate`, ","lastModifiedDate":"2024-03-31"},{"lineNumber":213,"author":{"gitId":"LimZiJia"},"content":"then the call will be missed altogether.","lastModifiedDate":"2024-03-31"},{"lineNumber":214,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":215,"author":{"gitId":"LimZiJia"},"content":"##### Alternative 2","lastModifiedDate":"2024-03-31"},{"lineNumber":216,"author":{"gitId":"LimZiJia"},"content":"Same as our original implementation but without `deferment`.","lastModifiedDate":"2024-03-31"},{"lineNumber":217,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":218,"author":{"gitId":"LimZiJia"},"content":"Pros: Simpler implementation, less commands for admin to learn.","lastModifiedDate":"2024-03-31"},{"lineNumber":219,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":220,"author":{"gitId":"LimZiJia"},"content":"Cons: [1] Less flexible for the client. The client may not be ready for housekeeping services when we call to remind them.","lastModifiedDate":"2024-03-31"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":"[2] It is possible to deal with this as an admin, but it would be \"hacky\" as the admin would have to edit the `lastHousekeepingDate`.","lastModifiedDate":"2024-03-31"},{"lineNumber":222,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":223,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":224,"author":{"gitId":"LimZiJia"},"content":"A `ClientComparator` is made using the `compareTo()` is then used by `FXCollections.sort()` to sort the list of clients.","lastModifiedDate":"2024-04-05"},{"lineNumber":225,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":226,"author":{"gitId":"GERARDJM018"},"content":"### \\[Completed\\] Find using multiple attributes","lastModifiedDate":"2024-03-29"},{"lineNumber":227,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":228,"author":{"gitId":"GERARDJM018"},"content":"The Find feature has already been developed in AB3. However, it only searches the keywords given in the Name attribute.","lastModifiedDate":"2024-03-29"},{"lineNumber":229,"author":{"gitId":"GERARDJM018"},"content":"To increase the functionality of the feature, we plan to make it accept keywords for multiple attributes (address and","lastModifiedDate":"2024-03-29"},{"lineNumber":230,"author":{"gitId":"GERARDJM018"},"content":"area). This changes will also be used to fulfil one of our user stories (As an Operator, I can retrieve details from ","lastModifiedDate":"2024-03-29"},{"lineNumber":231,"author":{"gitId":"GERARDJM018"},"content":"specified contacts by their name or other criteria. So that I can save a lot of time to find specific clients and ","lastModifiedDate":"2024-03-29"},{"lineNumber":232,"author":{"gitId":"GERARDJM018"},"content":"housekeepers.) which is to increase the efficiency in finding specific Person. ","lastModifiedDate":"2024-03-29"},{"lineNumber":233,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":234,"author":{"gitId":"GERARDJM018"},"content":"#### How the feature is implemented","lastModifiedDate":"2024-03-29"},{"lineNumber":235,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":236,"author":{"gitId":"GERARDJM018"},"content":"The previous Find feature implementation use a predicate specifically for Name attribute ","lastModifiedDate":"2024-03-29"},{"lineNumber":237,"author":{"gitId":"GERARDJM018"},"content":"(NameContainsKeywordsPredicate). To make it able use multiple attributes, we create a new predicate that can be used for ","lastModifiedDate":"2024-03-29"},{"lineNumber":238,"author":{"gitId":"GERARDJM018"},"content":"Name, Address, and Area attributes (ContainsKeywordsPredicate). The new predicate can be used either with keywords for ","lastModifiedDate":"2024-03-29"},{"lineNumber":239,"author":{"gitId":"GERARDJM018"},"content":"one attribute or multiple attributes. It first checks, what attribute keywords are provided by the user. The attributes ","lastModifiedDate":"2024-03-29"},{"lineNumber":240,"author":{"gitId":"GERARDJM018"},"content":"that doesn\u0027t have keywords will automatically true. The attributes that have keywords will be checked using the give ","lastModifiedDate":"2024-03-29"},{"lineNumber":241,"author":{"gitId":"GERARDJM018"},"content":"keywords.","lastModifiedDate":"2024-03-29"},{"lineNumber":242,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":243,"author":{"gitId":"GERARDJM018"},"content":"Here is how the activity diagram looks like:","lastModifiedDate":"2024-03-29"},{"lineNumber":244,"author":{"gitId":"GERARDJM018"},"content":"![FindActivityDiagram](images/FindActivityDiagram.png)","lastModifiedDate":"2024-03-29"},{"lineNumber":245,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":246,"author":{"gitId":"GERARDJM018"},"content":"#### Why is it implemented this way","lastModifiedDate":"2024-03-29"},{"lineNumber":247,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":248,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":249,"author":{"gitId":"GERARDJM018"},"content":"The current implementation was chosen because it can handle multiple attributes at the same time. The other alternatives","lastModifiedDate":"2024-03-29"},{"lineNumber":250,"author":{"gitId":"GERARDJM018"},"content":"we considered can only handle one attribute at the same time or ineffective to makes it able to handle multiple","lastModifiedDate":"2024-03-29"},{"lineNumber":251,"author":{"gitId":"GERARDJM018"},"content":"attributes at the same time (needs multiple predicate and if-else statement consist of 9 conditions). Therefore, we ","lastModifiedDate":"2024-03-29"},{"lineNumber":252,"author":{"gitId":"GERARDJM018"},"content":"chose the current implementation as it more effective than the other alternatives.","lastModifiedDate":"2024-03-29"},{"lineNumber":253,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":254,"author":{"gitId":"GERARDJM018"},"content":"#### Alternatives considered","lastModifiedDate":"2024-03-29"},{"lineNumber":255,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":256,"author":{"gitId":"GERARDJM018"},"content":"##### Alternative 1","lastModifiedDate":"2024-03-29"},{"lineNumber":257,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":258,"author":{"gitId":"GERARDJM018"},"content":"Using multiple predicate for each attribute. This way, the Find feature can handle all the attributes. So, to use the","lastModifiedDate":"2024-03-29"},{"lineNumber":259,"author":{"gitId":"GERARDJM018"},"content":"Find feature, the user needs to give the attribute type of which the keywords will be checked. However, it can only ","lastModifiedDate":"2024-03-29"},{"lineNumber":260,"author":{"gitId":"GERARDJM018"},"content":"handle one attribute at the same time as each FindCommand can only use one predicate. It can be implemented to handle","lastModifiedDate":"2024-03-29"},{"lineNumber":261,"author":{"gitId":"GERARDJM018"},"content":"multiple attributes at the same time using chain test on multiple predicate. However, it is ineffective as it needs to","lastModifiedDate":"2024-03-29"},{"lineNumber":262,"author":{"gitId":"GERARDJM018"},"content":"check multiple situation (use 1 attribute, 2 attributes, or 3 attributes).","lastModifiedDate":"2024-03-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"gosongying"},"content":"### \\[Completed\\] Separate client and housekeeper list","lastModifiedDate":"2024-03-29"},{"lineNumber":265,"author":{"gitId":"gosongying"},"content":"In the previous iteration, both clients and housekeepers were consolidated into a single list, presenting them together.","lastModifiedDate":"2024-03-29"},{"lineNumber":266,"author":{"gitId":"gosongying"},"content":"However, this amalgamation didn\u0027t offer enhanced visualization or convenience for our intended users. Hence, we opted to ","lastModifiedDate":"2024-03-29"},{"lineNumber":267,"author":{"gitId":"gosongying"},"content":"segregate the client and housekeeper lists. This adjustment aims to streamline efficiency for our target users, ","lastModifiedDate":"2024-03-29"},{"lineNumber":268,"author":{"gitId":"gosongying"},"content":"specifically housekeeping company administrators, enabling easier access to clients and assignment of housekeepers.","lastModifiedDate":"2024-03-29"},{"lineNumber":269,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":270,"author":{"gitId":"gosongying"},"content":"#### How the feature is implemented","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"gosongying"},"content":"The `UniquePersonList` class has been transformed into a generic class. Within the `AddressBook` class, two distinct ","lastModifiedDate":"2024-03-29"},{"lineNumber":272,"author":{"gitId":"gosongying"},"content":"lists have been instantiated: one for clients and another for housekeepers. These lists store the respective entities, ","lastModifiedDate":"2024-03-29"},{"lineNumber":273,"author":{"gitId":"gosongying"},"content":"ensuring separation of concerns. Both the saving and loading functionalities now operate independently on these ","lastModifiedDate":"2024-03-29"},{"lineNumber":274,"author":{"gitId":"gosongying"},"content":"segregated lists.","lastModifiedDate":"2024-03-29"},{"lineNumber":275,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":276,"author":{"gitId":"gosongying"},"content":"#### Why is it implemented this way","lastModifiedDate":"2024-03-29"},{"lineNumber":277,"author":{"gitId":"gosongying"},"content":"This approach offers improvements in both efficiency and performance. By separating clients and housekeepers into ","lastModifiedDate":"2024-03-29"},{"lineNumber":278,"author":{"gitId":"gosongying"},"content":"distinct lists, interactions between these entities are minimized. This segregation enhances organization and simplifies","lastModifiedDate":"2024-03-29"},{"lineNumber":279,"author":{"gitId":"gosongying"},"content":"maintenance of the system, as each list can be managed independently without impacting the other.","lastModifiedDate":"2024-03-29"},{"lineNumber":280,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":281,"author":{"gitId":"gosongying"},"content":"#### Alternatives considered","lastModifiedDate":"2024-03-29"},{"lineNumber":282,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":283,"author":{"gitId":"gosongying"},"content":"##### Alternative 1","lastModifiedDate":"2024-03-29"},{"lineNumber":284,"author":{"gitId":"gosongying"},"content":"Store clients and housekeepers together in a single list on the hard disk, they are separated upon application startup. ","lastModifiedDate":"2024-03-29"},{"lineNumber":285,"author":{"gitId":"gosongying"},"content":"Although this method is functional, it introduces overhead by requiring filtering of the single list to achieve ","lastModifiedDate":"2024-03-29"},{"lineNumber":286,"author":{"gitId":"gosongying"},"content":"eparation, potentially impacting performance negatively. Furthermore, the code complexity increases as it must handle ","lastModifiedDate":"2024-03-29"},{"lineNumber":287,"author":{"gitId":"gosongying"},"content":"the filtering process, making maintenance more challenging.","lastModifiedDate":"2024-03-29"},{"lineNumber":288,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":289,"author":{"gitId":"gosongying"},"content":"### \\[Completed\\] Delete feature with Type","lastModifiedDate":"2024-03-29"},{"lineNumber":290,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":291,"author":{"gitId":"gosongying"},"content":"In the previous iteration, both clients and housekeepers were contained within a singular list, limiting the delete ","lastModifiedDate":"2024-03-29"},{"lineNumber":292,"author":{"gitId":"gosongying"},"content":"functionality to operate solely within this unified list. In the current iteration, we\u0027ve segregated these entities into ","lastModifiedDate":"2024-03-29"},{"lineNumber":293,"author":{"gitId":"gosongying"},"content":"distinct lists—one for clients and another for housekeepers. Consequently, we\u0027ve introduced an updated Delete feature ","lastModifiedDate":"2024-03-29"},{"lineNumber":294,"author":{"gitId":"gosongying"},"content":"capable of removing entries from either of these individual lists.","lastModifiedDate":"2024-03-29"},{"lineNumber":295,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":296,"author":{"gitId":"gosongying"},"content":"#### How the feature is implemented","lastModifiedDate":"2024-03-29"},{"lineNumber":297,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":298,"author":{"gitId":"gosongying"},"content":"Two subclasses, namely `DeleteClientCommand` and `DeleteHousekeeperCommand`, have been developed as subclasses of the ","lastModifiedDate":"2024-03-29"},{"lineNumber":299,"author":{"gitId":"gosongying"},"content":"abstract class `DeleteCommand`. Each subclass is designed to operate on its respective list. During parsing, the system ","lastModifiedDate":"2024-03-29"},{"lineNumber":300,"author":{"gitId":"gosongying"},"content":"now evaluates the type specified within the Delete command entered by the user. If the type is identified as \"client\", ","lastModifiedDate":"2024-03-29"},{"lineNumber":301,"author":{"gitId":"gosongying"},"content":"the parser returns a `DeleteClientCommand`, enabling deletion of the client identified by the index within the client ","lastModifiedDate":"2024-03-29"},{"lineNumber":302,"author":{"gitId":"gosongying"},"content":"list. Conversely, if the type is recognized as \"housekeeper\", a `DeleteHousekeeperCommand` is utilized to remove the ","lastModifiedDate":"2024-03-29"},{"lineNumber":303,"author":{"gitId":"gosongying"},"content":"housekeeper at the specified index within the housekeeper list.","lastModifiedDate":"2024-03-29"},{"lineNumber":304,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":305,"author":{"gitId":"gosongying"},"content":"Here is how the activity diagram looks like: \u003cbr\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":306,"author":{"gitId":"gosongying"},"content":"![DeleteActivityDiagram](images/DeleteActivityDiagram.png)","lastModifiedDate":"2024-03-29"},{"lineNumber":307,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":308,"author":{"gitId":"gosongying"},"content":"#### Why is it implemented this way","lastModifiedDate":"2024-03-29"},{"lineNumber":309,"author":{"gitId":"gosongying"},"content":"The existing implementation now employs two distinct subclasses: `DeleteClientCommand` and `DeleteHousekeeperCommand`, ","lastModifiedDate":"2024-03-29"},{"lineNumber":310,"author":{"gitId":"gosongying"},"content":"each tailored for deleting entries from their respective lists. By segregating these functionalities into separate ","lastModifiedDate":"2024-03-29"},{"lineNumber":311,"author":{"gitId":"gosongying"},"content":"classes, the code adheres more closely to object-oriented programming (OOP) principles, enhancing clarity and ","lastModifiedDate":"2024-03-29"},{"lineNumber":312,"author":{"gitId":"gosongying"},"content":"maintainability. This approach ensures that each command operates distinctly on its designated list, promoting a more ","lastModifiedDate":"2024-03-29"},{"lineNumber":313,"author":{"gitId":"gosongying"},"content":"organized and modular codebase.","lastModifiedDate":"2024-03-29"},{"lineNumber":314,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":315,"author":{"gitId":"gosongying"},"content":"#### Alternatives considered","lastModifiedDate":"2024-03-29"},{"lineNumber":316,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":317,"author":{"gitId":"gosongying"},"content":"##### Alternative 1","lastModifiedDate":"2024-03-29"},{"lineNumber":318,"author":{"gitId":"gosongying"},"content":"Introducing a new attribute, \"Type\", within the `DeleteCommand` class may effectively accomplish the task at hand; ","lastModifiedDate":"2024-03-29"},{"lineNumber":319,"author":{"gitId":"gosongying"},"content":"however, it also brings the drawback of potentially increasing the number of conditional statements, which could degrade ","lastModifiedDate":"2024-03-29"},{"lineNumber":320,"author":{"gitId":"gosongying"},"content":"readability and maintainability. Moreover, the internal nature of the \"Type\" attribute might obscure its purpose to ","lastModifiedDate":"2024-03-29"},{"lineNumber":321,"author":{"gitId":"gosongying"},"content":"developers, leading to confusion.","lastModifiedDate":"2024-03-29"},{"lineNumber":322,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":323,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2024-04-05"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":325,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2024-04-05"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":327,"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":"2024-04-05"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":329,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-04-05"},{"lineNumber":330,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-04-05"},{"lineNumber":331,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-04-05"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":333,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-04-05"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":335,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2024-04-05"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":337,"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":"2024-04-05"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":339,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":341,"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":"2024-04-05"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":343,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":345,"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":"2024-04-05"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":347,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":349,"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":"2024-04-05"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":351,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":353,"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":"2024-04-05"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":355,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":357,"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":"2024-04-05"},{"lineNumber":358,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2024-04-05"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":360,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":362,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-04-05"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":364,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":366,"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":"2024-04-05"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":368,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-04-05"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":372,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":374,"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":"2024-04-05"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":376,"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":"2024-04-05"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":378,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":380,"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":"2024-04-05"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":382,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":384,"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":"2024-04-05"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":386,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":388,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2024-04-05"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":390,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":392,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2024-04-05"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":394,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2024-04-05"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":397,"author":{"gitId":"LimZiJia"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2024-04-05"},{"lineNumber":398,"author":{"gitId":"LimZiJia"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-04-05"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":400,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-04-05"},{"lineNumber":401,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2024-04-05"},{"lineNumber":402,"author":{"gitId":"LimZiJia"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2024-04-05"},{"lineNumber":403,"author":{"gitId":"LimZiJia"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-04-05"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":405,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":410,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":411,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":412,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":413,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"LimZiJia"},"content":"* is a busy operator of a housekeeping company","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"LimZiJia"},"content":"* makes and receives calls to clients/housekeepers","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"LimZiJia"},"content":"* is responsible for managing a team of housekeepers","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":429,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"LimZiJia"},"content":"* works alone","lastModifiedDate":"2024-03-06"},{"lineNumber":431,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":432,"author":{"gitId":"LimZiJia"},"content":"**Value proposition**: HouseKeeping Hub is designed to revolutionise the way housekeeping companies manage their client relationships. By focusing on storing and organising client and housekeeper contacts, our system offers unparalleled efficiency and convenience for housekeeping customer service admins, leading to improved service delivery and customer satisfaction.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"LimZiJia"},"content":"| Priority | As a/an …​ | I can …​ | So that …​ |","lastModifiedDate":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"LimZiJia"},"content":"|----------|-------------------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"LimZiJia"},"content":"| `* * *` | operator | view the list of contacts | I can manage calling them if I have to. |","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"LimZiJia"},"content":"| `* * *` | operator | load contacts from a saved file | I can maintain my contact list. |","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"LimZiJia"},"content":"| `* * *` | operator | add/save the details of a new client/housekeeper | I can keep track of the list of the client/housekeeper. |","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"LimZiJia"},"content":"| `* * *` | operator | remove the contact of clients/housekeepers by some criteria | I can maintain a up-to-date and organised contact list. |","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | update a client/housekeeper\u0027s information | I will not get details wrong even if they change. |","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | remove the whole contact list with one click | I can remove all dummy data that I have added for trial. |","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | retrieve details from specified contacts by their name or other criteria | I can save a lot of time to find specific clients and housekeepers. |","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | check if clients that want a cleaning | I can provide timely housekeeping services and get more revenue for the business. |","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"LimZiJia"},"content":"| `* *` | careless operator | undo any accidental deletion or change made to the contact list | I will not mess the contact list up. |","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | check the preferred housekeeper and their availability | I can inform the client whether the service could be operated or no. |","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | retrieve details of a scheduled service | I can rectify on the ground situations. |","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | check if a housekeeper is available | I can schedule for cleaning in emergency scenarios. |","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"LimZiJia"},"content":"| `* *` | fast-typing operator | quickly type CLI commands | I can perform my task efficiently. |","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"LimZiJia"},"content":"| `* *` | novice operator | use the easy-to-remember and well defined commands | I can adapt to the role of the operator quickly. |","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | access to the contact list from different devices or platforms | I can manage the contact list on-the-go. |","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"LimZiJia"},"content":"| `* *` | novice operator | query for a help list of commands and how to use them | I can learn the functionalities of the app quickly. |","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"LimZiJia"},"content":"| `* *` | impatient operator | the command to response quickly | I can finish my job fast. |","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | diffrentiate between the clients and housekeeper data | I will not be confused by the data. |","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"LimZiJia"},"content":"| `* *` | large company operator | to be able to save more than 1000 client\u0027s data/contact | I can list all the company\u0027s client. |","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | the company clients\u0027 data safe | the clients can feel assured to give us their data. |","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"LimZiJia"},"content":"| `* *` | not tech savvy operator | the program to be easy to use | I don\u0027t need extra time to study how to use the program. |","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | search and retrieve information quickly | I can relay information in real time. |","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | Save housekeeping session details | I can prove a housekeeper has done the job. |","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | sort the contact list by days to next preferred cleaning date | I can remind clients to book their next service soon. |","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | sort the contact list by some parameters | I can have a better visualisation of the data. |","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"LimZiJia"},"content":"| `* *` | operator | filter for housekeepers from some parameters | it is easier for me to schedule appointments. |","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"LimZiJia"},"content":"| `*` | forgetful operator | add tags to contacts | I can make notes on what I want to do with the contact. |","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"LimZiJia"},"content":"| `*` | operator | import a contact list from an external file | I can easily transform existing contact information from other sources. |","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"LimZiJia"},"content":"| `*` | Anxious Operator | the program to have auto-save function | I can feel assured if anything happen to my device. |","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"LimZiJia"},"content":"| `*` | Expert CLI user | Define my own command aliases | I can better optimise the speed of my work. |","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"LimZiJia"},"content":"| `*` | operator | Add multiple of each action at once | I can improve my work flow. |","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"LimZiJia"},"content":"| `*` | operator | group clients/housekeepers by certain features (area) | I can organise the data better and make better client-housekeeper matches. |","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"moguries"},"content":"(For all use cases below, the **System** is the `HouseKeeping Hub` and the **Actor** is the `operator`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"moguries"},"content":"Preconditions: Operator is logged in.","lastModifiedDate":"2024-03-07"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":483,"author":{"gitId":"moguries"},"content":"**Use case: UC01 - List clients**","lastModifiedDate":"2024-03-07"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":485,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":487,"author":{"gitId":"moguries"},"content":"1. Operator requests to list clients","lastModifiedDate":"2024-03-07"},{"lineNumber":488,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub shows the list of clients","lastModifiedDate":"2024-03-07"},{"lineNumber":489,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":490,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":491,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":492,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":493,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":494,"author":{"gitId":"moguries"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":495,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":496,"author":{"gitId":"moguries"},"content":" * 2a1. HouseKeeping Hub shows a message that the list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":497,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":498,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":499,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":500,"author":{"gitId":"moguries"},"content":"**Use case: UC02 - List housekeepers**","lastModifiedDate":"2024-03-07"},{"lineNumber":501,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":502,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":503,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":504,"author":{"gitId":"moguries"},"content":"1. Operator requests to list housekeepers","lastModifiedDate":"2024-03-07"},{"lineNumber":505,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub shows the list of housekeepers","lastModifiedDate":"2024-03-07"},{"lineNumber":506,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":507,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":508,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":509,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":510,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":511,"author":{"gitId":"moguries"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":512,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":513,"author":{"gitId":"moguries"},"content":" * 2a1. HouseKeeping Hub shows a message that the list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":514,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":515,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":516,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":517,"author":{"gitId":"moguries"},"content":"**Use case: UC03 - Add client**","lastModifiedDate":"2024-03-07"},{"lineNumber":518,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":519,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":520,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":521,"author":{"gitId":"moguries"},"content":"1. Operator requests to add a client","lastModifiedDate":"2024-03-07"},{"lineNumber":522,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub adds the client","lastModifiedDate":"2024-03-07"},{"lineNumber":523,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":524,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":525,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":526,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":527,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":528,"author":{"gitId":"moguries"},"content":"* 1a. An [/argument] is spelled incorrectly.","lastModifiedDate":"2024-03-07"},{"lineNumber":529,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":530,"author":{"gitId":"moguries"},"content":" * 1a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":531,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":532,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":533,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":534,"author":{"gitId":"moguries"},"content":"* 1a. A given argument is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":535,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":536,"author":{"gitId":"moguries"},"content":" * 1a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":537,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":538,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":539,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":540,"author":{"gitId":"moguries"},"content":"**Use case: UC04 - Add housekeeper**","lastModifiedDate":"2024-03-07"},{"lineNumber":541,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":542,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":543,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":544,"author":{"gitId":"moguries"},"content":"1. Operator requests to add a housekeeper","lastModifiedDate":"2024-03-07"},{"lineNumber":545,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub adds the housekeeper","lastModifiedDate":"2024-03-07"},{"lineNumber":546,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":547,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":548,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":549,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":550,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":551,"author":{"gitId":"moguries"},"content":"* 1a. An [/argument] is spelled incorrectly.","lastModifiedDate":"2024-03-07"},{"lineNumber":552,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":553,"author":{"gitId":"moguries"},"content":" * 1a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":554,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":555,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":556,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":557,"author":{"gitId":"moguries"},"content":"* 1a. A given argument is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":558,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":559,"author":{"gitId":"moguries"},"content":" * 1a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":560,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":561,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":562,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":563,"author":{"gitId":"moguries"},"content":"**Use case: UC05 - Delete client**","lastModifiedDate":"2024-03-07"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"moguries"},"content":"1. Operator requests to list clients","lastModifiedDate":"2024-03-07"},{"lineNumber":568,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub shows the list of clients","lastModifiedDate":"2024-03-07"},{"lineNumber":569,"author":{"gitId":"moguries"},"content":"3. Operator requests to delete a specific client in the list","lastModifiedDate":"2024-03-07"},{"lineNumber":570,"author":{"gitId":"moguries"},"content":"4. HouseKeeping Hub deletes the client","lastModifiedDate":"2024-03-07"},{"lineNumber":571,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":580,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":582,"author":{"gitId":"moguries"},"content":" * 3a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":584,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":586,"author":{"gitId":"moguries"},"content":"**Use case: UC06 - Delete housekeeper**","lastModifiedDate":"2024-03-07"},{"lineNumber":587,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":588,"author":{"gitId":"moguries"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":589,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":590,"author":{"gitId":"moguries"},"content":"1. Operator requests to list housekeepers","lastModifiedDate":"2024-03-07"},{"lineNumber":591,"author":{"gitId":"moguries"},"content":"2. HouseKeeping Hub shows the list of housekeepers","lastModifiedDate":"2024-03-07"},{"lineNumber":592,"author":{"gitId":"moguries"},"content":"3. Operator requests to delete a specific housekeeper in the list","lastModifiedDate":"2024-03-07"},{"lineNumber":593,"author":{"gitId":"moguries"},"content":"4. HouseKeeping Hub deletes the housekeeper","lastModifiedDate":"2024-03-07"},{"lineNumber":594,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":595,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":596,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":597,"author":{"gitId":"moguries"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":598,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":599,"author":{"gitId":"moguries"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-07"},{"lineNumber":600,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":601,"author":{"gitId":"moguries"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":602,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":603,"author":{"gitId":"moguries"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":604,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":605,"author":{"gitId":"moguries"},"content":" * 3a1. HouseKeeping Hub shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":606,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":607,"author":{"gitId":"moguries"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":609,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":610,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":611,"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":612,"author":{"gitId":"GERARDJM018"},"content":"2. Should be able to hold up to 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":613,"author":{"gitId":"GERARDJM018"},"content":"3. A user not familiar with CLI but has an 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-07"},{"lineNumber":614,"author":{"gitId":"GERARDJM018"},"content":"4. All user operations should completed within 3 seconds.","lastModifiedDate":"2024-03-07"},{"lineNumber":615,"author":{"gitId":"GERARDJM018"},"content":"5. Should lose no more than 2 user operations worth of work in case of system crash.","lastModifiedDate":"2024-03-07"},{"lineNumber":616,"author":{"gitId":"GERARDJM018"},"content":"6. Should not take memory more than 200 MB while in operation.","lastModifiedDate":"2024-03-07"},{"lineNumber":617,"author":{"gitId":"GERARDJM018"},"content":"7. Will not use a DataBase Management System e.g., MySQL, and PostgreSQL to store data. And hence, will use flat file as a storage.","lastModifiedDate":"2024-03-07"},{"lineNumber":618,"author":{"gitId":"GERARDJM018"},"content":"8. Should be portable (able to work without requiring an installer).","lastModifiedDate":"2024-03-07"},{"lineNumber":619,"author":{"gitId":"GERARDJM018"},"content":"9. Should not use or depend on a remote server.","lastModifiedDate":"2024-03-07"},{"lineNumber":620,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":621,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":622,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":623,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":624,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":625,"author":{"gitId":"LimZiJia"},"content":"* **CLI**: Short for Command Line Interface. User\u0027s of our application mainly interact with our program by typing commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":626,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":627,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":628,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":629,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":630,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":631,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":632,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":633,"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":634,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":635,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":636,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":637,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":638,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":639,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":640,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":641,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":642,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":643,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":644,"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":645,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":646,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":647,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":648,"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":649,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":650,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":651,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":652,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":653,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":654,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":655,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":656,"author":{"gitId":"LimZiJia"},"content":"1. Deleting a person while all clients/housekeepers are being shown","lastModifiedDate":"2024-04-05"},{"lineNumber":657,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":658,"author":{"gitId":"LimZiJia"},"content":" 1. Prerequisites: List all persons using the `list client` or `list housekeeper` command. Multiple persons in the list.","lastModifiedDate":"2024-04-05"},{"lineNumber":659,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":660,"author":{"gitId":"LimZiJia"},"content":" 1. Test case: `delete client 1` or `delete housekeeper 1`\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":661,"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":662,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":663,"author":{"gitId":"LimZiJia"},"content":" 1. Test case: `delete client 0` or `delete housekeeper 0`\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":664,"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":665,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":666,"author":{"gitId":"LimZiJia"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `delete housekeeper y`, `...` (where x is not a valid type and y is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":667,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":668,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":669,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":670,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":671,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":672,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":673,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":674,"author":{"gitId":"LimZiJia"},"content":" 1. To simulate this, delete the data file `addressbook.json` or make it unreadable.","lastModifiedDate":"2024-04-05"},{"lineNumber":675,"author":{"gitId":"LimZiJia"},"content":" 2. If you want to refresh the data file, you can delete `addressbook.json` and restart the app.","lastModifiedDate":"2024-04-05"},{"lineNumber":676,"author":{"gitId":"LimZiJia"},"content":" 3. If you want to recover the data, study the `addressbook.json` file format and manually edit it.","lastModifiedDate":"2024-04-05"},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LimZiJia":125,"moguries":107,"gosongying":58,"-":338,"GERARDJM018":49}},{"path":"docs/SettingUp.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: Setting up and getting started","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":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2020-06-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" 1. Run the `housekeeping.hub.Main` and try a few commands.","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"LimZiJia":1,"-":54}},{"path":"docs/Testing.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: Testing guide","lastModifiedDate":"2020-06-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-secondary\"\u003e:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003c/div\u003e","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" e.g. `housekeeping.hub.commons.StringUtilTest`","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" e.g. `housekeeping.hub.storage.StorageManagerTest`","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" e.g. `housekeeping.hub.logic.LogicManagerTest`","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"LimZiJia":3,"-":33}},{"path":"docs/UserGuide.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":"moguries"},"content":"title: Housekeeping Hub User Guide","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"Welcome to HouseKeeping Hub, the premier **desktop solution for managing client and housekeeper contacts**. ","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"Combining the **efficiency of a Command Line Interface ([CLI](#cli)) with the convenience of a Graphical User Interface ([GUI](#gui))**,","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"HouseKeeping Hub offers unparalleled speed and ease of use. Whether you\u0027re a typist or a clicker, ","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"HouseKeeping Hub ensures swift completion of all your contact management tasks. ","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"Bid farewell to the sluggishness of traditional GUI apps - with HouseKeeping Hub, managing your contacts has never been faster or simpler.","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"## Table of Contents","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"## Purpose of this guide","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"This guide has been created to help you understand and utilize the features and functionalities of our software","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" effectively. Whether you\u0027re a new user who is not familiar with command line interface or an expert looking to enhance ","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":"your skills, this guide aims to provide you with the information you need to make the most of our product. In this guide ","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"you will find a quick start (guide to install and start using our product), a list of features and how to use them, and ","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":"a glossary to help you understand some jargon. This guide is designed to provide you with clear and concise instructions ","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"and a reader-friendly format to enhance your experience in using our product.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"## How to use this guide:question:","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":"Let\u0027s get started! Here\u0027s a rundown of every section in this guide:","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"If you have yet to install Housekeeping Hub, you can refer to the [installation instructions](#installation).","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":"After installing the application, you can start off by following our [tutorial](#tutorial) to familiarise yourself","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"with the basic features of the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":"The [features](#features) section provides the detailed overview of each command, command formats and examples.","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"If you\u0027d like a quick reference of all available commands, check out the [command summary](#command-summary).","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"You can head over to the [Frequently Asked Questions](#faq) section to view answers to common queries regarding the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":"Finally, we have the [glossary](#glossary) section to clarify any technical jargon used.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"Now you have successfully mastered how to use this guide! One last thing: learn how to **navigate the guide**","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":"in the section below.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":"## Navigating our guide :mag:","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":"Words highlighted in blue in our guide can direct you to a specific section in our guide ([FAQ](#faq)), ","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":"an external link ([download link](https://github.com/AY2324S2-CS2103T-W09-1/tp/releases)), or to an explanation of a term in the glossary ([CLI](#cli)).","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":"There will be [:arrow_up_small:](#table-of-contents) links, which you can click on to return to the table of contents.","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"LimZiJia"},"content":"## Installation :computer:","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"installation\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":"1. Download the latest `HousekeepingHub-v1.3.1.jar` from [here](https://github.com/AY2324S2-CS2103T-W09-1/tp/releases).","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your HouseKeeping Hub.","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":"1. Open a [command terminal](#terminal), and type in `cd` to navigate into the folder you placed the [jar](#jar) file in.","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":"1. Type in `java -jar HousekeepingHub-v1.3.1.jar` to run the application.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"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":77,"author":{"gitId":"gosongying"},"content":" ![Ui](./images/Ui.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":"## Tutorial","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"tutorial\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"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":87,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" * `list client` : Lists all client contacts.","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" * `add housekeeper n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 ar/west` : Adds a housekeeper named `John Doe`.","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" * `delete client 3` : Deletes the 3rd contact shown in the last shown list.","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"features\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"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":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"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":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"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":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"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":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"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":125,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":127,"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":128,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":"![help message](./images/helpMessage.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"LimZiJia"},"content":"Adds a client or housekeeper to Housekeeping Hub.","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"LimZiJia"},"content":"Format: `add TYPE n/NAME e/EMAIL p/PHONE_NUMBER a/ADDRESS ar/AREA [d/DETAILS] [t/TAG]…​`","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"LimZiJia"},"content":"Notes: ","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"LimZiJia"},"content":"* `TYPE` can be either \u0027client\u0027 or \u0027housekeeper\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"GERARDJM018"},"content":"* `AREA` can be either \u0027east\u0027, \u0027southeast\u0027, \u0027south\u0027, \u0027southwest\u0027, \u0027west\u0027, \u0027northwest\u0027, \u0027north\u0027, or \u0027northeast\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"LimZiJia"},"content":"* `DETAILS` is optional and refers to the housekeeping details for CLIENT ONLY. It is not applicable for housekeepers.","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"LimZiJia"},"content":"The format for `DETAILS` is `d/yyyy-MM-dd NUMBER INTERVAL` where `yyyy-MM-dd` is the date of the last","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"LimZiJia"},"content":"housekeeping, `NUMBER` is the quantity of `INTERVAL`(s) which can be ***\u0027days\u0027, \u0027weeks\u0027, \u0027months\u0027 or \u0027years\u0027.***","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-04"},{"lineNumber":164,"author":{"gitId":"LimZiJia"},"content":"Housekeeping details of the client can be modified using the `booking` command. Without housekeeping details,","lastModifiedDate":"2024-04-04"},{"lineNumber":165,"author":{"gitId":"LimZiJia"},"content":"the customer is assumed to not want notifications for housekeeping. Therefore, `leads` will not include clients without housekeeping details.","lastModifiedDate":"2024-04-04"},{"lineNumber":166,"author":{"gitId":"LimZiJia"},"content":"To set or remove housekeeping details after initiation, refer to `set` and `remove` under `booking` below.","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":168,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"GERARDJM018"},"content":"* `add client n/Elon e/elon@gmail.com p/088888888 a/Elon Street, Block 123, 101010 Singapore ar/west`","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":"* `add housekeeper n/Betsy Crowe p/441234567 e/betsycrowe@example.com a/Newgate Prison t/criminal t/famous ar/south`","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":"Shows a list of all persons with the given type in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":"Format: `list TYPE`","lastModifiedDate":"2024-03-15"},{"lineNumber":182,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":183,"author":{"gitId":"LimZiJia"},"content":"Notes: ","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"LimZiJia"},"content":"* `TYPE` can only be either \u0027client\u0027 or \u0027housekeeper\u0027","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":186,"author":{"gitId":"GERARDJM018"},"content":"Example:","lastModifiedDate":"2024-03-15"},{"lineNumber":187,"author":{"gitId":"GERARDJM018"},"content":"* `list client`","lastModifiedDate":"2024-03-15"},{"lineNumber":188,"author":{"gitId":"GERARDJM018"},"content":"* `list housekeeper`","lastModifiedDate":"2024-03-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":194,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"moguries"},"content":"Deletes the specified client or housekeeper from the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"LimZiJia"},"content":"Format: `delete TYPE INDEX`","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":200,"author":{"gitId":"GERARDJM018"},"content":"Notes:","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":"* `TYPE` can be either \u0027client\u0027 or \u0027housekeeper\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"moguries"},"content":"* Deletes the client or housekeeper at the specified `INDEX`.","lastModifiedDate":"2024-03-15"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":"* The index refers to the index number shown in the displayed list.","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"LimZiJia"},"content":"The index to delete will work for any displayed list. i.e. What you see is what you get.","lastModifiedDate":"2024-04-04"},{"lineNumber":208,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"moguries"},"content":"* `list client` followed by `delete client 2` deletes the 2nd person in the client list.","lastModifiedDate":"2024-03-15"},{"lineNumber":212,"author":{"gitId":"moguries"},"content":"* `list housekeeper` followed by `delete housekeeper 1` deletes the 1st person in the housekeeper list.","lastModifiedDate":"2024-03-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":216,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2024-04-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":"Format: `edit TYPE INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [ar/AREA] [t/TAG]…​`","lastModifiedDate":"2024-04-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"GERARDJM018"},"content":"Notes:","lastModifiedDate":"2024-04-04"},{"lineNumber":224,"author":{"gitId":"GERARDJM018"},"content":"* `TYPE` can be either \u0027client\u0027 or \u0027housekeeper\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"GERARDJM018"},"content":"* `AREA` can be either \u0027east\u0027, \u0027southeast\u0027, \u0027south\u0027, \u0027southwest\u0027, \u0027west\u0027, \u0027northwest\u0027, \u0027north\u0027, or \u0027northeast\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2024-04-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2024-04-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-04-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"GERARDJM018"},"content":" specifying any tags after it.","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":234,"author":{"gitId":"GERARDJM018"},"content":"* `edit client 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st client to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-04-04"},{"lineNumber":235,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":236,"author":{"gitId":"GERARDJM018"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":237,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":238,"author":{"gitId":"GERARDJM018"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"GERARDJM018"},"content":"### Locating persons by keywords: `find`","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"GERARDJM018"},"content":"Finds client or housekeeper whose names, address, or area contain any of the given keywords.","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":244,"author":{"gitId":"GERARDJM018"},"content":"Format: `find TYPE n/KEYWORD [MORE_KEYWORDS] ar/KEYWORD [MORE_KEYWORDS] a/KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-04-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":246,"author":{"gitId":"GERARDJM018"},"content":"Notes:","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"GERARDJM018"},"content":"* `TYPE` can be either \u0027client\u0027 or \u0027housekeeper\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"GERARDJM018"},"content":"* `AREA` can be either \u0027east\u0027, \u0027southeast\u0027, \u0027south\u0027, \u0027southwest\u0027, \u0027west\u0027, \u0027northwest\u0027, \u0027north\u0027, or \u0027northeast\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"GERARDJM018"},"content":"* `find client n/John` returns `john` and `John Doe`","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"GERARDJM018"},"content":"* `find housekeeper n/alex david ar/west` returns housekeeper which name is alex or david and cover the service of west area\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"GERARDJM018"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"GERARDJM018"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"LimZiJia"},"content":"### Getting client call list: `leads`","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"LimZiJia"},"content":"Generates a list of leads by sorting the clients based on the predicted next time of housekeeping. ","lastModifiedDate":"2024-04-05"},{"lineNumber":266,"author":{"gitId":"LimZiJia"},"content":"Clients with predicted next housekeeping date which is in the future will not be included.","lastModifiedDate":"2024-04-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"LimZiJia"},"content":"Format: `leads`","lastModifiedDate":"2024-04-04"},{"lineNumber":269,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":270,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"LimZiJia"},"content":"The leads are sorted with the client with the earliest predicted next housekeeping date at the top. Housekeeping details are optional so clients without housekeeping details will not be included in the leads.","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":275,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":276,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":277,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":278,"author":{"gitId":"LimZiJia"},"content":"### Booking commands: `booking`","lastModifiedDate":"2024-04-04"},{"lineNumber":279,"author":{"gitId":"LimZiJia"},"content":"We have booking functionality for both client and housekeepers. The booking command allows you to update the housekeeping details of a client and update bookings for a housekeeper.","lastModifiedDate":"2024-04-04"},{"lineNumber":280,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":281,"author":{"gitId":"LimZiJia"},"content":"General format: `booking TYPE ACTION INDEX [PARAMETERS]`","lastModifiedDate":"2024-04-04"},{"lineNumber":282,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-04"},{"lineNumber":284,"author":{"gitId":"LimZiJia"},"content":"For the subcommands of booking below, here are some clarifications.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":285,"author":{"gitId":"LimZiJia"},"content":"`INDEX` refers to the index of the observed client/housekeeper list.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":286,"author":{"gitId":"LimZiJia"},"content":"`NUMBER` refers to any integer. This could represent the quantity of `INTERVAL`(s).\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":287,"author":{"gitId":"LimZiJia"},"content":"`INTERVAL` refers to a period, which can be \u0027days\u0027, \u0027weeks\u0027, \u0027months\u0027 or \u0027years\u0027.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":288,"author":{"gitId":"LimZiJia"},"content":"`AREA` refers to the \u0027north\u0027, \u0027south\u0027, \u0027east\u0027, \u0027west\u0027, \u0027northeast\u0027, \u0027northwest\u0027, \u0027southeast\u0027, \u0027southwest\u0027.","lastModifiedDate":"2024-04-04"},{"lineNumber":289,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":290,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":291,"author":{"gitId":"LimZiJia"},"content":"##### Updating client\u0027s housekeeping details: `booking client`","lastModifiedDate":"2024-04-04"},{"lineNumber":292,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":293,"author":{"gitId":"LimZiJia"},"content":"Client\u0027s housekeeping details are optional, and it has 4 attributes: ","lastModifiedDate":"2024-04-04"},{"lineNumber":294,"author":{"gitId":"LimZiJia"},"content":"\u003cu\u003e[1] last booking date, [2] preferred interval, [3] booking time slot, and [4] deferment.\u003c/u\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":295,"author":{"gitId":"LimZiJia"},"content":"This is a value added service for you to keep track of your client\u0027s housekeeping schedule and call clients for housekeeping at the right time.","lastModifiedDate":"2024-04-04"},{"lineNumber":296,"author":{"gitId":"LimZiJia"},"content":"If clients do not have housekeeping details, they are assumed to not want notifications for housekeeping. Therefore, `leads` will not include clients without housekeeping details.","lastModifiedDate":"2024-04-04"},{"lineNumber":297,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":298,"author":{"gitId":"LimZiJia"},"content":"*** [1] and [2] are mandatory while [3] and [4] are optional. ([4] deferment will be set to 0 by default)","lastModifiedDate":"2024-04-04"},{"lineNumber":299,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":300,"author":{"gitId":"LimZiJia"},"content":"We have 6 commands for updating client\u0027s housekeeping details. `edit`, `defer`, `add`, `delete`, `set`, and `remove`.","lastModifiedDate":"2024-04-05"},{"lineNumber":301,"author":{"gitId":"LimZiJia"},"content":"Without a housekeeping detail, `edit`, `defer`, `add`, `delete` will not work. To set housekeeping detail after initiation, use `set`.","lastModifiedDate":"2024-04-05"},{"lineNumber":302,"author":{"gitId":"LimZiJia"},"content":"`edit` has prefixes `lhd/`, `pi/`, `bd/` and `d/` to edit last housekeeping date, preferred interval, booking date and deferment respectively.","lastModifiedDate":"2024-04-05"},{"lineNumber":303,"author":{"gitId":"LimZiJia"},"content":"More than one prefix can be used in a single `edit` command.","lastModifiedDate":"2024-04-05"},{"lineNumber":304,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":305,"author":{"gitId":"LimZiJia"},"content":"Action | Format, Explainations, Examples ","lastModifiedDate":"2024-04-04"},{"lineNumber":306,"author":{"gitId":"GERARDJM018"},"content":"--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":307,"author":{"gitId":"GERARDJM018"},"content":"`edit lhd/` | Edit client\u0027s last housekeeping date with `edit lhd/`\u003cbr\u003eFormat: `booking client edit INDEX lhd/yyyy-MM-dd`\u003cbr\u003eExample: `booking client edit 2 lhd/2024-04-01` ","lastModifiedDate":"2024-04-04"},{"lineNumber":308,"author":{"gitId":"GERARDJM018"},"content":"`edit pi/` | Edit client\u0027s preferred interval with `edit pi/`\u003cbr\u003eFormat: `booking client edit INDEX pi/NUMBER INTERVAL`\u003cbr\u003eExample: `booking client edit 2 pi/2 weeks`","lastModifiedDate":"2024-04-04"},{"lineNumber":309,"author":{"gitId":"GERARDJM018"},"content":"`edit bd/` | Edit client\u0027s booking date with `edit bd/`\u003cbr\u003eFormat: `booking client edit INDEX bd/BOOKING DATE`\u003cbr\u003eExample: `booking client edit 2 bd/2024-04-02 am`","lastModifiedDate":"2024-04-04"},{"lineNumber":310,"author":{"gitId":"LimZiJia"},"content":"`edit d/` | Edit deferment with `edit d/`\u003cbr\u003eFormat: `booking client edit INDEX d/NUMBER INTERVAL`\u003cbr\u003eExample: `booking client edit 2 d/2 months`","lastModifiedDate":"2024-04-05"},{"lineNumber":311,"author":{"gitId":"LimZiJia"},"content":"`defer` | Add period to delay calling clients with `defer`\u003cbr\u003eFormat: `booking client defer INDEX NUMBER INTERVAL`\u003cbr\u003eExample: `booking client defer 2 1 months` ","lastModifiedDate":"2024-04-04"},{"lineNumber":312,"author":{"gitId":"GERARDJM018"},"content":"`add` | Add client\u0027s booking date with `add`\u003cbr\u003eFormat: `booking client add INDEX yyyy-MM-dd (am|pm)`\u003cbr\u003eExample: `booking client add 2 2024-04-01 am` ","lastModifiedDate":"2024-04-04"},{"lineNumber":313,"author":{"gitId":"LimZiJia"},"content":"`delete` | Delete client\u0027s booking date with `delete`\u003cbr\u003eFormat: `booking client delete INDEX` \u003cbr\u003eExample: `booking client delete 2` ","lastModifiedDate":"2024-04-04"},{"lineNumber":314,"author":{"gitId":"LimZiJia"},"content":"`set` | Set client\u0027s housekeeping details with `set`. Same format as initiation, you can set last housekeeping date and preferred interval. \u003cbr\u003eFormat: `booking client set INDEX yyyy-MM-dd NUMBER INTERVAL`\u003cbr\u003eExample: `booking client set 2 2024-04-01 15 days`","lastModifiedDate":"2024-04-04"},{"lineNumber":315,"author":{"gitId":"LimZiJia"},"content":"`remove` | Remove client\u0027s housekeeping details with `remove`\u003cbr\u003eFormat: `booking client remove INDEX`\u003cbr\u003eExample: `booking client remove 2`","lastModifiedDate":"2024-04-04"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":317,"author":{"gitId":"moguries"},"content":"##### Updating housekeeper\u0027s housekeeping details: `booking housekeeper`","lastModifiedDate":"2024-04-04"},{"lineNumber":318,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":319,"author":{"gitId":"LimZiJia"},"content":"Housekeepers all have a list of bookings (that can be empty). This allows for Housekeeping Hub to suggest housekeepers for clients based on their availability. There are 4 commands `add`, `delete`, `list` and `search`.","lastModifiedDate":"2024-04-04"},{"lineNumber":320,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":321,"author":{"gitId":"LimZiJia"},"content":"Action | Format, Explainations, Examples ","lastModifiedDate":"2024-04-04"},{"lineNumber":322,"author":{"gitId":"LimZiJia"},"content":"--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":323,"author":{"gitId":"LimZiJia"},"content":"`add` | Add booking to a housekeeper\u0027s list with `add`\u003cbr\u003eFormat: `booking housekeeper add INDEX yyyy-MM-dd (am|pm)`\u003cbr\u003eExample: `booking housekeeper add 2 2024-04-01 am` ","lastModifiedDate":"2024-04-04"},{"lineNumber":324,"author":{"gitId":"LimZiJia"},"content":"`delete` | Delete booking from a housekeeper\u0027s list with `delete`\u003cbr\u003eFormat: `booking housekeeper delete INDEX INDEX`\u003cbr\u003eExample: `booking housekeeper delete 1 2`\u003cbr\u003e* The first INDEX refers to the housekeeper index and the second INDEX refers to the booking index (shown in `list` action).","lastModifiedDate":"2024-04-04"},{"lineNumber":325,"author":{"gitId":"LimZiJia"},"content":"`list` | List all bookings of a housekeeper with `list`\u003cbr\u003eFormat: `booking housekeeper list INDEX`\u003cbr\u003eExample: `booking housekeeper list 2`","lastModifiedDate":"2024-04-04"},{"lineNumber":326,"author":{"gitId":"LimZiJia"},"content":"`search` | Search for housekeepers available on a specific area and date date with `search`\u003cbr\u003eFormat: `booking housekeeper search AREA yyyy-MM-dd (am|pm)`\u003cbr\u003eExample: `booking housekeeper search east 2024-04-05 pm`","lastModifiedDate":"2024-04-04"},{"lineNumber":327,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":328,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":329,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":330,"author":{"gitId":"LimZiJia"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-04"},{"lineNumber":331,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2024-04-04"},{"lineNumber":338,"author":{"gitId":"LimZiJia"},"content":"This command is irreversible. All data will be lost.","lastModifiedDate":"2024-04-04"},{"lineNumber":339,"author":{"gitId":"LimZiJia"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":340,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":341,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"gosongying"},"content":"HouseKeeping Hub data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-20"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":353,"author":{"gitId":"gosongying"},"content":"HouseKeeping Hub data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-20"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":355,"author":{"gitId":"LimZiJia"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-04-05"},{"lineNumber":356,"author":{"gitId":"LimZiJia"},"content":"If you wish to load our sample data, you must delete the existing `addressbook.json` from the stated location and restart the app.","lastModifiedDate":"2024-04-05"},{"lineNumber":357,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":359,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":360,"author":{"gitId":"gosongying"},"content":"If your changes to the data file makes its format invalid, HouseKeeping Hub 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-20"},{"lineNumber":361,"author":{"gitId":"gosongying"},"content":"Furthermore, certain edits can cause the HouseKeeping Hub to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-20"},{"lineNumber":362,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":364,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"faq\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"gosongying"},"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 HouseKeeping Hub home folder.","lastModifiedDate":"2024-03-20"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":376,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"command-summary\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":381,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2024-03-19"},{"lineNumber":382,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2024-03-19"},{"lineNumber":383,"author":{"gitId":"GERARDJM018"},"content":"[**Add**](#adding-a-person-add) | `add TYPE n/NAME e/EMAIL p/PHONE_NUMBER a/ADDRESS [d/DETAILS] [ar/AREA] [t/TAG]…​` \u003cbr\u003e e.g., `add client n/Elon e/elon@gmail.com p/088888888 a/Elon Street, Block 123, 101010 Singapore ar/west`","lastModifiedDate":"2024-04-04"},{"lineNumber":384,"author":{"gitId":"LimZiJia"},"content":"[**Delete**](#deleting-a-person--delete) | `delete TYPE INDEX`\u003cbr\u003e e.g., `delete housekeeper 3`","lastModifiedDate":"2024-04-04"},{"lineNumber":385,"author":{"gitId":"LimZiJia"},"content":"[**List**](#listing-all-persons--list) | `list TYPE`\u003cbr\u003e e.g., `list client`","lastModifiedDate":"2024-04-04"},{"lineNumber":386,"author":{"gitId":"LimZiJia"},"content":"[**Edit**](#editing-a-person--edit) | `edit TYPE INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [d/DETAILS] [ar/AREA] [t/TAG]…​`\u003cbr\u003e e.g., `edit client 1 p/91234567 e/johndoe@example.com`","lastModifiedDate":"2024-04-05"},{"lineNumber":387,"author":{"gitId":"LimZiJia"},"content":"[**Find**](#locating-persons-by-keywords--find) | `find TYPE n/KEYWORD [MORE_KEYWORDS] ar/KEYWORD [MORE_KEYWORDS] a/KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find client n/John`","lastModifiedDate":"2024-04-05"},{"lineNumber":388,"author":{"gitId":"LimZiJia"},"content":"[**Leads**](#getting-client-call-list-leads) | `leads`","lastModifiedDate":"2024-04-04"},{"lineNumber":389,"author":{"gitId":"LimZiJia"},"content":"[**Booking**](#booking-commands-booking) | `booking TYPE ACTION INDEX [PARAMETERS]`\u003cbr\u003e e.g., `booking client last 2 2024-04-01`\u003cbr\u003e * This has many commands and it is recommended to refer to the [Booking commands](#booking-commands-booking) section for more details.","lastModifiedDate":"2024-04-04"},{"lineNumber":390,"author":{"gitId":"LimZiJia"},"content":"[**Clear**](#clearing-all-entries--clear) | `clear`","lastModifiedDate":"2024-04-04"},{"lineNumber":391,"author":{"gitId":"LimZiJia"},"content":"[**Exit**](#exiting-the-program--exit) | `exit`","lastModifiedDate":"2024-04-04"},{"lineNumber":392,"author":{"gitId":"LimZiJia"},"content":"[**Help**](#viewing-help--help) | `help` |","lastModifiedDate":"2024-04-04"},{"lineNumber":393,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":394,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"},{"lineNumber":395,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":396,"author":{"gitId":"LimZiJia"},"content":"----------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-20"},{"lineNumber":397,"author":{"gitId":"LimZiJia"},"content":"## Glossary :book:","lastModifiedDate":"2024-04-04"},{"lineNumber":398,"author":{"gitId":"moguries"},"content":"\u003ca id\u003d\"glossary\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":399,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":400,"author":{"gitId":"LimZiJia"},"content":"**JAR**","lastModifiedDate":"2024-03-20"},{"lineNumber":401,"author":{"gitId":"gosongying"},"content":"\u003ca id\u003d\"jar\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":402,"author":{"gitId":"LimZiJia"},"content":": JAR stands for Java Archive. It is based on the ZIP file format that is commonly used to store java programs.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":403,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":404,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":405,"author":{"gitId":"LimZiJia"},"content":"**CLI**","lastModifiedDate":"2024-03-20"},{"lineNumber":406,"author":{"gitId":"gosongying"},"content":"\u003ca id\u003d\"cli\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":407,"author":{"gitId":"LimZiJia"},"content":": CLI stands for Command Line Interface. It refers to programs that are primarily **text-based** where users interact with the program by typing **commands**. ","lastModifiedDate":"2024-03-20"},{"lineNumber":408,"author":{"gitId":"LimZiJia"},"content":"As such, users will use their keyboards more, in contrast to a Graphical User Interface (GUI) where users will use their mouse to interact with the graphical elements.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":409,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":410,"author":{"gitId":"LimZiJia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":411,"author":{"gitId":"gosongying"},"content":"**GUI**","lastModifiedDate":"2024-03-20"},{"lineNumber":412,"author":{"gitId":"gosongying"},"content":"\u003ca id\u003d\"gui\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":413,"author":{"gitId":"LimZiJia"},"content":": GUI stands for Graphical User Interface. It refers to programs that are primarily **graphical** where users interact with the program by clicking on **buttons** and **menus**.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":414,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":415,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":416,"author":{"gitId":"LimZiJia"},"content":"**Terminal**","lastModifiedDate":"2024-03-20"},{"lineNumber":417,"author":{"gitId":"gosongying"},"content":"\u003ca id\u003d\"terminal\"\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":418,"author":{"gitId":"LimZiJia"},"content":": A terminal is a Command Line Interface (CLI) that allows users to interact with computers by executing commands and viewing the results. ","lastModifiedDate":"2024-03-20"},{"lineNumber":419,"author":{"gitId":"LimZiJia"},"content":"Popular terminals in mainstream operating systems include command prompt (CMD) for windows and Terminal in macOS and Linux.\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":420,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":421,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":422,"author":{"gitId":"LimZiJia"},"content":"**CMD**\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":423,"author":{"gitId":"LimZiJia"},"content":"\u003cimg src\u003d\"https://www.auslogics.com/en/articles/wp-content/uploads/2023/07/Command-Prompt-PING.png\" alt\u003d\"drawing\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":424,"author":{"gitId":"LimZiJia"},"content":"\u003cbr\u003e\u003cbr\u003e**Terminal (macOS)**\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":425,"author":{"gitId":"LimZiJia"},"content":"\u003cimg src\u003d\"https://forums.macrumors.com/attachments/screen-shot-2020-12-09-at-4-50-12-pm-png.1690397/\" alt\u003d\"drawing\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":426,"author":{"gitId":"LimZiJia"},"content":"\u003cbr\u003e\u003cbr\u003e **Terminal (Linux)** \u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":427,"author":{"gitId":"LimZiJia"},"content":"\u003cimg src\u003d\"https://static1.howtogeekimages.com/wordpress/wp-content/uploads/2013/03/linux-terminal-on-ubuntu.png\" alt\u003d\"drawing\" width\u003d\"500\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":428,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":429,"author":{"gitId":"LimZiJia"},"content":"[:arrow_up_small:](#table-of-contents)","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":178,"moguries":37,"gosongying":15,"-":156,"GERARDJM018":43}},{"path":"docs/diagrams/AddSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"participant \"a:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"participant \":AddressBook\" as AddressBook MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"[-\u003e LogicManager : execute(\"add client n/John p/90868245 e/john@gmail.com a/43 Lee Street t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add client n/John p/90868245 e/john@gmail.com a/43 Lee Street t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\"client n/John p/90868245 e/john@gmail.com a/43 Lee Street t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"create AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":"AddCommandParser -\u003e AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"activate AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":"AddCommand --\u003e AddCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":"activate AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"AddCommand -\u003e Model : addPerson(client)","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":"Model -\u003e AddressBook : addPerson(client)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":"activate AddressBook","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":"AddressBook --\u003e Model","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":"deactivate AddressBook","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":"AddCommand -\u003e Model : updatedFilteredPersonList(predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"moguries":83}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"Person \u003c|-right- Housekeeper","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"Person \u003c|-right- Client","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"Client *-down-\u003e \"0..1\" HousekeepingDetails","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"Client .up.|\u003e Comparable","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Type","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e \"1\" Area","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"HousekeepingDetails *--\u003e \"1\" LocalDate","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"HousekeepingDetails *--\u003e \"1\" Period","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"LimZiJia":14,"-":18}},{"path":"docs/diagrams/DeleteActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"skin rose","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"start","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":":User executes delete command (eg. delete client 1);","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"\u0027Since the beta syntax does not support placing the condition outside the","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"\u0027diamond we place it as the true branch instead.","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"fork","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" :Check Type specified;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" if () then ([client])","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" :Return DeleteClientCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" else ([housekeeper])","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" :Return DeleteHousekeeperCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"end fork","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":":Delete person from the corresponding list;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"stop","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"gosongying":21}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"[-\u003e LogicManager : execute(\"delete client 1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete client 1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"client\"), parse(\"1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gosongying":3,"-":67}},{"path":"docs/diagrams/FindActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"skin rose","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"start","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":":User executes command;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"\u0027Since the beta syntax does not support placing the condition outside the","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"\u0027diamond we place it as the true branch instead.","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"fork","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":" :Check Name keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" if () then ([keywords available])","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" :Check using the keywords given;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":" else ([keywords unavailable])","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"fork again","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" :Check Area keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" if () then ([keywords available])","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" :Check using the keywords given;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" else ([keywords unavailable])","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"fork again","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" :Check Address keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" if () then ([keywords available])","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" :Check using the keywords given;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" else ([keywords unavailable])","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" endif","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":"end fork","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":":Check the results from all attributes;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":"stop","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"GERARDJM018":32}},{"path":"docs/diagrams/HousekeepingDetailsClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"@startuml","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"!include style.puml","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"package \"Details\" {","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"Class HousekeepingDetails","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"Class Period","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"Class LocalDate","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"Class Booking","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"Client *--\u003e HousekeepingDetails","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"HousekeepingDetails *---\u003e \"preferredInterval\" Period","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"HousekeepingDetails *---\u003e \"deferment\" Period","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"HousekeepingDetails *---\u003e \"lastHousekeepingDate\" LocalDate","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"HousekeepingDetails *---\u003e \"booking\" Booking","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"Period .[hidden].. HousekeepingDetails","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"LocalDate .[hidden]. HousekeepingDetails","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"Period .[hidden]. LocalDate","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"@enduml","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LimZiJia":25}},{"path":"docs/diagrams/ListSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GERARDJM018"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"participant \":ListCommandParser\" as ListCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"participant \"c:ListCommand\" as ListCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"[-\u003e LogicManager : execute(\"list client\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"list client\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":"create ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":"AddressBookParser -\u003e ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":"activate ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":"ListCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"deactivate ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":"AddressBookParser -\u003e ListCommandParser : parse(\"client\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":"activate ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":"create ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":"ListCommandParser -\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":"activate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":"ListCommand --\u003e ListCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":"ListCommandParser --\u003e AddressBookParser : c","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":"deactivate ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":"ListCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":"destroy ListCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":"AddressBookParser --\u003e LogicManager : c","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":"LogicManager -\u003e ListCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":"activate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":"ListCommand -\u003e Model : updateFilteredPersonList(typePredicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":"Model --\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":"ListCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":"CommandResult --\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":"ListCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"GERARDJM018":70}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nComparable\" as Comparable","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"Class Client","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"Class Housekeeper","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":"Class Type","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"Class HousekeepingDetails","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"Class Area","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"Person *-left-\u003e Name","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":"Person *-right-\u003e Type","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":"Person *--\u003e Area","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":"Client *--\u003e \"0..1\" HousekeepingDetails","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":"Client .up.|\u003e Comparable","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":"Client -up-|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":"Housekeeper -up-|\u003e Person","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":"Address -[hidden]left-\u003e Housekeeper","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"LimZiJia":7,"gosongying":8,"-":50}},{"path":"docs/index.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":"GERARDJM018"},"content":"title: Housekeeping Hub","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-W09-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W09-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W09-1/tp/graph/badge.svg?token\u003dVTN6SDBFUZ)](https://codecov.io/gh/AY2324S2-CS2103T-W09-1/tp)","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"**Housekeeping Hub is a desktop application for managing your contact (clients or housekeepers) details.** ","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"It is an address book which tailored for housekeeping services. ","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"* If you are interested in using Housekeeping Hub, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"* If you are interested about developing Housekeeping Hub, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":13,"GERARDJM018":8}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/housekeeping/address/logic/command` directory.","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"LimZiJia"},"content":"Create a `RemarkCommandParser` class in the `housekeeping.hub.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2023-09-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"LimZiJia"},"content":"Create a new `Remark` in `housekeeping.hub.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-04-05"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"LimZiJia"},"content":"Simply add the following to [`housekeeping.hub.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-04-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"LimZiJia":7,"-":392}},{"path":"docs/tutorials/RemovingFields.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: \"Tutorial: Removing Fields\"","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":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":"The `address` field in `Person` is actually an instance of the `housekeeping.hub.model.person.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LimZiJia":1,"-":111}},{"path":"docs/tutorials/TracingCode.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: \"Tutorial: Tracing code\"","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":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `housekeeping.hub.logic.Logic`.","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":"A quick look at the `housekeeping.hub.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2021-07-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","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":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","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":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2021-07-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of persons is being tracked.","lastModifiedDate":"2021-07-31"},{"lineNumber":208,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","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":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"LimZiJia":2,"-":299}},{"path":"src/main/java/housekeeping/hub/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.FileUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents the parsed command-line parameters given to the application.","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AppParameters.class);","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Path getConfigPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setConfigPath(Path configPath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.configPath \u003d configPath;","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the application command-line parameters.","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static AppParameters parse(Application.Parameters parameters) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Map\u003cString, String\u003e namedParameters \u003d parameters.getNamed();","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String configPathParameter \u003d namedParameters.get(\"config\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (configPathParameter !\u003d null \u0026\u0026 !FileUtil.isValidPath(configPathParameter)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logger.warning(\"Invalid config path \" + configPathParameter + \". Using default config path.\");","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" configPathParameter \u003d null;","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" appParameters.setConfigPath(configPathParameter !\u003d null ? Paths.get(configPathParameter) : null);","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return appParameters;","lastModifiedDate":"2018-04-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-04-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof AppParameters)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d (AppParameters) other;","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Objects.equals(configPath, otherAppParameters.configPath);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return configPath.hashCode();","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .add(\"configPath\", configPath)","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"LimZiJia":4,"-":69}},{"path":"src/main/java/housekeeping/hub/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2019-02-08"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * The main entry point to the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * This is a workaround for the following error when MainApp is made the","lastModifiedDate":"2019-02-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * entry point of the application:","lastModifiedDate":"2019-02-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Error: JavaFX runtime components are missing, and are required to run this application","lastModifiedDate":"2019-02-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The reason is that MainApp extends Application. In that case, the","lastModifiedDate":"2019-02-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * LauncherHelper will check for the javafx.graphics module to be present","lastModifiedDate":"2019-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * as a named module. We don\u0027t use JavaFX via the module system so it can\u0027t","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * find the javafx.graphics module, and so the launch is aborted.","lastModifiedDate":"2019-02-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * By having a separate main class (Main) that doesn\u0027t extend Application","lastModifiedDate":"2019-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * to be the entry point of the application, we avoid this issue.","lastModifiedDate":"2019-02-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class Main {","lastModifiedDate":"2019-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger logger \u003d LogsCenter.getLogger(Main.class);","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-02-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // As per https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-16.md","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // JavaFX 16 (or later) runtime logs a warning at startup if JavaFX classes are loaded from","lastModifiedDate":"2023-07-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // the classpath instead of a module.","lastModifiedDate":"2023-07-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // Our application does not use Java modules yet. Even if it did, modules are ignored when","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // packed into a FAT Jar file (as we do), which means this warning will persist even then.","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // The warning however, can be safely ignored. Thus, the following log informs","lastModifiedDate":"2023-07-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // the user (if looking at the log output) that the said warning appearing in the log","lastModifiedDate":"2023-07-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // can be ignored.","lastModifiedDate":"2023-07-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.warning(\"The warning about Unsupported JavaFX configuration below can be ignored.\");","lastModifiedDate":"2023-07-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2019-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-08"}],"authorContributionMap":{"LimZiJia":2,"-":39}},{"path":"src/main/java/housekeeping/hub/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.Config;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.Version;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ConfigUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.StringUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Logic;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.LogicManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.util.SampleDataUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.AddressBookStorage;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.Storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.StorageManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.UserPrefsStorage;","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.ui.Ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.ui.UiManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"LimZiJia"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s hub book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":" * The data from the sample hub book will be used instead if {@code storage}\u0027s hub book is not found,","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" * or an empty hub book will be used instead if errors occur when reading {@code storage}\u0027s hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":155,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":157,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping Address Book ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":185,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":27,"gosongying":3,"-":159}},{"path":"src/main/java/housekeeping/hub/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Config values used by the app","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Config {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Path DEFAULT_CONFIG_FILE \u003d Paths.get(\"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Config values customizable through config file","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Level logLevel \u003d Level.INFO;","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Path userPrefsFilePath \u003d Paths.get(\"preferences.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Level getLogLevel() {","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setLogLevel(Level logLevel) {","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.logLevel \u003d logLevel;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefsFilePath(Path userPrefsFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.userPrefsFilePath \u003d userPrefsFilePath;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof Config)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Config otherConfig \u003d (Config) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return Objects.equals(logLevel, otherConfig.logLevel)","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(userPrefsFilePath, otherConfig.userPrefsFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Objects.hash(logLevel, userPrefsFilePath);","lastModifiedDate":"2018-12-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .add(\"logLevel\", logLevel)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"userPrefsFilePath\", userPrefsFilePath)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":2,"-":64}},{"path":"src/main/java/housekeeping/hub/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.awt.Point;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.io.Serializable;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A Serializable class that contains the GUI settings.","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Guarantees: immutable.","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class GuiSettings implements Serializable {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final double DEFAULT_HEIGHT \u003d 600;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final double DEFAULT_WIDTH \u003d 740;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates);","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":2,"-":80}},{"path":"src/main/java/housekeeping/hub/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String LOG_FILE \u003d \"addressbook.log\";","lastModifiedDate":"2016-09-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":1,"-":105}},{"path":"src/main/java/housekeeping/hub/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents a version with major, minor and patch number","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Version implements Comparable\u003cVersion\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VERSION_REGEX \u003d \"V(\\\\d+)\\\\.(\\\\d+)\\\\.(\\\\d+)(ea)?\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String EXCEPTION_STRING_NOT_VERSION \u003d \"String is not a valid Version. %s\";","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Pattern VERSION_PATTERN \u003d Pattern.compile(VERSION_REGEX);","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final int major;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final int minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final int patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code Version} with the given version details.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Version(int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.major \u003d major;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.minor \u003d minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.patch \u003d patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.isEarlyAccess \u003d isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public int getMajor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return major;","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public int getMinor() {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return minor;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public int getPatch() {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return patch;","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isEarlyAccess() {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return isEarlyAccess;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Parses a version number string in the format V1.2.3.","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @param versionString version number string","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * @return a Version object","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Version fromString(String versionString) throws IllegalArgumentException {","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Matcher versionMatcher \u003d VERSION_PATTERN.matcher(versionString);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!versionMatcher.find()) {","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(String.format(EXCEPTION_STRING_NOT_VERSION, versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new Version(Integer.parseInt(versionMatcher.group(1)),","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(2)),","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Integer.parseInt(versionMatcher.group(3)),","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" versionMatcher.group(4) \u003d\u003d null ? false : true);","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return String.format(\"V%d.%d.%d%s\", major, minor, patch, isEarlyAccess ? \"ea\" : \"\");","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int compareTo(Version other) {","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (major !\u003d other.major) {","lastModifiedDate":"2018-08-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return major - other.major;","lastModifiedDate":"2018-08-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (minor !\u003d other.minor) {","lastModifiedDate":"2018-08-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return minor - other.minor;","lastModifiedDate":"2018-08-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (patch !\u003d other.patch) {","lastModifiedDate":"2018-08-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return patch - other.patch;","lastModifiedDate":"2018-08-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (isEarlyAccess \u003d\u003d other.isEarlyAccess()) {","lastModifiedDate":"2018-08-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return 0;","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (isEarlyAccess) {","lastModifiedDate":"2018-08-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return -1;","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return 1;","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!(other instanceof Version)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Version otherVersion \u003d (Version) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return major \u003d\u003d otherVersion.major","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 minor \u003d\u003d otherVersion.minor","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 patch \u003d\u003d otherVersion.patch","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 isEarlyAccess \u003d\u003d otherVersion.isEarlyAccess;","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String hash \u003d String.format(\"%03d%03d%03d\", major, minor, patch);","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" hash \u003d \"1\" + hash;","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return Integer.parseInt(hash);","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":1,"-":120}},{"path":"src/main/java/housekeeping/hub/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core.index;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a zero-based or one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * {@code Index} should be used right from the start (when parsing in a new user input), so that if the current","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * component wants to communicate with another component, it can send an {@code Index} to avoid having to know what","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * base the other component is using for its index. However, after receiving the {@code Index}, that component can","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * convert it back to an int if the index will not be passed to a different component again.","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Index {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private int zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Index can only be created by calling {@link Index#fromZeroBased(int)} or","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * {@link Index#fromOneBased(int)}.","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Index(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (zeroBasedIndex \u003c 0) {","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.zeroBasedIndex \u003d zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public int getZeroBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public int getOneBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return zeroBasedIndex + 1;","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a zero-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static Index fromZeroBased(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new Index(zeroBasedIndex);","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Index fromOneBased(int oneBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return new Index(oneBasedIndex - 1);","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!(other instanceof Index)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index otherIndex \u003d (Index) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return zeroBasedIndex \u003d\u003d otherIndex.zeroBasedIndex;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"zeroBasedIndex\", zeroBasedIndex).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"LimZiJia":2,"-":67}},{"path":"src/main/java/housekeeping/hub/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.exceptions;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2023-06-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error during loading of data from a file.","lastModifiedDate":"2023-06-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-06-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class DataLoadingException extends Exception {","lastModifiedDate":"2023-06-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public DataLoadingException(Exception cause) {","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(cause);","lastModifiedDate":"2023-06-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-06-14"}],"authorContributionMap":{"LimZiJia":1,"-":10}},{"path":"src/main/java/housekeeping/hub/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.exceptions;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that some given data does not fulfill some constraints.","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class IllegalValueException extends Exception {","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public IllegalValueException(String message) {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @param cause of the main exception","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public IllegalValueException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":1,"-":20}},{"path":"src/main/java/housekeeping/hub/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.MainApp;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A container for App specific utility functions","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AppUtil {","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LimZiJia":2,"-":40}},{"path":"src/main/java/housekeeping/hub/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Utility methods related to Collections","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":1,"-":34}},{"path":"src/main/java/housekeeping/hub/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.Config;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A class for accessing the Config File.","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ConfigUtil {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"LimZiJia":3,"-":20}},{"path":"src/main/java/housekeeping/hub/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2016-08-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.InvalidPathException;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Writes and reads files","lastModifiedDate":"2016-10-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FileUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String CHARSET \u003d \"UTF-8\";","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String)},","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":1,"-":82}},{"path":"src/main/java/housekeeping/hub/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect;","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationContext;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.DeserializationFeature;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.SerializationFeature;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.module.SimpleModule;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Converts a Java object instance to JSON and vice versa","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonUtil.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static ObjectMapper objectMapper \u003d new ObjectMapper().findAndRegisterModules()","lastModifiedDate":"2016-10-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)","lastModifiedDate":"2016-10-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)","lastModifiedDate":"2016-10-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .registerModule(new SimpleModule(\"SimpleModule\")","lastModifiedDate":"2016-10-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .addSerializer(Level.class, new ToStringSerializer())","lastModifiedDate":"2016-10-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class)));","lastModifiedDate":"2016-10-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the JSON object from the given file or {@code Optional.empty()} object if the file is not found.","lastModifiedDate":"2023-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * If any values are missing from the file, default values will be used, as long as the file is a valid JSON file.","lastModifiedDate":"2023-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":3,"-":141}},{"path":"src/main/java/housekeeping/hub/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":2,"-":66}},{"path":"src/main/java/housekeeping/hub/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Builds a string representation of an object that is suitable as the return value of {@link Object#toString()}.","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return stringBuilder.toString() + OBJECT_SUFFIX;","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"LimZiJia":1,"-":52}},{"path":"src/main/java/housekeeping/hub/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.CommandResult;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" * @see housekeeping.hub.model.Model#getAddressBook()","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" //ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" /** Returns an unmodifiable view of the filtered list of clients */","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" /** Returns an unmodifiable view of the filtered list of housekeepers */","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" * Returns the user prefs\u0027 hub book file path.","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"LimZiJia":10,"gosongying":7,"-":40}},{"path":"src/main/java/housekeeping/hub/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.Command;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.CommandResult;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.AddressBookParser;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.Storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" return model.getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" return model.getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"LimZiJia":13,"gosongying":7,"-":74}},{"path":"src/main/java/housekeeping/hub/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.Prefix;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_AVAILABLE_HOUSEKEEPERS_LISTED_OVERVIEW \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" \"%1$d housekeepers available at [%2$s, %3$s] listed!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_NO_AVAILABLE_HOUSEKEEPERS_LISTED_OVERVIEW \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" \"No housekeepers available at [%1$s, %2$s]!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX \u003d \"The client index provided is invalid\";","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" \"The housekeeper index provided is invalid\";","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d person(s) listed!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_CLIENTS_LISTED_OVERVIEW \u003d \"%1$d client(s) listed!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_HOUSEKEEPERS_LISTED_OVERVIEW \u003d \"%1$d housekeeper(s) listed!\";","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" * Formats the {@code client} for display to the user.","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" public static String formatClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" final HousekeepingDetails housekeepingDetails \u003d client.getDetails();","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":" final String details;","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" if (housekeepingDetails \u003d\u003d null) {","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" details \u003d HousekeepingDetails.NO_DETAILS_PROVIDED;","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" details \u003d HousekeepingDetails.makeStoredDetailsReadableWithDeferment(housekeepingDetails.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e tags \u003d client.getTags();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" builder.append(\"\\nName: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" .append(client.getName())","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" .append(client.getPhone())","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" .append(client.getEmail())","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" .append(client.getAddress())","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" .append(\"; Area: \")","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" .append(client.getArea())","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" builder.append(\"No tags\");","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" tags.forEach(builder::append);","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" builder.append(\"; Details: \")","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" .append(details);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" * Formats the {@code housekeeper} for display to the user.","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" public static String formatHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e tags \u003d housekeeper.getTags();","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" builder.append(\"\\nName: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getName())","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getPhone())","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getEmail())","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" .append(\"; Address: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getAddress())","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" .append(\"; Area: \")","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getArea())","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" builder.append(\"No tags\");","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" tags.forEach(builder::append);","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" builder.append(\"; Booking List: \")","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" .append(housekeeper.getBookingList());","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" return builder.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":12,"moguries":4,"gosongying":51,"-":40,"GERARDJM018":2}},{"path":"src/main/java/housekeeping/hub/logic/commands/AddClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"public class AddClientCommand extends AddCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New client added: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"This client already exists in the hub book\";","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" public AddClientCommand(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" super(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" if (model.hasClient((Client) toAdd)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" throw new CommandException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" model.addClient((Client) toAdd);","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatClient((Client) toAdd)));","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":6,"gosongying":24}},{"path":"src/main/java/housekeeping/hub/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" * Adds a person to the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"abstract public class AddCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a client or housekeeper to the hub book.\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" + \"TYPE(client or housekeeper) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" + PREFIX_AREA + \"AREA \"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" + \"[\" + PREFIX_DETAILS + \"DETAILS](for client only) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" + \"Example: \" + COMMAND_WORD + \" client \"","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" + PREFIX_AREA + \"west \"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" + PREFIX_DETAILS + \"2024-01-01 2 months\";","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" protected final Person toAdd;","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":13,"gosongying":7,"-":52}},{"path":"src/main/java/housekeeping/hub/logic/commands/AddHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"public class AddHousekeeperCommand extends AddCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New housekeeper added: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_DUPLICATE_HOUSEKEEPER \u003d \"This housekeeper already exists in the hub book\";","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_NO_HOUSEKEEPING_DETAILS \u003d \"Housekeeper should not have housekeeping details, \" +","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" \"that is specifically for client.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" public AddHousekeeperCommand(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" super(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" if (model.hasHousekeeper((Housekeeper) toAdd)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" throw new CommandException(MESSAGE_DUPLICATE_HOUSEKEEPER);","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" model.addHousekeeper((Housekeeper) toAdd);","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatHousekeeper((Housekeeper) toAdd)));","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":6,"gosongying":25}},{"path":"src/main/java/housekeeping/hub/logic/commands/BookingCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.model.Model.PREDICATE_SHOW_ALL_CLIENTS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.model.Model.PREDICATE_SHOW_ALL_HOUSEKEEPERS;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"import java.util.List;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Booking;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingSearchPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" * Encapsulates booking actions (add, delete, list) for a housekeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":"public class BookingCommand extends Command {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" public static final String COMMAND_WORD \u003d \"booking\";","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public static final String ACTION_WORD_HOUSEKEEPER_ADD \u003d \"add\";","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" public static final String ACTION_WORD_HOUSEKEEPER_DELETE \u003d \"delete\";","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" public static final String ACTION_WORD_HOUSEKEEPER_LIST \u003d \"list\";","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" public static final String ACTION_WORD_HOUSEKEEPER_SEARCH \u003d \"search\";","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_DEFER_PERSON_SUCCESS \u003d \"Deferment Success: Now the deferment value is %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_INVALID_ACTION \u003d \"Invalid action. Action words include {add, delete, list}.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_USAGE \u003d \"\\nCLIENT COMMANDS:\\n\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" +\"[edit last housekeeping date] : edits last housekeeping date for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX lhd/DATE(yyyy-mm-dd)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" + \"Example: booking client edit 2 lhd/2024-05-12\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" + \"edit preferred interval\"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" + \"] : edits preferred housekeeping interval for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX pi/NUMBER INTERVAL(days|weeks|months|years)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" + \"Example: booking client edit 1 pi/2 weeks\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" + \"edit booking date\"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" + \"] : edits booking date for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX bd/DATE(yyyy-mm-dd) TIME(am|pm)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" + \"Example: booking client edit 7 bd/2024-01-17 pm\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" + \"edit deferment\"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" + \"] : adds period to delay before sending reminder about next housekeeping,\"","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" + \" for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX INTERVAL(number days|weeks|months|years)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" + \"Example: booking client edit 10 d/1 months\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" + \"add booking\"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" + \"] : adds a booking date for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX DATE(yyyy-mm-dd) TIME(am|pm)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" + \"Example: booking client add 1 2024-01-01 am\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" + \"delete booking\"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" + \"] : deletes booking date for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" + \"Example: booking client delete 3\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" + \"set housekeeping details\"","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" + \"] : sets housekeeping details for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX DATE(yyyy-mm-dd) NUMBER INTERVAL(days|weeks|months|years)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" + \"Example: booking client set 2 2024-01-01 15 days\\n\\n[\"","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" + \"remove housekeeping details\"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" + \"] : removes housekeeping details for the client at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" + \"Example: booking client remove 2\\n\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" + \"HOUSEKEEPER COMMANDS:\\n\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" + \"[add booking] : adds a booking for the housekeeper at \"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" + \"the specified index.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX DATE(yyyy-mm-dd) TIME(am|pm)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper \" + ACTION_WORD_HOUSEKEEPER_ADD + \" 1 2024-05-12 am\\n\\n[\"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" + \"delete booking] : deletes the specified booking for the housekeeper at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" + \"Parameters: HOUSEKEEPER_INDEX BOOKING_INDEX\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper \"+ ACTION_WORD_HOUSEKEEPER_DELETE + \" 1 1\\n\\n[\"","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" + \"list bookings] : lists all bookings for the housekeeper at the specified index.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper \" + ACTION_WORD_HOUSEKEEPER_LIST + \" 1\\n\\n[\"","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" + \"search bookings] : searches for housekeepers who are available at the specified area and timing.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" + \"Parameters: AREA DATE(yyyy-mm-dd) TIME(am|pm)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper \" + ACTION_WORD_HOUSEKEEPER_SEARCH + \" west 2024-01-01 am\";","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"LimZiJia"},"content":" public static final String NO_DETAILS_MESSAGE_CONSTRAINT \u003d \"If client does not have housekeeping details, \"","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"LimZiJia"},"content":" + \"please set housekeeping details first using \u0027set\u0027.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" private String actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":" private Index index;","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" private int bookingToDeleteIndex;","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" private String bookedDateAndTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" private String type;","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" private HousekeepingDetails housekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" private Period defer;","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" private BookingSearchPredicate bookingSearchPredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" * Constructs a BookingCommand for the \"add\" action.","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" * @param type \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" * @param actionWord \"add\"","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" * @param index of housekeeper to add booking to","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime in the form of a string","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" public BookingCommand(String type, String actionWord, Index index, String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" this.bookedDateAndTime \u003d bookedDateAndTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" * Constructs a BookingCommand for the \"delete\" action.","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" * @param type \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" * @param actionWord \"delete\"","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" * @param index of housekeeper to delete booking from","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" * @param bookingToDeleteIndex of booking to delete","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"LimZiJia"},"content":" public BookingCommand(String type, String actionWord, Index index, int bookingToDeleteIndex) {","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"LimZiJia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" this.bookingToDeleteIndex \u003d bookingToDeleteIndex;","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" * Constructs a BookingCommand for the \"list\" action.","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" * @param type \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" * @param actionWord \"list\"","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" * @param index of housekeeper whose bookings to list","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"LimZiJia"},"content":" public BookingCommand(String type, String actionWord, Index index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"moguries"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"LimZiJia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"moguries"},"content":" * Constructs a BookingCommand for the \"search\" action.","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"moguries"},"content":" * @param type \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":148,"author":{"gitId":"moguries"},"content":" * @param actionWord \"search\"","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"moguries"},"content":" * @param bookingSearchPredicate for area and booked date and time","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"moguries"},"content":" public BookingCommand(String type, String actionWord, BookingSearchPredicate bookingSearchPredicate) {","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"moguries"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"moguries"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-03"},{"lineNumber":154,"author":{"gitId":"moguries"},"content":" this.bookingSearchPredicate \u003d bookingSearchPredicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":155,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":156,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":157,"author":{"gitId":"LimZiJia"},"content":" public BookingCommand(String type, String actionWord, Index index, HousekeepingDetails housekeepingDetails) {","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":159,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-02"},{"lineNumber":160,"author":{"gitId":"LimZiJia"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-02"},{"lineNumber":161,"author":{"gitId":"LimZiJia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-02"},{"lineNumber":162,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":165,"author":{"gitId":"GERARDJM018"},"content":" public BookingCommand(String type, String actionWord, Index index, Period defer) {","lastModifiedDate":"2024-04-03"},{"lineNumber":166,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-03"},{"lineNumber":167,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(defer);","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(actionWord);","lastModifiedDate":"2024-04-03"},{"lineNumber":169,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(type);","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"GERARDJM018"},"content":" this.type \u003d type;","lastModifiedDate":"2024-04-03"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":" this.actionWord \u003d actionWord;","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"GERARDJM018"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"GERARDJM018"},"content":" this.defer \u003d defer;","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":175,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":176,"author":{"gitId":"GERARDJM018"},"content":" public BookingCommand() {","lastModifiedDate":"2024-04-03"},{"lineNumber":177,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"moguries"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"LimZiJia"},"content":" if (type.equals(\"client\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"LimZiJia"},"content":" switch (actionWord) {","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"LimZiJia"},"content":" case \"add\":","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"LimZiJia"},"content":" return clientAdd(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"LimZiJia"},"content":" case \"delete\":","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"LimZiJia"},"content":" return clientDelete(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"LimZiJia"},"content":" case \"set\":","lastModifiedDate":"2024-04-02"},{"lineNumber":189,"author":{"gitId":"LimZiJia"},"content":" return clientSet(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":190,"author":{"gitId":"LimZiJia"},"content":" case \"remove\":","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"LimZiJia"},"content":" return clientRemove(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"GERARDJM018"},"content":" case \"defer\":","lastModifiedDate":"2024-04-03"},{"lineNumber":193,"author":{"gitId":"GERARDJM018"},"content":" return clientDefer(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":194,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(MESSAGE_INVALID_ACTION);","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"LimZiJia"},"content":" } else if (type.equals(\"housekeeper\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"moguries"},"content":" switch (actionWord) {","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"moguries"},"content":" case \"add\":","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"LimZiJia"},"content":" return housekeeperAdd(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":201,"author":{"gitId":"LimZiJia"},"content":" case \"delete\":","lastModifiedDate":"2024-04-02"},{"lineNumber":202,"author":{"gitId":"LimZiJia"},"content":" return housekeeperDelete(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":" case \"list\":","lastModifiedDate":"2024-04-02"},{"lineNumber":204,"author":{"gitId":"LimZiJia"},"content":" return housekeeperList(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"moguries"},"content":" case \"search\":","lastModifiedDate":"2024-04-03"},{"lineNumber":206,"author":{"gitId":"moguries"},"content":" return housekeeperSearch(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-04-02"},{"lineNumber":208,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(MESSAGE_INVALID_ACTION);","lastModifiedDate":"2024-04-02"},{"lineNumber":209,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":210,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":211,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(MESSAGE_INVALID_ACTION);","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"LimZiJia"},"content":" private CommandResult clientAdd(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"LimZiJia"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":220,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"moguries"},"content":" Booking booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":224,"author":{"gitId":"moguries"},"content":" booking \u003d new Booking(bookedDateAndTime);","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"moguries"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"moguries"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-04-04"},{"lineNumber":227,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":228,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":229,"author":{"gitId":"LimZiJia"},"content":" Client clientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":230,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":231,"author":{"gitId":"LimZiJia"},"content":" if (!clientToEdit.hasHousekeepingDetails()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":232,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(NO_DETAILS_MESSAGE_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":233,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":234,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":235,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails details \u003d clientToEdit.getDetails();","lastModifiedDate":"2024-04-02"},{"lineNumber":236,"author":{"gitId":"LimZiJia"},"content":" details.setBooking(booking);","lastModifiedDate":"2024-04-02"},{"lineNumber":237,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":238,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":239,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.setDetails(details);","lastModifiedDate":"2024-04-02"},{"lineNumber":240,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":241,"author":{"gitId":"LimZiJia"},"content":" Command editClientCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":242,"author":{"gitId":"moguries"},"content":" model.updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"LimZiJia"},"content":" return editClientCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":244,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":245,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"LimZiJia"},"content":" private CommandResult clientDelete(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":247,"author":{"gitId":"LimZiJia"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":249,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":250,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":251,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":252,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":253,"author":{"gitId":"LimZiJia"},"content":" Client clientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":254,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":255,"author":{"gitId":"LimZiJia"},"content":" if (!clientToEdit.hasHousekeepingDetails()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":256,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(NO_DETAILS_MESSAGE_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":257,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":258,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":259,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails details \u003d clientToEdit.getDetails();","lastModifiedDate":"2024-04-02"},{"lineNumber":260,"author":{"gitId":"LimZiJia"},"content":" details.deleteBooking();","lastModifiedDate":"2024-04-02"},{"lineNumber":261,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":262,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":263,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.setDetails(details);","lastModifiedDate":"2024-04-02"},{"lineNumber":264,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":265,"author":{"gitId":"LimZiJia"},"content":" Command editClientCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":266,"author":{"gitId":"LimZiJia"},"content":" return editClientCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"LimZiJia"},"content":" private CommandResult clientSet(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"LimZiJia"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-02"},{"lineNumber":271,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":272,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":273,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":274,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":275,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":276,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":277,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.setDetails(housekeepingDetails);","lastModifiedDate":"2024-04-02"},{"lineNumber":278,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":279,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":280,"author":{"gitId":"LimZiJia"},"content":" Command editClientCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":281,"author":{"gitId":"LimZiJia"},"content":" return editClientCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":282,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":283,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":284,"author":{"gitId":"GERARDJM018"},"content":" private CommandResult clientDefer(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":285,"author":{"gitId":"GERARDJM018"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-03"},{"lineNumber":286,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":287,"author":{"gitId":"GERARDJM018"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":288,"author":{"gitId":"GERARDJM018"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":289,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":290,"author":{"gitId":"LimZiJia"},"content":" Client clientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":291,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":292,"author":{"gitId":"LimZiJia"},"content":" if (!clientToEdit.hasHousekeepingDetails()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":293,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(NO_DETAILS_MESSAGE_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":294,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":295,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":296,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails detailsToEdit \u003d clientToEdit.getDetails();","lastModifiedDate":"2024-04-05"},{"lineNumber":297,"author":{"gitId":"GERARDJM018"},"content":" detailsToEdit.addDeferment(defer);","lastModifiedDate":"2024-04-03"},{"lineNumber":298,"author":{"gitId":"GERARDJM018"},"content":" return new CommandResult(String.format(MESSAGE_DEFER_PERSON_SUCCESS, detailsToEdit.getDefermentToString()));","lastModifiedDate":"2024-04-03"},{"lineNumber":299,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":300,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":301,"author":{"gitId":"LimZiJia"},"content":" private CommandResult clientRemove(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":302,"author":{"gitId":"LimZiJia"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-02"},{"lineNumber":303,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":304,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":305,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":306,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":307,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":308,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editPersonDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":309,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.setDetails(HousekeepingDetails.empty);","lastModifiedDate":"2024-04-02"},{"lineNumber":310,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":311,"author":{"gitId":"LimZiJia"},"content":" Command editClientCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":312,"author":{"gitId":"LimZiJia"},"content":" return editClientCommand.execute(model);","lastModifiedDate":"2024-04-02"},{"lineNumber":313,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":314,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":315,"author":{"gitId":"LimZiJia"},"content":" private CommandResult housekeeperList(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":316,"author":{"gitId":"LimZiJia"},"content":" List\u003cHousekeeper\u003e lastShownListList \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-04-02"},{"lineNumber":317,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":318,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownListList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":319,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":320,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":321,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":322,"author":{"gitId":"LimZiJia"},"content":" Housekeeper housekeeperToListBooking \u003d lastShownListList.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":323,"author":{"gitId":"LimZiJia"},"content":" String listResult \u003d housekeeperToListBooking.listBooking();","lastModifiedDate":"2024-04-02"},{"lineNumber":324,"author":{"gitId":"LimZiJia"},"content":" return new CommandResult(listResult);","lastModifiedDate":"2024-04-02"},{"lineNumber":325,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":326,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":327,"author":{"gitId":"LimZiJia"},"content":" private CommandResult housekeeperDelete(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":328,"author":{"gitId":"moguries"},"content":" List\u003cHousekeeper\u003e lastShownListDelete \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-04-02"},{"lineNumber":329,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":330,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownListDelete.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":331,"author":{"gitId":"moguries"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":332,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":333,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":334,"author":{"gitId":"LimZiJia"},"content":" Housekeeper housekeeperToDeleteBooking \u003d lastShownListDelete.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":335,"author":{"gitId":"moguries"},"content":" if (!housekeeperToDeleteBooking.isValidDeleteIndex(bookingToDeleteIndex)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":336,"author":{"gitId":"moguries"},"content":" throw new CommandException((BookingList.MESSAGE_INVALID_DELETE));","lastModifiedDate":"2024-04-02"},{"lineNumber":337,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":338,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":339,"author":{"gitId":"moguries"},"content":" if (bookingToDeleteIndex \u003d\u003d 0) {","lastModifiedDate":"2024-04-02"},{"lineNumber":340,"author":{"gitId":"moguries"},"content":" throw new CommandException(BookingList.MESSAGE_INVALID_DELETE);","lastModifiedDate":"2024-04-02"},{"lineNumber":341,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":342,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":343,"author":{"gitId":"moguries"},"content":" String deleteResult \u003d housekeeperToDeleteBooking.deleteBooking(bookingToDeleteIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":344,"author":{"gitId":"moguries"},"content":" return new CommandResult(deleteResult);","lastModifiedDate":"2024-04-02"},{"lineNumber":345,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":346,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":347,"author":{"gitId":"LimZiJia"},"content":" private CommandResult housekeeperAdd(Model model) throws CommandException {","lastModifiedDate":"2024-04-02"},{"lineNumber":348,"author":{"gitId":"LimZiJia"},"content":" List\u003cHousekeeper\u003e lastShownListAdd \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-04-02"},{"lineNumber":349,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":350,"author":{"gitId":"LimZiJia"},"content":" if (index.getZeroBased() \u003e\u003d lastShownListAdd.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":351,"author":{"gitId":"moguries"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":352,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":353,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":354,"author":{"gitId":"LimZiJia"},"content":" try {","lastModifiedDate":"2024-04-02"},{"lineNumber":355,"author":{"gitId":"LimZiJia"},"content":" Housekeeper housekeeperToAddBooking \u003d lastShownListAdd.get(index.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":356,"author":{"gitId":"LimZiJia"},"content":" if (housekeeperToAddBooking.hasDuplicateBooking(bookedDateAndTime)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":357,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(housekeeperToAddBooking.getName() + \" \" + BookingList.MESSAGE_DUPLICATE);","lastModifiedDate":"2024-04-02"},{"lineNumber":358,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":359,"author":{"gitId":"LimZiJia"},"content":" String addResult \u003d housekeeperToAddBooking.addBooking(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":360,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":361,"author":{"gitId":"LimZiJia"},"content":" // edit housekeeper with updated booking list","lastModifiedDate":"2024-04-02"},{"lineNumber":362,"author":{"gitId":"LimZiJia"},"content":" EditCommand.EditPersonDescriptor editHousekeeperDescriptor \u003d new EditCommand.EditPersonDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":363,"author":{"gitId":"LimZiJia"},"content":" editHousekeeperDescriptor.setBookingList(housekeeperToAddBooking.getBookingList());","lastModifiedDate":"2024-04-02"},{"lineNumber":364,"author":{"gitId":"LimZiJia"},"content":" EditHousekeeperCommand command \u003d new EditHousekeeperCommand(index, editHousekeeperDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":365,"author":{"gitId":"LimZiJia"},"content":" Housekeeper editedHousekeeper \u003d command.createEditedPerson(housekeeperToAddBooking, editHousekeeperDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":366,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":367,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":368,"author":{"gitId":"gosongying"},"content":" model.setHousekeeper(housekeeperToAddBooking, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":369,"author":{"gitId":"LimZiJia"},"content":" model.updateFilteredHousekeeperList(PREDICATE_SHOW_ALL_HOUSEKEEPERS);","lastModifiedDate":"2024-04-02"},{"lineNumber":370,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":371,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(addResult, Messages.formatHousekeeper(housekeeperToAddBooking)));","lastModifiedDate":"2024-04-03"},{"lineNumber":372,"author":{"gitId":"LimZiJia"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-02"},{"lineNumber":373,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-04-02"},{"lineNumber":374,"author":{"gitId":"LimZiJia"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-04-02"},{"lineNumber":375,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-04-02"},{"lineNumber":376,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":377,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":378,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":379,"author":{"gitId":"moguries"},"content":" private CommandResult housekeeperSearch(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":380,"author":{"gitId":"moguries"},"content":" // check if area is valid","lastModifiedDate":"2024-04-03"},{"lineNumber":381,"author":{"gitId":"moguries"},"content":" if (!Area.isValidArea(bookingSearchPredicate.getArea())) {","lastModifiedDate":"2024-04-03"},{"lineNumber":382,"author":{"gitId":"moguries"},"content":" throw new CommandException(Area.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":383,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":384,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":385,"author":{"gitId":"moguries"},"content":" // check if booked date and time is valid","lastModifiedDate":"2024-04-03"},{"lineNumber":386,"author":{"gitId":"moguries"},"content":" if (!Booking.isValidBookedDateAndTime(bookingSearchPredicate.getBookingToSearch())) {","lastModifiedDate":"2024-04-03"},{"lineNumber":387,"author":{"gitId":"moguries"},"content":" throw new CommandException(Booking.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":388,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":389,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":390,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":391,"author":{"gitId":"moguries"},"content":" String[] bookedDateAndTime \u003d bookingSearchPredicate.getBookingToSearch().split(\" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":392,"author":{"gitId":"moguries"},"content":" LocalDate.parse(bookedDateAndTime[0]);","lastModifiedDate":"2024-04-03"},{"lineNumber":393,"author":{"gitId":"moguries"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":394,"author":{"gitId":"moguries"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-04-03"},{"lineNumber":395,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":396,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":397,"author":{"gitId":"LimZiJia"},"content":" model.updateFilteredHousekeeperList(bookingSearchPredicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":398,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":399,"author":{"gitId":"moguries"},"content":" if (model.getFilteredHousekeeperList().size() \u003d\u003d 0) {","lastModifiedDate":"2024-04-03"},{"lineNumber":400,"author":{"gitId":"moguries"},"content":" return new CommandResult(String.format(Messages.MESSAGE_NO_AVAILABLE_HOUSEKEEPERS_LISTED_OVERVIEW,","lastModifiedDate":"2024-04-03"},{"lineNumber":401,"author":{"gitId":"moguries"},"content":" bookingSearchPredicate.getArea(), bookingSearchPredicate.getBookingToSearch()));","lastModifiedDate":"2024-04-03"},{"lineNumber":402,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":403,"author":{"gitId":"moguries"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-03"},{"lineNumber":404,"author":{"gitId":"moguries"},"content":" String.format(Messages.MESSAGE_AVAILABLE_HOUSEKEEPERS_LISTED_OVERVIEW,","lastModifiedDate":"2024-04-03"},{"lineNumber":405,"author":{"gitId":"moguries"},"content":" model.getFilteredHousekeeperList().size(), bookingSearchPredicate.getArea(),","lastModifiedDate":"2024-04-03"},{"lineNumber":406,"author":{"gitId":"moguries"},"content":" bookingSearchPredicate.getBookingToSearch()));","lastModifiedDate":"2024-04-03"},{"lineNumber":407,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":408,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":409,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":410,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":411,"author":{"gitId":"moguries"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-02"},{"lineNumber":412,"author":{"gitId":"moguries"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-02"},{"lineNumber":413,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":414,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":415,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":416,"author":{"gitId":"moguries"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-02"},{"lineNumber":417,"author":{"gitId":"moguries"},"content":" if (!(other instanceof BookingCommand)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":418,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":419,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":420,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":421,"author":{"gitId":"moguries"},"content":" BookingCommand otherBookingCommand \u003d (BookingCommand) other;","lastModifiedDate":"2024-04-02"},{"lineNumber":422,"author":{"gitId":"moguries"},"content":" return actionWord.equals(otherBookingCommand.actionWord)","lastModifiedDate":"2024-04-02"},{"lineNumber":423,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 index.equals(otherBookingCommand.index)","lastModifiedDate":"2024-04-02"},{"lineNumber":424,"author":{"gitId":"moguries"},"content":" \u0026\u0026 (bookingToDeleteIndex \u003d\u003d otherBookingCommand.bookingToDeleteIndex)","lastModifiedDate":"2024-04-02"},{"lineNumber":425,"author":{"gitId":"moguries"},"content":" \u0026\u0026 bookedDateAndTime.equals(otherBookingCommand.bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":426,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":427,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":428,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":429,"author":{"gitId":"moguries"},"content":" public String toString() {","lastModifiedDate":"2024-04-02"},{"lineNumber":430,"author":{"gitId":"moguries"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-02"},{"lineNumber":431,"author":{"gitId":"moguries"},"content":" .add(\"actionWord\", actionWord)","lastModifiedDate":"2024-04-02"},{"lineNumber":432,"author":{"gitId":"LimZiJia"},"content":" .add(\"housekeeperIndex\", index)","lastModifiedDate":"2024-04-02"},{"lineNumber":433,"author":{"gitId":"moguries"},"content":" .add(\"bookingToDeleteIndex\", bookingToDeleteIndex)","lastModifiedDate":"2024-04-02"},{"lineNumber":434,"author":{"gitId":"moguries"},"content":" .add(\"bookedDateAndTime\", bookedDateAndTime)","lastModifiedDate":"2024-04-02"},{"lineNumber":435,"author":{"gitId":"moguries"},"content":" .toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":436,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":437,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":182,"moguries":222,"gosongying":2,"GERARDJM018":31}},{"path":"src/main/java/housekeeping/hub/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Clears the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":4,"-":19}},{"path":"src/main/java/housekeeping/hub/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public abstract class Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public abstract CommandResult execute(Model model) throws CommandException;","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":3,"-":17}},{"path":"src/main/java/housekeeping/hub/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":2,"-":80}},{"path":"src/main/java/housekeeping/hub/logic/commands/DeleteClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"public class DeleteClientCommand extends DeleteCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_DELETE_CLIENT_SUCCESS \u003d \"Deleted Client: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" public DeleteClientCommand(Index targetIndex) {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" super(targetIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" Client clientToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" model.deleteClient(clientToDelete);","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_CLIENT_SUCCESS, Messages.formatClient(clientToDelete)));","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LimZiJia":6,"gosongying":27}},{"path":"src/main/java/housekeeping/hub/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Deletes a person identified using it\u0027s displayed index from the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"abstract public class DeleteCommand extends Command {","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" + \": Deletes the client or housekeeper identified by the index number used in the displayed client or \"","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" + \"housekeeper list.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" + \"Parameters: TYPE(client or housekeeper) INDEX(must be a positive integer)\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" + \"Example: \" + COMMAND_WORD + \" client 1\";","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" protected final Index targetIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":4,"gosongying":6,"-":38}},{"path":"src/main/java/housekeeping/hub/logic/commands/DeleteHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"public class DeleteHousekeeperCommand extends DeleteCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_DELETE_HOUSEKEEPER_SUCCESS \u003d \"Deleted Housekeeper: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" public DeleteHousekeeperCommand(Index targetIndex) {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" super(targetIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" List\u003cHousekeeper\u003e lastShownList \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeperToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" model.deleteHousekeeper(housekeeperToDelete);","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" Messages.formatHousekeeper(housekeeperToDelete)));","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LimZiJia":6,"gosongying":28}},{"path":"src/main/java/housekeeping/hub/logic/commands/EditClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"public class EditClientCommand extends EditCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_EDIT_CLIENT_SUCCESS \u003d \"Edited Client: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"This client already exists in the hub book.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public EditClientCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" super(index, editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" Client personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" Client editedClient \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" if (!personToEdit.isSamePerson(editedClient) \u0026\u0026 model.hasClient(editedClient)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" throw new CommandException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" model.setClient(personToEdit, editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedClient)));","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" * Creates and returns a {@code Client} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" protected Client createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" Area updatedArea \u003d editPersonDescriptor.getArea().orElse(personToEdit.getArea());","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails updatedDetails \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" editPersonDescriptor.getDetails().orElse(personToEdit.getDetails());","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" return new Client(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedDetails,","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" updatedArea);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LimZiJia":18,"gosongying":52,"GERARDJM018":1}},{"path":"src/main/java/housekeeping/hub/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.CollectionUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" * Edits the details of an existing person in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":"abstract public class EditCommand extends Command {","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the client or housekeeper \"","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" + \"identified by the index number used in the displayed person list. \"","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" + \"TYPE(client or housekeeper) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" + \"Example: \" + COMMAND_WORD + \" client 1 \"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" protected final Index index;","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" protected final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" abstract protected Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" private BookingList bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" private HousekeepingDetails details;","lastModifiedDate":"2024-03-28"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" private Area area;","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" setBookingList(toCopy.bookingList);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"LimZiJia"},"content":" setDetails(toCopy.details);","lastModifiedDate":"2024-03-28"},{"lineNumber":125,"author":{"gitId":"GERARDJM018"},"content":" setArea(toCopy.area);","lastModifiedDate":"2024-03-28"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, area, bookingList);","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":184,"author":{"gitId":"moguries"},"content":" public void setBookingList(BookingList bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"moguries"},"content":" this.bookingList \u003d bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"moguries"},"content":" public Optional\u003cBookingList\u003e getBookingList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":189,"author":{"gitId":"moguries"},"content":" return Optional.ofNullable(bookingList);","lastModifiedDate":"2024-04-02"},{"lineNumber":190,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"LimZiJia"},"content":" public void setDetails(HousekeepingDetails details) {","lastModifiedDate":"2024-03-28"},{"lineNumber":193,"author":{"gitId":"LimZiJia"},"content":" this.details \u003d details;","lastModifiedDate":"2024-03-28"},{"lineNumber":194,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":195,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":196,"author":{"gitId":"LimZiJia"},"content":" public Optional\u003cHousekeepingDetails\u003e getDetails() {","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"LimZiJia"},"content":" return Optional.ofNullable(details);","lastModifiedDate":"2024-03-28"},{"lineNumber":198,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":200,"author":{"gitId":"GERARDJM018"},"content":" public void setArea(Area area) {","lastModifiedDate":"2024-03-28"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":" this.area \u003d area;","lastModifiedDate":"2024-03-28"},{"lineNumber":202,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":204,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cArea\u003e getArea() {","lastModifiedDate":"2024-03-28"},{"lineNumber":205,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":206,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":207,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":210,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":224,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 Objects.equals(area, otherEditPersonDescriptor.area)","lastModifiedDate":"2024-03-28"},{"lineNumber":225,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"moguries"},"content":" \u0026\u0026 Objects.equals(bookingList, otherEditPersonDescriptor.bookingList);","lastModifiedDate":"2024-04-02"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"LimZiJia"},"content":" .add(\"hub\", address)","lastModifiedDate":"2024-04-05"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"GERARDJM018"},"content":" .add(\"area\", area)","lastModifiedDate":"2024-03-28"},{"lineNumber":238,"author":{"gitId":"moguries"},"content":" .add(\"booking list\", bookingList)","lastModifiedDate":"2024-04-02"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"LimZiJia":32,"moguries":13,"gosongying":10,"-":178,"GERARDJM018":9}},{"path":"src/main/java/housekeeping/hub/logic/commands/EditHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.model.Model.PREDICATE_SHOW_ALL_HOUSEKEEPERS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"public class EditHousekeeperCommand extends EditCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_EDIT_HOUSEKEEPER_SUCCESS \u003d \"Edited Housekeeper: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_DUPLICATE_HOUSEKEEPER \u003d \"This housekeeper already exists in the hub book.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" public EditHousekeeperCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" super(index, editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" List\u003cHousekeeper\u003e lastShownList \u003d model.getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" Housekeeper personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" Housekeeper editedHousekeeper \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" if (!personToEdit.isSamePerson(editedHousekeeper) \u0026\u0026 model.hasHousekeeper(editedHousekeeper)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" throw new CommandException(MESSAGE_DUPLICATE_HOUSEKEEPER);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" model.setHousekeeper(personToEdit, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" model.updateFilteredHousekeeperList(PREDICATE_SHOW_ALL_HOUSEKEEPERS);","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" Messages.formatHousekeeper(editedHousekeeper)));","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" * Creates and returns a {@code Housekeeper} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" protected Housekeeper createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" Housekeeper housekeeperToEdit \u003d (Housekeeper) personToEdit; // to use getBookingList()","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":" Area updatedArea \u003d editPersonDescriptor.getArea().orElse(personToEdit.getArea());","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" BookingList updatedBookingList \u003d editPersonDescriptor.getBookingList()","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" .orElse(housekeeperToEdit.getBookingList());","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" return new Housekeeper(","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedArea, updatedBookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LimZiJia":16,"moguries":4,"gosongying":53,"GERARDJM018":1}},{"path":"src/main/java/housekeeping/hub/logic/commands/EditHousekeepingDetailsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_LHD;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PI;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"import java.util.*;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.CollectionUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Booking;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" * Edits the details of an existing person in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":"public class EditHousekeepingDetailsCommand extends BookingCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" public static final String COMMAND_WORD \u003d \"booking client edit\";","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the booking details of the person identified \"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" + \"[\" + PREFIX_PI + \"PREFERRED INTERVAL] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" + \"[\" + PREFIX_LHD + \"LAST HOUSEKEEPING DATE] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" + PREFIX_PI + \"1 months \"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" + PREFIX_LHD + \"2024-01-02\";","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the hub book.\";","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" protected final Index index;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" protected final EditHousekeepingDetailsDescriptor editPersonDescriptor;","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" * @param editHousekeepingDetailsDescriptor details to edit the person with","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" public EditHousekeepingDetailsCommand(Index index,","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsDescriptor editHousekeepingDetailsDescriptor) {","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(editHousekeepingDetailsDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":" this.editPersonDescriptor \u003d new EditHousekeepingDetailsDescriptor(editHousekeepingDetailsDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" List\u003cClient\u003e lastShownList \u003d model.getFilteredClientList();","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"GERARDJM018"},"content":" Client personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":" if (!personToEdit.hasHousekeepingDetails()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" throw new CommandException(NO_DETAILS_MESSAGE_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"GERARDJM018"},"content":" Client editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"GERARDJM018"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasClient(editedPerson)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" model.setClient(personToEdit, editedPerson);","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"GERARDJM018"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatClient(editedPerson)));","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"GERARDJM018"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"GERARDJM018"},"content":" * edited with {@code editHousekeepingDetailsDescriptor}.","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"GERARDJM018"},"content":" protected Client createEditedPerson","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"GERARDJM018"},"content":" (Person personToEdit,","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsCommand.EditHousekeepingDetailsDescriptor editHousekeepingDetailsDescriptor) {","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"GERARDJM018"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"GERARDJM018"},"content":" Name updatedName \u003d personToEdit.getName();","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"GERARDJM018"},"content":" Phone updatedPhone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"GERARDJM018"},"content":" Email updatedEmail \u003d personToEdit.getEmail();","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"GERARDJM018"},"content":" Address updatedAddress \u003d personToEdit.getAddress();","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"GERARDJM018"},"content":" Set\u003cTag\u003e updatedTags \u003d personToEdit.getTags();","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"GERARDJM018"},"content":" Area updatedArea \u003d personToEdit.getArea();","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"GERARDJM018"},"content":" LocalDate updatedLastHousekeepingDate \u003d editHousekeepingDetailsDescriptor.getLastHousekeepingDate()","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"GERARDJM018"},"content":" .orElse(personToEdit.getDetails().getLastHousekeepingDate());","lastModifiedDate":"2024-04-03"},{"lineNumber":106,"author":{"gitId":"GERARDJM018"},"content":" Period updatedPreferredInterval \u003d editHousekeepingDetailsDescriptor.getPreferredInterval()","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"GERARDJM018"},"content":" .orElse(personToEdit.getDetails().getPreferredInterval());","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"GERARDJM018"},"content":" Period updatedDeferment \u003d editHousekeepingDetailsDescriptor.getDeferment()","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" .orElse(personToEdit.getDetails().getDeferment());","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"GERARDJM018"},"content":" Booking updatedBooking \u003d editHousekeepingDetailsDescriptor.getBooking()","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"GERARDJM018"},"content":" .orElse(personToEdit.getDetails().getBooking());","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"GERARDJM018"},"content":" HousekeepingDetails updatedDetails \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"GERARDJM018"},"content":" new HousekeepingDetails(updatedLastHousekeepingDate, updatedPreferredInterval);","lastModifiedDate":"2024-04-03"},{"lineNumber":114,"author":{"gitId":"GERARDJM018"},"content":" updatedDetails.addDeferment(updatedDeferment);","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"GERARDJM018"},"content":" updatedDetails.setBooking(updatedBooking);","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" return new Client(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"GERARDJM018"},"content":" updatedDetails, updatedArea);","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":120,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":121,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":126,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-03"},{"lineNumber":128,"author":{"gitId":"GERARDJM018"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":129,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":130,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"GERARDJM018"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"GERARDJM018"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"GERARDJM018"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"GERARDJM018"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"GERARDJM018"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"GERARDJM018"},"content":" .toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"GERARDJM018"},"content":" * Stores the booking details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"GERARDJM018"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-04-03"},{"lineNumber":148,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"GERARDJM018"},"content":" public static class EditHousekeepingDetailsDescriptor {","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" private LocalDate lastHousekeepingDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"GERARDJM018"},"content":" private Period preferredInterval;","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"GERARDJM018"},"content":" private Period deferment;","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"GERARDJM018"},"content":" private Booking booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" public EditHousekeepingDetailsDescriptor() {}","lastModifiedDate":"2024-04-03"},{"lineNumber":156,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":157,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":158,"author":{"gitId":"GERARDJM018"},"content":" * Copy constructor.","lastModifiedDate":"2024-04-03"},{"lineNumber":159,"author":{"gitId":"GERARDJM018"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-04-03"},{"lineNumber":160,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":161,"author":{"gitId":"GERARDJM018"},"content":" public EditHousekeepingDetailsDescriptor(EditHousekeepingDetailsDescriptor toCopy) {","lastModifiedDate":"2024-04-03"},{"lineNumber":162,"author":{"gitId":"GERARDJM018"},"content":" setLastHousekeepingDate(toCopy.lastHousekeepingDate);","lastModifiedDate":"2024-04-03"},{"lineNumber":163,"author":{"gitId":"GERARDJM018"},"content":" setPreferredInterval(toCopy.preferredInterval);","lastModifiedDate":"2024-04-03"},{"lineNumber":164,"author":{"gitId":"GERARDJM018"},"content":" setDeferment(toCopy.deferment);","lastModifiedDate":"2024-04-04"},{"lineNumber":165,"author":{"gitId":"GERARDJM018"},"content":" setBooking(toCopy.booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":166,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":167,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":169,"author":{"gitId":"GERARDJM018"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"GERARDJM018"},"content":" return CollectionUtil.isAnyNonNull(lastHousekeepingDate, preferredInterval, booking, deferment);","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":175,"author":{"gitId":"GERARDJM018"},"content":" public void setLastHousekeepingDate(LocalDate lHD) {","lastModifiedDate":"2024-04-03"},{"lineNumber":176,"author":{"gitId":"GERARDJM018"},"content":" lastHousekeepingDate \u003d lHD;","lastModifiedDate":"2024-04-03"},{"lineNumber":177,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cLocalDate\u003e getLastHousekeepingDate() {","lastModifiedDate":"2024-04-03"},{"lineNumber":180,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(lastHousekeepingDate);","lastModifiedDate":"2024-04-03"},{"lineNumber":181,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":182,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":183,"author":{"gitId":"GERARDJM018"},"content":" public void setPreferredInterval(Period preferredInterval) {","lastModifiedDate":"2024-04-03"},{"lineNumber":184,"author":{"gitId":"GERARDJM018"},"content":" this.preferredInterval \u003d preferredInterval;","lastModifiedDate":"2024-04-03"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":186,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":187,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cPeriod\u003e getPreferredInterval() {","lastModifiedDate":"2024-04-03"},{"lineNumber":188,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(preferredInterval);","lastModifiedDate":"2024-04-03"},{"lineNumber":189,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":190,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":191,"author":{"gitId":"GERARDJM018"},"content":" public void setDeferment(Period deferment) {","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"GERARDJM018"},"content":" this.deferment \u003d deferment;","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cPeriod\u003e getDeferment() {","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(deferment);","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"GERARDJM018"},"content":" public void setBooking(Booking booking) {","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"GERARDJM018"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":200,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"GERARDJM018"},"content":" public Optional\u003cBooking\u003e getBooking() {","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"GERARDJM018"},"content":" return Optional.ofNullable(booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":205,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":208,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":209,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-03"},{"lineNumber":210,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":211,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":212,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":213,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-03"},{"lineNumber":214,"author":{"gitId":"GERARDJM018"},"content":" if (!(other instanceof EditHousekeepingDetailsDescriptor)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":215,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":216,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsDescriptor otherEditPersonDescriptor \u003d (EditHousekeepingDetailsDescriptor) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":219,"author":{"gitId":"GERARDJM018"},"content":" return Objects.equals(lastHousekeepingDate, otherEditPersonDescriptor.lastHousekeepingDate)","lastModifiedDate":"2024-04-03"},{"lineNumber":220,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 Objects.equals(deferment, otherEditPersonDescriptor.deferment)","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 Objects.equals(booking, otherEditPersonDescriptor.booking)","lastModifiedDate":"2024-04-04"},{"lineNumber":222,"author":{"gitId":"GERARDJM018"},"content":" \u0026\u0026 Objects.equals(preferredInterval, otherEditPersonDescriptor.preferredInterval);","lastModifiedDate":"2024-04-03"},{"lineNumber":223,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":224,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":225,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":226,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":227,"author":{"gitId":"GERARDJM018"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-03"},{"lineNumber":228,"author":{"gitId":"GERARDJM018"},"content":" .add(\"last housekeeping date\", lastHousekeepingDate)","lastModifiedDate":"2024-04-03"},{"lineNumber":229,"author":{"gitId":"GERARDJM018"},"content":" .add(\"preferred interval\", preferredInterval)","lastModifiedDate":"2024-04-03"},{"lineNumber":230,"author":{"gitId":"GERARDJM018"},"content":" .add(\"booking date\", booking)","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"GERARDJM018"},"content":" .add(\"deferment\", deferment)","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"GERARDJM018"},"content":" .toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":233,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":234,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":235,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":24,"gosongying":1,"GERARDJM018":210}},{"path":"src/main/java/housekeeping/hub/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"LimZiJia":2,"-":17}},{"path":"src/main/java/housekeeping/hub/logic/commands/FindClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"public class FindClientCommand extends FindCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" public FindClientCommand(ContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" super(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" model.updateFilteredClientList(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" String.format(Messages.MESSAGE_CLIENTS_LISTED_OVERVIEW, model.getFilteredClientList().size()));","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":4,"gosongying":17}},{"path":"src/main/java/housekeeping/hub/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Finds and lists all persons in hub book whose name contains any of the argument keywords.","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"abstract public class FindCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all clients or housekeepers filtered by \"","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" + \"the specified attribute(s). Valid attributes: {name, phone, hub, area}\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" + \"Parameters: TYPE(client or housekeeper) PREFIX/KEYWORD [PREFIX/KEYWORDS...] (optional)\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" + \"Example: \" + COMMAND_WORD + \" client n/alice p/90274629\";","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_NOT_FOUND \u003d \"At least one field to find must be provided.\";","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" protected final ContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" public FindCommand(ContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":5,"moguries":3,"gosongying":5,"-":36,"GERARDJM018":2}},{"path":"src/main/java/housekeeping/hub/logic/commands/FindHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"public class FindHousekeeperCommand extends FindCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" public FindHousekeeperCommand(ContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" super(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" model.updateFilteredHousekeeperList(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" String.format(Messages.MESSAGE_HOUSEKEEPERS_LISTED_OVERVIEW, model.getFilteredHousekeeperList().size()));","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":4,"gosongying":17}},{"path":"src/main/java/housekeeping/hub/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":2,"-":19}},{"path":"src/main/java/housekeeping/hub/logic/commands/LeadsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.ClientComparator;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.LeadsFilterPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-04-01"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" * Generates a list of leads based on the client\u0027s predicted next housekeeping date.","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"public class LeadsCommand extends Command {","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" public static final String COMMAND_WORD \u003d \"leads\";","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Generates a list of leads based on the client\u0027s \"","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" + \"predicted next housekeeping date.\\n\"","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" private final LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" private final Comparator\u003cClient\u003e comparator \u003d new ClientComparator();","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public LeadsCommand() {}","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" model.updateAndSortFilteredClientList(predicate, comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" return new CommandResult(","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredClientList().size()));","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" if (!(other instanceof LeadsCommand)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-04-01"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-01"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-04-01"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" .toString();","lastModifiedDate":"2024-04-01"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-04-01"}],"authorContributionMap":{"LimZiJia":58}},{"path":"src/main/java/housekeeping/hub/logic/commands/ListClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.TypePredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"public class ListClientCommand extends ListCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" public ListClientCommand() {","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" super(new TypePredicate(\"client\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" model.updateFilteredClientList(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" return new CommandResult(MESSAGE_SUCCESS + \"all \" + predicate.getType() + \"s\");","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":3,"gosongying":16}},{"path":"src/main/java/housekeeping/hub/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.TypePredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":" * Lists all persons in the hub book to the user.","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"abstract public class ListCommand extends Command {","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed \";","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Show list of the contacts with the given type.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" + \"Parameters: TYPE\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" + \"Example: \" + COMMAND_WORD + \" housekeeper\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" protected final TypePredicate predicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" public ListCommand(TypePredicate predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" if (!(other instanceof ListCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" ListCommand otherListCommand \u003d (ListCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" return predicate.equals(otherListCommand.predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":3,"gosongying":17,"-":12,"GERARDJM018":6}},{"path":"src/main/java/housekeeping/hub/logic/commands/ListHousekeeperCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.TypePredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"public class ListHousekeeperCommand extends ListCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" public ListHousekeeperCommand() {","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" super(new TypePredicate(\"housekeeper\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" model.updateFilteredHousekeeperList(predicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" return new CommandResult(MESSAGE_SUCCESS + \"all \" + predicate.getType() + \"s\");","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":3,"gosongying":16}},{"path":"src/main/java/housekeeping/hub/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands.exceptions;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"LimZiJia":1,"-":16}},{"path":"src/main/java/housekeeping/hub/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.model.person.Type.preambleIsAllowed;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, PREFIX_DETAILS, PREFIX_AREA); ","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AREA)","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":" || !preambleIsAllowed(argMultimap.getPreamble())) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_AREA);","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" String type \u003d ParserUtil.parseType(argMultimap.getPreamble());","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" Area area \u003d ParserUtil.parseArea(argMultimap.getValue(PREFIX_AREA).get());","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" HousekeepingDetails details;","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" BookingList bookingList \u003d new BookingList();","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" details \u003d ParserUtil.parseHousekeepingDetails(argMultimap.getValue(PREFIX_DETAILS));","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" System.out.println(details);","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" switch (type) {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"LimZiJia"},"content":" case \"client\":","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" Client client \u003d new Client(name, phone, email, address, tagList, details, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" return new AddClientCommand(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" case \"housekeeper\":","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" if (!details.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" System.out.println(details);","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" throw new ParseException(AddHousekeeperCommand.MESSAGE_NO_HOUSEKEEPING_DETAILS);","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeper \u003d new Housekeeper(name, phone, email, address, tagList, area, bookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" return new AddHousekeeperCommand(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"LimZiJia":31,"moguries":8,"gosongying":13,"-":38,"GERARDJM018":3}},{"path":"src/main/java/housekeeping/hub/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.*;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" case LeadsCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-01"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" return new LeadsCommand();","lastModifiedDate":"2024-04-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" case BookingCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" return new BookingCommandParser().parse(arguments);","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":8,"moguries":3,"-":72,"GERARDJM018":1}},{"path":"src/main/java/housekeeping/hub/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"LimZiJia":3,"-":75}},{"path":"src/main/java/housekeeping/hub/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2017-05-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(argsString, prefixes);","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return extractArguments(argsString, positions);","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"LimZiJia":1,"-":147}},{"path":"src/main/java/housekeeping/hub/logic/parser/BookingCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.BookingCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingSearchPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"public class BookingCommandParser implements Parser\u003cBookingCommand\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_TYPE \u003d Pattern.compile(\"^(client|housekeeper).*\");","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_ADD \u003d Pattern.compile(","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" \".*add\\\\s+(\\\\d+)\\\\s+(\\\\d{4}-\\\\d{2}-\\\\d{2}\\\\s+(am|pm))\");","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_DELETE_HOUSEKEEPER \u003d Pattern.compile(\".*delete\\\\s+(\\\\d+)\\\\s+(\\\\d+)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_DELETE_CLIENT \u003d Pattern.compile(\".*delete\\\\s+(\\\\d+)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_LIST \u003d Pattern.compile(\".*list\\\\s+(\\\\d+)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_SEARCH \u003d Pattern.compile(","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" \".*search\\\\s+(\\\\w+)\\\\s+(\\\\d{4}-\\\\d{2}-\\\\d{2})\\\\s+(\\\\w{2})\");","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_SET \u003d Pattern.compile(","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" \".*set\\\\s+(\\\\d+)\\\\s+(\\\\d{4}-\\\\d{2}-\\\\d{2}\\\\s+\\\\d+\\\\s+(days|weeks|months|years))\");","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern PATTERN_REMOVE \u003d Pattern.compile(\".*remove\\\\s+(\\\\d+)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" private static final Pattern PATTERN_EDIT \u003d Pattern.compile(\".*edit\\\\s+(.*)\");","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" private static final Pattern PATTERN_DEFERMENT \u003d Pattern.compile(","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" \".*defer\\\\s+(\\\\d+)\\\\s+(\\\\d+\\\\s+(days|weeks|months|years))\");","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" private static final String CLIENT \u003d \"client\";","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" private static final String HOUSEKEEPER \u003d \"housekeeper\";","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" private static final String ADD_COMMAND \u003d \"add\";","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" private static final String DELETE_COMMAND \u003d \"delete\";","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" private static final String LIST_COMMAND \u003d \"list\";","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" private static final String DEFERMENT_COMMAND \u003d \"defer\";","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" private static final String SEARCH_COMMAND \u003d \"search\";","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" private static final String EDIT_LAST_HOUSEKEEPING_DATE_COMMAND \u003d \"last\";","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" private static final String EDIT_PREFERRED_INTERVAL_COMMAND \u003d \"interval\";","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" private static final String SET_HOUSEKEEPING_DETAILS_COMMAND \u003d \"set\";","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" private static final String REMOVE_HOUSEKEEPING_DETAILS_COMMAND \u003d \"remove\";","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" public BookingCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" Matcher addMatcher \u003d PATTERN_ADD.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" Matcher deleteHousekeeperMatcher \u003d PATTERN_DELETE_HOUSEKEEPER.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" Matcher deleteClientMatcher \u003d PATTERN_DELETE_CLIENT.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" Matcher listMatcher \u003d PATTERN_LIST.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" Matcher searchMatcher \u003d PATTERN_SEARCH.matcher(args.trim());","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" Matcher typeMatcher \u003d PATTERN_TYPE.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" Matcher setMatcher \u003d PATTERN_SET.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" Matcher removeMatcher \u003d PATTERN_REMOVE.matcher(args.trim());","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" Matcher editMatcher \u003d PATTERN_EDIT.matcher(args.trim());","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" Matcher deferMatcher \u003d PATTERN_DEFERMENT.matcher(args.trim());","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" if (!typeMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookingCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":" } else if (typeMatcher.group(1).equals(\"client\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" return clientBookingCommandParser(addMatcher, deleteClientMatcher, listMatcher, setMatcher, removeMatcher,","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" editMatcher, deferMatcher, args);","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":" } else if (typeMatcher.group(1).equals(\"housekeeper\")) {","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" return housekeeperBookingCommandParser(addMatcher, deleteHousekeeperMatcher, listMatcher, searchMatcher);","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookingCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"LimZiJia"},"content":" private static BookingCommand clientBookingCommandParser","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"LimZiJia"},"content":" (Matcher addMatcher, Matcher deleteMatcher, Matcher listMatcher,","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" Matcher setMatcher, Matcher removeMatcher, Matcher editMatcher,","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" Matcher deferMatcher, String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" if (setMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(setMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":" // Date and period is not really optional since it is guaranteed by the regex.","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" ParserUtil.parseHousekeepingDetails(Optional.of(setMatcher.group(2)));","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(CLIENT, SET_HOUSEKEEPING_DETAILS_COMMAND, clientIndex, housekeepingDetails);","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":" } else if (removeMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(removeMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(CLIENT, REMOVE_HOUSEKEEPING_DETAILS_COMMAND, clientIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" } else if (editMatcher.matches()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":" return new EditHousekeepingDetailsParser().parse(args);","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" } else if (deferMatcher.matches()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"GERARDJM018"},"content":" Period deferment \u003d ParserUtil.parsePreferredInterval(deferMatcher.group(2));","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"GERARDJM018"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(deferMatcher.group(1));","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" return new BookingCommand(CLIENT, DEFERMENT_COMMAND, clientIndex, deferment);","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" } else if (addMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(addMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":" String bookedDateAndTime \u003d addMatcher.group(2);","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(CLIENT, ADD_COMMAND, clientIndex, bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"LimZiJia"},"content":" } else if (deleteMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" Index clientIndex \u003d ParserUtil.parseIndex(deleteMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(CLIENT, DELETE_COMMAND, clientIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookingCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" private static BookingCommand housekeeperBookingCommandParser","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" (Matcher addMatcher, Matcher deleteMatcher, Matcher listMatcher,","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" Matcher searchMatcher) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" if (addMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" Index housekeeperIndex \u003d ParserUtil.parseIndex(addMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" String bookedDateAndTime \u003d addMatcher.group(2);","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(HOUSEKEEPER, ADD_COMMAND, housekeeperIndex, bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" } else if (deleteMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" Index housekeeperIndex \u003d ParserUtil.parseIndex(deleteMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" int bookingToDeleteIndex \u003d Integer.parseInt(deleteMatcher.group(2));","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(HOUSEKEEPER, DELETE_COMMAND, housekeeperIndex, bookingToDeleteIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" } else if (listMatcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" Index housekeeperIndex \u003d ParserUtil.parseIndex(listMatcher.group(1));","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":" return new BookingCommand(HOUSEKEEPER, LIST_COMMAND, housekeeperIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" } else if (searchMatcher.matches()){","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" String area \u003d searchMatcher.group(1);","lastModifiedDate":"2024-04-03"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" String bookedDateAndTime \u003d searchMatcher.group(2) + \" \" + searchMatcher.group(3);","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" BookingSearchPredicate bookingSearchPredicate \u003d new BookingSearchPredicate(area, bookedDateAndTime);","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" return new BookingCommand(HOUSEKEEPER, SEARCH_COMMAND, bookingSearchPredicate);","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookingCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":68,"moguries":38,"GERARDJM018":17}},{"path":"src/main/java/housekeeping/hub/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_AREA \u003d new Prefix(\"ar/\");","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" public static final Prefix PREFIX_DETAILS \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_LHD \u003d new Prefix(\"lhd/\");","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_PI \u003d new Prefix(\"pi/\");","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_BD \u003d new Prefix(\"bd/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" public static final Prefix PREFIX_DEFERMENT \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" public static final String[] ALLOWED_PREAMBLES \u003d new String[] {\"client\", \"housekeeper\"};","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" public static final String[] ALLOWED_PREAMBLES_TYPE \u003d new String[] {\"client\", \"housekeeper\"};","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" public static final String[] ALLOWED_PREAMBLES_AREA \u003d new String[] {\"north\", \"northeast\", \"east\", \"southeast\"","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" , \"south\", \"southwest\", \"west\", \"northwest\"};","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"LimZiJia":4,"-":13,"GERARDJM018":8}},{"path":"src/main/java/housekeeping/hub/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.DeleteClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.DeleteCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.DeleteHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" String[] splitArgs \u003d args.trim().split(\" \");","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" // check that input is valid","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" if (splitArgs.length \u003c 2 || splitArgs.length \u003e 2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" if (Integer.parseInt(splitArgs[1]) \u003c 0) {","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" String type \u003d ParserUtil.parseType(splitArgs[0]);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" Index index \u003d ParserUtil.parseIndex(splitArgs[1]);","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" if (type.equals(\"client\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" return new DeleteClientCommand(index);","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" } else if (type.equals(\"housekeeper\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" return new DeleteHousekeeperCommand(index);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" throw new ParseException(pe.getMessage());","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"LimZiJia":8,"moguries":15,"gosongying":11,"-":20}},{"path":"src/main/java/housekeeping/hub/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.*;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" PREFIX_AREA);","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" String type;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" // check that input is valid","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" String[] splitArgs \u003d argMultimap.getPreamble().trim().split(\" \");","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" if (splitArgs.length \u003c 2 || splitArgs.length \u003e 2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" if (Integer.parseInt(splitArgs[1]) \u003c\u003d 0) {","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" throw new ParseException(MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" type \u003d ParserUtil.parseType(splitArgs[0]);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" index \u003d ParserUtil.parseIndex(splitArgs[1]);","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_AREA);","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_AREA).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setArea(ParserUtil.parseArea(argMultimap.getValue(PREFIX_AREA).get()));","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" if (type.equals(\"client\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" return new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" } else if (type.equals(\"housekeeper\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" return new EditHousekeeperCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"LimZiJia":11,"moguries":13,"gosongying":13,"-":69,"GERARDJM018":6}},{"path":"src/main/java/housekeeping/hub/logic/parser/EditHousekeepingDetailsParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_BD;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_DEFERMENT;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_LHD;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PI;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditHousekeepingDetailsCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditHousekeepingDetailsCommand.EditHousekeepingDetailsDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":"public class EditHousekeepingDetailsParser implements Parser\u003cEditHousekeepingDetailsCommand\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" * Parses the given {@code String} of arguments in the context of the EditHousekeepingDetailsCommand","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" public EditHousekeepingDetailsCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_LHD, PREFIX_PI, PREFIX_BD,","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" PREFIX_DEFERMENT);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" Index index;","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" String[] splitArgs \u003d argMultimap.getPreamble().trim().split(\"edit \");","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" index \u003d ParserUtil.parseIndex(splitArgs[1]);","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" } catch (Exception pe) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_LHD, PREFIX_PI, PREFIX_BD, PREFIX_DEFERMENT);","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" EditHousekeepingDetailsDescriptor editPersonDescriptor \u003d new EditHousekeepingDetailsDescriptor();","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_LHD).isPresent()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setLastHousekeepingDate(ParserUtil","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" .parseLastHousekeepingDate(argMultimap.getValue(PREFIX_LHD).get()));","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_PI).isPresent()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setPreferredInterval(ParserUtil","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" .parsePreferredInterval(argMultimap.getValue(PREFIX_PI).get()));","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_BD).isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setBooking(ParserUtil","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" .parseBooking(argMultimap.getValue(PREFIX_BD).get()));","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_DEFERMENT).isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" editPersonDescriptor.setDeferment(ParserUtil","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" .parsePreferredInterval(argMultimap.getValue(PREFIX_DEFERMENT).get()));","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(EditHousekeepingDetailsCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" return new EditHousekeepingDetailsCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":10,"GERARDJM018":56}},{"path":"src/main/java/housekeeping/hub/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.*;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.FindClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.FindCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.FindHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" private String name \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" private String address \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" private String area \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" String[] subArgs \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_AREA);","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" if (subArgs.length \u003c 2) {","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" String type \u003d ParserUtil.parseType(subArgs[0]);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_AREA);","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" address \u003d argMultimap.getValue(PREFIX_ADDRESS).get();","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" if (argMultimap.getValue(PREFIX_AREA).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" area \u003d argMultimap.getValue(PREFIX_AREA).get();","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" String trimmedArea \u003d area.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" String[] nameKeywords \u003d trimmedName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" String[] addressKeywords \u003d trimmedAddress.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" String[] areaKeywords \u003d trimmedArea.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" for (int i \u003d 0; i \u003c areaKeywords.length ; i++) {","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":" if (!Area.isValidArea(areaKeywords[i])) {","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, Area.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" if (nameKeywords[0].isEmpty() \u0026\u0026 addressKeywords[0].isEmpty() \u0026\u0026 areaKeywords[0].isEmpty()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" throw new ParseException(FindCommand.MESSAGE_NOT_FOUND);","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" if (type.equals(\"client\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" return new FindClientCommand(new ContainsKeywordsPredicate(Arrays.asList(nameKeywords),","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" Arrays.asList(addressKeywords), Arrays.asList(areaKeywords)));","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" // As type is ensured to be either client or housekeeper before, it is safe to assume that the type is","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" // housekeeper, so we can directly return a FindHousekeeperCommand object.","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" return new FindHousekeeperCommand(new ContainsKeywordsPredicate(Arrays.asList(nameKeywords),","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":" Arrays.asList(addressKeywords), Arrays.asList(areaKeywords)));","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"LimZiJia":10,"gosongying":16,"-":24,"GERARDJM018":33}},{"path":"src/main/java/housekeeping/hub/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ListClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ListCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ListHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" String[] type \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" if (type.length !\u003d 1) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" if (!trimmedArgs.equals(\"client\") \u0026\u0026 !trimmedArgs.equals(\"housekeeper\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" if (trimmedArgs.equals(\"client\")) {","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" return new ListClientCommand();","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" // As the type is either \"client\" or \"housekeeper\", we can safely assume that the type is \"housekeeper\"","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" return new ListHousekeeperCommand();","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"LimZiJia":6,"gosongying":10,"GERARDJM018":32}},{"path":"src/main/java/housekeeping/hub/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.Command;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"LimZiJia":3,"-":13}},{"path":"src/main/java/housekeeping/hub/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.ALLOWED_PREAMBLES_TYPE;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.time.Period;","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.StringUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.*;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" private static final Pattern PATTERN_BOOKING \u003d Pattern.compile(","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" \"(\\\\d{4}-\\\\d{2}-\\\\d{2}\\\\s+(am|pm))\");","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" public static final String TYPE_VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" * Parses a {@code String hub} into an {@code Address}.","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" * @throws ParseException if the given {@code hub} is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"GERARDJM018"},"content":" * Parses a {@code String type} into a {@code type}.","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"GERARDJM018"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"GERARDJM018"},"content":" * @throws ParseException if the given {@code type} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" public static String parseType(String type) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(type);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"GERARDJM018"},"content":" String trimmedType \u003d type.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":" if (!(trimmedType.matches(TYPE_VALIDATION_REGEX) \u0026\u0026 preambleIsAllowed(trimmedType))) {","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(Type.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" return trimmedType;","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" * Checks if a given command uses a preamble that is allowed. (we define preamble as TYPE)","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" * @param preamble","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" * @return true if the preamble is allowed and no if it is not.","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"gosongying"},"content":" public static boolean preambleIsAllowed(String preamble) {","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":" for (String s : ALLOWED_PREAMBLES_TYPE) {","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":" if (s.equals(preamble)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":151,"author":{"gitId":"GERARDJM018"},"content":" * Parses a {@code String area} into an {@code Area}.","lastModifiedDate":"2024-03-28"},{"lineNumber":152,"author":{"gitId":"GERARDJM018"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-28"},{"lineNumber":153,"author":{"gitId":"GERARDJM018"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":154,"author":{"gitId":"GERARDJM018"},"content":" * @throws ParseException if the given {@code area} is invalid.","lastModifiedDate":"2024-03-28"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":156,"author":{"gitId":"GERARDJM018"},"content":" public static Area parseArea(String area) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":157,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"GERARDJM018"},"content":" String trimmedArea \u003d area.trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"GERARDJM018"},"content":" if (!Area.isValidArea(trimmedArea)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(Area.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":162,"author":{"gitId":"GERARDJM018"},"content":" return new Area(trimmedArea);","lastModifiedDate":"2024-03-28"},{"lineNumber":163,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":164,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":176,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":177,"author":{"gitId":"GERARDJM018"},"content":" public static LocalDate parseLastHousekeepingDate(String lHD) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(lHD);","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"GERARDJM018"},"content":" LocalDate parsedLHD \u003d LocalDate.parse(lHD);","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"GERARDJM018"},"content":" return parsedLHD;","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"GERARDJM018"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":186,"author":{"gitId":"GERARDJM018"},"content":" public static Booking parseBooking(String booking) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"GERARDJM018"},"content":" if (PATTERN_BOOKING.matcher(booking.trim()).matches()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"GERARDJM018"},"content":" Booking parsedBooking \u003d new Booking(booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"GERARDJM018"},"content":" return parsedBooking;","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"GERARDJM018"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":195,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":196,"author":{"gitId":"GERARDJM018"},"content":" public static Period parsePreferredInterval(String pI) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":197,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(pI);","lastModifiedDate":"2024-04-03"},{"lineNumber":198,"author":{"gitId":"GERARDJM018"},"content":" String trimmedPI \u003d pI.trim();","lastModifiedDate":"2024-04-03"},{"lineNumber":199,"author":{"gitId":"GERARDJM018"},"content":" String[] splitPI \u003d trimmedPI.split(\"\\\\s+\");","lastModifiedDate":"2024-04-03"},{"lineNumber":200,"author":{"gitId":"GERARDJM018"},"content":" Period period;","lastModifiedDate":"2024-04-03"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":" int quantity \u003d Integer.parseInt(splitPI[0]);","lastModifiedDate":"2024-04-03"},{"lineNumber":202,"author":{"gitId":"GERARDJM018"},"content":" switch (splitPI[1]) {","lastModifiedDate":"2024-04-03"},{"lineNumber":203,"author":{"gitId":"GERARDJM018"},"content":" case \"days\":","lastModifiedDate":"2024-04-03"},{"lineNumber":204,"author":{"gitId":"GERARDJM018"},"content":" period \u003d Period.ofDays(quantity);","lastModifiedDate":"2024-04-03"},{"lineNumber":205,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":206,"author":{"gitId":"GERARDJM018"},"content":" case \"weeks\":","lastModifiedDate":"2024-04-03"},{"lineNumber":207,"author":{"gitId":"GERARDJM018"},"content":" period \u003d Period.ofWeeks(quantity);","lastModifiedDate":"2024-04-03"},{"lineNumber":208,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":209,"author":{"gitId":"GERARDJM018"},"content":" case \"months\":","lastModifiedDate":"2024-04-03"},{"lineNumber":210,"author":{"gitId":"GERARDJM018"},"content":" period \u003d Period.ofMonths(quantity);","lastModifiedDate":"2024-04-03"},{"lineNumber":211,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":212,"author":{"gitId":"GERARDJM018"},"content":" case \"years\":","lastModifiedDate":"2024-04-03"},{"lineNumber":213,"author":{"gitId":"GERARDJM018"},"content":" period \u003d Period.ofYears(quantity);","lastModifiedDate":"2024-04-03"},{"lineNumber":214,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":215,"author":{"gitId":"GERARDJM018"},"content":" default:","lastModifiedDate":"2024-04-03"},{"lineNumber":216,"author":{"gitId":"GERARDJM018"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"GERARDJM018"},"content":" return period;","lastModifiedDate":"2024-04-03"},{"lineNumber":219,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":220,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":" public static HousekeepingDetails parseHousekeepingDetails(Optional\u003cString\u003e details) throws ParseException {","lastModifiedDate":"2024-03-28"},{"lineNumber":222,"author":{"gitId":"LimZiJia"},"content":" if (details.isEmpty()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":223,"author":{"gitId":"LimZiJia"},"content":" return HousekeepingDetails.empty;","lastModifiedDate":"2024-03-31"},{"lineNumber":224,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":225,"author":{"gitId":"LimZiJia"},"content":" String trimmedDetails \u003d details.get().trim();","lastModifiedDate":"2024-03-28"},{"lineNumber":226,"author":{"gitId":"LimZiJia"},"content":" if (!HousekeepingDetails.isValidHousekeepingDetailsUser(trimmedDetails)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":227,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":228,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":229,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":230,"author":{"gitId":"moguries"},"content":" String[] s;","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"moguries"},"content":" LocalDate date;","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"LimZiJia"},"content":" Period period;","lastModifiedDate":"2024-03-28"},{"lineNumber":233,"author":{"gitId":"moguries"},"content":" int quantity;","lastModifiedDate":"2024-04-04"},{"lineNumber":234,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":235,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-04-04"},{"lineNumber":236,"author":{"gitId":"moguries"},"content":" s \u003d trimmedDetails.split(\" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":237,"author":{"gitId":"moguries"},"content":" date \u003d LocalDate.parse(s[0]);","lastModifiedDate":"2024-04-04"},{"lineNumber":238,"author":{"gitId":"moguries"},"content":" quantity \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-04-04"},{"lineNumber":239,"author":{"gitId":"moguries"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"moguries"},"content":" throw new ParseException(e.getMessage());","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":243,"author":{"gitId":"LimZiJia"},"content":" switch (s[2]) {","lastModifiedDate":"2024-03-28"},{"lineNumber":244,"author":{"gitId":"LimZiJia"},"content":" case \"days\":","lastModifiedDate":"2024-03-28"},{"lineNumber":245,"author":{"gitId":"LimZiJia"},"content":" period \u003d Period.ofDays(quantity);","lastModifiedDate":"2024-03-28"},{"lineNumber":246,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":247,"author":{"gitId":"LimZiJia"},"content":" case \"weeks\":","lastModifiedDate":"2024-03-28"},{"lineNumber":248,"author":{"gitId":"LimZiJia"},"content":" period \u003d Period.ofWeeks(quantity);","lastModifiedDate":"2024-03-28"},{"lineNumber":249,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":250,"author":{"gitId":"LimZiJia"},"content":" case \"months\":","lastModifiedDate":"2024-03-28"},{"lineNumber":251,"author":{"gitId":"LimZiJia"},"content":" period \u003d Period.ofMonths(quantity);","lastModifiedDate":"2024-03-28"},{"lineNumber":252,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":253,"author":{"gitId":"LimZiJia"},"content":" case \"years\":","lastModifiedDate":"2024-03-28"},{"lineNumber":254,"author":{"gitId":"LimZiJia"},"content":" period \u003d Period.ofYears(quantity);","lastModifiedDate":"2024-03-28"},{"lineNumber":255,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":256,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-03-28"},{"lineNumber":257,"author":{"gitId":"LimZiJia"},"content":" throw new ParseException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":258,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":259,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":260,"author":{"gitId":"LimZiJia"},"content":" return new HousekeepingDetails(date, period);","lastModifiedDate":"2024-03-28"},{"lineNumber":261,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"LimZiJia":47,"moguries":12,"gosongying":19,"-":113,"GERARDJM018":71}},{"path":"src/main/java/housekeeping/hub/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * A prefix that marks the beginning of an argument in an arguments string.","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * E.g. \u0027t/\u0027 in \u0027add James t/ friend\u0027.","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Prefix {","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" private final String prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public Prefix(String prefix) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public String getPrefix() {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return getPrefix();","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return prefix \u003d\u003d null ? 0 : prefix.hashCode();","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!(other instanceof Prefix)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Prefix otherPrefix \u003d (Prefix) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return prefix.equals(otherPrefix.prefix);","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"LimZiJia":1,"-":41}},{"path":"src/main/java/housekeeping/hub/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser.exceptions;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a parse error encountered by a parser.","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ParseException extends IllegalValueException {","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public ParseException(String message) {","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public ParseException(String message, Throwable cause) {","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"LimZiJia":2,"-":15}},{"path":"src/main/java/housekeeping/hub/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.UniquePersonList;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" * Wraps all data at the hub-book level","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" private final UniquePersonList\u003cClient\u003e clients;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" private final UniquePersonList\u003cHousekeeper\u003e housekeepers;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" clients \u003d new UniquePersonList\u003cClient\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" housekeepers \u003d new UniquePersonList\u003cHousekeeper\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" * Replaces the contents of the client list with {@code clients}.","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" this.clients.setPersons(clients);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" * Replaces the contents of the housekeeper list with {@code housekeepers}.","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" * {@code housekeepers} must not contain duplicate housekeepers.","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" public void setHousekeepers(List\u003cHousekeeper\u003e housekeepers) {","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" this.housekeepers.setPersons(housekeepers);","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"LimZiJia"},"content":" public void sortClients(Comparator\u003c? super Client\u003e comparator) {","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":" clients.sort(comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" setClients(newData.getClientList());","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" setHousekeepers(newData.getHousekeeperList());","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" * Returns true if a client with the same identity as {@code client} exists in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" return clients.contains(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" * Returns true if a housekeeper with the same identity as {@code housekeeper} exists in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" return housekeepers.contains(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" * Adds a client to the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" * The client must not already exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" clients.add(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"LimZiJia"},"content":" * Adds a housekeeper to the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" * The housekeeper must not already exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" public void addHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" housekeepers.add(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" * Replaces the given client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":" * {@code target} must exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"LimZiJia"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" requireNonNull(editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" clients.setPerson(target, editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" * Replaces the given housekeeper {@code target} in the list with {@code editedHousekeeper}.","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"LimZiJia"},"content":" * {@code target} must exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":" * The housekeeper identity of {@code editedHousekeeper} must not be the same as another existing housekeeper in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" public void setHousekeeper(Housekeeper target, Housekeeper editedHousekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":128,"author":{"gitId":"gosongying"},"content":" requireNonNull(editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":129,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":" housekeepers.setPerson(target, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" * Removes {@code client} from this {@code AddressBook}.","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"LimZiJia"},"content":" * {@code client} must exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" public void removeClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" clients.remove(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":" * Removes {@code housekeeper} from this {@code AddressBook}.","lastModifiedDate":"2024-04-03"},{"lineNumber":143,"author":{"gitId":"LimZiJia"},"content":" * {@code housekeeper} must exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"gosongying"},"content":" public void removeHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":" housekeepers.remove(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":148,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"gosongying"},"content":" .add(\"clients\", clients)","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"gosongying"},"content":" .add(\"housekeepers\", housekeepers)","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"gosongying"},"content":" //.add(\"persons\", persons)","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":161,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"gosongying"},"content":" return clients.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getHousekeeperList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"gosongying"},"content":" return housekeepers.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":182,"author":{"gitId":"gosongying"},"content":" return clients.equals(otherAddressBook.clients)","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 housekeepers.equals(otherAddressBook.housekeepers);","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":188,"author":{"gitId":"gosongying"},"content":" int result \u003d 17;","lastModifiedDate":"2024-03-26"},{"lineNumber":189,"author":{"gitId":"gosongying"},"content":" result \u003d 31 * result + clients.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":190,"author":{"gitId":"gosongying"},"content":" result \u003d 31 * result + housekeepers.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":191,"author":{"gitId":"gosongying"},"content":" return result;","lastModifiedDate":"2024-03-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":23,"gosongying":82,"-":88}},{"path":"src/main/java/housekeeping/hub/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_CLIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_HOUSEKEEPERS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" * Returns the user prefs\u0027 hub book file path.","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":" * Sets the user prefs\u0027 hub book file path.","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" * Replaces hub book data with the data in {@code addressBook}.","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"LimZiJia"},"content":" * Returns true if a client with the same identity as {@code client} exists in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" boolean hasClient(Client client);","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" * Returns true if a housekeeper with the same identity as {@code housekeeper} exists in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" boolean hasHousekeeper(Housekeeper housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" * Deletes the given client.","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":" * The client must exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" void deleteClient(Client target);","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" * Deletes the given housekeeper.","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" * The housekeeper must exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" void deleteHousekeeper(Housekeeper target);","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" * Adds the given client.","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"LimZiJia"},"content":" * {@code client} must not already exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" void addClient(Client client);","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" * Adds the given housekeeper.","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"LimZiJia"},"content":" * {@code housekeeper} must not already exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" void addHousekeeper(Housekeeper housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" * Replaces the given client {@code target} with {@code editedClient}.","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" * {@code target} must exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" void setClient(Client target, Client editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" * Replaces the given housekeeper {@code target} with {@code editedHousekeeper}.","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" * {@code target} must exist in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" * The housekeeper identity of {@code editedHousekeeper} must not be the same as another existing housekeeper in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" void setHousekeeper(Housekeeper target, Housekeeper editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" * Returns an unmodifiable view of the filtered client list","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" * Returns an unmodifiable view of the filtered housekeeper list","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" * Updates the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" void updateFilteredClientList(Predicate\u003c? extends Person\u003e predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":127,"author":{"gitId":"LimZiJia"},"content":" * Updates and sorts the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-04-01"},{"lineNumber":128,"author":{"gitId":"LimZiJia"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-04-01"},{"lineNumber":129,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":130,"author":{"gitId":"LimZiJia"},"content":" void updateAndSortFilteredClientList(Predicate\u003cClient\u003e predicate, Comparator\u003cClient\u003e comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" * Updates the filter of the filtered housekeeper list to filter by the given {@code predicate}.","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" void updateFilteredHousekeeperList(Predicate\u003c? extends Person\u003e predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" * Updates the filter of the filtered housekeeper list to filter by the given {@code housekeeperPredicate}.","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" * @throws NullPointerException if {@code housekeeperPredicate} is null.","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":" void updateFilteredHousekeeperListWithHousekeeperPredicate(Predicate\u003cHousekeeper\u003e housekeeperPredicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"LimZiJia":26,"moguries":3,"gosongying":51,"-":61,"GERARDJM018":2}},{"path":"src/main/java/housekeeping/hub/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" * Represents the in-memory model of the hub book data.","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" private final FilteredList\u003cClient\u003e filteredClients;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" private final FilteredList\u003cHousekeeper\u003e filteredHousekeepers;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" logger.fine(\"Initializing with hub book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" filteredClients \u003d new FilteredList\u003c\u003e(this.addressBook.getClientList());","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" filteredHousekeepers \u003d new FilteredList\u003c\u003e(this.addressBook.getHousekeeperList());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" return addressBook.hasClient(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" return addressBook.hasHousekeeper(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" addressBook.removeClient(target);","lastModifiedDate":"2024-04-03"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" public void deleteHousekeeper(Housekeeper target) {","lastModifiedDate":"2024-04-03"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" addressBook.removeHousekeeper(target);","lastModifiedDate":"2024-04-03"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-04-03"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" public void addHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" updateFilteredHousekeeperList(PREDICATE_SHOW_ALL_HOUSEKEEPERS);","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":129,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" addressBook.setClient(target, editedClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" public void setHousekeeper(Housekeeper target, Housekeeper editedHousekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" requireAllNonNull(target, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" addressBook.setHousekeeper(target, editedHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":150,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"gosongying"},"content":" return filteredClients;","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"gosongying"},"content":" return filteredHousekeepers;","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"gosongying"},"content":" public void updateFilteredClientList(Predicate\u003c? extends Person\u003e predicate) {","lastModifiedDate":"2024-04-02"},{"lineNumber":161,"author":{"gitId":"gosongying"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"gosongying"},"content":" filteredClients.setPredicate((Predicate\u003c? super Client\u003e) predicate);","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":165,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":166,"author":{"gitId":"LimZiJia"},"content":" public void updateAndSortFilteredClientList(Predicate\u003cClient\u003e predicate, Comparator\u003cClient\u003e comparator) {","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-04-01"},{"lineNumber":168,"author":{"gitId":"LimZiJia"},"content":" addressBook.sortClients(comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"LimZiJia"},"content":" filteredClients.setPredicate(predicate);","lastModifiedDate":"2024-04-01"},{"lineNumber":170,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":171,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":173,"author":{"gitId":"gosongying"},"content":" public void updateFilteredHousekeeperList(Predicate\u003c? extends Person\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":175,"author":{"gitId":"gosongying"},"content":" filteredHousekeepers.setPredicate((Predicate\u003c? super Housekeeper\u003e) predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":178,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"LimZiJia"},"content":" public void updateFilteredHousekeeperListWithHousekeeperPredicate(Predicate\u003cHousekeeper\u003e housekeeperPredicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(housekeeperPredicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":" filteredHousekeepers.setPredicate(housekeeperPredicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":195,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":198,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 filteredClients.equals(otherModelManager.filteredClients)","lastModifiedDate":"2024-03-26"},{"lineNumber":199,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 filteredHousekeepers.equals(otherModelManager.filteredHousekeepers);","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":23,"gosongying":56,"-":122}},{"path":"src/main/java/housekeeping/hub/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":" * Unmodifiable view of an hub book","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" //ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" * Returns an unmodifiable view of the clients list.","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" * This list will not contain any duplicate clients.","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cClient\u003e getClientList();","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" * Returns an unmodifiable view of the housekeepers list.","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" * This list will not contain any duplicate housekeepers.","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" ObservableList\u003cHousekeeper\u003e getHousekeeperList();","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":4,"gosongying":13,"-":13}},{"path":"src/main/java/housekeeping/hub/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"LimZiJia":2,"-":13}},{"path":"src/main/java/housekeeping/hub/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":2,"gosongying":1,"-":86}},{"path":"src/main/java/housekeeping/hub/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person\u0027s hub in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" * The first character of the hub must not be a whitespace,","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" * @param address A valid hub.","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":5,"-":60}},{"path":"src/main/java/housekeeping/hub/model/person/Area.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.ALLOWED_PREAMBLES_AREA;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person\u0027s area in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidArea(String)}","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":"public class Area {","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Area can only take [north, northeast, east, southeast, south,\"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" + \" southwest, west, northwest] and it should not be blank\";","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" public final String value;","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" * Constructs an {@code area}.","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" *","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" * @param area A valid area.","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" public Area(String area) {","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" requireNonNull(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" checkArgument(isValidArea(area), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" value \u003d area;","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" * Returns true if a given string is a valid area.","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" public static boolean isValidArea(String test) {","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" return test.matches(VALIDATION_REGEX) \u0026\u0026 preambleIsAllowed(test);","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" * Checks if a given command uses a preamble that is allowed. (we define preamble as AREA)","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" * @param preamble","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" * @return true if the preamble is allowed and no if it is not.","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" public static boolean preambleIsAllowed(String preamble) {","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" for (String s : ALLOWED_PREAMBLES_AREA) {","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" if (s.equals(preamble)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" return value;","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" if (!(other instanceof Area)) {","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" Area otherArea \u003d (Area) other;","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" return value.equals(otherArea.value);","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":73,"author":{"gitId":"GERARDJM018"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-28"},{"lineNumber":74,"author":{"gitId":"GERARDJM018"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-28"},{"lineNumber":75,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":76,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":77,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"LimZiJia":4,"moguries":1,"GERARDJM018":72}},{"path":"src/main/java/housekeeping/hub/model/person/Booking.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" * Represents a booking for a housekeeper.","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"public class Booking implements Comparable\u003cBooking\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Booked date and time should be in the format: yyyy-mm-dd (am|pm).\"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" + \"Both date and time fields must be filled. Time field can only take values {am, pm}.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_BOOKED_DATE_AND_TIME \u003d Pattern.compile(\"(\\\\d{4}-\\\\d{2}-\\\\d{2})\\\\s+(am|pm)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" private static final DateTimeFormatter FORMATTER_BOOKED_DATE \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" private final LocalDate bookedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" private final String bookedTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" * Creates a Booking object.","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" * @param bookedDate The booked date.","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" * @param bookedTime The booked time, either \"am\" or \"pm\".","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" public Booking(LocalDate bookedDate, String bookedTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" this.bookedDate \u003d bookedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" this.bookedTime \u003d bookedTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" * Creates a Booking object using a string representation of the booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime String representation of the booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" public Booking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" requireNonNull(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" checkArgument(isValidBookedDateAndTime(bookedDateAndTime), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" bookedDate \u003d retrieveDate(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" bookedTime \u003d retrieveTime(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" * Checks if specified string representation of booked date and time is in a valid format.","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime String representation of the booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" * @return True if valid, false otherwise.","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" public static boolean isValidBookedDateAndTime(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" Matcher matcher \u003d PATTERN_BOOKED_DATE_AND_TIME.matcher(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" return matcher.matches();","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" * Retrieve LocalDate object of booked date from a string representation of booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime String representation of the booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" * @return LocalDate object","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" public static LocalDate retrieveDate(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" Matcher matcher \u003d PATTERN_BOOKED_DATE_AND_TIME.matcher(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" LocalDate parsedDate \u003d LocalDate.ofEpochDay(2024-01-02);","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" String dateString \u003d matcher.group(1);","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" parsedDate \u003d LocalDate.parse(dateString, FORMATTER_BOOKED_DATE);","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" return parsedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" return parsedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" * Retrieve String object of booked time from a string representation of booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime String representation of booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" * @return String object","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" public static String retrieveTime(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" Matcher matcher \u003d PATTERN_BOOKED_DATE_AND_TIME.matcher(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" String timeString \u003d \"\";","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" if (matcher.matches()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" timeString \u003d matcher.group(2);","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" return timeString;","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" public LocalDate getBookedDate() {","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" return this.bookedDate;","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" public String getBookedTime() {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" return this.bookedTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" * Formats booked date and time in this format: yyyy-MM-dd (am|pm)","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" * @return Formatted string of booked date and time","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" public String formatBookedCleaning() {","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" String formattedDateString \u003d bookedDate.format(FORMATTER_BOOKED_DATE);","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" return formattedDateString + \" \" + bookedTime;","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" public int compareTo(Booking other) {","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" LocalDate thisDate \u003d this.getBookedDate();","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" LocalDate otherDate \u003d other.getBookedDate();","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" String thisTime \u003d this.getBookedTime();","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" String otherTime \u003d other.getBookedTime();","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" int dateComparison \u003d thisDate.compareTo(otherDate);","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" if (dateComparison !\u003d 0) {","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" return dateComparison;","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" return thisTime.compareTo(otherTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" public String toString() {","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" return formatBookedCleaning();","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" if (!(other instanceof Booking)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":" Booking otherBooking \u003d (Booking) other;","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"moguries"},"content":" return bookedDate.equals(otherBooking.getBookedDate()) \u0026\u0026 bookedTime.equals(otherBooking.getBookedTime());","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":2,"moguries":140}},{"path":"src/main/java/housekeeping/hub/model/person/BookingList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import java.util.Collections;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * Encapsulates the behaviour of a list of Bookings.","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"public class BookingList {","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_DUPLICATE \u003d \"is unavailable at the specified date and time.\"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" + \" Please input a different date and time.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" public static final String MESSAGE_INVALID_DELETE \u003d \"The booking index provided is invalid.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private static final String MESSAGE_SUCCESS_ADD \u003d \"This booking has successfully been added: %1$s.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" private static final String MESSAGE_SUCCESS_DELETE \u003d \"This booking has successfully been deleted: %1$s.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" private static final String MESSAGE_SUCCESS_LIST \u003d \"Bookings:%1$s\";","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" private ArrayList\u003cBooking\u003e bookings;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" * Constructs an BookingList object with an empty list of bookings.","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public BookingList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" bookings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" * Constructs a BookingList object with another Bookinglist.","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" * @param bookingList other BookingList whose list to copy","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public BookingList(BookingList bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" this.bookings \u003d bookingList.getBookings();","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" * Constructs a BookingList object with an ArrayList\u003cBooking\u003e.","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" * @param bookingList ArrayList\u003cBooking\u003e containing list of bookings","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" public BookingList(ArrayList\u003cBooking\u003e bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" this.bookings \u003d bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" * Creates a new booking with the specified booked date and time.","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime of the booking to be created","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" * @return Booking object","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" public Booking createBooking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" Booking booking \u003d new Booking(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" return booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" * Checks if a booking with the specified booked date and time already exists in the booking list.","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime of booking to be checked","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" * @return True if there is a duplicate, false otherwise","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" public boolean hasDuplicate(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" Booking bookingToCheck \u003d new Booking(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" for (Booking booking : bookings) {","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" if (booking.equals(bookingToCheck)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" * Adds a new booking with the specified date and time to the booking list.","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" * @param bookedDateAndTime of new booking to be added","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" * @return String containing message for successfully adding a booking","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" public String addBooking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" Booking booking \u003d createBooking(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" bookings.add(booking);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" return String.format(MESSAGE_SUCCESS_ADD, booking.toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" * Checks if provided index is valid.","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" * @param index to be checked","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" * @return True if valid, false otherwise","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" public boolean isValidDeleteIndex(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" if (index \u003c\u003d bookings.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" * Deletes the booking at the specified index from the booking list.","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" * @param index of booking to be deleted","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" * @return String containing message for successfully deleting the booking","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" public String deleteBooking(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" int targetIndex \u003d index - 1;","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" Booking targetBooking \u003d bookings.get(targetIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" bookings.remove(targetIndex);","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" return String.format(MESSAGE_SUCCESS_DELETE, targetBooking.toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" * Lists all bookings in the booking list.","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" * @return String containing message of the list of bookings","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" public String listBooking() {","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" Collections.sort(bookings);","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" String listMessage \u003d \"\";","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" for (int i \u003d 0; i \u003c bookings.size(); i++) {","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" String bookingString \u003d (i + 1) + \". \" + bookings.get(i).toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" listMessage +\u003d \"\\n\" + bookingString;","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" return String.format(MESSAGE_SUCCESS_LIST, listMessage);","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" public ArrayList\u003cBooking\u003e getBookings() {","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" if (bookings \u003d\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" return bookings;","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" if (bookings.isEmpty()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" return \"No bookings available\";","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" return bookings.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":1,"moguries":129,"gosongying":8}},{"path":"src/main/java/housekeeping/hub/model/person/BookingSearchPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-04-03"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.StringUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" * Tests that a {@code Housekeeper}\u0027s {@code Area} matches the specified area and that they do not have a booking","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" * at the specified date and time.","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"public class BookingSearchPredicate implements Predicate\u003cHousekeeper\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private final String area;","lastModifiedDate":"2024-04-03"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" private final String bookingToSearch;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" * Constructs a BookingSearchPredicate with the given area and booked date and time.","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" * @param area area to test","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" * @param bookingToSearch booked date and time to test","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public BookingSearchPredicate(String area, String bookingToSearch) {","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" this.area \u003d area;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" this.bookingToSearch \u003d bookingToSearch;","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" public String getArea() {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" return area;","lastModifiedDate":"2024-04-03"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public String getBookingToSearch() {","lastModifiedDate":"2024-04-03"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" return bookingToSearch;","lastModifiedDate":"2024-04-03"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" public boolean test(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" boolean hasArea \u003d StringUtil.containsWordIgnoreCase(housekeeper.getArea().toString(), area);","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" return !housekeeper.hasDuplicateBooking(bookingToSearch) \u0026\u0026 hasArea;","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" if (!(other instanceof BookingSearchPredicate)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" BookingSearchPredicate otherBookingSearchPredicate \u003d (BookingSearchPredicate) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" boolean isSameBooking \u003d bookingToSearch.equals(otherBookingSearchPredicate.bookingToSearch);","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" return isSameBooking;","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" public String toString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" .add(\"booking to search\", bookingToSearch).toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-03"}],"authorContributionMap":{"LimZiJia":3,"moguries":59}},{"path":"src/main/java/housekeeping/hub/model/person/Client.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"public class Client extends Person implements Comparable\u003cClient\u003e {","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" /** The housekeeping details of the client. Used to generate call list by predicting next session date */","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" private HousekeepingDetails housekeepingDetails;","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" * @param name","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" * @param phone","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" * @param email","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" * @param address","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" * @param tags","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" public Client(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" Set\u003cTag\u003e tags, HousekeepingDetails housekeepingDetails, Area area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" super(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" * Returns true if a client has housekeeping details.","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" public boolean hasHousekeepingDetails() {","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" return !housekeepingDetails.isEmpty();","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" public void setHousekeepingDetails(HousekeepingDetails housekeepingDetails) {","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" public LocalDate getNextHousekeepingDate() {","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" return this.housekeepingDetails.getNextHousekeepingDate();","lastModifiedDate":"2024-04-01"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" public boolean hasBooking() {","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" return this.housekeepingDetails.hasBooking();","lastModifiedDate":"2024-04-01"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" * Returns the housekeeping details of the client.","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails getDetails() {","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" return this.housekeepingDetails;","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" if (!(other instanceof Client)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" Client otherPerson \u003d (Client) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" return this.getName().equals(otherPerson.getName())","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getPhone().equals(otherPerson.getPhone())","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getEmail().equals(otherPerson.getEmail())","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getAddress().equals(otherPerson.getAddress())","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 this.getTags().equals(otherPerson.getTags())","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getArea().equals(otherPerson.getArea());","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" public boolean isClient() {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":" public int compareTo(Client other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" if (this.hasHousekeepingDetails() \u0026\u0026 other.hasHousekeepingDetails()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":92,"author":{"gitId":"LimZiJia"},"content":" return this.housekeepingDetails.compareTo(other.housekeepingDetails);","lastModifiedDate":"2024-03-28"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" } else if (this.hasHousekeepingDetails()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" return -1; // this client has housekeeping details but the other does not, so this client is less.","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"LimZiJia"},"content":" } else if (other.hasHousekeepingDetails()) {","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" return 1; // the other client has housekeeping details but this client does not, so this client is greater.","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" return 0; // neither client has housekeeping details, so they are considered equal","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"LimZiJia"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" .add(\"name\", this.getName())","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" .add(\"phone\", this.getPhone())","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"LimZiJia"},"content":" .add(\"email\", this.getEmail())","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" .add(\"hub\", this.getAddress())","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":" .add(\"tags\", this.getTags())","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" .add(\"housekeepingDetails\", this.housekeepingDetails)","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"LimZiJia"},"content":" .toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"LimZiJia":83,"gosongying":30}},{"path":"src/main/java/housekeeping/hub/model/person/ClientComparator.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":" * Compares two clients based predicted next housekeeping date.","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"public class ClientComparator implements Comparator\u003cClient\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" public int compare(Client c1, Client c2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":" return c1.compareTo(c2);","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":13}},{"path":"src/main/java/housekeeping/hub/model/person/ContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.StringUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"public class ContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" private final List\u003cString\u003e keywordsN;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" private final List\u003cString\u003e keywordsAd;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":" private final List\u003cString\u003e keywordsAr;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"GERARDJM018"},"content":" public ContainsKeywordsPredicate(List\u003cString\u003e keywordsN, List\u003cString\u003e keywordsAd, List\u003cString\u003e keywordsAr) {","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"GERARDJM018"},"content":" this.keywordsN \u003d keywordsN;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"GERARDJM018"},"content":" this.keywordsAd \u003d keywordsAd;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"GERARDJM018"},"content":" this.keywordsAr \u003d keywordsAr;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"GERARDJM018"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" boolean hasNameKeyword \u003d true;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" boolean hasAddressKeyword \u003d true;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" boolean hasAreaKeyword \u003d true;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" if (keywordsN.get(0) !\u003d \"\") {","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" hasNameKeyword \u003d keywordsN.stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" if (keywordsAd.get(0) !\u003d \"\") {","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" hasAddressKeyword \u003d keywordsAd.stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getAddress().toString(), keyword));","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" if (keywordsAr.get(0) !\u003d \"\") {","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" hasAreaKeyword \u003d keywordsAr.stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getArea().toString(), keyword));","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" return hasNameKeyword \u0026\u0026 hasAddressKeyword \u0026\u0026 hasAreaKeyword;","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" if (!(other instanceof ContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" ContainsKeywordsPredicate otherContainsKeywordsPredicate \u003d (ContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" boolean isSameName \u003d keywordsN.equals(otherContainsKeywordsPredicate.keywordsN);","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" boolean isSameAddress \u003d keywordsAd.equals(otherContainsKeywordsPredicate.keywordsAd);","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" boolean isSameArea \u003d keywordsAr.equals(otherContainsKeywordsPredicate.keywordsAr);","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" return isSameName \u0026\u0026 isSameAddress \u0026\u0026 isSameArea;","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywordsN).toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"LimZiJia":3,"GERARDJM018":63}},{"path":"src/main/java/housekeeping/hub/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person\u0027s email in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" * @param email A valid email hub.","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":4,"-":75}},{"path":"src/main/java/housekeeping/hub/model/person/Housekeeper.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Represents a Housekeeper in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"public class Housekeeper extends Person {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" private BookingList bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" * @param name","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" * @param phone","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" * @param email","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" * @param address","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" * @param tags","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" public Housekeeper(","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Area area, BookingList bookingList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" super(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" this.bookingList \u003d bookingList !\u003d null ? bookingList : new BookingList();","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public boolean hasDuplicateBooking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" return bookingList.hasDuplicate(bookedDateAndTime);","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" public String addBooking(String bookedDateAndTime) {","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" return \"Housekeeper: [ \" + this.getName() + \" ]\\n\\n\" + bookingList.addBooking(bookedDateAndTime);","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" public boolean isValidDeleteIndex(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" return bookingList.isValidDeleteIndex(index);","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" public String deleteBooking(int index) {","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" return \"Housekeeper: [ \" + this.getName() + \" ]\\n\\n\" + bookingList.deleteBooking(index);","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" public String listBooking() {","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" return \"Housekeeper: [ \" + this.getName() + \" ]\\n\\n\" + bookingList.listBooking();","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" public BookingList getBookingList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" return this.bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" * Returns true if both housekeepers have the same identity and data fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" * This defines a stronger notion of equality between two housekeepers.","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" if (!(other instanceof Housekeeper)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" Housekeeper otherPerson \u003d (Housekeeper) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" return this.getName().equals(otherPerson.getName())","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getPhone().equals(otherPerson.getPhone())","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getEmail().equals(otherPerson.getEmail())","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getAddress().equals(otherPerson.getAddress())","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 this.getTags().equals(otherPerson.getTags())","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" \u0026\u0026 this.getArea().equals(otherPerson.getArea());","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" public boolean isClient() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":85,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails getDetails() {","lastModifiedDate":"2024-03-28"},{"lineNumber":87,"author":{"gitId":"LimZiJia"},"content":" return null;","lastModifiedDate":"2024-03-28"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"LimZiJia":29,"moguries":30,"gosongying":30}},{"path":"src/main/java/housekeeping/hub/model/person/HousekeepingDetails.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import java.time.Period;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Represents the housekeeping details of a client.","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"public class HousekeepingDetails implements Comparable\u003cHousekeepingDetails\u003e {","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern USER_FORMAT \u003d Pattern.compile(\"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d+ (days|weeks|months|years)\");","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" private static final Pattern STORAGE_FORMAT \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" Pattern.compile(\"(null|(\\\\d{4}-\\\\d{2}-\\\\d{2})\\\\s\" // Last housekeeping date","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" + \"(P(?!$)(\\\\d+Y)?(\\\\d+M)?(\\\\d+W)?(\\\\d+D)?)\\\\s\" // Preferred interval","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" + \"(null|\\\\d{4}-\\\\d{2}-\\\\d{2}\\\\s+(am|pm))\\\\s\" // Booking date (can be null)","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" + \"(P(?!$)(\\\\d+Y)?(\\\\d+M)?(\\\\d+W)?(\\\\d+D)?))\"); // Deferment","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" \"Housekeeping details should be in the format: yyyy-mm-dd n (days|weeks|months|years) \"","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" + \"where n is an integer quantity of days, weeks, months or years.\";","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_CONSTRAINTS_STORAGE \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" \"Housekeeping details should be in the format: \u0027yyyy-mm-dd P?Y?M?W?D? yyyy-mm-dd P?Y?M?W?D?\u0027 or \u0027null\u0027\"","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" + \"where P is the period designator, Y is years, M is months, W is weeks D is days. \"","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" + \"YMWD must be in that order. All fields are optional.\"","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" + \"The second date is the booking date and it can be null\";","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" public static final String NO_DETAILS_PROVIDED \u003d \"No housekeeping details provided\";","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public static final HousekeepingDetails empty \u003d new HousekeepingDetails();","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" /** The last date the housekeeping was done. */","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" private LocalDate lastHousekeepingDate;","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" /** Client\u0027s preferred time between housekeeping services. */","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" private Period preferredInterval;","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" /** The date the housekeeping is booked or null if there is no booking */","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" private Booking booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" /** The period to delay calling the client */","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" private Period deferment;","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" /** User must add as \"yyyy-mm-dd n (days|weeks|months|years)\" */","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" public static boolean isValidHousekeepingDetailsUser(String test) {","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" Matcher userInputMatcher \u003d USER_FORMAT.matcher(test);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" return userInputMatcher.matches();","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" /** String can be stored as \"null\" or \"yyyy-mm-dd P?Y?M?W?D? (null|yyyy-mm-dd (am|pm)) P?Y?M?W?D?\" */","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" public static boolean isValidHousekeepingDetailsStorage(String test) {","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":" Matcher storageMatcher \u003d STORAGE_FORMAT.matcher(test);","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" return storageMatcher.matches();","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" * Converts the stored string representation of the housekeeping details to a readable format.","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" * @param details The stored string representation of the housekeeping details.","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" * @return Readable string representation of the housekeeping details.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":" public static String makeStoredDetailsReadable(String details) {","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" if (details.equals(\"null\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" return NO_DETAILS_PROVIDED;","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" else if (!isValidHousekeepingDetailsStorage(details)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" return \"Invalid housekeeping details format\";","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" // Converting Period of preferred interval to a readable format","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" String[] s \u003d details.split(\" \"); // If valid s[0] \u003d lastHousekeepingDate, s[1] \u003d preferredInterval,","lastModifiedDate":"2024-04-01"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" // s[2] \u003d booking, s[3] \u003d deferment","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" String num \u003d s[1].substring(1, s[1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" String unit \u003d s[1].substring(s[1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" String unitString;","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" switch (unit) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" case \"Y\":","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"years\";","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" case \"M\":","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"months\";","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" case \"W\":","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"weeks\";","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" case \"D\":","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"days\";","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" default:","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" unitString \u003d \"Invalid unit\";","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" // Makes null booking readable","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" String booking \u003d s[2].equals(\"null\") ? \"No booking\" : s[2];","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" return String.format(\"Last housekeeping: %s\\nPreferred interval: %s %s\\nBooking date: %s\",","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" s[0], num, unitString, booking);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"GERARDJM018"},"content":" * Converts the stored string representation of the housekeeping details with deferment to a readable format.","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":" * @param details The stored string representation of the housekeeping details.","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" * @return Readable string representation of the housekeeping details.","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"GERARDJM018"},"content":" public static String makeStoredDetailsReadableWithDeferment(String details) {","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"LimZiJia"},"content":" if (details.equals(\"null\")) {","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"LimZiJia"},"content":" return NO_DETAILS_PROVIDED;","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" else if (!isValidHousekeepingDetailsStorage(details)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":107,"author":{"gitId":"LimZiJia"},"content":" return \"Invalid housekeeping details format\";","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" // Converting Period of preferred interval to a readable format","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"LimZiJia"},"content":" String[] s \u003d details.split(\" \"); // If valid s[0] \u003d lastHousekeepingDate, s[1] \u003d preferredInterval,","lastModifiedDate":"2024-04-01"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":" // s[2] \u003d booking, s[3] \u003d deferment","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"GERARDJM018"},"content":" String numPI \u003d s[1].substring(1, s[1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"GERARDJM018"},"content":" String unitPI \u003d s[1].substring(s[1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"GERARDJM018"},"content":" String unitStringPI;","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"GERARDJM018"},"content":" switch (unitPI) {","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"LimZiJia"},"content":" case \"Y\":","lastModifiedDate":"2024-03-28"},{"lineNumber":118,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"years\";","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":120,"author":{"gitId":"LimZiJia"},"content":" case \"M\":","lastModifiedDate":"2024-03-28"},{"lineNumber":121,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"months\";","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":123,"author":{"gitId":"LimZiJia"},"content":" case \"W\":","lastModifiedDate":"2024-03-28"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"weeks\";","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":126,"author":{"gitId":"LimZiJia"},"content":" case \"D\":","lastModifiedDate":"2024-03-28"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"days\";","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"LimZiJia"},"content":" break;","lastModifiedDate":"2024-03-28"},{"lineNumber":129,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-03-28"},{"lineNumber":130,"author":{"gitId":"GERARDJM018"},"content":" unitStringPI \u003d \"Invalid unit\";","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"GERARDJM018"},"content":" String numD \u003d s[s.length-1].substring(1, s[s.length-1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"GERARDJM018"},"content":" String unitD\u003d s[s.length-1].substring(s[s.length-1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"GERARDJM018"},"content":" String unitStringD;","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"GERARDJM018"},"content":" switch (unitD) {","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"GERARDJM018"},"content":" case \"Y\":","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"years\";","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"GERARDJM018"},"content":" case \"M\":","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"months\";","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"GERARDJM018"},"content":" case \"W\":","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"weeks\";","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"GERARDJM018"},"content":" case \"D\":","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"days\";","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"GERARDJM018"},"content":" default:","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"GERARDJM018"},"content":" unitStringD \u003d \"Invalid unit\";","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":151,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":152,"author":{"gitId":"LimZiJia"},"content":" // Makes null booking readable","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"LimZiJia"},"content":" String booking \u003d s[2].equals(\"null\") ? \"No booking\" : s[2];","lastModifiedDate":"2024-03-31"},{"lineNumber":154,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" return String.format(\"Last housekeeping: %s, Preferred interval: %s %s, Booking date: %s, Deferment: %s %s\",","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"GERARDJM018"},"content":" s[0], numPI, unitStringPI, booking, numD, unitStringD);","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":158,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":159,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":160,"author":{"gitId":"LimZiJia"},"content":" * Creates a HousekeepingDetails object with no details provided.","lastModifiedDate":"2024-03-31"},{"lineNumber":161,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":162,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails() {","lastModifiedDate":"2024-03-31"},{"lineNumber":163,"author":{"gitId":"LimZiJia"},"content":" this.lastHousekeepingDate \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":164,"author":{"gitId":"LimZiJia"},"content":" this.preferredInterval \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":165,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":167,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":168,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":169,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":170,"author":{"gitId":"LimZiJia"},"content":" * Creates a HousekeepingDetails object.","lastModifiedDate":"2024-03-31"},{"lineNumber":171,"author":{"gitId":"LimZiJia"},"content":" * @param lastHousekeepingDate","lastModifiedDate":"2024-03-31"},{"lineNumber":172,"author":{"gitId":"LimZiJia"},"content":" * @param preferredInterval","lastModifiedDate":"2024-03-31"},{"lineNumber":173,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":174,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails(LocalDate lastHousekeepingDate, Period preferredInterval) {","lastModifiedDate":"2024-03-31"},{"lineNumber":175,"author":{"gitId":"LimZiJia"},"content":" this.lastHousekeepingDate \u003d lastHousekeepingDate;","lastModifiedDate":"2024-03-31"},{"lineNumber":176,"author":{"gitId":"LimZiJia"},"content":" this.preferredInterval \u003d preferredInterval;","lastModifiedDate":"2024-03-31"},{"lineNumber":177,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d Period.ZERO;","lastModifiedDate":"2024-03-31"},{"lineNumber":179,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":180,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":181,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":182,"author":{"gitId":"LimZiJia"},"content":" * Creates a HousekeepingDetails object using a string representation of the housekeeping details used for storage.","lastModifiedDate":"2024-03-31"},{"lineNumber":183,"author":{"gitId":"LimZiJia"},"content":" * @param details A string representation of the housekeeping details in the format: \"null\" or","lastModifiedDate":"2024-03-31"},{"lineNumber":184,"author":{"gitId":"LimZiJia"},"content":" * yyyy-mm-dd P?Y?M?W?D? yyyy-mm-dd P?Y?M?W?D?","lastModifiedDate":"2024-03-31"},{"lineNumber":185,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":186,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails(String details) {","lastModifiedDate":"2024-03-31"},{"lineNumber":187,"author":{"gitId":"LimZiJia"},"content":" if (details.equals(\"null\")) {","lastModifiedDate":"2024-03-31"},{"lineNumber":188,"author":{"gitId":"LimZiJia"},"content":" this.lastHousekeepingDate \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":189,"author":{"gitId":"LimZiJia"},"content":" this.preferredInterval \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":190,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":192,"author":{"gitId":"LimZiJia"},"content":" } else {","lastModifiedDate":"2024-03-31"},{"lineNumber":193,"author":{"gitId":"LimZiJia"},"content":" // Using groups to extract details","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"LimZiJia"},"content":" Matcher storageMatcher \u003d STORAGE_FORMAT.matcher(details);","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"LimZiJia"},"content":" storageMatcher.matches();","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"LimZiJia"},"content":" this.lastHousekeepingDate \u003d LocalDate.parse(storageMatcher.group(2));","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"LimZiJia"},"content":" this.preferredInterval \u003d Period.parse(storageMatcher.group(3));","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d storageMatcher.group(8).equals(\"null\") ? null : new Booking(storageMatcher.group(8));","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d Period.parse(storageMatcher.group(10));","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":201,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":202,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":203,"author":{"gitId":"LimZiJia"},"content":" /** Checks if the housekeeping details is empty */","lastModifiedDate":"2024-03-31"},{"lineNumber":204,"author":{"gitId":"LimZiJia"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-31"},{"lineNumber":205,"author":{"gitId":"LimZiJia"},"content":" return this.equals(empty);","lastModifiedDate":"2024-03-31"},{"lineNumber":206,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":207,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":208,"author":{"gitId":"LimZiJia"},"content":" public boolean hasBooking() {","lastModifiedDate":"2024-03-31"},{"lineNumber":209,"author":{"gitId":"LimZiJia"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-04-04"},{"lineNumber":210,"author":{"gitId":"LimZiJia"},"content":" return booking !\u003d null \u0026\u0026 booking.getBookedDate().isAfter(currentDate);","lastModifiedDate":"2024-04-04"},{"lineNumber":211,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":212,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":213,"author":{"gitId":"LimZiJia"},"content":" public void setBooking(Booking booking) {","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":216,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":217,"author":{"gitId":"LimZiJia"},"content":" public void deleteBooking() {","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"LimZiJia"},"content":" this.booking \u003d null;","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":220,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":221,"author":{"gitId":"LimZiJia"},"content":" public void addDeferment(Period deferment) {","lastModifiedDate":"2024-03-31"},{"lineNumber":222,"author":{"gitId":"LimZiJia"},"content":" this.deferment \u003d this.deferment.plus(deferment);","lastModifiedDate":"2024-03-31"},{"lineNumber":223,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":224,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":225,"author":{"gitId":"LimZiJia"},"content":" public LocalDate getNextHousekeepingDate() {","lastModifiedDate":"2024-03-31"},{"lineNumber":226,"author":{"gitId":"LimZiJia"},"content":" if (lastHousekeepingDate \u003d\u003d null || preferredInterval \u003d\u003d null || deferment \u003d\u003d null) {","lastModifiedDate":"2024-04-01"},{"lineNumber":227,"author":{"gitId":"LimZiJia"},"content":" return LocalDate.MAX; // If not enough details available, the client will not be called","lastModifiedDate":"2024-04-01"},{"lineNumber":228,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":229,"author":{"gitId":"LimZiJia"},"content":" return lastHousekeepingDate.plus(preferredInterval).plus(deferment);","lastModifiedDate":"2024-03-31"},{"lineNumber":230,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":231,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":232,"author":{"gitId":"GERARDJM018"},"content":" public LocalDate getLastHousekeepingDate() {","lastModifiedDate":"2024-04-03"},{"lineNumber":233,"author":{"gitId":"GERARDJM018"},"content":" return lastHousekeepingDate;","lastModifiedDate":"2024-04-03"},{"lineNumber":234,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":235,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":236,"author":{"gitId":"GERARDJM018"},"content":" public Period getDeferment() {","lastModifiedDate":"2024-04-03"},{"lineNumber":237,"author":{"gitId":"GERARDJM018"},"content":" return deferment;","lastModifiedDate":"2024-04-03"},{"lineNumber":238,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":239,"author":{"gitId":"GERARDJM018"},"content":" public Booking getBooking() {","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"GERARDJM018"},"content":" return booking;","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":242,"author":{"gitId":"GERARDJM018"},"content":" public String getDefermentToString() {","lastModifiedDate":"2024-04-03"},{"lineNumber":243,"author":{"gitId":"GERARDJM018"},"content":" String details \u003d this.toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":244,"author":{"gitId":"GERARDJM018"},"content":" String[] s \u003d details.split(\" \"); // If valid s[0] \u003d lastHousekeepingDate, s[1] \u003d preferredInterval,","lastModifiedDate":"2024-04-03"},{"lineNumber":245,"author":{"gitId":"GERARDJM018"},"content":" // s[2] \u003d bookingDate, s[4] \u003d deferment","lastModifiedDate":"2024-04-04"},{"lineNumber":246,"author":{"gitId":"GERARDJM018"},"content":" String num \u003d s[s.length-1].substring(1, s[3].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"GERARDJM018"},"content":" String unit \u003d s[s.length-1].substring(s[s.length-1].length() - 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"GERARDJM018"},"content":" String unitString;","lastModifiedDate":"2024-04-03"},{"lineNumber":249,"author":{"gitId":"GERARDJM018"},"content":" switch (unit) {","lastModifiedDate":"2024-04-03"},{"lineNumber":250,"author":{"gitId":"GERARDJM018"},"content":" case \"Y\":","lastModifiedDate":"2024-04-03"},{"lineNumber":251,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"years\";","lastModifiedDate":"2024-04-03"},{"lineNumber":252,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":253,"author":{"gitId":"GERARDJM018"},"content":" case \"M\":","lastModifiedDate":"2024-04-03"},{"lineNumber":254,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"months\";","lastModifiedDate":"2024-04-03"},{"lineNumber":255,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":256,"author":{"gitId":"GERARDJM018"},"content":" case \"W\":","lastModifiedDate":"2024-04-03"},{"lineNumber":257,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"weeks\";","lastModifiedDate":"2024-04-03"},{"lineNumber":258,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":259,"author":{"gitId":"GERARDJM018"},"content":" case \"D\":","lastModifiedDate":"2024-04-03"},{"lineNumber":260,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"days\";","lastModifiedDate":"2024-04-03"},{"lineNumber":261,"author":{"gitId":"GERARDJM018"},"content":" break;","lastModifiedDate":"2024-04-03"},{"lineNumber":262,"author":{"gitId":"GERARDJM018"},"content":" default:","lastModifiedDate":"2024-04-03"},{"lineNumber":263,"author":{"gitId":"GERARDJM018"},"content":" unitString \u003d \"Invalid unit\";","lastModifiedDate":"2024-04-03"},{"lineNumber":264,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":265,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":266,"author":{"gitId":"GERARDJM018"},"content":" return num + \" \" + unitString;","lastModifiedDate":"2024-04-03"},{"lineNumber":267,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":268,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":269,"author":{"gitId":"GERARDJM018"},"content":" public Period getPreferredInterval() {","lastModifiedDate":"2024-04-03"},{"lineNumber":270,"author":{"gitId":"GERARDJM018"},"content":" return preferredInterval;","lastModifiedDate":"2024-04-03"},{"lineNumber":271,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":272,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":273,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":274,"author":{"gitId":"LimZiJia"},"content":" public int compareTo(HousekeepingDetails other) {","lastModifiedDate":"2024-03-28"},{"lineNumber":275,"author":{"gitId":"LimZiJia"},"content":" return this.getNextHousekeepingDate().compareTo(other.getNextHousekeepingDate());","lastModifiedDate":"2024-03-28"},{"lineNumber":276,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":277,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":278,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":279,"author":{"gitId":"LimZiJia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":280,"author":{"gitId":"LimZiJia"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-31"},{"lineNumber":281,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-03-31"},{"lineNumber":282,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":283,"author":{"gitId":"LimZiJia"},"content":" if (!(other instanceof HousekeepingDetails)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":284,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-03-31"},{"lineNumber":285,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":286,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails otherDetails \u003d (HousekeepingDetails) other;","lastModifiedDate":"2024-03-31"},{"lineNumber":287,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":288,"author":{"gitId":"LimZiJia"},"content":" // First predicate of each \u0026\u0026 is for null values, second predicate is for non-null values","lastModifiedDate":"2024-04-01"},{"lineNumber":289,"author":{"gitId":"LimZiJia"},"content":" return ((lastHousekeepingDate \u003d\u003d otherDetails.lastHousekeepingDate","lastModifiedDate":"2024-04-01"},{"lineNumber":290,"author":{"gitId":"LimZiJia"},"content":" || lastHousekeepingDate.equals(otherDetails.lastHousekeepingDate))","lastModifiedDate":"2024-04-01"},{"lineNumber":291,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 (preferredInterval \u003d\u003d otherDetails.preferredInterval","lastModifiedDate":"2024-04-01"},{"lineNumber":292,"author":{"gitId":"LimZiJia"},"content":" ||preferredInterval.equals(otherDetails.preferredInterval))","lastModifiedDate":"2024-04-01"},{"lineNumber":293,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 (booking \u003d\u003d otherDetails.booking","lastModifiedDate":"2024-04-02"},{"lineNumber":294,"author":{"gitId":"LimZiJia"},"content":" || booking.equals(otherDetails.booking))","lastModifiedDate":"2024-04-02"},{"lineNumber":295,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 (deferment \u003d\u003d otherDetails.deferment","lastModifiedDate":"2024-04-01"},{"lineNumber":296,"author":{"gitId":"LimZiJia"},"content":" || deferment.equals(otherDetails.deferment)));","lastModifiedDate":"2024-04-01"},{"lineNumber":297,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":298,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":299,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-28"},{"lineNumber":300,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-03-28"},{"lineNumber":301,"author":{"gitId":"LimZiJia"},"content":" if (this.equals(empty)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":302,"author":{"gitId":"LimZiJia"},"content":" return \"null\";","lastModifiedDate":"2024-04-01"},{"lineNumber":303,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":304,"author":{"gitId":"LimZiJia"},"content":" return lastHousekeepingDate + \" \" + preferredInterval + \" \" + booking + \" \" + deferment;","lastModifiedDate":"2024-04-02"},{"lineNumber":305,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":306,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"LimZiJia":193,"gosongying":39,"GERARDJM018":74}},{"path":"src/main/java/housekeeping/hub/model/person/LeadsFilterPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-04-01"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-04-01"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"public class LeadsFilterPredicate implements Predicate\u003cClient\u003e {","lastModifiedDate":"2024-04-01"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" public LeadsFilterPredicate() {}","lastModifiedDate":"2024-04-01"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" * Tests that a {@code Client}\u0027s predicted next housekeeping date is \u003c\u003d current date,","lastModifiedDate":"2024-04-01"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" * and they do not have a booking yet. Also, clients without housekeeping details should be tested false.","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" public boolean test(Client client) {","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" return !client.hasBooking()","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" \u0026\u0026 client.getNextHousekeepingDate().isBefore(currentDate)","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" || client.getNextHousekeepingDate().isEqual(currentDate);","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-01"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" if (!(other instanceof LeadsFilterPredicate)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" return new ToStringBuilder(this).toString();","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-04-01"}],"authorContributionMap":{"LimZiJia":45}},{"path":"src/main/java/housekeeping/hub/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person\u0027s name in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" * The first character of the hub must not be a whitespace,","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":4,"-":63}},{"path":"src/main/java/housekeeping/hub/model/person/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.StringUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"LimZiJia":3,"-":41}},{"path":"src/main/java/housekeeping/hub/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"public abstract class Person {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" private final Area area;","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Area area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" this.area \u003d area;","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" public Area getArea() {","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" return area;","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" return Objects.hash(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" * Returns true if it is a Client, false if it is a Housekeeper.","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" public abstract boolean isClient();","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" public abstract HousekeepingDetails getDetails();","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":6,"gosongying":7,"-":76,"GERARDJM018":5}},{"path":"src/main/java/housekeeping/hub/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person\u0027s phone number in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":3,"-":58}},{"path":"src/main/java/housekeeping/hub/model/person/Type.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.ALLOWED_PREAMBLES_TYPE;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":" * Represents a Person\u0027s Type in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidType(String)}","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"public class Type {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Type can either be \\\"client\\\" or \\\"housekeeper\\\"\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":" /*","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" * The first character of the type must not be a whitespace,","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" public final String value;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" * Constructs an {@code Type}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" * @param type A valid type.","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" public Type(String type) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" requireNonNull(type);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" checkArgument(isValidType(type), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" value \u003d type;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" * Returns true if a given string is a valid type.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" public static boolean isValidType(String test) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" return test.matches(VALIDATION_REGEX) \u0026\u0026 preambleIsAllowed(test);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" * Checks if a given command uses a preamble that is allowed. (we define preamble as TYPE)","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" * @param preamble","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" * @return true if the preamble is allowed and no if it is not.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":" public static boolean preambleIsAllowed(String preamble) {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" for (String s : ALLOWED_PREAMBLES_TYPE) {","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" if (s.equals(preamble)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" return value;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"LimZiJia"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" if (!(other instanceof Type)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"LimZiJia"},"content":" Type otherType \u003d (Type) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":" return value.equals(otherType.value);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"LimZiJia":80,"GERARDJM018":1}},{"path":"src/main/java/housekeeping/hub/model/person/TypePredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"GERARDJM018"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"GERARDJM018"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"GERARDJM018"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"GERARDJM018"},"content":"public class TypePredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"GERARDJM018"},"content":" private final String type;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"GERARDJM018"},"content":" public TypePredicate(String type) {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"GERARDJM018"},"content":" this.type \u003d type;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" * Returns the type of the predicate.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public String getType() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" return type;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"GERARDJM018"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"GERARDJM018"},"content":" if (type.equals(\"housekeeper\")) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"GERARDJM018"},"content":" return !person.isClient();","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"GERARDJM018"},"content":" } else if (type.equals(\"client\")) {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"GERARDJM018"},"content":" return person.isClient();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" if (!(other instanceof TypePredicate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" TypePredicate otherTypePredicate \u003d (TypePredicate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" return type.equals(otherTypePredicate.type);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" return new ToStringBuilder(this).add(\"type\", type).toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"LimZiJia":2,"moguries":3,"gosongying":8,"GERARDJM018":42}},{"path":"src/main/java/housekeeping/hub/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"public class UniquePersonList\u003cT extends Person\u003e implements Iterable\u003cT\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" private final ObservableList\u003cT\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" private final ObservableList\u003cT\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" public boolean contains(T toCheck) {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" public void add(T toAdd) {","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" * Sorts the persons in the list using the provided comparator.","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" public void sort(Comparator\u003c? super T\u003e comparator) {","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" FXCollections.sort(internalList, comparator);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" public void setPerson(T target, T editedPerson) {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" public void remove(T toRemove) {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" public void setPersons(UniquePersonList\u003cT\u003e replacement) {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" public void setPersons(List\u003cT\u003e persons) {","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cT\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" public Iterator\u003cT\u003e iterator() {","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cT\u003e otherUniquePersonList \u003d (UniquePersonList\u003cT\u003e) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"gosongying"},"content":" private boolean personsAreUnique(List\u003cT\u003e persons) {","lastModifiedDate":"2024-03-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":12,"gosongying":14,"-":133}},{"path":"src/main/java/housekeeping/hub/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person.exceptions;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"LimZiJia":1,"-":10}},{"path":"src/main/java/housekeeping/hub/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person.exceptions;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"LimZiJia":1,"-":5}},{"path":"src/main/java/housekeeping/hub/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":" * Represents a Tag in the hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" \"Tags names should be alphanumeric and can contain spaces, hyphens and underscores.\";","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum} -_]+\";","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"LimZiJia":6,"-":57}},{"path":"src/main/java/housekeeping/hub/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.ParserUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static Client[] getSampleClients() {","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" return new Client[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), getTagSet(\"friends\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-01-30 2 months\")), new Area(\"east\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-02-28 2 weeks\")), new Area(\"east\")),","lastModifiedDate":"2024-04-01"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), getTagSet(\"neighbours\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-03-03 1 years\")), new Area(\"east\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), getTagSet(\"family\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-03-11 39 days\")), new Area(\"east\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), getTagSet(\"classmates\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.of(\"2024-04-01 6 months\")), new Area(\"east\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" new Client(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), getTagSet(\"colleagues\"),","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" getHousekeepingDetails(Optional.empty()), new Area(\"east\"))","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" public static Housekeeper[] getSampleHousekeepers() {","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" return new Housekeeper[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"John Doe\"), new Phone(\"12345678\"), new Email(\"johndoe@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 123 Woodlands Street 45, #05-12\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" getTagSet(\"cleaning\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Jane Smith\"), new Phone(\"98765432\"), new Email(\"janesmith@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 456 Jurong East Avenue 89, #08-15\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" getTagSet(\"part-time\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Michael Tan\"), new Phone(\"87654321\"), new Email(\"michaeltan@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 789 Bukit Timah Road, #02-34\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" getTagSet(\"full-time\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Emily Lee\"), new Phone(\"98761234\"), new Email(\"emilylee@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 234 Sengkang Street 12, #07-23\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" getTagSet(\"pet-friendly\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Daniel Lim\"), new Phone(\"87651234\"), new Email(\"daniellim@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 345 Yishun Avenue 67, #10-45\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" getTagSet(\"experienced\"), new Area(\"east\"), new BookingList()),","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" new Housekeeper(new Name(\"Samantha Tan\"), new Phone(\"76543210\"), new Email(\"samanthatan@example.com\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" new Address(\"Blk 678 Clementi Road, #03-21\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" getTagSet(\"trustworthy\"), new Area(\"east\"), new BookingList())","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" for (Client sampleClient : getSampleClients()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" sampleAb.addClient(sampleClient);","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" for (Housekeeper sampleHousekeeper : getSampleHousekeepers()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" sampleAb.addHousekeeper(sampleHousekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" public static HousekeepingDetails getHousekeepingDetails(Optional\u003cString\u003e details) {","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"LimZiJia"},"content":" try {","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"LimZiJia"},"content":" return ParserUtil.parseHousekeepingDetails(details);","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" return null;","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"LimZiJia":29,"gosongying":43,"-":29}},{"path":"src/main/java/housekeeping/hub/storage/AddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":" * Represents a storage for {@link housekeeping.hub.model.AddressBook}.","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Returns AddressBook data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"LimZiJia":4,"-":40}},{"path":"src/main/java/housekeeping/hub/storage/JsonAdaptedBooking.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Booking;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" * Jackson-friendly version of {@link Booking}.","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"public class JsonAdaptedBooking {","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private final String booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" * Constructs a {@code JsonAdaptedBooking} with the given {@code booking}.","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" @JsonCreator","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" public JsonAdaptedBooking(String booking) {","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" * Converts a given {@code Booking} into this class for Jackson use.","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" @JsonCreator","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" public JsonAdaptedBooking(Booking source) {","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" booking \u003d source.toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" @JsonValue","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" public String getBooking() {","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" return booking;","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" * Converts this Jackson-friendly adapted booking object into the model\u0027s {@code Booking} object.","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted booking.","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" public Booking toModelType() throws IllegalValueException {","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" if (!Booking.isValidBookedDateAndTime(booking)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" throw new IllegalValueException(Booking.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" return new Booking(booking);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":3,"moguries":44}},{"path":"src/main/java/housekeeping/hub/storage/JsonAdaptedClient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"public class JsonAdaptedClient extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" protected final JsonAdaptedDetails details;","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" * Constructs a {@code JsonAdaptedClient} with the given client details.","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" @JsonCreator","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public JsonAdaptedClient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"hub\") String address,","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"details\") JsonAdaptedDetails details, @JsonProperty(\"area\") String area) {","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" super(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" this.details \u003d details;","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" * Converts a given {@code Client} into this class for Jackson use.","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" public JsonAdaptedClient(Client source) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" super(source);","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" details \u003d new JsonAdaptedDetails(source.getDetails());","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" public Client toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LimZiJia"},"content":" if (details \u003d\u003d null) {","lastModifiedDate":"2024-03-28"},{"lineNumber":86,"author":{"gitId":"LimZiJia"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-28"},{"lineNumber":87,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails.class.getSimpleName()));","lastModifiedDate":"2024-03-28"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" final HousekeepingDetails modelDetail \u003d details.toModelType();","lastModifiedDate":"2024-03-28"},{"lineNumber":90,"author":{"gitId":"GERARDJM018"},"content":" final Area modelArea \u003d new Area(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" ","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" return new Client(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelDetail, modelArea);","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LimZiJia":19,"gosongying":74,"GERARDJM018":1}},{"path":"src/main/java/housekeeping/hub/storage/JsonAdaptedDetails.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-28"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-28"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"/**","lastModifiedDate":"2024-03-28"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":" * Jackson-friendly version of {@link HousekeepingDetails}.","lastModifiedDate":"2024-03-28"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"public class JsonAdaptedDetails {","lastModifiedDate":"2024-03-28"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" private final String details;","lastModifiedDate":"2024-03-28"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" * Constructs a {@code JsonAdaptedDetails} with the given {@code details}.","lastModifiedDate":"2024-03-28"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":" @JsonCreator","lastModifiedDate":"2024-03-28"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" public JsonAdaptedDetails(String details) {","lastModifiedDate":"2024-03-28"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":" this.details \u003d details;","lastModifiedDate":"2024-03-28"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-28"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" * Converts a given {@code HousekeepingDetails} into this class for Jackson use.","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-28"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" public JsonAdaptedDetails(HousekeepingDetails source) {","lastModifiedDate":"2024-03-28"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" this.details \u003d source.toString();","lastModifiedDate":"2024-03-28"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" @JsonValue","lastModifiedDate":"2024-03-28"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" public String getDetails() {","lastModifiedDate":"2024-03-28"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":" return details;","lastModifiedDate":"2024-03-28"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" public HousekeepingDetails toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-28"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":" if (!HousekeepingDetails.isValidHousekeepingDetailsStorage(details)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" throw new IllegalValueException(HousekeepingDetails.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-28"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" return new HousekeepingDetails(details);","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-03-28"}],"authorContributionMap":{"LimZiJia":42}},{"path":"src/main/java/housekeeping/hub/storage/JsonAdaptedHousekeeper.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Booking;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"public class JsonAdaptedHousekeeper extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" protected final ArrayList\u003cJsonAdaptedBooking\u003e bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" * Constructs a {@code JsonAdaptedHousekeeper} with the given housekeeper details.","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" @JsonCreator","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" public JsonAdaptedHousekeeper(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"hub\") String address,","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"area\") String area,","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" @JsonProperty(\"booking list\") ArrayList\u003cJsonAdaptedBooking\u003e bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" super(name, phone, email, address, tags, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" this.bookingList \u003d bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" * Converts a given {@code Housekeeper} into this class for Jackson use.","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" public JsonAdaptedHousekeeper(Housekeeper source) {","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" super(source);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" ArrayList\u003cJsonAdaptedBooking\u003e bookingList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" for (Booking booking : source.getBookingList().getBookings()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" JsonAdaptedBooking jsonAdaptedBooking \u003d new JsonAdaptedBooking(booking);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" bookingList.add(jsonAdaptedBooking);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" this.bookingList \u003d bookingList;","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" public Housekeeper toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"GERARDJM018"},"content":" final Area modelArea \u003d new Area(area);","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" final ArrayList\u003cBooking\u003e personBookings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" for (JsonAdaptedBooking booking : bookingList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" personBookings.add(booking.toModelType());","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" final BookingList modelBookingList \u003d new BookingList(personBookings);","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" return new Housekeeper(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelArea, modelBookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LimZiJia":12,"moguries":19,"gosongying":72,"GERARDJM018":1}},{"path":"src/main/java/housekeeping/hub/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"abstract class JsonAdaptedPerson {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" protected static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" protected final String name;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" protected final String phone;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" protected final String email;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" protected final String address;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" protected final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"GERARDJM018"},"content":" protected final String area;","lastModifiedDate":"2024-03-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"hub\") String address,","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"area\") String area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" this.area \u003d area;","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" area \u003d source.getArea().value;","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" abstract public Person toModelType() throws IllegalValueException;","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":4,"gosongying":9,"-":48,"GERARDJM018":3}},{"path":"src/main/java/housekeeping/hub/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"class JsonAdaptedTag {","lastModifiedDate":"2018-12-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(String tagName) {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public JsonAdaptedTag(Tag source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" tagName \u003d source.tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @JsonValue","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public String getTagName() {","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return tagName;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Tag toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(tagName)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new Tag(tagName);","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":3,"-":45}},{"path":"src/main/java/housekeeping/hub/storage/JsonAddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.FileUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.JsonUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public JsonAddressBookStorage(Path filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":7,"-":73}},{"path":"src/main/java/housekeeping/hub/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" private final List\u003cJsonAdaptedClient\u003e clients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" private final List\u003cJsonAdaptedHousekeeper\u003e housekeepers \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"clients\") List\u003cJsonAdaptedClient\u003e clients,","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" @JsonProperty(\"housekeepers\") List\u003cJsonAdaptedHousekeeper\u003e housekeepers) {","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" this.clients.addAll(clients);","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" this.housekeepers.addAll(housekeepers);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" clients.addAll(source.getClientList().stream()","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" .map(JsonAdaptedClient::new)","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" housekeepers.addAll(source.getHousekeeperList().stream()","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" .map(JsonAdaptedHousekeeper::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":" * Converts this hub book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" for (JsonAdaptedClient jsonAdaptedClient: clients) {","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" Client client \u003d jsonAdaptedClient.toModelType();","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" if (addressBook.hasClient(client)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(client);","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" for (JsonAdaptedHousekeeper jsonAdaptedHousekeeper: housekeepers) {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeper \u003d jsonAdaptedHousekeeper.toModelType();","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" if (addressBook.hasHousekeeper(housekeeper)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(housekeeper);","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":7,"gosongying":22,"-":45}},{"path":"src/main/java/housekeeping/hub/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.JsonUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A class to access UserPrefs stored in the hard disk as a json file","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorage implements UserPrefsStorage {","lastModifiedDate":"2016-10-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public JsonUserPrefsStorage(Path filePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Similar to {@link #readUserPrefs()}","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(prefsFilePath, UserPrefs.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"LimZiJia":5,"-":42}},{"path":"src/main/java/housekeeping/hub/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"LimZiJia":5,"-":27}},{"path":"src/main/java/housekeeping/hub/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2016-10-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":6,"-":71}},{"path":"src/main/java/housekeeping/hub/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" * Represents a storage for {@link housekeeping.hub.model.UserPrefs}.","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface UserPrefsStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" * Saves the given {@link housekeeping.hub.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"LimZiJia":6,"-":30}},{"path":"src/main/java/housekeeping/hub/ui/ClientCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"public class ClientCard extends PersonCard {","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" private static final String FXML \u003d \"ClientListCard.fxml\";","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":" @FXML","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":" private Label details;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" public ClientCard(Client client, int displayedIndex) {","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" super(client, displayedIndex, FXML);","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" HousekeepingDetails housekeepingDetails \u003d client.getDetails();","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" if (housekeepingDetails \u003d\u003d null) {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" details.setText(HousekeepingDetails.NO_DETAILS_PROVIDED);","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" details.setText(HousekeepingDetails.makeStoredDetailsReadable(housekeepingDetails.toString()));","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":3,"gosongying":20}},{"path":"src/main/java/housekeeping/hub/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.CommandResult;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" * @see housekeeping.hub.logic.Logic#execute(String)","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"LimZiJia":5,"-":80}},{"path":"src/main/java/housekeeping/hub/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w09-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LimZiJia":2,"gosongying":1,"-":99}},{"path":"src/main/java/housekeeping/hub/ui/HousekeeperCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"public class HousekeeperCard extends PersonCard {","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":" private static final String FXML \u003d \"HousekeeperListCard.fxml\";","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":" public HousekeeperCard(Housekeeper housekeeper, int displayedIndex) {","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":" super(housekeeper, displayedIndex, FXML);","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"LimZiJia":2,"gosongying":8}},{"path":"src/main/java/housekeeping/hub/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Logic;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.CommandResult;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" private PersonListPanel\u003cClient\u003e clientListPanel;","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" private PersonListPanel\u003cHousekeeper\u003e housekeeperListPanel;","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" private StackPane clientListPanelPlaceholder;","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" private StackPane housekeeperListPanelPlaceholder;","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" //@FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" //private HBox clientAndHousekeeperLists;","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" clientListPanel \u003d new PersonListPanel\u003c\u003e(logic.getFilteredClientList());","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" housekeeperListPanel \u003d new PersonListPanel\u003c\u003e(logic.getFilteredHousekeeperList());","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" clientListPanelPlaceholder.getChildren().add(clientListPanel.getRoot());","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" housekeeperListPanelPlaceholder.getChildren().add(housekeeperListPanel.getRoot());","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":177,"author":{"gitId":"gosongying"},"content":" public PersonListPanel\u003cClient\u003e getClientListPanel() {","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"gosongying"},"content":" return clientListPanel;","lastModifiedDate":"2024-03-26"},{"lineNumber":179,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"gosongying"},"content":" public PersonListPanel\u003cHousekeeper\u003e getHousekeeperListPanel() {","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"gosongying"},"content":" return housekeeperListPanel;","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"LimZiJia"},"content":" * @see housekeeping.hub.logic.Logic#execute(String)","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LimZiJia":10,"gosongying":19,"-":182}},{"path":"src/main/java/housekeeping/hub/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"abstract public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" //private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" private Label area;","lastModifiedDate":"2024-03-28"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" @FXML","lastModifiedDate":"2024-03-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" public PersonCard(Person person, int displayedIndex, String FXML) {","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" area.setText(person.getArea().value);","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"LimZiJia":2,"gosongying":3,"-":54,"GERARDJM018":3}},{"path":"src/main/java/housekeeping/hub/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"public class PersonListPanel\u003cT extends Person\u003e extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" private ListView\u003cT\u003e personListView;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public PersonListPanel(ObservableList\u003cT\u003e personList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" class PersonListViewCell extends ListCell\u003cT\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" protected void updateItem(T person, boolean empty) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" if (person.isClient()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" setGraphic(new ClientCard((Client) person, getIndex() + 1).getRoot());","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" setGraphic(new HousekeeperCard((Housekeeper) person, getIndex() + 1).getRoot());","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LimZiJia":5,"gosongying":10,"-":40}},{"path":"src/main/java/housekeeping/hub/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2016-09-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the header of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ResultDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"ResultDisplay.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private TextArea resultDisplay;","lastModifiedDate":"2016-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public ResultDisplay() {","lastModifiedDate":"2017-06-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LimZiJia":1,"-":27}},{"path":"src/main/java/housekeeping/hub/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":1,"-":27}},{"path":"src/main/java/housekeeping/hub/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-09-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * API of UI component","lastModifiedDate":"2016-09-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public interface Ui {","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" /** Starts the UI (and the App). */","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" void start(Stage primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"LimZiJia":1,"-":12}},{"path":"src/main/java/housekeeping/hub/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.MainApp;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.LogsCenter;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.StringUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Logic;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" private static final String ICON_APPLICATION \u003d \"/images/housekeepinghub.png\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Creates a {@code UiManager} with the given {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public UiManager(Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LimZiJia":5,"gosongying":1,"-":82}},{"path":"src/main/java/housekeeping/hub/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.MainApp;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc.","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * It contains a scene graph with a root node of type {@code T}.","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public abstract class UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** Resource folder where FXML files are stored. */","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String FXML_FILE_FOLDER \u003d \"/view/\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final FXMLLoader fxmlLoader \u003d new FXMLLoader();","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL.","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, null);","lastModifiedDate":"2017-11-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @see #UiPart(URL)","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName));","lastModifiedDate":"2017-11-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file URL and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * The FXML file must not specify the {@code fx:controller} attribute.","lastModifiedDate":"2017-11-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public UiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" loadFxmlFile(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object.","lastModifiedDate":"2017-11-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @see #UiPart(URL, T)","lastModifiedDate":"2017-11-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public UiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this(getFxmlFileUrl(fxmlFileName), root);","lastModifiedDate":"2017-11-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns the root object of the scene graph of this UiPart.","lastModifiedDate":"2016-12-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public T getRoot() {","lastModifiedDate":"2016-12-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fxmlLoader.getRoot();","lastModifiedDate":"2016-12-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Loads the object hierarchy from a FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param location Location of the FXML document.","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param root Specifies the root of the object hierarchy.","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private void loadFxmlFile(URL location, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" fxmlLoader.setLocation(location);","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" fxmlLoader.setRoot(root);","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-11-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" fxmlLoader.load();","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new AssertionError(e);","lastModifiedDate":"2017-11-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-11-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}.","lastModifiedDate":"2017-11-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-11-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static URL getFxmlFileUrl(String fxmlFileName) {","lastModifiedDate":"2017-11-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(fxmlFileName);","lastModifiedDate":"2017-11-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String fxmlFileNameWithFolder \u003d FXML_FILE_FOLDER + fxmlFileName;","lastModifiedDate":"2017-11-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" URL fxmlFileUrl \u003d MainApp.class.getResource(fxmlFileNameWithFolder);","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return requireNonNull(fxmlFileUrl);","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LimZiJia":2,"-":86}},{"path":"src/main/resources/view/ClientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gosongying"},"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-04-02"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\" prefWidth\u003d\"150\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"120\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"5\" bottom\u003d\"5\" right\u003d\"2\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" style\u003d\"-fx-text-fill: black\"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"area\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" \u003cRegion prefWidth\u003d\"50\" prefHeight\u003d\"100\" style\u003d\"-fx-background-color: #8A8A8A; -fx-max-width: 1; -fx-max-height: 90\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"5\" bottom\u003d\"5\" left\u003d\"10\" right\u003d\"5\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" \u003cLabel styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"details\" styleClass\u003d\"cell_small_label\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"gosongying":59}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-background-color: #ECE9E9; -fx-border-width: 0\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-border-color: #BFBFBF; -fx-border-radius: 10; -fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"gosongying":4,"-":7}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" -fx-padding: 0 0 20 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" -fx-border-color: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" -fx-border-width: 3;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #BFBFBF;","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":154,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":157,"author":{"gitId":"gosongying"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"gosongying"},"content":" -fx-border-width: 5;","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"gosongying"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"gosongying"},"content":" -fx-border-color: #BFBFBF;","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"gosongying"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"gosongying"},"content":" -fx-min-width: 500;","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"gosongying"},"content":" -fx-pref-width: 500;","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"gosongying"},"content":" -fx-max-width: 1000;","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"gosongying"},"content":" -fx-max-height: 200;","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"gosongying"},"content":" -fx-min-height: 100;","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"gosongying"},"content":" -fx-pref-height: 100;","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":198,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":216,"author":{"gitId":"gosongying"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":320,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":324,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":326,"author":{"gitId":"gosongying"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":327,"author":{"gitId":"gosongying"},"content":" -fx-border-color: #BFBFBF;","lastModifiedDate":"2024-03-20"},{"lineNumber":328,"author":{"gitId":"gosongying"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-20"},{"lineNumber":329,"author":{"gitId":"gosongying"},"content":" -fx-alignment: center;","lastModifiedDate":"2024-04-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"gosongying"},"content":"#filterField, #clientListPanel, #housekeeperListPanel, #personWebpage {","lastModifiedDate":"2024-03-26"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":353,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9;","lastModifiedDate":"2024-03-20"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":355,"author":{"gitId":"gosongying"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":356,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":358,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":360,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":361,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":366,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":368,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":369,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":370,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"gosongying":33,"-":337}},{"path":"src/main/resources/view/Extensions.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":".error {","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".list-cell:empty {","lastModifiedDate":"2017-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2017-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-background: #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":" -fx-background-color: #ECE9E9","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gosongying":1,"-":20}},{"path":"src/main/resources/view/HousekeeperListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gosongying"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"gosongying"},"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-04-02"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" style\u003d\"-fx-text-fill: black\"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"area\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"gosongying":40}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" title\u003d\"Housekeeping Hub\" minWidth\u003d\"500\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" \u003cImage url\u003d\"@/images/housekeepinghub.png\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\" style\u003d\"-fx-background-color: #ECE9E9\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"stack-pane\"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-background-color: #ECE9E9; -fx-border-width: 3 0 0 0; -fx-border-color: #BFBFBF\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"stack-pane\"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-background-color: #ECE9E9; -fx-border-width: 0 0 3 0; -fx-border-color: #BFBFBF\"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"220\" maxHeight\u003d\"220\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" \u003cHBox VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" \u003cVBox fx:id\u003d\"clientList\" styleClass\u003d\"stack-pane\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" style\u003d\"-fx-background-color: #ECE9E9\" alignment\u003d\"TOP_LEFT\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" \u003cLabel styleClass\u003d\"column-header\" text\u003d\"Client :\"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-text-fill: black; -fx-background-radius: 10; -fx-border-color: #BFBFBF; -fx-border-radius: 10;","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":" -fx-padding: 0 2 0 8; -fx-alignment: CENTER_LEFT; -fx-font-weight: bold; -fx-font-size: 14px;","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":" -fx-background-color: #0095FF\" prefWidth\u003d\"70\"","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" \u003cStackPane fx:id\u003d\"clientListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" prefWidth\u003d\"320\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" \u003cVBox fx:id\u003d\"housekeeperList\" styleClass\u003d\"stack-pane\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" style\u003d\"-fx-background-color: #ECE9E9\" alignment\u003d\"TOP_LEFT\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" \u003cLabel styleClass\u003d\"column-header\" text\u003d\"Housekeeper :\"","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" style\u003d\"-fx-text-fill: black; -fx-background-radius: 10; -fx-border-color: #BFBFBF;","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":" -fx-border-radius: 10; -fx-padding: 0 2 0 8; -fx-alignment: CENTER_LEFT; -fx-font-weight: bold;","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":" -fx-font-size: 14px; -fx-background-color: #FF6A00\" prefWidth\u003d\"127\"","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" \u003cStackPane fx:id\u003d\"housekeeperListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" prefWidth\u003d\"180\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"LimZiJia":6,"gosongying":29,"-":51}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.control.Separator?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"\u003c?import javafx.scene.layout.Pane?\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" \u003cLabel fx:id\u003d\"area\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" \u003cRegion prefWidth\u003d\"50\" prefHeight\u003d\"100\" style\u003d\"-fx-background-color: #8A8A8A; -fx-max-width: 1; -fx-max-height: 90\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" \u003cLabel styleClass\u003d\"cell_big_label\" style\u003d\"-fx-text-fill: black\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" \u003cLabel fx:id\u003d\"details\" styleClass\u003d\"cell_small_label\" style\u003d\"-fx-text-fill: black\"/\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":1,"gosongying":26,"-":31,"GERARDJM018":1}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\" style\u003d\"-fx-background-color: transparent; -fx-border-width: 0\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"gosongying":3,"-":6}},{"path":"src/test/java/housekeeping/hub/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-04-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AppParametersTest {","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final ParametersStub parametersStub \u003d new ParametersStub();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final AppParameters expected \u003d new AppParameters();","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_validConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"config.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" expected.setConfigPath(Paths.get(\"config.json\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_nullConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", null);","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parse_invalidConfigPath_success() {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" parametersStub.namedParameters.put(\"config\", \"a\\0\");","lastModifiedDate":"2018-04-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expected.setConfigPath(null);","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(expected, AppParameters.parse(parametersStub));","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expected \u003d AppParameters.class.getCanonicalName() + \"{configPath\u003d\" + appParameters.getConfigPath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expected, appParameters.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(new AppParameters()));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(appParameters.equals(appParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different config path -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AppParameters otherAppParameters \u003d new AppParameters();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" otherAppParameters.setConfigPath(Paths.get(\"configPath\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(appParameters.equals(otherAppParameters));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static class ParametersStub extends Application.Parameters {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private Map\u003cString, String\u003e namedParameters \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getRaw() {","lastModifiedDate":"2018-04-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getUnnamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2018-04-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-04-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Map\u003cString, String\u003e getNamed() {","lastModifiedDate":"2018-04-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Collections.unmodifiableMap(namedParameters);","lastModifiedDate":"2018-04-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"LimZiJia":1,"-":88}},{"path":"src/test/java/housekeeping/hub/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"LimZiJia":1,"-":26}},{"path":"src/test/java/housekeeping/hub/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"LimZiJia":1,"-":15}},{"path":"src/test/java/housekeeping/hub/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":2,"-":133}},{"path":"src/test/java/housekeeping/hub/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.core.index;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Index fifthPersonIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"LimZiJia":2,"-":65}},{"path":"src/test/java/housekeeping/hub/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class AppUtilTest {","lastModifiedDate":"2016-09-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public void getImage_exitingImage() {","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertNotNull(AppUtil.getImage(\"/images/address_book_32.png\"));","lastModifiedDate":"2016-09-30"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void getImage_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e AppUtil.getImage(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void checkArgument_true_nothingHappens() {","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true);","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" AppUtil.checkArgument(true, \"\");","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithoutErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e AppUtil.checkArgument(false));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void checkArgument_falseWithErrorMessage_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" String errorMessage \u003d \"error message\";","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, errorMessage, () -\u003e AppUtil.checkArgument(false, errorMessage));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"LimZiJia":2,"-":34}},{"path":"src/test/java/housekeeping/hub/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CollectionUtilTest {","lastModifiedDate":"2016-12-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void requireAllNonNullVarargs() {","lastModifiedDate":"2017-05-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // no arguments","lastModifiedDate":"2017-01-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown();","lastModifiedDate":"2017-05-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // any non-empty argument list","lastModifiedDate":"2017-01-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(\"\");","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // argument lists with just one null at the beginning","lastModifiedDate":"2017-01-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, \"\", new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(null, new Object(), new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // argument lists with nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), null, null, \"test\");","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", null, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // argument lists with one null as the last argument","lastModifiedDate":"2017-01-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(\"\", new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(new Object(), new Object(), null);","lastModifiedDate":"2017-05-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Object[]) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // confirms nulls inside lists in the argument list are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(containingNull, new Object());","lastModifiedDate":"2017-05-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void requireAllNonNullCollection() {","lastModifiedDate":"2017-05-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // lists containing nulls in the front","lastModifiedDate":"2017-01-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(null, new Object(), \"\"));","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // lists containing nulls in the middle","lastModifiedDate":"2017-01-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", null, \"eggs\", null, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // lists containing nulls at the end","lastModifiedDate":"2017-01-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(\"spam\", new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList(new Object(), null));","lastModifiedDate":"2017-05-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // null reference","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertNullPointerExceptionThrown((Collection\u003cObject\u003e) null);","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // empty list","lastModifiedDate":"2017-01-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Collections.emptyList());","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // list with all non-null elements","lastModifiedDate":"2017-01-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object(), \"ham\", Integer.valueOf(1)));","lastModifiedDate":"2018-04-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // confirms nulls inside nested lists are not considered","lastModifiedDate":"2017-01-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(containingNull, new Object()));","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void isAnyNonNull() {","lastModifiedDate":"2017-06-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull());","lastModifiedDate":"2017-06-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(CollectionUtil.isAnyNonNull((Object[]) null));","lastModifiedDate":"2017-06-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object()));","lastModifiedDate":"2017-06-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(CollectionUtil.isAnyNonNull(new Object(), null));","lastModifiedDate":"2017-06-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Object...)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * if {@code objects} or any element of {@code objects} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e requireAllNonNull(objects));","lastModifiedDate":"2019-03-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Asserts that {@code CollectionUtil#requireAllNonNull(Collection\u003c?\u003e)} throw {@code NullPointerException}","lastModifiedDate":"2017-08-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * if {@code collection} or any element of {@code collection} is null.","lastModifiedDate":"2017-08-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e requireAllNonNull(collection));","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Object... objects) {","lastModifiedDate":"2017-05-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" requireAllNonNull(objects);","lastModifiedDate":"2017-05-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertNullPointerExceptionNotThrown(Collection\u003c?\u003e collection) {","lastModifiedDate":"2017-05-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireAllNonNull(collection);","lastModifiedDate":"2017-05-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"LimZiJia":3,"-":105}},{"path":"src/test/java/housekeeping/hub/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.Config;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ConfigUtilTest {","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"ConfigUtilTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path tempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void read_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e read(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(read(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e read(\"NotJsonFormatConfig.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void read_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"TypicalConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void read_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"EmptyConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new Config(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void read_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Config expected \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Config actual \u003d read(\"ExtraValuesConfig.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private Config getTypicalConfig() {","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" config.setLogLevel(Level.INFO);","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" config.setUserPrefsFilePath(Paths.get(\"preferences.json\"));","lastModifiedDate":"2018-04-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return config;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private Optional\u003cConfig\u003e read(String configFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ConfigUtil.readConfig(configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void save_nullConfig_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e save(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void save_nullFile_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e save(new Config(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void saveConfig_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Config original \u003d getTypicalConfig();","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Path configFilePath \u003d tempDir.resolve(\"TempConfig.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Config readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" original.setLogLevel(Level.FINE);","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(original, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" readBack \u003d ConfigUtil.readConfig(configFilePath).get();","lastModifiedDate":"2016-12-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private void save(Config config, String configFileInTestDataFolder) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Path configFilePath \u003d addToTestDataPathIfNotNull(configFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(config, configFilePath);","lastModifiedDate":"2016-12-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String configFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return configFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(configFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"LimZiJia":4,"-":112}},{"path":"src/test/java/housekeeping/hub/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":2,"-":21}},{"path":"src/test/java/housekeeping/hub/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-10-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.SerializableTestClass;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.TestUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Tests JSON Read and Write","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path SERIALIZATION_FILE \u003d TestUtil.getFilePathInSandboxFolder(\"serialize.json\");","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void serializeObjectToJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d new SerializableTestClass();","lastModifiedDate":"2016-10-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":" serializableTestClass.setTestValues();","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonUtil.serializeObjectToJsonFile(SERIALIZATION_FILE, serializableTestClass);","lastModifiedDate":"2016-10-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(FileUtil.readFromFile(SERIALIZATION_FILE), SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void deserializeObjectFromJsonFile_noExceptionThrown() throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(SERIALIZATION_FILE, SerializableTestClass.JSON_STRING_REPRESENTATION);","lastModifiedDate":"2016-10-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" SerializableTestClass serializableTestClass \u003d JsonUtil","lastModifiedDate":"2016-10-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .deserializeObjectFromJsonFile(SERIALIZATION_FILE, SerializableTestClass.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getName(), SerializableTestClass.getNameTestValue());","lastModifiedDate":"2016-10-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getListOfLocalDateTimes(), SerializableTestClass.getListTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(serializableTestClass.getMapOfIntegerToString(), SerializableTestClass.getHashMapTestValues());","lastModifiedDate":"2016-10-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_readJsonStringToObjectInstance_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" //TODO: @Test jsonUtil_writeThenReadObjectToJson_correctObject()","lastModifiedDate":"2016-09-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":3,"-":42}},{"path":"src/test/java/housekeeping/hub/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.commons.util;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class StringUtilTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" //---------------- Tests for isNonZeroUnsignedInteger --------------------------------------","lastModifiedDate":"2019-02-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void isNonZeroUnsignedInteger() {","lastModifiedDate":"2019-02-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // EP: empty strings","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" \"));","lastModifiedDate":"2017-06-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // EP: not a number","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"a\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"aaa\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // EP: zero","lastModifiedDate":"2016-10-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"0\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // EP: zero as prefix","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"01\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // EP: signed numbers","lastModifiedDate":"2016-10-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"-1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"+1\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // EP: numbers with white space","lastModifiedDate":"2016-10-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\" 10 \")); // Leading/trailing spaces","lastModifiedDate":"2017-06-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(\"1 0\")); // Spaces in the middle","lastModifiedDate":"2017-06-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // EP: number larger than Integer.MAX_VALUE","lastModifiedDate":"2017-06-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.isNonZeroUnsignedInteger(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2017-06-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // EP: valid numbers, should return true","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"1\")); // Boundary value","lastModifiedDate":"2017-06-02"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.isNonZeroUnsignedInteger(\"10\"));","lastModifiedDate":"2017-06-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" //---------------- Tests for containsWordIgnoreCase --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2016-10-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2016-10-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2016-10-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"LimZiJia":2,"-":141}},{"path":"src/test/java/housekeeping/hub/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.CommandResult;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ListCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.storage.StorageManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD + \" housekeeper\";","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS + \"all housekeepers\", model);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredClientList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"gosongying"},"content":" Client expectedClient \u003d new ClientBuilder(AMY).withTags().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"gosongying"},"content":" expectedModel.addClient(expectedClient);","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"LimZiJia":23,"gosongying":4,"-":147,"GERARDJM018":1}},{"path":"src/test/java/housekeeping/hub/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" public void execute_newClient_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" Client validClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" expectedModel.addClient(validClient);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(new AddClientCommand(validClient), model,","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" String.format(AddClientCommand.MESSAGE_SUCCESS, Messages.formatClient(validClient)),","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" public void execute_newHousekeeper_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" Housekeeper validHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" expectedModel.addHousekeeper(validHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(new AddHousekeeperCommand(validHousekeeper), model,","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" String.format(AddHousekeeperCommand.MESSAGE_SUCCESS, validHousekeeper),","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" public void execute_duplicateClient_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" Client clientInList \u003d model.getAddressBook().getClientList().get(0);","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(new AddClientCommand(clientInList), model,","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" AddClientCommand.MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" public void execute_duplicateHousekeeper_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeperInList \u003d model.getAddressBook().getHousekeeperList().get(0);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(new AddHousekeeperCommand(housekeeperInList), model,","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand.MESSAGE_DUPLICATE_HOUSEKEEPER);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"LimZiJia":12,"gosongying":28,"-":29}},{"path":"src/test/java/housekeeping/hub/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddClientCommand(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddHousekeeperCommand(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" public void execute_clientAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" Client validClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" CommandResult commandResult \u003d new AddClientCommand(validClient).execute(modelStub);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" assertEquals(String.format(AddClientCommand.MESSAGE_SUCCESS, Messages.formatClient(validClient)),","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" assertEquals(Arrays.asList(validClient), modelStub.clientsAdded);","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" public void execute_housekeeperAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" Housekeeper validHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" CommandResult commandResult \u003d new AddHousekeeperCommand(validHousekeeper).execute(modelStub);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" assertEquals(String.format(AddHousekeeperCommand.MESSAGE_SUCCESS, Messages.formatHousekeeper(validHousekeeper)),","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" assertEquals(Arrays.asList(validHousekeeper), modelStub.housekeepersAdded);","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" public void execute_duplicateClient_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" Client validClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" Housekeeper validHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" AddClientCommand addClientCommand \u003d new AddClientCommand(validClient);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validClient, validHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" assertThrows(CommandException.class, AddClientCommand.MESSAGE_DUPLICATE_CLIENT,","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" () -\u003e addClientCommand.execute(modelStub));","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" public void execute_duplicateHousekeeper_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" Client validClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" Housekeeper validHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand addHousekeeperCommand \u003d new AddHousekeeperCommand(validHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validClient, validHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" assertThrows(CommandException.class, AddHousekeeperCommand.MESSAGE_DUPLICATE_HOUSEKEEPER,","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" () -\u003e addHousekeeperCommand.execute(modelStub));","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" Client alice \u003d new ClientBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" Housekeeper bob \u003d new HousekeeperBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" AddClientCommand addAliceCommand \u003d new AddClientCommand(alice);","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand addBobCommand \u003d new AddHousekeeperCommand(bob);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" AddClientCommand addAliceCommandCopy \u003d new AddClientCommand(alice);","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" assertTrue(addBobCommand.equals(addBobCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand addBobCommandCopy \u003d new AddHousekeeperCommand(bob);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" assertTrue(addBobCommand.equals(addBobCommandCopy));","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" assertFalse(addBobCommand.equals(1));","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" assertFalse(addBobCommand.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" AddClientCommand addClientCommand \u003d new AddClientCommand(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"gosongying"},"content":" String expectedOne \u003d AddClientCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"gosongying"},"content":" assertEquals(expectedOne, addClientCommand.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"gosongying"},"content":" AddHousekeeperCommand addHousekeeperCommand \u003d new AddHousekeeperCommand(BOB);","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" String expectedTwo \u003d AddHousekeeperCommand.class.getCanonicalName() + \"{toAdd\u003d\" + BOB + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" assertEquals(expectedTwo, addHousekeeperCommand.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"gosongying"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"gosongying"},"content":" public void addHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":182,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":191,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"gosongying"},"content":" public void deleteClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"gosongying"},"content":" public void deleteHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"gosongying"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-04-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":216,"author":{"gitId":"gosongying"},"content":" public void setHousekeeper(Housekeeper target, Housekeeper editedHousekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":218,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":219,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":220,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":221,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":222,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":223,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":224,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":225,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":226,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getFilteredHousekeeperList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":227,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":228,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":229,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":230,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"gosongying"},"content":" public void updateFilteredClientList(Predicate\u003c? extends Person\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":232,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":233,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":234,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":235,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":236,"author":{"gitId":"gosongying"},"content":" public void updateFilteredHousekeeperList(Predicate\u003c? extends Person\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":237,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":239,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":241,"author":{"gitId":"gosongying"},"content":" public void updateAndSortFilteredClientList(Predicate\u003cClient\u003e predicate, Comparator\u003cClient\u003e comparator) {","lastModifiedDate":"2024-04-05"},{"lineNumber":242,"author":{"gitId":"gosongying"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-05"},{"lineNumber":243,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":244,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":245,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":246,"author":{"gitId":"gosongying"},"content":" public void updateFilteredHousekeeperListWithHousekeeperPredicate(Predicate\u003cHousekeeper\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":251,"author":{"gitId":"gosongying"},"content":" * A Model stub that contains a single client and housekeeper.","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":254,"author":{"gitId":"gosongying"},"content":" private final Client client;","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"gosongying"},"content":" private final Housekeeper housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"gosongying"},"content":" ModelStubWithPerson(Client client, Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"gosongying"},"content":" this.client \u003d client;","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"gosongying"},"content":" this.housekeeper \u003d housekeeper;","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":264,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":267,"author":{"gitId":"gosongying"},"content":" return this.client.isSamePerson(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":271,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":272,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":273,"author":{"gitId":"gosongying"},"content":" return this.housekeeper.isSamePerson(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":279,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":280,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":281,"author":{"gitId":"gosongying"},"content":" final ArrayList\u003cClient\u003e clientsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":282,"author":{"gitId":"gosongying"},"content":" final ArrayList\u003cHousekeeper\u003e housekeepersAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":284,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":285,"author":{"gitId":"gosongying"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":286,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":287,"author":{"gitId":"gosongying"},"content":" return clientsAdded.stream().anyMatch(client::isSamePerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":288,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":289,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":290,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":291,"author":{"gitId":"gosongying"},"content":" public boolean hasHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":292,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":293,"author":{"gitId":"gosongying"},"content":" return housekeepersAdded.stream().anyMatch(housekeeper::isSamePerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":294,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":296,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":297,"author":{"gitId":"gosongying"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":298,"author":{"gitId":"gosongying"},"content":" requireNonNull(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":299,"author":{"gitId":"gosongying"},"content":" clientsAdded.add(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":302,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":303,"author":{"gitId":"gosongying"},"content":" public void addHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":304,"author":{"gitId":"gosongying"},"content":" requireNonNull(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":305,"author":{"gitId":"gosongying"},"content":" housekeepersAdded.add(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":306,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":308,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":309,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":310,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":311,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":312,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"LimZiJia":16,"gosongying":146,"-":152}},{"path":"src/test/java/housekeeping/hub/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"LimZiJia":7,"-":25}},{"path":"src/test/java/housekeeping/hub/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"LimZiJia":1,"-":62}},{"path":"src/test/java/housekeeping/hub/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" public static final String VALID_AREA_AMY \u003d \"north\";","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" public static final String VALID_AREA_BOB \u003d \"south\";","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" public static final BookingList VALID_BOOKING_LIST_BOB \u003d new BookingList();","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" public static final String AREA_DESC_AMY \u003d \" \" + PREFIX_AREA + VALID_AREA_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" public static final String AREA_DESC_BOB \u003d \" \" + PREFIX_AREA + VALID_AREA_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"GERARDJM018"},"content":" public static final String INVALID_AREA_DESC \u003d \" \" + PREFIX_AREA + \"central\"; // \u0027northwest\u0027 not allowed in area","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":" * - the hub book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"GERARDJM018"},"content":" List\u003cClient\u003e expectedFilteredClientList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredClientList());","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"GERARDJM018"},"content":" List\u003cHousekeeper\u003e expectedFilteredHousekeeperList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredHousekeeperList());","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(expectedFilteredClientList, actualModel.getFilteredClientList());","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(expectedFilteredHousekeeperList, actualModel.getFilteredHousekeeperList());","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"GERARDJM018"},"content":" * Updates {@code model}\u0027s filtered client list to show only the client at the given {@code targetIndex} in the","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"LimZiJia"},"content":" * {@code model}\u0027s hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"GERARDJM018"},"content":" public static void showClientAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-04-05"},{"lineNumber":132,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredClientList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d model.getFilteredClientList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"GERARDJM018"},"content":" final String[] splitName \u003d client.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"GERARDJM018"},"content":" model.updateFilteredClientList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(1, model.getFilteredClientList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"GERARDJM018"},"content":" * Updates {@code model}\u0027s filtered housekeeper list to show only the housekeeper at the given {@code targetIndex}","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"LimZiJia"},"content":" * in the {@code model}\u0027s hub book.","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"GERARDJM018"},"content":" public static void showHousekeeperAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredHousekeeperList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"GERARDJM018"},"content":" Housekeeper housekeeper \u003d model.getFilteredHousekeeperList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"GERARDJM018"},"content":" final String[] splitName \u003d housekeeper.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" model.updateFilteredHousekeeperList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(1, model.getFilteredHousekeeperList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"LimZiJia":20,"-":104,"GERARDJM018":30}},{"path":"src/test/java/housekeeping/hub/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.showClientAtIndex;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.showHousekeeperAtIndex;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" Client clientToDelete \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d new DeleteClientCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" String expectedMessageClient \u003d String.format(DeleteClientCommand.MESSAGE_DELETE_CLIENT_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" Messages.formatClient(clientToDelete));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" expectedModel.deleteClient(clientToDelete);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(deleteClientCommand, model, expectedMessageClient, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeperToDelete \u003d model.getFilteredHousekeeperList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" String expectedMessage \u003d String.format(DeleteHousekeeperCommand.MESSAGE_DELETE_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" Messages.formatHousekeeper(housekeeperToDelete));","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" ModelManager expectedModelHousekeeper \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" expectedModelHousekeeper.deleteHousekeeper(housekeeperToDelete);","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(deleteHousekeeperCommand, model, expectedMessage, expectedModelHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" Index outOfBoundIndexClient \u003d Index.fromOneBased(model.getFilteredClientList().size() + 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d new DeleteClientCommand(outOfBoundIndexClient);","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(deleteClientCommand, model, Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" Index outOfBoundIndexHousekeeper \u003d Index.fromOneBased(model.getFilteredHousekeeperList().size() + 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(outOfBoundIndexHousekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(deleteHousekeeperCommand, model, Messages.MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" showClientAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" Client clientToDelete \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d new DeleteClientCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" String expectedClientMessage \u003d String.format(DeleteClientCommand.MESSAGE_DELETE_CLIENT_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" Messages.formatClient(clientToDelete));","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" expectedModel.deleteClient(clientToDelete);","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" showNoClient(expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(deleteClientCommand, model, expectedClientMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" showHousekeeperAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeperToDelete \u003d model.getFilteredHousekeeperList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" String expectedHousekeeperMessage \u003d String.format(DeleteHousekeeperCommand.MESSAGE_DELETE_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" Messages.formatHousekeeper(housekeeperToDelete));","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" expectedModel.deleteHousekeeper(housekeeperToDelete);","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" showNoHousekeeper(expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(deleteHousekeeperCommand, model, expectedHousekeeperMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" showClientAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getClientList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteCommand \u003d new DeleteClientCommand(outOfBoundIndex);","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" showHousekeeperAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getHousekeeperList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(outOfBoundIndex);","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" assertCommandFailure(deleteHousekeeperCommand, model, Messages.MESSAGE_INVALID_HOUSEKEEPER_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteFirstClientCommand \u003d new DeleteClientCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"gosongying"},"content":" DeleteCommand deleteSecondClientCommand \u003d new DeleteClientCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" assertTrue(deleteFirstClientCommand.equals(deleteFirstClientCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteFirstClientCommandCopy \u003d new DeleteClientCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"gosongying"},"content":" assertTrue(deleteFirstClientCommand.equals(deleteFirstClientCommandCopy));","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstClientCommand.equals(1));","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstClientCommand.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"gosongying"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstClientCommand.equals(deleteSecondClientCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteFirstHousekeeperCommand \u003d new DeleteHousekeeperCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"gosongying"},"content":" DeleteCommand deleteSecondHousekeeperCommand \u003d new DeleteHousekeeperCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"gosongying"},"content":" assertTrue(deleteFirstHousekeeperCommand.equals(deleteFirstHousekeeperCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteFirstHousekeeperCommandCopy \u003d new DeleteHousekeeperCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-04"},{"lineNumber":161,"author":{"gitId":"gosongying"},"content":" assertTrue(deleteFirstHousekeeperCommand.equals(deleteFirstHousekeeperCommandCopy));","lastModifiedDate":"2024-04-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":164,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstHousekeeperCommand.equals(1));","lastModifiedDate":"2024-04-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":167,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstHousekeeperCommand.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":170,"author":{"gitId":"gosongying"},"content":" assertFalse(deleteFirstHousekeeperCommand.equals(deleteSecondHousekeeperCommand));","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"gosongying"},"content":" // Test for deleting client","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d new DeleteClientCommand(targetIndex);","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"gosongying"},"content":" String expected \u003d DeleteClientCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"gosongying"},"content":" assertEquals(expected, deleteClientCommand.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"gosongying"},"content":" // Test for deleting housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d new DeleteHousekeeperCommand(targetIndex);","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"gosongying"},"content":" expected \u003d DeleteHousekeeperCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"gosongying"},"content":" assertEquals(expected, deleteHousekeeperCommand.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":186,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"gosongying"},"content":" * Updates {@code model}\u0027s filtered client list to show no one.","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"gosongying"},"content":" private void showNoClient(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"gosongying"},"content":" model.updateFilteredClientList(p -\u003e false);","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"gosongying"},"content":" assertTrue(model.getFilteredClientList().isEmpty());","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":197,"author":{"gitId":"gosongying"},"content":" * Updates {@code model}\u0027s filtered housekeeper list to show no one.","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":199,"author":{"gitId":"gosongying"},"content":" private void showNoHousekeeper(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":200,"author":{"gitId":"gosongying"},"content":" model.updateFilteredHousekeeperList(p -\u003e false);","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":202,"author":{"gitId":"gosongying"},"content":" assertTrue(model.getFilteredHousekeeperList().isEmpty());","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"LimZiJia":15,"gosongying":121,"-":68}},{"path":"src/test/java/housekeeping/hub/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.showClientAtIndex;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" Client editedClient \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" Housekeeper editedHousekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" EditPersonDescriptor descriptorClient \u003d new EditPersonDescriptorBuilder(editedClient).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" EditPersonDescriptor descriptorHousekeeper \u003d new EditPersonDescriptorBuilder(editedHousekeeper).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editClientCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON, descriptorClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editHousekeeperCommand \u003d new EditHousekeeperCommand(INDEX_FIRST_PERSON, descriptorHousekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessageClient \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditClientCommand.MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedClient));","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessageHousekeeper \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditHousekeeperCommand.MESSAGE_EDIT_HOUSEKEEPER_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" Messages.formatHousekeeper(editedHousekeeper));","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" Model expectedModelClient \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" expectedModelClient.setClient(model.getFilteredClientList().get(0), editedClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" Model expectedModelHousekeeper \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"GERARDJM018"},"content":" expectedModelHousekeeper.setHousekeeper(model.getFilteredHousekeeperList().get(0), editedHousekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"GERARDJM018"},"content":" assertCommandSuccess(editClientCommand, model, expectedMessageClient, expectedModelClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" Index indexLastClient \u003d Index.fromOneBased(model.getFilteredClientList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" Client lastClient \u003d model.getFilteredClientList().get(indexLastClient.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" Index indexLastHousekeeper \u003d Index.fromOneBased(model.getFilteredHousekeeperList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" Housekeeper lastHousekeeper \u003d model.getFilteredHousekeeperList().get(indexLastHousekeeper.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientInList \u003d new ClientBuilder(lastClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"GERARDJM018"},"content":" Client editedClient \u003d clientInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"GERARDJM018"},"content":" HousekeeperBuilder housekeeperInList \u003d new HousekeeperBuilder(lastHousekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":" Housekeeper editedHousekeeper \u003d housekeeperInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"GERARDJM018"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" EditPersonDescriptor descriptorC \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommandClient \u003d new EditClientCommand(indexLastClient, descriptorC);","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"GERARDJM018"},"content":" EditPersonDescriptor descriptorH \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommandHousekeeper \u003d new EditHousekeeperCommand(indexLastHousekeeper, descriptorH);","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessageC \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditClientCommand.MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedClient));","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessageH \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditHousekeeperCommand.MESSAGE_EDIT_HOUSEKEEPER_SUCCESS, Messages.formatHousekeeper(editedHousekeeper));","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" Model expectedModelClient \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"GERARDJM018"},"content":" expectedModelClient.setClient(lastClient, editedClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"GERARDJM018"},"content":" Model expectedModelHousekeeper \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"GERARDJM018"},"content":" expectedModelHousekeeper.setHousekeeper(lastHousekeeper, editedHousekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"GERARDJM018"},"content":" assertCommandSuccess(editCommandClient, model, expectedMessageC, expectedModelClient);","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"GERARDJM018"},"content":" Client editedPerson \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditClientCommand.MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedPerson));","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":118,"author":{"gitId":"GERARDJM018"},"content":" Client personInFilteredList \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"GERARDJM018"},"content":" Client editedPerson \u003d new ClientBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" String.format(EditClientCommand.MESSAGE_EDIT_CLIENT_SUCCESS, Messages.formatClient(editedPerson));","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":" expectedModel.setClient(model.getFilteredClientList().get(0), editedPerson);","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"GERARDJM018"},"content":" Client firstPerson \u003d model.getFilteredClientList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"GERARDJM018"},"content":" assertCommandFailure(editCommand, model, EditClientCommand.MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":143,"author":{"gitId":"GERARDJM018"},"content":" showClientAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"LimZiJia"},"content":" // edit person in filtered list into a duplicate in hub book","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"GERARDJM018"},"content":" Person personInList \u003d model.getAddressBook().getClientList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"GERARDJM018"},"content":" assertCommandFailure(editCommand, model, EditClientCommand.MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredClientList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":159,"author":{"gitId":"GERARDJM018"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":164,"author":{"gitId":"LimZiJia"},"content":" * but smaller than size of hub book","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":168,"author":{"gitId":"GERARDJM018"},"content":" showClientAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":170,"author":{"gitId":"LimZiJia"},"content":" // ensures that outOfBoundIndex is still in bounds of hub book list","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getClientList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":173,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(outOfBoundIndex,","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":176,"author":{"gitId":"GERARDJM018"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_CLIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":181,"author":{"gitId":"GERARDJM018"},"content":" final EditCommand standardCommand \u003d new EditClientCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-04-05"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":185,"author":{"gitId":"GERARDJM018"},"content":" EditCommand commandWithSameValues \u003d new EditClientCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":198,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(standardCommand.equals(new EditClientCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-04-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":201,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(standardCommand.equals(new EditClientCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-04-05"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":208,"author":{"gitId":"GERARDJM018"},"content":" EditCommand editCommand \u003d new EditClientCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":209,"author":{"gitId":"GERARDJM018"},"content":" String expected \u003d EditClientCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":210,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"LimZiJia":28,"-":112,"GERARDJM018":74}},{"path":"src/test/java/housekeeping/hub/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":" // different hub -\u003e returns false","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", hub\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"GERARDJM018"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", area\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"GERARDJM018"},"content":" + editPersonDescriptor.getArea().orElse(null) + \", booking list\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" + editPersonDescriptor.getBookingList().orElse(null)","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"LimZiJia":12,"gosongying":1,"-":58,"GERARDJM018":3}},{"path":"src/test/java/housekeeping/hub/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"LimZiJia":5,"-":15}},{"path":"src/test/java/housekeeping/hub/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.*;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" ContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" new ContainsKeywordsPredicate(Collections.singletonList(\"first\"), Collections.singletonList(\"Clementi\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" Collections.singletonList(\"north\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" ContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" new ContainsKeywordsPredicate(Collections.singletonList(\"second\"), Collections.singletonList(\"Jurong\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" Collections.singletonList(\"east\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" // Test for FindClientCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" FindClientCommand findFirstClientCommand \u003d new FindClientCommand(firstPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" FindClientCommand findSecondClientCommand \u003d new FindClientCommand(secondPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" assertTrue(findFirstClientCommand.equals(findFirstClientCommand));","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" FindCommand findFirstCommandCopy \u003d new FindClientCommand(firstPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" assertTrue(findFirstClientCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstClientCommand.equals(1));","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstClientCommand.equals(null));","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstClientCommand.equals(findSecondClientCommand));","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" // Test for FindHousekeeperCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" FindHousekeeperCommand findFirstHousekeeperCommand \u003d new FindHousekeeperCommand(firstPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" FindHousekeeperCommand findSecondHousekeeperCommand \u003d new FindHousekeeperCommand(secondPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" assertTrue(findFirstHousekeeperCommand.equals(findFirstHousekeeperCommand));","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" FindCommand findFirstHousekeeperCommandCopy \u003d new FindHousekeeperCommand(firstPredicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" assertTrue(findFirstHousekeeperCommand.equals(findFirstHousekeeperCommandCopy));","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstHousekeeperCommand.equals(1));","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstHousekeeperCommand.equals(null));","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" assertFalse(findFirstHousekeeperCommand.equals(findSecondHousekeeperCommand));","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" String expectedMessage \u003d String.format(MESSAGE_CLIENTS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"GERARDJM018"},"content":" ContainsKeywordsPredicate predicate \u003d preparePredicate(\"a\", \"2\", \"west\");","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" FindClientCommand clientCommand \u003d new FindClientCommand(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" expectedModel.updateFilteredClientList(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(clientCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" assertEquals(Collections.emptyList(), model.getFilteredClientList());","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"GERARDJM018"},"content":" String expectedMessage \u003d String.format(MESSAGE_HOUSEKEEPERS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" ContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\", \"\", \"\");","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"GERARDJM018"},"content":" FindHousekeeperCommand command \u003d new FindHousekeeperCommand(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"GERARDJM018"},"content":" expectedModel.updateFilteredHousekeeperList(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"GERARDJM018"},"content":" assertEquals(Arrays.asList(ELLE, FIONA), model.getFilteredHousekeeperList());","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" ContainsKeywordsPredicate predicate \u003d new ContainsKeywordsPredicate(Arrays.asList(\"keyword1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" Arrays.asList(\"keyword2\"), Arrays.asList(\"keyword3\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" FindClientCommand findCommand \u003d new FindClientCommand(predicate);","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"GERARDJM018"},"content":" String expected \u003d FindClientCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" /*private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-04-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" }*/","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"LimZiJia"},"content":" * Parses {@code name}, {@code hub} and {@code area} into a {@code ContainsKeywordsPredicate}.","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" private ContainsKeywordsPredicate preparePredicate(String name, String address, String area) {","lastModifiedDate":"2024-04-05"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" return new ContainsKeywordsPredicate(Arrays.asList(name.split(\"\\\\s+\")), Arrays.asList(address.split(\"\\\\s+\")),","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" Arrays.asList(area.split(\"\\\\s+\")));","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"LimZiJia":11,"gosongying":55,"-":53,"GERARDJM018":6}},{"path":"src/test/java/housekeeping/hub/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"LimZiJia":5,"-":15}},{"path":"src/test/java/housekeeping/hub/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public void execute_clientListIsFiltered_showsClientList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(new ListClientCommand(), model, ListCommand.MESSAGE_SUCCESS","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" + \"all clients\", expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" public void execute_housekeeperListIsFiltered_showsHousekeeperList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" assertCommandSuccess(new ListHousekeeperCommand(), model, ListCommand.MESSAGE_SUCCESS","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" + \"all housekeepers\", expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"LimZiJia":6,"gosongying":9,"-":23}},{"path":"src/test/java/housekeeping/hub/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" Client expectedClient \u003d new ClientBuilder(AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddClientCommand(expectedClient));","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" Client expectedClientMultipleTags \u003d new ClientBuilder(AMY).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" + TAG_DESC_FRIEND, new AddClientCommand(expectedClientMultipleTags));","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"LimZiJia"},"content":" // invalid hub","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":" // invalid hub","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" Client expectedClient \u003d new ClientBuilder(AMY).withTags().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" new AddClientCommand(expectedClient));","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"LimZiJia"},"content":" // missing hub prefix","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"GERARDJM018"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"GERARDJM018"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"GERARDJM018"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"LimZiJia"},"content":" // invalid hub","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":" + INVALID_ADDRESS_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"GERARDJM018"},"content":" + ADDRESS_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"GERARDJM018"},"content":" + INVALID_ADDRESS_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"GERARDJM018"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"LimZiJia":47,"gosongying":16,"-":124,"GERARDJM018":7}},{"path":"src/test/java/housekeeping/hub/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.ALLOWED_PREAMBLES_TYPE;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ClearCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.DeleteClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.DeleteHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ExitCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.HelpCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ListCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.PersonUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" Client person \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" AddClientCommand command \u003d (AddClientCommand) parser.parseCommand(PersonUtil.getAddClientCommand(person));","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" assertEquals(new AddClientCommand(person), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" // Delete client","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand deleteClientCommand \u003d (DeleteClientCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" DeleteClientCommand.COMMAND_WORD + \" client \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" assertEquals(new DeleteClientCommand(INDEX_FIRST_PERSON), deleteClientCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" // Delete housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand deleteHousekeeperCommand \u003d (DeleteHousekeeperCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" DeleteHousekeeperCommand.COMMAND_WORD + \" housekeeper \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" assertEquals(new DeleteHousekeeperCommand(INDEX_FIRST_PERSON), deleteHousekeeperCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" // Edit client","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" Client client \u003d new ClientBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" EditPersonDescriptor clientDescriptor \u003d new EditPersonDescriptorBuilder(client).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" EditClientCommand editClientCommand \u003d (EditClientCommand) parser.parseCommand(EditClientCommand.COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" + \" client \" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" + PersonUtil.getEditPersonDescriptorDetails(clientDescriptor));","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" assertEquals(new EditClientCommand(INDEX_FIRST_PERSON, clientDescriptor), editClientCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" // Edit housekeeper","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeper \u003d new HousekeeperBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" EditPersonDescriptor housekeeperDescriptor \u003d new EditPersonDescriptorBuilder(housekeeper).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" EditHousekeeperCommand editHousekeeperCommand \u003d (EditHousekeeperCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" EditHousekeeperCommand.COMMAND_WORD + \" housekeeper \" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" + PersonUtil.getEditPersonDescriptorDetails(housekeeperDescriptor));","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" assertEquals(new EditHousekeeperCommand(INDEX_FIRST_PERSON, housekeeperDescriptor), editHousekeeperCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" /*@Test","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" List\u003cString\u003e name \u003d Arrays.asList(\"foo\", \"bar\");","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" List\u003cString\u003e hub \u003d Arrays.asList(\"Clementi\", \"Jurong\");","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" List\u003cString\u003e area \u003d Arrays.asList(\"west\", \"east\");","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" FindClientCommand findClientCommand \u003d (FindClientCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" FindClientCommand.COMMAND_WORD + \" client \"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" assertEquals(new FindClientCommand(new ContainsKeywordsPredicate(Arrays.asList(keywords[0]),","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" Arrays.asList(addressKeywords), Arrays.asList(areaKeywords))), findClientCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" }*/","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"GERARDJM018"},"content":" ListCommand.COMMAND_WORD + \" \" + ALLOWED_PREAMBLES_TYPE[0]) instanceof ListCommand);","lastModifiedDate":"2024-03-28"},{"lineNumber":108,"author":{"gitId":"LimZiJia"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" ListCommand.COMMAND_WORD + \" \" + ALLOWED_PREAMBLES_TYPE[1]) instanceof ListCommand);","lastModifiedDate":"2024-03-28"},{"lineNumber":110,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" client\") instanceof ListCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"LimZiJia":26,"gosongying":36,"-":58,"GERARDJM018":3}},{"path":"src/test/java/housekeeping/hub/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"LimZiJia":1,"-":149}},{"path":"src/test/java/housekeeping/hub/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.Command;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"LimZiJia":3,"-":36}},{"path":"src/test/java/housekeeping/hub/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.DeleteClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, \"client 1\", new DeleteClientCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \"client a\", String.format(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX));","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"LimZiJia":6,"gosongying":2,"-":24}},{"path":"src/test/java/housekeeping/hub/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" String typeClient \u003d \"client \";","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeClient + VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeClient + \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeClient + \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" String typeclient \u003d \"client \";","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid hub","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"GERARDJM018"},"content":" assertParseFailure(parser, typeclient + \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":110,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":" EditClientCommand expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"gosongying"},"content":" EditClientCommand expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" EditClientCommand expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"gosongying"},"content":" expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" +targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"gosongying"},"content":" expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"LimZiJia"},"content":" // hub","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"gosongying"},"content":" expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"gosongying"},"content":" expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":174,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-04-05"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-04-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"GERARDJM018"},"content":" userInput \u003d \"client \" + targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-04-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":202,"author":{"gitId":"GERARDJM018"},"content":" String userInput \u003d \"client \" + targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2024-04-05"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"gosongying"},"content":" EditClientCommand expectedCommand \u003d new EditClientCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"LimZiJia":45,"gosongying":8,"-":130,"GERARDJM018":26}},{"path":"src/test/java/housekeeping/hub/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.FindClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.FindCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.ContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" FindClientCommand expectedFindCommand \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" new FindClientCommand(new ContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" Arrays.asList(\"Clementi\", \"Jurong\"), Arrays.asList(\"west\", \"east\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, \"client n/Alice Bob a/Clementi Jurong ar/west east\", expectedFindCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" //assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"LimZiJia":7,"gosongying":5,"-":24}},{"path":"src/test/java/housekeeping/hub/logic/parser/ListCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ListClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ListCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.ListHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"gosongying"},"content":"public class ListCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":" private ListCommandParser parser \u003d new ListCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" public void parse_invalidArg_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \"invalid\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \"clint\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" assertParseFailure(parser, \"house keeper\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" public void parse_validArgs_returnsListCommand() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, \"client\", new ListClientCommand());","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" assertParseSuccess(parser, \"housekeeper\", new ListHousekeeperCommand());","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"LimZiJia":7,"gosongying":38}},{"path":"src/test/java/housekeeping/hub/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"LimZiJia":10,"-":186}},{"path":"src/test/java/housekeeping/hub/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" assertEquals(Collections.emptyList(), addressBook.getClientList());","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" assertEquals(Collections.emptyList(), addressBook.getHousekeeperList());","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" // Two clients with the same identity fields","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" Housekeeper editedBob \u003d new HousekeeperBuilder(BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" .build();","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e newClients \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" List\u003cHousekeeper\u003e newHousekeepers \u003d Arrays.asList(BOB, editedBob);","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" AddressBookStub newData \u003d new AddressBookStub(newClients, newHousekeepers);","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasClient(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_nullHousekeeper_throwsNullPointerException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasHousekeeper(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" assertFalse(addressBook.hasClient(ALICE));","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" assertFalse(addressBook.hasHousekeeper(BOB));","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" assertTrue(addressBook.hasClient(ALICE));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(BOB);","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" assertTrue(addressBook.hasHousekeeper(BOB));","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" assertTrue(addressBook.hasClient(editedAlice));","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(BOB);","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" Housekeeper editedBob \u003d new HousekeeperBuilder(BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" .build();","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" assertTrue(addressBook.hasHousekeeper(editedBob));","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" public void getClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getClientList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" public void getHousekeeperList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getHousekeeperList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" /*@Test","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getClientList() + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" }*/","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" private final ObservableList\u003cClient\u003e clients \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"gosongying"},"content":" private final ObservableList\u003cHousekeeper\u003e housekeepers \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":135,"author":{"gitId":"gosongying"},"content":" AddressBookStub(Collection\u003cClient\u003e clients, Collection\u003cHousekeeper\u003e housekeepers) {","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"gosongying"},"content":" this.clients.setAll(clients);","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"gosongying"},"content":" this.housekeepers.setAll(housekeepers);","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"gosongying"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"gosongying"},"content":" return clients;","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":" public ObservableList\u003cHousekeeper\u003e getHousekeeperList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" return housekeepers;","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"LimZiJia":12,"gosongying":65,"-":74}},{"path":"src/test/java/housekeeping/hub/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.model.Model.PREDICATE_SHOW_ALL_CLIENTS;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.AddressBookBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"hub/book/file/path\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/hub/book/file/path\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"LimZiJia"},"content":" Path path \u003d Paths.get(\"hub/book/file/path\");","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasClient(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_nullHousekeeper_throwsNullPointerException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasHousekeeper(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" assertFalse(modelManager.hasClient(ALICE));","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" assertFalse(modelManager.hasHousekeeper(BOB));","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" public void hasClient_clientInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" modelManager.addClient(ALICE);","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" assertTrue(modelManager.hasClient(ALICE));","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" public void hasHousekeeper_housekeeperInAddressBook_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" modelManager.addHousekeeper(BOB);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" assertTrue(modelManager.hasHousekeeper(BOB));","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredClientList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" public void getFilteredHousekeeperList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredHousekeeperList().remove(0));","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withClient(ALICE).withClient(BENSON).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":143,"author":{"gitId":"gosongying"},"content":" modelManager.updateFilteredClientList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":147,"author":{"gitId":"gosongying"},"content":" modelManager.updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"LimZiJia":12,"gosongying":33,"-":109}},{"path":"src/test/java/housekeeping/hub/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"LimZiJia":2,"-":19}},{"path":"src/test/java/housekeeping/hub/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class AddressTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Address(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidAddress \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" // null hub","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long hub","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"LimZiJia":4,"-":52}},{"path":"src/test/java/housekeeping/hub/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"LimZiJia":2,"-":86}},{"path":"src/test/java/housekeeping/hub/model/person/HousekeeperTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_AREA_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_BOOKING_LIST_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.ParserUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.HousekeeperBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.PersonBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":"public class HousekeeperTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" private static Housekeeper copyBob;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" static {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" ArrayList\u003cString\u003e bobTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" bobTags.add(VALID_TAG_HUSBAND);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" bobTags.add(VALID_TAG_FRIEND);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" copyBob \u003d new Housekeeper(","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" ParserUtil.parseName(VALID_NAME_BOB),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" ParserUtil.parsePhone(VALID_PHONE_BOB),","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" ParserUtil.parseEmail(VALID_EMAIL_BOB),","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" ParserUtil.parseAddress(VALID_ADDRESS_BOB),","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" ParserUtil.parseTags(bobTags),","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" ParserUtil.parseArea(VALID_AREA_BOB),","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"GERARDJM018"},"content":" VALID_BOOKING_LIST_BOB);","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" //Assert that created Housekeeper object is not null","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"GERARDJM018"},"content":" assertNotNull(copyBob);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(copyBob.equals(BOB));","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(copyBob.equals(copyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(5));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":" Person editedCopyBob \u003d new HousekeeperBuilder(BOB).withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":" editedCopyBob \u003d new HousekeeperBuilder(BOB).withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"GERARDJM018"},"content":" editedCopyBob \u003d new HousekeeperBuilder(BOB).withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":" // different hub -\u003e returns false","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"GERARDJM018"},"content":" editedCopyBob \u003d new HousekeeperBuilder(BOB).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" editedCopyBob \u003d new HousekeeperBuilder(BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.equals(editedCopyBob));","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" public void isClient() {","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" //is a client -\u003e return true","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" assertTrue(AMY.isClient());","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" //is a housekeeper -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" assertFalse(BOB.isClient());","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" //is a housekeeper -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(copyBob.isClient());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"LimZiJia":21,"moguries":65,"GERARDJM018":25}},{"path":"src/test/java/housekeeping/hub/model/person/LeadsFilterPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"class LeadsFilterPredicateTest {","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":" // The combination here gives a predicted housekeeping date that is in the past. Client should get notification.","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":" private static final LocalDate DEFAULT_DATE \u003d LocalDate.parse(\"2023-04-01\");","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":" private static final Period DEFAULT_PERIOD \u003d Period.ofMonths(1);","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":" void client_no_housekeeping_details() {","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails();","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"LimZiJia"},"content":" void client_no_booking_date() {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(DEFAULT_DATE, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" void client_booking_date_after_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"LimZiJia"},"content":" Period period \u003d Period.ofMonths(1);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now().plus(period); // Create a date one month from now","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" void client_booking_date_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now(); // Create a date that is today","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"LimZiJia"},"content":" void client_booking_date_before_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"LimZiJia"},"content":" Period period \u003d Period.ofMonths(1);","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now().minus(period); // Create a date that is before today","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"LimZiJia"},"content":" assertTrue(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"LimZiJia"},"content":" void client_predicted_housekeeping_date_before_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(DEFAULT_DATE, DEFAULT_PERIOD);","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"LimZiJia"},"content":" assertTrue(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"LimZiJia"},"content":" void client_predicted_housekeeping_date_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now();","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"LimZiJia"},"content":" Period period \u003d Period.ZERO;","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, period);","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"LimZiJia"},"content":" assertTrue(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"LimZiJia"},"content":" void client_predicted_housekeeping_date_after_today() {","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"LimZiJia"},"content":" LeadsFilterPredicate predicate \u003d new LeadsFilterPredicate();","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"LimZiJia"},"content":" LocalDate date \u003d LocalDate.now();","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"LimZiJia"},"content":" Period period \u003d Period.ofMonths(1);","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"LimZiJia"},"content":" HousekeepingDetails housekeepingDetails \u003d new HousekeepingDetails(date, period);","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"GERARDJM018"},"content":" ClientBuilder clientBuilder \u003d new ClientBuilder().withDetails(housekeepingDetails);","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"GERARDJM018"},"content":" Client client \u003d clientBuilder.build();","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" assertFalse(predicate.test(client));","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"LimZiJia"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":99,"GERARDJM018":16}},{"path":"src/test/java/housekeeping/hub/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"LimZiJia":2,"-":58}},{"path":"src/test/java/housekeeping/hub/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"LimZiJia":2,"-":58}},{"path":"src/test/java/housekeeping/hub/model/person/TypePredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"public class TypePredicateTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" private static final TypePredicate TEST_PREDICATE_CLIENT \u003d new TypePredicate(\"client\");","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" private static final TypePredicate TEST_PREDICATE_CLIENT_2 \u003d new TypePredicate(\"client\");","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" private static final TypePredicate TEST_PREDICATE_HOUSEKEEPER \u003d new TypePredicate(\"housekeeper\");","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" public void testTest() {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" //Person is a client and type predicate is \"client\" -\u003e return true","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" assertTrue(TEST_PREDICATE_CLIENT.test(AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" //Person is a client and type predicate is \"housekeeper\" -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_HOUSEKEEPER.test(AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" // same type value -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" assertTrue(TEST_PREDICATE_CLIENT.equals(TEST_PREDICATE_CLIENT_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" assertTrue(TEST_PREDICATE_HOUSEKEEPER.equals(TEST_PREDICATE_HOUSEKEEPER));","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_CLIENT.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_CLIENT_2.equals(5));","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" // different object -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_CLIENT.equals(TEST_PREDICATE_HOUSEKEEPER));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" // prints correct type (client) -\u003e return true","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"LimZiJia"},"content":" assertTrue(TEST_PREDICATE_CLIENT.toString().equals(\"housekeeping.hub.model.person.TypePredicate{type\u003dclient}\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" // prints correct type (housekeeper) -\u003e return true","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"GERARDJM018"},"content":" assertTrue(TEST_PREDICATE_HOUSEKEEPER.toString()","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"LimZiJia"},"content":" .equals(\"housekeeping.hub.model.person.TypePredicate{type\u003dhousekeeper}\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" //prints wrong type -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" assertFalse(TEST_PREDICATE_CLIENT_2.toString()","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" .equals(\"housekeeping.hub.model.person.TypePredicate{type\u003dhousekeeper}\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" // prints wrong string -\u003e return false","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" assertFalse(TEST_PREDICATE_CLIENT.toString().equals(\"{type\u003dclient}\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"LimZiJia":5,"moguries":50,"GERARDJM018":2}},{"path":"src/test/java/housekeeping/hub/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.person;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.ClientBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" private final UniquePersonList\u003cClient\u003e uniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" uniquePersonList.setPerson(ALICE, HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" expectedUniquePersonList.add(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" uniquePersonList.add(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, HOON));","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList\u003cClient\u003e) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"gosongying"},"content":" expectedUniquePersonList.add(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"gosongying"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cClient\u003e) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e personList \u003d Collections.singletonList(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"gosongying"},"content":" UniquePersonList\u003cClient\u003e expectedUniquePersonList \u003d new UniquePersonList\u003c\u003e();","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"gosongying"},"content":" expectedUniquePersonList.add(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"gosongying"},"content":" List\u003cClient\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"LimZiJia":9,"gosongying":19,"-":147}},{"path":"src/test/java/housekeeping/hub/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.model.tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"LimZiJia":2,"-":24}},{"path":"src/test/java/housekeeping/hub/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Type;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"LimZiJia"},"content":" private static final String INVALID_TYPE \u003d \"hoousekeeper\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" private static final String VALID_AREA \u003d BENSON.getArea().toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d new JsonAdaptedClient(BENSON);","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"LimZiJia"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"LimZiJia"},"content":" String expectedMessage \u003d Type.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"LimZiJia"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":" public void toModelType_nullType_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" JsonAdaptedClient person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, null, VALID_AREA);","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"LimZiJia"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Type.class.getSimpleName());","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"LimZiJia"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":20,"gosongying":24,"-":88}},{"path":"src/test/java/housekeeping/hub/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.IDA;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" original.addClient(HOON);","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" original.removeClient(ALICE);","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" original.addHousekeeper(IDA);","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":9,"gosongying":3,"-":98}},{"path":"src/test/java/housekeeping/hub/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.util.JsonUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.testutil.TypicalPersons;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"LimZiJia":6,"-":41}},{"path":"src/test/java/housekeeping/hub/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Optional\u003cUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new JsonUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private UserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2017-02-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"addressbook.json\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new UserPrefs(), null));","lastModifiedDate":"2019-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private void saveUserPrefs(UserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2016-10-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage jsonUserPrefsStorage \u003d new JsonUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":" UserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"LimZiJia":5,"-":118}},{"path":"src/test/java/housekeeping/hub/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.storage;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.GuiSettings;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":6,"-":62}},{"path":"src/test/java/housekeeping/hub/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" * Adds a new {@code Client} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" public AddressBookBuilder withClient(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" addressBook.addClient(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" * Adds a new {@code Housekeeper} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" public AddressBookBuilder withHousekeeper(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" addressBook.addHousekeeper(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":4,"gosongying":11,"-":28}},{"path":"src/test/java/housekeeping/hub/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Assertions;","lastModifiedDate":"2019-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.function.Executable;","lastModifiedDate":"2019-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A set of assertion methods useful for writing tests.","lastModifiedDate":"2017-07-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Assert {","lastModifiedDate":"2017-07-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception.","lastModifiedDate":"2019-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This is a wrapper method that invokes {@link Assertions#assertThrows(Class, Executable)}, to maintain consistency","lastModifiedDate":"2019-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * with our custom {@link #assertThrows(Class, String, Executable)} method.","lastModifiedDate":"2019-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * To standardize API calls in this project, users should use this method instead of","lastModifiedDate":"2019-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * {@link Assertions#assertThrows(Class, Executable)}.","lastModifiedDate":"2019-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Asserts that the {@code executable} throws the {@code expectedType} Exception with the {@code expectedMessage}.","lastModifiedDate":"2019-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * If there\u0027s no need for the verification of the exception\u0027s error message, call","lastModifiedDate":"2018-02-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@link #assertThrows(Class, Executable)} instead.","lastModifiedDate":"2019-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @see #assertThrows(Class, Executable)","lastModifiedDate":"2019-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-02-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static void assertThrows(Class\u003c? extends Throwable\u003e expectedType, String expectedMessage,","lastModifiedDate":"2019-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Executable executable) {","lastModifiedDate":"2019-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Throwable thrownException \u003d Assertions.assertThrows(expectedType, executable);","lastModifiedDate":"2019-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"LimZiJia":1,"-":33}},{"path":"src/test/java/housekeeping/hub/testutil/ClientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import java.time.Period;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.util.SampleDataUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":" * A utility class to help with building Client objects.","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":"public class ClientBuilder {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_AREA \u003d \"west\";","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_LAST_CLEANING_DATE \u003d \"2021-10-10\";","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_PREFERRED_INTERVAL \u003d \"1\";","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" private Name name;","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" private Phone phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" private Email email;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":" private Address address;","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" private Area area;","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" private HousekeepingDetails housekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" * Creates a {@code ClientBuilder} with the default details.","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" public ClientBuilder() {","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" area \u003d new Area(DEFAULT_AREA);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" housekeepingDetails \u003d new HousekeepingDetails(LocalDate.parse(DEFAULT_LAST_CLEANING_DATE),","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" Period.ofMonths(Integer.parseInt(DEFAULT_PREFERRED_INTERVAL)));","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" * Initializes the ClientBuilder with the data of {@code clientToCopy}.","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" public ClientBuilder(Client clientToCopy) {","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" name \u003d clientToCopy.getName();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" phone \u003d clientToCopy.getPhone();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" email \u003d clientToCopy.getEmail();","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" address \u003d clientToCopy.getAddress();","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" area \u003d clientToCopy.getArea();","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" tags \u003d new HashSet\u003c\u003e(clientToCopy.getTags());","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" housekeepingDetails \u003d clientToCopy.getDetails();","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Name} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withName(String name) {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withTags(String ... tags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Address} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withAddress(String address) {","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Phone} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withPhone(String phone) {","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Email} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withEmail(String email) {","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Area} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" public ClientBuilder withArea(String area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" this.area \u003d new Area(area);","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"LimZiJia"},"content":" * Sets the {@code HousekeepingDetails} of the {@code Client} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"LimZiJia"},"content":" public ClientBuilder withDetails(HousekeepingDetails housekeepingDetails) {","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"LimZiJia"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":" * Returns client with the given data.","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"gosongying"},"content":" public Client build() {","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"gosongying"},"content":" return new Client(name, phone, email, address, tags, housekeepingDetails, area);","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":18,"gosongying":110}},{"path":"src/test/java/housekeeping/hub/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" descriptor.setArea(person.getArea());","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" if (person.isClient()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" Client client \u003d (Client) person;","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" descriptor.setDetails(client.getDetails());","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" Housekeeper housekeeper \u003d (Housekeeper) person;","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" descriptor.setBookingList(housekeeper.getBookingList());","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" public EditPersonDescriptorBuilder withArea(String area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" descriptor.setArea(new Area(area));","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" public EditPersonDescriptorBuilder withBookingList(BookingList bookingList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" descriptor.setBookingList(bookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" public EditPersonDescriptorBuilder withDetails(HousekeepingDetails details) {","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":" descriptor.setDetails(details);","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"LimZiJia":13,"gosongying":23,"-":79}},{"path":"src/test/java/housekeeping/hub/testutil/HousekeeperBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"gosongying"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"gosongying"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.util.SampleDataUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"gosongying"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"gosongying"},"content":" * A utility class to help with building Housekeeper objects.","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"gosongying"},"content":"public class HousekeeperBuilder {","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" public static final String DEFAULT_AREA \u003d \"west\";","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":" private Name name;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" private Phone phone;","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" private Email email;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" private Address address;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"gosongying"},"content":" private Area area;","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"gosongying"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" private BookingList bookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" * Creates a {@code HousekeeperBuilder} with the default details.","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder() {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" area \u003d new Area(DEFAULT_AREA);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" bookingList \u003d new BookingList();","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"gosongying"},"content":" * Initializes the HousekeeperBuilder with the data of {@code housekeeperToCopy}.","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder(Housekeeper housekeeperToCopy) {","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" name \u003d housekeeperToCopy.getName();","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" phone \u003d housekeeperToCopy.getPhone();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" email \u003d housekeeperToCopy.getEmail();","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" address \u003d housekeeperToCopy.getAddress();","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" area \u003d housekeeperToCopy.getArea();","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" tags \u003d new HashSet\u003c\u003e(housekeeperToCopy.getTags());","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" bookingList \u003d new BookingList();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Name} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withName(String name) {","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withTags(String ... tags) {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Address} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withAddress(String address) {","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"gosongying"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Phone} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withPhone(String phone) {","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"gosongying"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Email} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withEmail(String email) {","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"gosongying"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"gosongying"},"content":" * Sets the {@code Area} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withArea(String area) {","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"gosongying"},"content":" this.area \u003d new Area(area);","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"gosongying"},"content":" * Sets the {@code BookingList} of the {@code Housekeeper} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"gosongying"},"content":" public HousekeeperBuilder withBookingList(BookingList bookingList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"gosongying"},"content":" this.bookingList \u003d bookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"gosongying"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"gosongying"},"content":" * Returns housekeeper with the given data.","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"gosongying"},"content":" public Housekeeper build() {","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"gosongying"},"content":" return new Housekeeper(name, phone, email, address, tags, area, bookingList);","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"gosongying"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"LimZiJia":10,"gosongying":113}},{"path":"src/test/java/housekeeping/hub/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Area;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.BookingList;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.HousekeepingDetails;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Type;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.util.SampleDataUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"LimZiJia"},"content":" public static final String DEFAULT_TYPE \u003d \"client\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"LimZiJia"},"content":" public static final String DEFAULT_AREA \u003d \"east\";","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"LimZiJia"},"content":" public static final String DEFAULT_HOUSEKEEPINGDETAILS \u003d \"null\";","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"LimZiJia"},"content":" private Type type;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"LimZiJia"},"content":" private HousekeepingDetails housekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"LimZiJia"},"content":" private Area area;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"LimZiJia"},"content":" private BookingList bookingList;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"LimZiJia"},"content":" type \u003d new Type(DEFAULT_TYPE);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"LimZiJia"},"content":" housekeepingDetails \u003d new HousekeepingDetails();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"LimZiJia"},"content":" area \u003d new Area(DEFAULT_AREA);","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"LimZiJia"},"content":" bookingList \u003d new BookingList();","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"LimZiJia"},"content":" * Sets the {@code Type} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"LimZiJia"},"content":" public PersonBuilder withType(String type) {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"LimZiJia"},"content":" this.type \u003d new Type(type);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"LimZiJia"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"LimZiJia"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"LimZiJia"},"content":" * Sets the {@code HousekeepingDetails} of the {@code Person} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"LimZiJia"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"LimZiJia"},"content":" public PersonBuilder withHousekeepingDetails(HousekeepingDetails housekeepingDetails) {","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"LimZiJia"},"content":" this.housekeepingDetails \u003d housekeepingDetails;","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"LimZiJia"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"LimZiJia"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"GERARDJM018"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"GERARDJM018"},"content":" * Returns either client or housekeeper with the given data","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"GERARDJM018"},"content":" * based on the {@code Type}.","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"GERARDJM018"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":131,"author":{"gitId":"LimZiJia"},"content":" switch (type.toString()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"LimZiJia"},"content":" case \"client\":","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"GERARDJM018"},"content":" return new Client(name, phone, email, address, tags, housekeepingDetails, area);","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"LimZiJia"},"content":" case \"housekeeper\":","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"GERARDJM018"},"content":" return new Housekeeper(name, phone, email, address, tags, area, bookingList);","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"LimZiJia"},"content":" default:","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"LimZiJia"},"content":" return null;","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"LimZiJia"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"LimZiJia":46,"-":88,"GERARDJM018":6}},{"path":"src/test/java/housekeeping/hub/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_AREA;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_DETAILS;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddClientCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.AddHousekeeperCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.tag.Tag;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"gosongying"},"content":" public static String getAddClientCommand(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"gosongying"},"content":" return AddClientCommand.COMMAND_WORD + \" \" + getClientDetails(client);","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"gosongying"},"content":" public static String getAddHousekeeperCommand(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" return AddHousekeeperCommand.COMMAND_WORD + \" \" + getHousekeeperDetails(housekeeper);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"gosongying"},"content":" * Returns the part of command string for the given {@code client}\u0027s details.","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"gosongying"},"content":" public static String getClientDetails(Client client) {","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_NAME + client.getName().fullName + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_PHONE + client.getPhone().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_EMAIL + client.getEmail().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_ADDRESS + client.getAddress().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_AREA + client.getArea().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"gosongying"},"content":" client.getTags().stream().forEach(","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"gosongying"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_DETAILS + client.getDetails().toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"gosongying"},"content":" return sb.toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":51,"author":{"gitId":"gosongying"},"content":" * Returns the part of command string for the given {@code housekeeper}\u0027s details.","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" public static String getHousekeeperDetails(Housekeeper housekeeper) {","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_NAME + housekeeper.getName().fullName + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_PHONE + housekeeper.getPhone().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_EMAIL + housekeeper.getEmail().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_ADDRESS + housekeeper.getAddress().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_AREA + housekeeper.getArea().value + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" housekeeper.getTags().stream().forEach(","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" sb.append(PREFIX_DETAILS + housekeeper.getDetails().toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":77,"author":{"gitId":"gosongying"},"content":" descriptor.getArea().ifPresent(area -\u003e sb.append(PREFIX_AREA).append(area.value).append(\" \"));","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":86,"author":{"gitId":"gosongying"},"content":" descriptor.getDetails().ifPresent(details -\u003e sb.append(PREFIX_DETAILS).append(details.toString()));","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"LimZiJia":14,"gosongying":33,"-":42}},{"path":"src/test/java/housekeeping/hub/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2016-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A class used to test serialization and deserialization","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class SerializableTestClass {","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String JSON_STRING_REPRESENTATION \u003d String.format(\"{%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \" \\\"name\\\" : \\\"This is a test class\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \" \\\"listOfLocalDateTimes\\\" : \"","lastModifiedDate":"2016-10-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"[ \\\"-999999999-01-01T00:00:00\\\", \\\"+999999999-12-31T23:59:59.999999999\\\", \"","lastModifiedDate":"2016-10-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"\\\"0001-01-01T01:01:00\\\" ],%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \" \\\"mapOfIntegerToString\\\" : {%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \" \\\"1\\\" : \\\"One\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \" \\\"2\\\" : \\\"Two\\\",%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" \\\"3\\\" : \\\"Three\\\"%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" }%n\"","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"}\");","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String NAME_TEST_VALUE \u003d \"This is a test class\";","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private String name;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private List\u003cLocalDateTime\u003e listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private HashMap\u003cInteger, String\u003e mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getNameTestValue() {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return NAME_TEST_VALUE;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static List\u003cLocalDateTime\u003e getListTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" List\u003cLocalDateTime\u003e listOfLocalDateTimes \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MIN);","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.MAX);","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" listOfLocalDateTimes.add(LocalDateTime.of(1, 1, 1, 1, 1));","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static HashMap\u003cInteger, String\u003e getHashMapTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" HashMap\u003cInteger, String\u003e mapOfIntegerToString \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(1, \"One\");","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(2, \"Two\");","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" mapOfIntegerToString.put(3, \"Three\");","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setTestValues() {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name \u003d getNameTestValue();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" listOfLocalDateTimes \u003d getListTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" mapOfIntegerToString \u003d getHashMapTestValues();","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getName() {","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public List\u003cLocalDateTime\u003e getListOfLocalDateTimes() {","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return listOfLocalDateTimes;","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public HashMap\u003cInteger, String\u003e getMapOfIntegerToString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return mapOfIntegerToString;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":1,"-":71}},{"path":"src/test/java/housekeeping/hub/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"gosongying"},"content":" * Returns the middle index of the client in the {@code model}\u0027s client list.","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"gosongying"},"content":" public static Index getMidClientIndex(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"gosongying"},"content":" return Index.fromOneBased(model.getFilteredClientList().size() / 2);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"gosongying"},"content":" * Returns the middle index of the housekeeper in the {@code model}\u0027s housekeeper list.","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"gosongying"},"content":" public static Index getMidHousekeeperIndex(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"gosongying"},"content":" return Index.fromOneBased(model.getFilteredHousekeeperList().size() / 2);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"gosongying"},"content":" * Returns the last index of the client in the {@code model}\u0027s client list.","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"gosongying"},"content":" public static Index getLastClientIndex(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"gosongying"},"content":" return Index.fromOneBased(model.getFilteredClientList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"gosongying"},"content":" * Returns the last index of the housekeeper in the {@code model}\u0027s housekeeper list.","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"gosongying"},"content":" public static Index getLastHousekeeperIndex(Model model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"gosongying"},"content":" return Index.fromOneBased(model.getFilteredHousekeeperList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"gosongying"},"content":" * Returns the client in the {@code model}\u0027s client list at {@code index}.","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"gosongying"},"content":" public static Person getClient(Model model, Index index) {","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"gosongying"},"content":" return model.getFilteredClientList().get(index.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"gosongying"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"gosongying"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"gosongying"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"gosongying"},"content":" * Returns the housekeeper in the {@code model}\u0027s housekeeper list at {@code index}.","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"gosongying"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"gosongying"},"content":" public static Person getHousekeeper(Model model, Index index) {","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"gosongying"},"content":" return model.getFilteredHousekeeperList().get(index.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LimZiJia":4,"gosongying":30,"-":42}},{"path":"src/test/java/housekeeping/hub/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Index INDEX_FIRST_PERSON \u003d Index.fromOneBased(1);","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Index INDEX_SECOND_PERSON \u003d Index.fromOneBased(2);","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Index INDEX_THIRD_PERSON \u003d Index.fromOneBased(3);","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"LimZiJia":2,"-":10}},{"path":"src/test/java/housekeeping/hub/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_AREA_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_AREA_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Client;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.model.person.Housekeeper;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"gosongying"},"content":" public static final Client ALICE \u003d new ClientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"GERARDJM018"},"content":" .withPhone(\"94351253\").withTags(\"friends\").withArea(\"west\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"GERARDJM018"},"content":" public static final Client BENSON \u003d new ClientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"GERARDJM018"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"GERARDJM018"},"content":" .withTags(\"owesMoney\", \"friends\").withArea(\"east\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"GERARDJM018"},"content":" public static final Client CARL \u003d new ClientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withArea(\"south\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"GERARDJM018"},"content":" public static final Client DANIEL \u003d new ClientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").withArea(\"north\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper ELLE \u003d new HousekeeperBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withArea(\"southeast\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper FIONA \u003d new HousekeeperBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withArea(\"northwest\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper GEORGE \u003d new HousekeeperBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withArea(\"southwest\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"GERARDJM018"},"content":" public static final Client HOON \u003d new ClientBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withArea(\"west\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper IDA \u003d new HousekeeperBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"GERARDJM018"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withArea(\"east\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":54,"author":{"gitId":"GERARDJM018"},"content":" public static final Client AMY \u003d new ClientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"GERARDJM018"},"content":" .withArea(VALID_AREA_AMY).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"GERARDJM018"},"content":" public static final Housekeeper BOB \u003d new HousekeeperBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"GERARDJM018"},"content":" .withArea(VALID_AREA_BOB).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"GERARDJM018"},"content":" for (Client client : getTypicalClients()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"GERARDJM018"},"content":" ab.addClient(client);","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"GERARDJM018"},"content":" for (Housekeeper housekeeper : getTypicalHousekeepers()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"GERARDJM018"},"content":" ab.addHousekeeper(housekeeper);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":79,"author":{"gitId":"GERARDJM018"},"content":" public static List\u003cClient\u003e getTypicalClients() {","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"GERARDJM018"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL));","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"GERARDJM018"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"GERARDJM018"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"GERARDJM018"},"content":" public static List\u003cHousekeeper\u003e getTypicalHousekeepers() {","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"GERARDJM018"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"LimZiJia":16,"moguries":1,"gosongying":1,"-":34,"GERARDJM018":34}},{"path":"src/test/java/housekeeping/hub/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.beans.DefaultProperty;","lastModifiedDate":"2016-12-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * A test object which can be constructed via an FXML file.","lastModifiedDate":"2016-12-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Unlike other JavaFX classes, this class can be constructed without the JavaFX toolkit being initialized.","lastModifiedDate":"2016-12-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"@DefaultProperty(\"text\")","lastModifiedDate":"2016-12-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class TestFxmlObject {","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private String text;","lastModifiedDate":"2016-12-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public TestFxmlObject() {}","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public TestFxmlObject(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" setText(text);","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public String getText() {","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return text;","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setText(String text) {","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.text \u003d text;","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!(other instanceof TestFxmlObject)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" TestFxmlObject otherTestFxmlObject \u003d (TestFxmlObject) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Objects.equals(text, otherTestFxmlObject.text);","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"LimZiJia":1,"-":44}},{"path":"src/test/java/housekeeping/hub/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LimZiJia"},"content":"package housekeeping.hub.ui;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"LimZiJia"},"content":"import static housekeeping.hub.testutil.Assert.assertThrows;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.net.URL;","lastModifiedDate":"2016-12-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2019-04-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-21"},{"lineNumber":14,"author":{"gitId":"LimZiJia"},"content":"import housekeeping.hub.MainApp;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class UiPartTest {","lastModifiedDate":"2016-12-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String MISSING_FILE_PATH \u003d \"UiPartTest/missingFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_FILE_PATH \u003d \"UiPartTest/invalidFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_PATH \u003d \"UiPartTest/validFile.fxml\";","lastModifiedDate":"2016-12-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String VALID_FILE_WITH_FX_ROOT_PATH \u003d \"UiPartTest/validFileWithFxRoot.fxml\";","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final TestFxmlObject VALID_FILE_ROOT \u003d new TestFxmlObject(\"Hello World!\");","lastModifiedDate":"2016-12-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor_nullFileUrl_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2019-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_missingFileUrl_throwsAssertionError() throws Exception {","lastModifiedDate":"2016-12-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" URL missingFileUrl \u003d new URL(testFolder.toUri().toURL(), MISSING_FILE_PATH);","lastModifiedDate":"2019-04-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl));","lastModifiedDate":"2019-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void constructor_invalidFileUrl_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" URL invalidFileUrl \u003d getTestFileUrl(INVALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl));","lastModifiedDate":"2019-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void constructor_validFileUrl_loadsFile() {","lastModifiedDate":"2016-12-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_PATH);","lastModifiedDate":"2016-12-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl).getRoot());","lastModifiedDate":"2016-12-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-11-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void constructor_validFileWithFxRootUrl_loadsFile() {","lastModifiedDate":"2017-11-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" URL validFileUrl \u003d getTestFileUrl(VALID_FILE_WITH_FX_ROOT_PATH);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" TestFxmlObject root \u003d new TestFxmlObject();","lastModifiedDate":"2017-11-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, new TestUiPart\u003cTestFxmlObject\u003e(validFileUrl, root).getRoot());","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void constructor_nullFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void constructor_missingFileName_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH));","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void constructor_invalidFileName_throwsAssertionError() {","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH));","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private URL getTestFileUrl(String testFilePath) {","lastModifiedDate":"2016-12-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String testFilePathInView \u003d \"/view/\" + testFilePath;","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" URL testFileUrl \u003d MainApp.class.getResource(testFilePathInView);","lastModifiedDate":"2016-12-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertNotNull(testFileUrl, testFilePathInView + \" does not exist.\");","lastModifiedDate":"2019-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return testFileUrl;","lastModifiedDate":"2016-12-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * UiPart used for testing.","lastModifiedDate":"2016-12-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * It should only be used with invalid FXML files or the valid file located at {@link VALID_FILE_PATH}.","lastModifiedDate":"2016-12-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private static class TestUiPart\u003cT\u003e extends UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private TestFxmlObject validFileRoot; // Check that @FXML annotations work","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" super(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" super(fxmlFileName, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" super(fxmlFileUrl);","lastModifiedDate":"2016-12-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" super(fxmlFileName);","lastModifiedDate":"2016-12-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"LimZiJia":3,"-":111}},{"path":"src/test/resources/view/UiPartTest/validFile.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-12-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"\u003c?import housekeeping.hub.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2016-12-21"}],"authorContributionMap":{"LimZiJia":1,"-":3}},{"path":"src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":3,"author":{"gitId":"LimZiJia"},"content":"\u003cfx:root type\u003d\"housekeeping.hub.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"LimZiJia":1,"-":5}}] diff --git a/AY2324S2-CS2103T-W09-1_tp_master/commits.json b/AY2324S2-CS2103T-W09-1_tp_master/commits.json index 7e6ab6ee..c8a9654b 100644 --- a/AY2324S2-CS2103T-W09-1_tp_master/commits.json +++ b/AY2324S2-CS2103T-W09-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LimZiJia":[{"date":"2024-03-06","commitResults":[{"hash":"ee4f360515f749c82a1b24b98d02deffe5ae36d9","isMergeCommit":false,"messageTitle":"Add Remark Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":203,"deletions":10},"test-code":{"insertions":238,"deletions":2}}},{"hash":"614ff1f4ed3e19eccefedbfcfbc29f4a0c577f3d","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":5},"test-code":{"insertions":2,"deletions":4}}},{"hash":"8d34c34841053a9a44cd79c8979ef1398204a7ad","isMergeCommit":true,"messageTitle":"Merge pull request #15 from LimZiJia/tutorial-adding-command","messageBody":"Tutorial adding command","fileTypesAndContributionMap":{}},{"hash":"b24538eaccd0465698add13c701ce1cbf06f77a9","isMergeCommit":false,"messageTitle":"Revert \"Tutorial adding command\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":210},"test-code":{"insertions":2,"deletions":236}}},{"hash":"5e4abdea235e3878401b33a9fe56441c6ac15581","isMergeCommit":true,"messageTitle":"Merge pull request #16 from AY2324S2-CS2103T-W09-1/revert-15-tutorial-adding-command","messageBody":"Revert \"Tutorial adding command\"","fileTypesAndContributionMap":{}},{"hash":"201bebc8e093fbc82a52c227b8a2649c95e4a7c6","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Edited target user profile, value proposition, user stories and glossary.\n","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":11}}},{"hash":"c4387b86ba92c4c66fe9b7d201913bff5e2f0b91","isMergeCommit":false,"messageTitle":"Upload placeholder image and change some links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":4}}},{"hash":"bc4666b7980635394d2d5d460ace1087f9705688","isMergeCommit":false,"messageTitle":"Add email","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"6291069b1a50ea2741a20610f232e6aafa4acfda","isMergeCommit":true,"messageTitle":"Merge pull request #23 from GERARDJM018/about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"e9ce6f7130ca1224a2235028ecd70f35f663f5f9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-zijia-about-us","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"205cda491a8566ed140cfdc325d4fae058e9deb1","isMergeCommit":false,"messageTitle":"Update About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"27207e2fae59cd72ecafd588fd229daef34feefc","isMergeCommit":true,"messageTitle":"Merge pull request #25 from moguries/update-DG-for-use-cases","messageBody":"Update the DG for use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"691da392d2f9ea4e6396cb7c293dbf3fed202de0","isMergeCommit":false,"messageTitle":"Update add UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":6}}},{"hash":"e571d522f686da06a39d73da97820a35dd57cad3","isMergeCommit":false,"messageTitle":"Make list UG consistent","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"6770bb14692960a9aa20b64faa0ef0f45e576c2b","isMergeCommit":false,"messageTitle":"Add base classes of Client and Housekeer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":0}}},{"hash":"c54b16627439eddc768f489fd7b864ab0b630ff2","isMergeCommit":false,"messageTitle":"Fix javadoc and checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}},{"hash":"e2f1500edf5dafa975b061342fde2077b256cb1c","isMergeCommit":false,"messageTitle":"Fix import order in Client.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e8cffb11cae0d38364af3d0c2fb7f3af3b00604a","isMergeCommit":false,"messageTitle":"Fix import order in Client","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"18f4ca9ac637323aa9d41940d6d2e0d2a9411248","isMergeCommit":true,"messageTitle":"Merge pull request #45 from GERARDJM018/V1.2-List","messageBody":"Update ListCommand.java","fileTypesAndContributionMap":{}},{"hash":"3c181e052730149d9d0ef03d4cfe5eaddca0881b","isMergeCommit":false,"messageTitle":"Added client and housekeeper prembles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":6}}},{"hash":"2447cd250a2960484291ae3301fd21ee9271b106","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":13}}}]},{"date":"2024-03-19","commitResults":[{"hash":"0ba88252c878d171cdf314bfbb7cd0ffc80d0e81","isMergeCommit":false,"messageTitle":"Create new class for type","messageBody":"There were many tests that have a standard format.\n\nI decided to add the class Type so that it is easier to follow these formats\n","fileTypesAndContributionMap":{"functional-code":{"insertions":133,"deletions":32},"test-code":{"insertions":74,"deletions":20}}},{"hash":"ecb2d970a97af36ae2c8851170749e49301f71fd","isMergeCommit":false,"messageTitle":"Moved preambleIsAllowed()","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":17}}},{"hash":"8d161a9c7d70650f46f370a7fc67b3626f9bb6b4","isMergeCommit":true,"messageTitle":"Merge pull request #47 from GERARDJM018/V1.2-List","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"3b6d28d3039609946ee9fd6baf3cca45c7a8532f","isMergeCommit":true,"messageTitle":"Merge pull request #48 from GERARDJM018/V1.2-List","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"e4cfb3b6f61e89d820f6a3806cf5daea9d95f890","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":50}}},{"hash":"312db31d651c57b8abad604d35aa6531df0acdce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ui","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5e992f911f64bba559797a825d97d4e87010fb0c","isMergeCommit":true,"messageTitle":"Merge pull request #52 from gosongying/ui","messageBody":"Enhance UI and change user guide\u0027s url","fileTypesAndContributionMap":{}},{"hash":"efe13491708e4634eec7dc14b65ddc22a091f4a8","isMergeCommit":false,"messageTitle":"Update quick start of UG","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":1},"docs":{"insertions":6,"deletions":2}}},{"hash":"e81be0b8217e1ae788d3170b5e19af3d57c4340c","isMergeCommit":true,"messageTitle":"Merge branch \u0027Update-quick-start-UG\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f2ebeb1e7a0b3923e0717cf566893f266e8191ae","isMergeCommit":true,"messageTitle":"Merge pull request #56 from gosongying/UgAndMessage","messageBody":"Ug and message","fileTypesAndContributionMap":{}},{"hash":"90c4a76e999a95ea62b319ce2950a91cdb7949f5","isMergeCommit":true,"messageTitle":"Merge pull request #57 from moguries/update-UG","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"6083d752a1ee4a4e892b26462f975760b4efcb8e","isMergeCommit":false,"messageTitle":"Update BetterModelClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"399ebac091271ecc21af93fe130b9cdbdff4cfc9","isMergeCommit":true,"messageTitle":"Merge pull request #61 from GERARDJM018/V1.2-List","messageBody":"Update UMLDiagram","fileTypesAndContributionMap":{}},{"hash":"296443434f638954e67588a8afb596af3decdc54","isMergeCommit":true,"messageTitle":"Merge pull request #64 from moguries/add-puml-for-add-command","messageBody":"Add AddSequenceDiagram.puml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-28","commitResults":[{"hash":"98d45af13de18cd1b0eb4cc8b588651b93b72545","isMergeCommit":false,"messageTitle":"Make class housekeeping details","messageBody":"This class is to be used for sorting clients by predicted next cleaning date.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":2},"other":{"insertions":5,"deletions":1},"docs":{"insertions":5,"deletions":2}}},{"hash":"9040b7b1b5c13161a6ce8edf9fd5901e9fdbd027","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"cb86b185a875cc5ef6097e6135015c8c6f362e35","isMergeCommit":false,"messageTitle":"Enable HousekeepingDetails to be added and saved","messageBody":"Bugs: Client list not showing\n","fileTypesAndContributionMap":{"functional-code":{"insertions":210,"deletions":62}}},{"hash":"0f6b895346557dd76f36af083e0fcbd951f7955e","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"Update regex for stored details string.\n\nAdd details label in the fxml. (this was causing the cards not to show up)\n\nImprove messages.\n\nDetails are now optional to fit requirements.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":18}}}]},{"date":"2024-03-29","commitResults":[{"hash":"e09c07d32dcaa79d588b5fc076d5f1024dbdb7ba","isMergeCommit":false,"messageTitle":"Update class diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":8}}},{"hash":"13caaee908e8f53430a8fd37f3bc3c35198dc17b","isMergeCommit":false,"messageTitle":"Add proposed implementation for sorting clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}},{"hash":"3686173882716bb9df7ffebbaf93dad609d1e77e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-1:master\u0027 into Housekeeping-details","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"370e5fd2749081c9ac58c76ac765da00c0259eae","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-DG-v1.3","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1c71d3d8c474c951eab7f99488fd98af4a5abc02","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"e6ba27c586694171afef138ed13896087eaad46b","isMergeCommit":false,"messageTitle":"Enable assertions","messageBody":"Also update shadowJar archive version\n","fileTypesAndContributionMap":{"other":{"insertions":5,"deletions":1}}},{"hash":"7dec5fc5cb7abacbdce12712a79f9c0585774324","isMergeCommit":true,"messageTitle":"Merge pull request #84 from gosongying/DG","messageBody":"Update DG","tags":["v1.3.0"],"fileTypesAndContributionMap":{}},{"hash":"e6ab3553e0eab24b8c4d8bc1e95b1266e74e3f88","isMergeCommit":false,"messageTitle":"Remove \"\\$email\"","messageBody":"It was showing on the details for housekeepers who should not have any details.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-31","commitResults":[{"hash":"3db5ab5e83cfa690596890f416a5eaa0cbc4371c","isMergeCommit":false,"messageTitle":"add bookingDate and deferment to HousekeepingDetails","messageBody":"Fix some error of storing null.\n\nNow, HousekeepingDetails of client cannot be null. Instead it will be HousekeepingDetails.empty\n","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":18}}},{"hash":"4cf630118f00310bff5bd3a6b0d64c1ab3b1d6d7","isMergeCommit":false,"messageTitle":"Add getters and setters to HousekeepingDetails","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":54}}}]},{"date":"2024-04-01","commitResults":[{"hash":"8f672c12fca2554c40f0bf071b94cfc691832715","isMergeCommit":false,"messageTitle":"Implement LeadsCommand","messageBody":"Added LeadsFilterPredicate and enable model to sort.\n\nLeads now shows clients with predicted date \u003c\u003d now.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":150,"deletions":14}}}]},{"date":"2024-04-02","commitResults":[{"hash":"4992f8923a2e7c74de16f08abc03d9001ea09f1b","isMergeCommit":true,"messageTitle":"Merge pull request #89 from moguries/implement-booking-system","messageBody":"Implement booking system for housekeepers","fileTypesAndContributionMap":{}},{"hash":"80cd506cdffb3f64c7f25f18474e406f19b77aa6","isMergeCommit":false,"messageTitle":"Refactor execute method","messageBody":"This method will get a lot longer, so best to refactor\n","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":54}}},{"hash":"b410dcdb2031c086b391f625df59ad56d4a94f28","isMergeCommit":false,"messageTitle":"Split booking command for client and housekeeper","messageBody":"Refactored some code and changed the matcher regex.\n\nPlaceholders are used for parsing booking command for client\n","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":17}}},{"hash":"e174b8840acb2a4d53e5f5048b14fb07fcc5aeef","isMergeCommit":false,"messageTitle":"Implement set and remove","messageBody":"Fixes #95\n","fileTypesAndContributionMap":{"functional-code":{"insertions":105,"deletions":38}}},{"hash":"eb58286110b8cf2d874488c8ab72c3f62544debf","isMergeCommit":false,"messageTitle":"Implement add and delete Booking for client","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":100,"deletions":35}}}]},{"date":"2024-04-04","commitResults":[{"hash":"41bb7415b3656da7437a83d34bb3687699f3dfd0","isMergeCommit":false,"messageTitle":"Update UI","messageBody":"Wanted to play with the UI a little bit and make it more colourful.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"864cd90ee90ebebea153de4eb973570cd15c8d2b","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":100,"deletions":22}}},{"hash":"37b08aba90fa86aee378fe0e8fd060cc255a2379","isMergeCommit":false,"messageTitle":"Some corrections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":13}}},{"hash":"67938d16618eb7a7d00915769ece391f3f0090ce","isMergeCommit":false,"messageTitle":"Add emoji","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":8}}},{"hash":"f2fbca7f7c2d09e8d69fc222f0874b14114dfa80","isMergeCommit":false,"messageTitle":"Fix editing booking details commands","messageBody":"last -\u003e edit lhd/\ninterval -\u003e edit pi/\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"2298c782dc2c4b9ddd03170fd31281743b89baa5","isMergeCommit":true,"messageTitle":"Merge pull request #107 from moguries/fix-bugs","messageBody":"Fix bugs","fileTypesAndContributionMap":{}},{"hash":"cc9d34588cefd826f5889db2484d485e44045f49","isMergeCommit":true,"messageTitle":"Merge pull request #109 from gosongying/Remove-Type","messageBody":"Fix test cases","fileTypesAndContributionMap":{}},{"hash":"b77ddd4322b7ef9ea5355a8320ebd6c36f589908","isMergeCommit":false,"messageTitle":"Some leads test cases","messageBody":"Also some fixes to ModelManagerTest for sanity\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9},"test-code":{"insertions":174,"deletions":14}}},{"hash":"7044f31901753e61424216adf8b410a5f547d06d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into testing-leads","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a46bc84e4b6fe3f9bbd7bdc597c764d0de92a966","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into testing-leads","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e2847360b384e68a385620ba97cbc5c17e57ec8","isMergeCommit":false,"messageTitle":"Fix sorting clients","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":5}}},{"hash":"1928780b8312777df8b7c7cf1ae7c4bfefceb8c1","isMergeCommit":true,"messageTitle":"Merge pull request #117 from GERARDJM018/V1.3-Documentation","messageBody":"Update index.md","tags":["v1.3.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"2682d361b5d16cef9ef6174c5d82696bb0b006ed","isMergeCommit":false,"messageTitle":"Change version and MainWindow.fxml","messageBody":"version updated to v1.3.1\n\nIncreased width of labels because Linux couldnt display it fully\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":2,"deletions":2}}},{"hash":"305f54f9a3718db268d60351fc87916995574311","isMergeCommit":true,"messageTitle":"Merge pull request #124 from GERARDJM018/V1.3-post-testing","messageBody":"Fix bug and test cases","fileTypesAndContributionMap":{}},{"hash":"441bc846f46fa5b82163ae2a271e04d26ca8d8fd","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":20}}},{"hash":"df9bb198fe9516b656188cf8566fb8bc674a7063","isMergeCommit":false,"messageTitle":"Further updates to the UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"3c2c96268914e497f4ec17ec39c773060538d89a","isMergeCommit":false,"messageTitle":"Fix bug for editing housekeeping details","messageBody":"Clients without a housekeeping detail cannot be edited (correct behavior), but it also does not throw error.\n\nChanged this behavior for edit, add, delete, defer\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":15}}},{"hash":"6456767bfccd81d71e1a0b12ed3ff1397f53cd2c","isMergeCommit":true,"messageTitle":"Merge pull request #125 from LimZiJia/minor-updates","messageBody":"Minor updates","fileTypesAndContributionMap":{}}]}],"moguries":[{"date":"2024-03-07","commitResults":[{"hash":"221f90a77e7bfc6be4d9108ae09348661e7eabd7","isMergeCommit":false,"messageTitle":"Update the DG for use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":111,"deletions":8}}}]},{"date":"2024-03-08","commitResults":[{"hash":"bcb7ce3eed49c1bc9d75e6265e2f15b35afebe43","isMergeCommit":true,"messageTitle":"Merge pull request #26 from LimZiJia/update-zijia-about-us","messageBody":"Update zijia about us","fileTypesAndContributionMap":{}},{"hash":"a176a4d01319b033e415e147facc6840aff30867","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}},{"hash":"02a882c1fb0936d16cf06039940eb6fde3f28186","isMergeCommit":true,"messageTitle":"Merge pull request #30 from gosongying/master","messageBody":"Update README","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"274e60f1353dc16f201b6a27dcfd06800a76af90","isMergeCommit":false,"messageTitle":"Update UG for delete command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":6}}},{"hash":"cc074a24178d9ec3c68a7210cd5adba41b3ec3d9","isMergeCommit":true,"messageTitle":"Merge pull request #39 from gosongying/master","messageBody":"Update UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"c48f725873bb84679d4fe47011eca4c4968320aa","isMergeCommit":false,"messageTitle":"Add test cases for Housekeeper and TypePredicate classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":179,"deletions":2}}},{"hash":"94520e06850d8393cafbc53263f02ddbb17672fd","isMergeCommit":true,"messageTitle":"Merge pull request #53 from GERARDJM018/V1.2-List","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"9fe46fd827280c44241d8a4d5b2e96c2e2728322","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":7}}},{"hash":"b89fa1e21c95c6980397cbb75303edfef31d52f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-UG","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"17de517c9391b9666c714dad5d521194634ece7c","isMergeCommit":false,"messageTitle":"Add AddSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":83,"deletions":0}}},{"hash":"3fb5e51add9b2ec7a7fed367b2eeca4b66ee4094","isMergeCommit":true,"messageTitle":"Merge pull request #63 from LimZiJia/Update-model-class-diagram-UML","messageBody":"Update BetterModelClassDiagram.puml","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"13b2e6bb5a45a1e5e76a0dfe568f5e6d5b36eb83","isMergeCommit":false,"messageTitle":"Implement booking system","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":635,"deletions":15}}},{"hash":"911f19c14d0fc3fab73ae5a872bebf09075acfda","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into implement-booking-system","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"577466f111db3af4b5a81d2703a86913ae5c283a","isMergeCommit":false,"messageTitle":"Fix minor merge errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}}]},{"date":"2024-04-03","commitResults":[{"hash":"83890a70b838de684324a5dcd57c6e398b0c64ee","isMergeCommit":false,"messageTitle":"Implement booking search command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":178,"deletions":30}}},{"hash":"47d55589c485f8a499ee79b728a0a55e924ec97f","isMergeCommit":true,"messageTitle":"Merge pull request #97 from gosongying/Update-UI","messageBody":"Update UI","fileTypesAndContributionMap":{}},{"hash":"88b8d2d7e2aea5edb70cdb37c5ded98988e0d94a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-Message","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2b4cb88a8f420e6900e24dacdd737e83c2470b63","isMergeCommit":true,"messageTitle":"Merge pull request #99 from gosongying/Update-Message","messageBody":"Update message","fileTypesAndContributionMap":{}},{"hash":"035dac092575c0e80be60783e9e03db1cdfbcb9d","isMergeCommit":true,"messageTitle":"Merge pull request #98 from LimZiJia/implement-client-booking-command","messageBody":"Implement add and delete Booking for client","fileTypesAndContributionMap":{}},{"hash":"c248620fcbba9189f608203e7f041a50550cb683","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into implement-booking-search","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"c8e803b49b97d9933f4b8ad0a84c93692c9a0981","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":11}}},{"hash":"e66533abe9cd2e20843c9afb346ad2325c4af582","isMergeCommit":true,"messageTitle":"Merge pull request #105 from LimZiJia/Update-UG-for-booking-command","messageBody":"Improve UG format","fileTypesAndContributionMap":{}},{"hash":"051554b5c584945804593bde8f61c77bb6b8998f","isMergeCommit":false,"messageTitle":"Fix invalid input bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":5}}},{"hash":"ec767579e55a5702a662a73ebfc93211f90e8cfb","isMergeCommit":true,"messageTitle":"Merge pull request #114 from GERARDJM018/V1.3-Edit-Booking","messageBody":"Fix command result","fileTypesAndContributionMap":{}},{"hash":"c1dfad0bbc3d14671eb4ec03303665a164a4637c","isMergeCommit":false,"messageTitle":"Fix error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":25},"docs":{"insertions":1,"deletions":1}}}]}],"gosongying":[{"date":"2024-03-07","commitResults":[{"hash":"5e4572baf8a27a58e9332ced314704840132da9d","isMergeCommit":true,"messageTitle":"Merge pull request #22 from GERARDJM018/Developer-Guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"d3640276dd019e68f68682bb1987cb9e41b5bae2","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}},{"hash":"1f859cf8f7de75a5bb62381812712d3cc086c7de","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}},{"hash":"7de7649f1759b8dd52db5e6772772c2fc9543291","isMergeCommit":true,"messageTitle":"Merge pull request #31 from GERARDJM018/about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"50fe3e3389722c7f2fad17eee2d1bcca8ee54ffc","isMergeCommit":true,"messageTitle":"Merge pull request #36 from GERARDJM018/master","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"a84b0c9f7f90fbc76fb38b393e5089c40875143c","isMergeCommit":true,"messageTitle":"Merge pull request #38 from moguries/update-UG-for-delete-command","messageBody":"Update UG for delete command","fileTypesAndContributionMap":{}},{"hash":"a86f684c87d68d518d6d372de4e5389c3b0a486b","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":10}}}]},{"date":"2024-03-16","commitResults":[{"hash":"c1a33724ead8a47a49782419db7e9261fe40b539","isMergeCommit":true,"messageTitle":"Merge pull request #41 from LimZiJia/Implement-client-and-housekeeper","messageBody":"Add base classes of Client and Housekeer","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"0d727ca0aeb00af5553216972a76da8793995e93","isMergeCommit":false,"messageTitle":"Change Person to abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":26}}},{"hash":"2bcca87539e758397845a07ca40e7f90098b2f67","isMergeCommit":false,"messageTitle":"Differentiate between Client and Housekeeper","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":11}}},{"hash":"a80832dcce70e767ae75f5839def1c867c64edea","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"docs":{"insertions":4,"deletions":4}}},{"hash":"a1ac2dd0806f6fc2fb028f9e8e2f48570f6d278a","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}}]},{"date":"2024-03-20","commitResults":[{"hash":"cea57772ae5f5dd411853350aeaa5cd1dcf591ff","isMergeCommit":false,"messageTitle":"Enhance UI and change user guide\u0027s url","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":37},"docs":{"insertions":3,"deletions":3}}},{"hash":"f80114109d7a89b8080a0ef714b7157700e9dd84","isMergeCommit":true,"messageTitle":"Merge pull request #50 from LimZiJia/Update-features-and-add-glossary-UG","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"e756e090801c5f8a85f29a465fab112ae99889cc","isMergeCommit":true,"messageTitle":"Merge pull request #51 from moguries/add-test-cases-1","messageBody":"Add test cases for Housekeeper and TypePredicate classes","fileTypesAndContributionMap":{}},{"hash":"7c155750b0816b2aeb8a96235c631b39a2a42e40","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"docs":{"insertions":21,"deletions":14}}},{"hash":"c20a70350f835ba14e8766fe5b020b05131773bc","isMergeCommit":true,"messageTitle":"Merge pull request #54 from gosongying/update-UG","messageBody":"Update UG\u0027s welcome note, glossary, change some keyword and update help feature","tags":["v1.2.0"],"fileTypesAndContributionMap":{}},{"hash":"1e4925fe97ba7074247fdfba504fb4e72321ca60","isMergeCommit":false,"messageTitle":"Change command success and failure message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":9}}},{"hash":"a874d8ff9c8705792944bb0e12375d17a5941ec9","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a69ddf831f816b2073d29c1cd2ada54e87dd5696","isMergeCommit":true,"messageTitle":"Merge pull request #55 from LimZiJia/Update-quick-start-UG","messageBody":"Update quick start ug","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"f026a67593eb14be865708bae2275cc39b0ae3a6","isMergeCommit":false,"messageTitle":"Change test cases of List Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":0},"test-code":{"insertions":51,"deletions":9}}},{"hash":"9dfb731899c5db3df43bcffdb9d6ad3e9715910d","isMergeCommit":true,"messageTitle":"Merge pull request #60 from GERARDJM018/V1.2-List","messageBody":"Update Test Case","tags":["v1.2.1"],"fileTypesAndContributionMap":{}},{"hash":"24298cad0fbd930481de94a850839e544ffee7b7","isMergeCommit":true,"messageTitle":"Merge commit \u00279dfb731899c5db3df43bcffdb9d6ad3e9715910d\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e9fa2ff1908cdc9657be80183d0b820611548d1","isMergeCommit":false,"messageTitle":"Add codecov badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"71ed1bfb546329743881fbca72b0cd19d5ec49c6","isMergeCommit":false,"messageTitle":"Update ModalClassDiagram.puml","messageBody":"Add Type attribute, Client and Housekeeper subclasses to Person.\n","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}}]},{"date":"2024-03-26","commitResults":[{"hash":"647fe724937556a6e76501b523bb6c8c160ea06e","isMergeCommit":false,"messageTitle":"Implement separate lists and change UI","messageBody":"Client and Housekeeper are stored in one general list.\n\nShowing one list in UI does not provide good visualisation, have to use\ncommand list client or list housekeeper to filter out contacts by type,\nmaking it inefficient.\n\nStoring Clients and Housekeepers in two separate lists in the hard disk,\nand read from the two lists when startup.\n\nBy storing in two separate lists, loading and saving become more\nefficient, leading to an improved performance.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":758,"deletions":225}}}]},{"date":"2024-03-29","commitResults":[{"hash":"286f81d0b96bffa96a37eecdc8cc8dfc02e97186","isMergeCommit":true,"messageTitle":"Merge pull request #83 from GERARDJM018/V1.3-DG","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"ea794f9237dbdc423598077de0902844333d98e9","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":82,"deletions":3}}},{"hash":"60c9fe304e4921d63275beab4add169c45fbf7f7","isMergeCommit":true,"messageTitle":"Merge pull request #85 from LimZiJia/Update-DG-v1.3","messageBody":"Update dg v1.3","fileTypesAndContributionMap":{}},{"hash":"3f491ad0d7f50d592f7a343f1a0b7c717a41e0d8","isMergeCommit":true,"messageTitle":"Merge pull request #86 from LimZiJia/Enable-assertions","messageBody":"Enable assertions","fileTypesAndContributionMap":{}}]},{"date":"2024-04-01","commitResults":[{"hash":"a0412867a93c8a9001548ffe9bebaf78cdcffe8e","isMergeCommit":true,"messageTitle":"Merge pull request #82 from GERARDJM018/V1.3-Find","messageBody":"Update find feature implementation","fileTypesAndContributionMap":{}},{"hash":"a7dca4725de9a7326f1fdac58a6da6b364a4b9be","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Housekeeping-details","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5483ad958f66ede9bbf701ef315bc47daa3c6578","isMergeCommit":true,"messageTitle":"Merge pull request #81 from LimZiJia/Housekeeping-details","messageBody":"Housekeeping details","fileTypesAndContributionMap":{}},{"hash":"bf133308c6910a487af619fdb3e719c6c35e2ca9","isMergeCommit":false,"messageTitle":"Remove unused methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":43}}},{"hash":"dd57a97d0211908d2500a4f6b355d78d4683d58b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gosongying/tp","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"62d46836690eab2e12cb75a8c5b6b408299a0d2a","isMergeCommit":false,"messageTitle":"Fix type errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"2aa9282cd0640cd75b62c0e15e72d7361a8b8fc4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gosongying/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fa54d56d33b9e565ddb55b425fb59e1d470d2c98","isMergeCommit":false,"messageTitle":"Update UI","messageBody":"Labels are used to differentiate between client and housekeeper. Client\ncard is storing contact detail and housekeeping detail.\n\nThere is no obvious differentiation between client list and housekeeper\nlist. Client card is storing too much information.\n\nTitling client list and housekeeper list. Splitting client card into two\nhalves, one half stores contact detail, the other half stores\nhousekeeping detail.\n\nIt is easy to differentiate two lists by title. Separating contact\ndetail and housekeeping detail makes it tidier.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":181,"deletions":29}}}]},{"date":"2024-04-03","commitResults":[{"hash":"f4df10848302179cb25515130df847133ebd1268","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gosongying/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fef6f49b958525fbd8d6bbf3274bdc6543d02dde","isMergeCommit":false,"messageTitle":"Update Commands\u0027 success and error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":428,"deletions":178}}}]},{"date":"2024-04-04","commitResults":[{"hash":"c17b65dbc0effc10f21c8837cb601af718166f57","isMergeCommit":true,"messageTitle":"Merge pull request #103 from GERARDJM018/V1.3-Edit-Booking","messageBody":"Implement edit booking/housekeeping details and deferment command","fileTypesAndContributionMap":{}},{"hash":"7f39bab75a3e5bbbfd2e949c0c383f4a408a223f","isMergeCommit":true,"messageTitle":"Merge pull request #104 from LimZiJia/Update-UG-for-booking-command","messageBody":"Update ug for booking command","fileTypesAndContributionMap":{}},{"hash":"1e5e1159b3c6bf200f544e43956525a8e3632d82","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":161,"deletions":132},"test-code":{"insertions":394,"deletions":49}}},{"hash":"ccd13c532e256a02e6d7e17ae6e57ddc1b901065","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Remove-Type","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5b0c4abff9630cdfb0227246043c605fedb4ac3f","isMergeCommit":false,"messageTitle":"Fix bug from imcompatible type for Predicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":18}}},{"hash":"c2ca9b67b54d933bad6839a37e4e4b1f1112e79b","isMergeCommit":false,"messageTitle":"Update Model.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1ef1be99e7d5a3c8207571ca8b1af016168bdc95","isMergeCommit":false,"messageTitle":"Fix imcompatible type in ModelManager.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d87e45dcd3db292d100108343f6c11fbed43c6b6","isMergeCommit":true,"messageTitle":"Merge pull request #110 from GERARDJM018/V1.3-Edit-Booking","messageBody":"Fix edit booking bug","fileTypesAndContributionMap":{}},{"hash":"ab0e45144b0cb4c2864f09c0ae1ff9bd8244d8ff","isMergeCommit":true,"messageTitle":"Merge pull request #115 from GERARDJM018/V1.3-Documentation","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"4287ef79baf2d8471f04950a25fac9bcaa92300b","isMergeCommit":false,"messageTitle":"Fix some test cases\u0027 compilation error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":577,"deletions":392}}},{"hash":"165ad1552485455e23bb586cb4655a728cfe446c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Testing","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/model/ModelManagerTest.java\n#\tsrc/test/java/seedu/address/testutil/ClientBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"77af47bb68ad5353056b812baadb59f131919cf8","isMergeCommit":false,"messageTitle":"Fix all testing compilation error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":25},"test-code":{"insertions":249,"deletions":360}}},{"hash":"5803db2e5f397d1eb64a6dc7a343ff8f2a223671","isMergeCommit":false,"messageTitle":"Fix test cases compilation error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":103,"deletions":134}}},{"hash":"086115e8aca8d842f1666579b75c91b85246f5de","isMergeCommit":true,"messageTitle":"Merge pull request #123 from GERARDJM018/V1.3-post-testing","messageBody":"Fix test cases","fileTypesAndContributionMap":{}}]}],"GERARDJM018":[{"date":"2024-03-07","commitResults":[{"hash":"4a6461f6ad7de9271210e08c55e12a665d0f250e","isMergeCommit":true,"messageTitle":"Merge pull request #19 from LimZiJia/update-dg-user-stories-and-glossary","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"8ae312fdf7b18f360d89ff0ff7888d9595e4e05a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":3}}},{"hash":"3b06122880c2883b7937f2a0806275b955e9cdb1","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}}]},{"date":"2024-03-08","commitResults":[{"hash":"3b42659caf493aace51027d3b27c82c0023325a1","isMergeCommit":true,"messageTitle":"Merge pull request #27 from gosongying/update-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"daa06b3db4496389a6c71d492e71781bc1adb9ed","isMergeCommit":true,"messageTitle":"Merge pull request #29 from moguries/update-aboutus","messageBody":"Update AboutUs Celeste","fileTypesAndContributionMap":{}},{"hash":"225fe7fba04f500d0df18a17078017b1538c606c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"425369d3645673a4eb5c039cc0ad7f6d638e1512","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Delete some dummy profiles.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":37}}}]},{"date":"2024-03-15","commitResults":[{"hash":"67c1df7cd834aba88c4bd4f4e5fefcdf7b71d1d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027about-us\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"42ea52a1af55b4b231c854962fbb66129ea7577b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"57638c6bac44b6e9ee1861681e21f9d96d83bb09","isMergeCommit":true,"messageTitle":"Merge pull request #37 from LimZiJia/Adding-commands-UG","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"1f69b743faa7a41be4f2e9d4ad577e266c5c57df","isMergeCommit":false,"messageTitle":"Update ListCommand.java","messageBody":"Update the implementation of List Command.\n\nNew feature to view list only the given type of person/contact.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":103,"deletions":2}}},{"hash":"5740de08eb515bd761e6c086643ff17ca2768d31","isMergeCommit":true,"messageTitle":"Merge pull request #44 from gosongying/Client-Housekeeper","messageBody":"Update Person.java\r\n\r\nUpdate the use/implementation using Client and Housekeeper.","fileTypesAndContributionMap":{}},{"hash":"4f7b7b9a8add672bc93c816cde21407f572309cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-List","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"dd2edab114c13e2629a926d6486c76a67d74d06b","isMergeCommit":false,"messageTitle":"Update TypePredicate.java","messageBody":"Update TypePredicate.java to use isClient method.\n\nThis changes is made to maintain consistency.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b7fe4848de86c0b2b0b41146e16c9a771ab17dc2","isMergeCommit":true,"messageTitle":"Merge pull request #46 from LimZiJia/Implement-add-command","messageBody":"Implement AddCommand","fileTypesAndContributionMap":{}},{"hash":"a887fa33328e819534d59f0e3bba419327e7c437","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-List","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"255672ab608c7b79b59a10ee2b1a3d0071ec1c57","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6},"docs":{"insertions":9,"deletions":9},"test-code":{"insertions":20,"deletions":7}}},{"hash":"34fe138ea3c2fd6335c747b59e1db6f6b5b0b3b3","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"2d25cd0349efceebe8043b008cf7ec2d9885bcac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-List","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2218ed8be412b619756977c42442a9fecaabbe82","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"d8c54ecd4102d1ed708885bb4f4f1dc8f9ecd8d8","isMergeCommit":false,"messageTitle":"Update Test Cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":55}}},{"hash":"9f3670289ba0937fbc7be64c887beb1f3fcb094e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from gosongying/test-case","messageBody":"Update Test Cases","fileTypesAndContributionMap":{}},{"hash":"c79e19b9e0c4622a16f60928fee622bb47fb2d25","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-List","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b96ae3873052dbe1c5148ec9e5a5c2dd1677e0ae","isMergeCommit":false,"messageTitle":"Update Check Style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":70,"deletions":55}}},{"hash":"bfbf13bb103d762f464f5e584acffa10aab5a696","isMergeCommit":false,"messageTitle":"Update UMLDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":0}}},{"hash":"cbaf49e352aa441bac9b02397b95518e9dcea866","isMergeCommit":true,"messageTitle":"Merge pull request #65 from gosongying/UML","messageBody":"Update UML","fileTypesAndContributionMap":{}}]},{"date":"2024-03-28","commitResults":[{"hash":"3e5147c0e7a2734bd2605bab30197cff881ffbb0","isMergeCommit":true,"messageTitle":"Merge pull request #80 from gosongying/Separate-list","messageBody":"Implement separate lists and change UI","fileTypesAndContributionMap":{}},{"hash":"f41977d066c74e4e4632b06067d4511846aef847","isMergeCommit":false,"messageTitle":"Add Area.java","messageBody":"Add new attribute for Person, Area. This to determine the availability\nof the Housekeeper.\n\nMade some changes on implementation of add and edit method. This way\nit can use the new attribute, Area.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":181,"deletions":49},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-29","commitResults":[{"hash":"64cd452c6b10111e0b9fec17343f2d906c87037e","isMergeCommit":false,"messageTitle":"Update find feature implementation","messageBody":"Update the implementation of find feature using new predicate. This way\nit can takes address and area keywords.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":30}}},{"hash":"0365b414732547b1d13aba8c584193940bcf2938","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":68,"deletions":0}}}]},{"date":"2024-04-02","commitResults":[{"hash":"151068958cf3f453b861e2d5f8df965fb9b58122","isMergeCommit":true,"messageTitle":"Merge pull request #96 from LimZiJia/implement-client-booking-command","messageBody":"Implement client booking commands","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"a574acaa10e2c4da76961c0eef586438ef264385","isMergeCommit":false,"messageTitle":"Implement edit booking command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":305,"deletions":11},"test-code":{"insertions":1,"deletions":1}}},{"hash":"7e1e3242b251c8641bed5d6b1a920851c8d1f4ca","isMergeCommit":true,"messageTitle":"Merge pull request #101 from moguries/implement-booking-search","messageBody":"Implement booking search command","fileTypesAndContributionMap":{}},{"hash":"07eeae6788ca4f354f705b9b0fab52f3c2942e3f","isMergeCommit":false,"messageTitle":"Implement booking deferment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":8}}},{"hash":"5081554205663a28041d27f42e0a277dcab0e4f1","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"d6931403af15ab9c881ad1817746be99e92899dd","isMergeCommit":true,"messageTitle":"Merge pull request #108 from LimZiJia/Update-UG-for-booking-command","messageBody":"Fix editing booking details commands","fileTypesAndContributionMap":{}},{"hash":"24fdf0734c81388d2fcd7a876859ec7c1244c33e","isMergeCommit":false,"messageTitle":"Fix edit booking bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":14}}},{"hash":"dd111251776cbde38236b2082662dbb04223f5c7","isMergeCommit":false,"messageTitle":"Fix check style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}},{"hash":"7417bb12c790d95220d95d1c18025c1c0e0c5826","isMergeCommit":true,"messageTitle":"Merge pull request #111 from gosongying/master","messageBody":"Fix bug from imcompatible type for Predicate","fileTypesAndContributionMap":{}},{"hash":"1bb36be261103afaa3f50e1b8f1514f0dcb1edfc","isMergeCommit":true,"messageTitle":"Merge pull request #112 from gosongying/master","messageBody":"Fix imcompatible type in ModelManager.java","fileTypesAndContributionMap":{}},{"hash":"907e9644437ba1c0a62e23e6d8b17c884cdd95cd","isMergeCommit":false,"messageTitle":"Implement edit booking for booking date and deferment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":137,"deletions":17}}},{"hash":"f1c1a9513f8256bcb05e2d39d182383a48d48dc1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.3-Edit-Booking","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/Messages.java\n","fileTypesAndContributionMap":{}},{"hash":"deaecfda5c002ac92f15eb73efbb89b5bd9f7219","isMergeCommit":false,"messageTitle":"Fix command result","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"55951c2bda986ccebc3bb6ed163c680e1f0d2aec","isMergeCommit":true,"messageTitle":"Merge pull request #113 from moguries/fix-invalid-input-bugs","messageBody":"Fix invalid input bugs","fileTypesAndContributionMap":{}},{"hash":"b175279d107421fa4d1208b4b48788a3fa327b75","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":11}}},{"hash":"d30fbd9b8eee6671be9ddfd92d649478bf43ea79","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":6}}},{"hash":"b61db4d569f739067160c3179d2f465e50d70197","isMergeCommit":true,"messageTitle":"Merge pull request #116 from LimZiJia/testing-leads","messageBody":"Fix leads feature bug","fileTypesAndContributionMap":{}},{"hash":"f6953910585e7c8b52724acf5b1c76c18a835446","isMergeCommit":true,"messageTitle":"Merge pull request #118 from moguries/fix-error-message","messageBody":"Fix error message","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"892d9d104e4f9c3d3e641d87da32f4ee4b616c9b","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":159,"deletions":100}}},{"hash":"81c6324412832d31e5bf72f0b96566d0dd60dc11","isMergeCommit":true,"messageTitle":"Merge pull request #122 from gosongying/Testing","messageBody":"Update test cases","fileTypesAndContributionMap":{}},{"hash":"5586bc71baaea062b8562c8604e72ae0f433c8a5","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":36}}},{"hash":"de5e4b58895fc22e153b045e2cf885aa762d9f44","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.3-post-testing","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/commands/EditCommandTest.java\n#\tsrc/test/java/seedu/address/model/person/HousekeeperTest.java\n#\tsrc/test/java/seedu/address/model/person/LeadsFilterPredicateTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"d39c7d13c71a9e19df6b47ea16b5c98a7dff26d8","isMergeCommit":false,"messageTitle":"Fix bug and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4},"test-code":{"insertions":42,"deletions":44}}},{"hash":"6d876eb96d565327ac17f7ccbb186858896cd5a9","isMergeCommit":true,"messageTitle":"Merge pull request #120 from LimZiJia/minor-updates","messageBody":"Update UI.png","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LimZiJia":{"docs":260,"functional-code":920,"test-code":155,"other":11},"moguries":{"docs":234,"functional-code":802,"test-code":127},"gosongying":{"docs":128,"functional-code":1436,"test-code":1019},"GERARDJM018":{"docs":205,"functional-code":824,"test-code":252}},"authorContributionVariance":{"LimZiJia":36044.707,"moguries":12488.644,"gosongying":108607.445,"GERARDJM018":12522.901},"authorDisplayNameMap":{"LimZiJia":"CS2103T-W09-1 LIM .. JIA","moguries":"CS2103T-W09-1 HUAN..ESTE","gosongying":"CS2103T-W09-1 GO S..YING","GERARDJM018":"CS2103T-W09-1 GERA..THEW"}} +{"authorDailyContributionsMap":{"LimZiJia":[{"date":"2024-03-06","commitResults":[{"hash":"ee4f360515f749c82a1b24b98d02deffe5ae36d9","isMergeCommit":false,"messageTitle":"Add Remark Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":203,"deletions":10},"test-code":{"insertions":238,"deletions":2}}},{"hash":"614ff1f4ed3e19eccefedbfcfbc29f4a0c577f3d","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":5},"test-code":{"insertions":2,"deletions":4}}},{"hash":"8d34c34841053a9a44cd79c8979ef1398204a7ad","isMergeCommit":true,"messageTitle":"Merge pull request #15 from LimZiJia/tutorial-adding-command","messageBody":"Tutorial adding command","fileTypesAndContributionMap":{}},{"hash":"b24538eaccd0465698add13c701ce1cbf06f77a9","isMergeCommit":false,"messageTitle":"Revert \"Tutorial adding command\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":210},"test-code":{"insertions":2,"deletions":236}}},{"hash":"5e4abdea235e3878401b33a9fe56441c6ac15581","isMergeCommit":true,"messageTitle":"Merge pull request #16 from AY2324S2-CS2103T-W09-1/revert-15-tutorial-adding-command","messageBody":"Revert \"Tutorial adding command\"","fileTypesAndContributionMap":{}},{"hash":"201bebc8e093fbc82a52c227b8a2649c95e4a7c6","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Edited target user profile, value proposition, user stories and glossary.\n","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":11}}},{"hash":"c4387b86ba92c4c66fe9b7d201913bff5e2f0b91","isMergeCommit":false,"messageTitle":"Upload placeholder image and change some links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":4}}},{"hash":"bc4666b7980635394d2d5d460ace1087f9705688","isMergeCommit":false,"messageTitle":"Add email","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"6291069b1a50ea2741a20610f232e6aafa4acfda","isMergeCommit":true,"messageTitle":"Merge pull request #23 from GERARDJM018/about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"e9ce6f7130ca1224a2235028ecd70f35f663f5f9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-zijia-about-us","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"205cda491a8566ed140cfdc325d4fae058e9deb1","isMergeCommit":false,"messageTitle":"Update About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"27207e2fae59cd72ecafd588fd229daef34feefc","isMergeCommit":true,"messageTitle":"Merge pull request #25 from moguries/update-DG-for-use-cases","messageBody":"Update the DG for use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"691da392d2f9ea4e6396cb7c293dbf3fed202de0","isMergeCommit":false,"messageTitle":"Update add UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":6}}},{"hash":"e571d522f686da06a39d73da97820a35dd57cad3","isMergeCommit":false,"messageTitle":"Make list UG consistent","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"6770bb14692960a9aa20b64faa0ef0f45e576c2b","isMergeCommit":false,"messageTitle":"Add base classes of Client and Housekeer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":0}}},{"hash":"c54b16627439eddc768f489fd7b864ab0b630ff2","isMergeCommit":false,"messageTitle":"Fix javadoc and checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}},{"hash":"e2f1500edf5dafa975b061342fde2077b256cb1c","isMergeCommit":false,"messageTitle":"Fix import order in Client.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e8cffb11cae0d38364af3d0c2fb7f3af3b00604a","isMergeCommit":false,"messageTitle":"Fix import order in Client","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"18f4ca9ac637323aa9d41940d6d2e0d2a9411248","isMergeCommit":true,"messageTitle":"Merge pull request #45 from GERARDJM018/V1.2-List","messageBody":"Update ListCommand.java","fileTypesAndContributionMap":{}},{"hash":"3c181e052730149d9d0ef03d4cfe5eaddca0881b","isMergeCommit":false,"messageTitle":"Added client and housekeeper prembles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":6}}},{"hash":"2447cd250a2960484291ae3301fd21ee9271b106","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":13}}}]},{"date":"2024-03-19","commitResults":[{"hash":"0ba88252c878d171cdf314bfbb7cd0ffc80d0e81","isMergeCommit":false,"messageTitle":"Create new class for type","messageBody":"There were many tests that have a standard format.\n\nI decided to add the class Type so that it is easier to follow these formats\n","fileTypesAndContributionMap":{"functional-code":{"insertions":133,"deletions":32},"test-code":{"insertions":74,"deletions":20}}},{"hash":"ecb2d970a97af36ae2c8851170749e49301f71fd","isMergeCommit":false,"messageTitle":"Moved preambleIsAllowed()","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":17}}},{"hash":"8d161a9c7d70650f46f370a7fc67b3626f9bb6b4","isMergeCommit":true,"messageTitle":"Merge pull request #47 from GERARDJM018/V1.2-List","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"3b6d28d3039609946ee9fd6baf3cca45c7a8532f","isMergeCommit":true,"messageTitle":"Merge pull request #48 from GERARDJM018/V1.2-List","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"e4cfb3b6f61e89d820f6a3806cf5daea9d95f890","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":50}}},{"hash":"312db31d651c57b8abad604d35aa6531df0acdce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ui","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5e992f911f64bba559797a825d97d4e87010fb0c","isMergeCommit":true,"messageTitle":"Merge pull request #52 from gosongying/ui","messageBody":"Enhance UI and change user guide\u0027s url","fileTypesAndContributionMap":{}},{"hash":"efe13491708e4634eec7dc14b65ddc22a091f4a8","isMergeCommit":false,"messageTitle":"Update quick start of UG","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":3,"deletions":1},"docs":{"insertions":6,"deletions":2}}},{"hash":"e81be0b8217e1ae788d3170b5e19af3d57c4340c","isMergeCommit":true,"messageTitle":"Merge branch \u0027Update-quick-start-UG\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f2ebeb1e7a0b3923e0717cf566893f266e8191ae","isMergeCommit":true,"messageTitle":"Merge pull request #56 from gosongying/UgAndMessage","messageBody":"Ug and message","fileTypesAndContributionMap":{}},{"hash":"90c4a76e999a95ea62b319ce2950a91cdb7949f5","isMergeCommit":true,"messageTitle":"Merge pull request #57 from moguries/update-UG","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"6083d752a1ee4a4e892b26462f975760b4efcb8e","isMergeCommit":false,"messageTitle":"Update BetterModelClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"399ebac091271ecc21af93fe130b9cdbdff4cfc9","isMergeCommit":true,"messageTitle":"Merge pull request #61 from GERARDJM018/V1.2-List","messageBody":"Update UMLDiagram","fileTypesAndContributionMap":{}},{"hash":"296443434f638954e67588a8afb596af3decdc54","isMergeCommit":true,"messageTitle":"Merge pull request #64 from moguries/add-puml-for-add-command","messageBody":"Add AddSequenceDiagram.puml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-28","commitResults":[{"hash":"98d45af13de18cd1b0eb4cc8b588651b93b72545","isMergeCommit":false,"messageTitle":"Make class housekeeping details","messageBody":"This class is to be used for sorting clients by predicted next cleaning date.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":2},"other":{"insertions":5,"deletions":1},"docs":{"insertions":5,"deletions":2}}},{"hash":"9040b7b1b5c13161a6ce8edf9fd5901e9fdbd027","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"cb86b185a875cc5ef6097e6135015c8c6f362e35","isMergeCommit":false,"messageTitle":"Enable HousekeepingDetails to be added and saved","messageBody":"Bugs: Client list not showing\n","fileTypesAndContributionMap":{"functional-code":{"insertions":210,"deletions":62}}},{"hash":"0f6b895346557dd76f36af083e0fcbd951f7955e","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"Update regex for stored details string.\n\nAdd details label in the fxml. (this was causing the cards not to show up)\n\nImprove messages.\n\nDetails are now optional to fit requirements.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":18}}}]},{"date":"2024-03-29","commitResults":[{"hash":"e09c07d32dcaa79d588b5fc076d5f1024dbdb7ba","isMergeCommit":false,"messageTitle":"Update class diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":8}}},{"hash":"13caaee908e8f53430a8fd37f3bc3c35198dc17b","isMergeCommit":false,"messageTitle":"Add proposed implementation for sorting clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}},{"hash":"3686173882716bb9df7ffebbaf93dad609d1e77e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-1:master\u0027 into Housekeeping-details","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"370e5fd2749081c9ac58c76ac765da00c0259eae","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-DG-v1.3","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1c71d3d8c474c951eab7f99488fd98af4a5abc02","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"e6ba27c586694171afef138ed13896087eaad46b","isMergeCommit":false,"messageTitle":"Enable assertions","messageBody":"Also update shadowJar archive version\n","fileTypesAndContributionMap":{"other":{"insertions":5,"deletions":1}}},{"hash":"7dec5fc5cb7abacbdce12712a79f9c0585774324","isMergeCommit":true,"messageTitle":"Merge pull request #84 from gosongying/DG","messageBody":"Update DG","tags":["v1.3.0"],"fileTypesAndContributionMap":{}},{"hash":"e6ab3553e0eab24b8c4d8bc1e95b1266e74e3f88","isMergeCommit":false,"messageTitle":"Remove \"\\$email\"","messageBody":"It was showing on the details for housekeepers who should not have any details.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-31","commitResults":[{"hash":"592c631d45db575431868d672c0b536575a66558","isMergeCommit":false,"messageTitle":"proposed solution","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":2}}},{"hash":"722bf56caabbd84c3dc6ebc465dd439be5d51d56","isMergeCommit":false,"messageTitle":"Add alternatives","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":1}}},{"hash":"3db5ab5e83cfa690596890f416a5eaa0cbc4371c","isMergeCommit":false,"messageTitle":"add bookingDate and deferment to HousekeepingDetails","messageBody":"Fix some error of storing null.\n\nNow, HousekeepingDetails of client cannot be null. Instead it will be HousekeepingDetails.empty\n","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":18}}},{"hash":"4cf630118f00310bff5bd3a6b0d64c1ab3b1d6d7","isMergeCommit":false,"messageTitle":"Add getters and setters to HousekeepingDetails","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":54}}}]},{"date":"2024-04-01","commitResults":[{"hash":"8f672c12fca2554c40f0bf071b94cfc691832715","isMergeCommit":false,"messageTitle":"Implement LeadsCommand","messageBody":"Added LeadsFilterPredicate and enable model to sort.\n\nLeads now shows clients with predicted date \u003c\u003d now.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":150,"deletions":14}}}]},{"date":"2024-04-02","commitResults":[{"hash":"4992f8923a2e7c74de16f08abc03d9001ea09f1b","isMergeCommit":true,"messageTitle":"Merge pull request #89 from moguries/implement-booking-system","messageBody":"Implement booking system for housekeepers","fileTypesAndContributionMap":{}},{"hash":"80cd506cdffb3f64c7f25f18474e406f19b77aa6","isMergeCommit":false,"messageTitle":"Refactor execute method","messageBody":"This method will get a lot longer, so best to refactor\n","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":54}}},{"hash":"b410dcdb2031c086b391f625df59ad56d4a94f28","isMergeCommit":false,"messageTitle":"Split booking command for client and housekeeper","messageBody":"Refactored some code and changed the matcher regex.\n\nPlaceholders are used for parsing booking command for client\n","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":17}}},{"hash":"e174b8840acb2a4d53e5f5048b14fb07fcc5aeef","isMergeCommit":false,"messageTitle":"Implement set and remove","messageBody":"Fixes #95\n","fileTypesAndContributionMap":{"functional-code":{"insertions":105,"deletions":38}}},{"hash":"eb58286110b8cf2d874488c8ab72c3f62544debf","isMergeCommit":false,"messageTitle":"Implement add and delete Booking for client","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":100,"deletions":35}}}]},{"date":"2024-04-04","commitResults":[{"hash":"41bb7415b3656da7437a83d34bb3687699f3dfd0","isMergeCommit":false,"messageTitle":"Update UI","messageBody":"Wanted to play with the UI a little bit and make it more colourful.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"864cd90ee90ebebea153de4eb973570cd15c8d2b","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":100,"deletions":22}}},{"hash":"37b08aba90fa86aee378fe0e8fd060cc255a2379","isMergeCommit":false,"messageTitle":"Some corrections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":13}}},{"hash":"67938d16618eb7a7d00915769ece391f3f0090ce","isMergeCommit":false,"messageTitle":"Add emoji","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":8}}},{"hash":"f2fbca7f7c2d09e8d69fc222f0874b14114dfa80","isMergeCommit":false,"messageTitle":"Fix editing booking details commands","messageBody":"last -\u003e edit lhd/\ninterval -\u003e edit pi/\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"2298c782dc2c4b9ddd03170fd31281743b89baa5","isMergeCommit":true,"messageTitle":"Merge pull request #107 from moguries/fix-bugs","messageBody":"Fix bugs","fileTypesAndContributionMap":{}},{"hash":"cc9d34588cefd826f5889db2484d485e44045f49","isMergeCommit":true,"messageTitle":"Merge pull request #109 from gosongying/Remove-Type","messageBody":"Fix test cases","fileTypesAndContributionMap":{}},{"hash":"b77ddd4322b7ef9ea5355a8320ebd6c36f589908","isMergeCommit":false,"messageTitle":"Some leads test cases","messageBody":"Also some fixes to ModelManagerTest for sanity\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9},"test-code":{"insertions":174,"deletions":14}}},{"hash":"7044f31901753e61424216adf8b410a5f547d06d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into testing-leads","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a46bc84e4b6fe3f9bbd7bdc597c764d0de92a966","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into testing-leads","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4e2847360b384e68a385620ba97cbc5c17e57ec8","isMergeCommit":false,"messageTitle":"Fix sorting clients","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":5}}},{"hash":"1928780b8312777df8b7c7cf1ae7c4bfefceb8c1","isMergeCommit":true,"messageTitle":"Merge pull request #117 from GERARDJM018/V1.3-Documentation","messageBody":"Update index.md","tags":["v1.3.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"2682d361b5d16cef9ef6174c5d82696bb0b006ed","isMergeCommit":false,"messageTitle":"Change version and MainWindow.fxml","messageBody":"version updated to v1.3.1\n\nIncreased width of labels because Linux couldnt display it fully\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":2,"deletions":2}}},{"hash":"305f54f9a3718db268d60351fc87916995574311","isMergeCommit":true,"messageTitle":"Merge pull request #124 from GERARDJM018/V1.3-post-testing","messageBody":"Fix bug and test cases","fileTypesAndContributionMap":{}},{"hash":"441bc846f46fa5b82163ae2a271e04d26ca8d8fd","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":20}}},{"hash":"df9bb198fe9516b656188cf8566fb8bc674a7063","isMergeCommit":false,"messageTitle":"Further updates to the UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"3c2c96268914e497f4ec17ec39c773060538d89a","isMergeCommit":false,"messageTitle":"Fix bug for editing housekeeping details","messageBody":"Clients without a housekeeping detail cannot be edited (correct behavior), but it also does not throw error.\n\nChanged this behavior for edit, add, delete, defer\n","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":15}}},{"hash":"6456767bfccd81d71e1a0b12ed3ff1397f53cd2c","isMergeCommit":true,"messageTitle":"Merge pull request #125 from LimZiJia/minor-updates","messageBody":"Minor updates","fileTypesAndContributionMap":{}},{"hash":"8f124e971aa39fe040d9354aae8cdcab1496f821","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into HousekeepingDetails-DG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d27317428c4a7a278a4bb7222bc26c1932f9f023","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":102,"deletions":15}}},{"hash":"786e9e228d975199c75da7d87691d8c30442b691","isMergeCommit":false,"messageTitle":"Refactor","messageBody":"seedu.address -\u003e housekeeping.hub\n","fileTypesAndContributionMap":{"other":{"insertions":1144,"deletions":1238},"docs":{"insertions":20,"deletions":99},"test-code":{"insertions":3,"deletions":3}}},{"hash":"a34970de1dcb910fb9cec8b4885ce6a78fa16c19","isMergeCommit":false,"messageTitle":"Update links and HousekeepingDetails diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]}],"moguries":[{"date":"2024-03-07","commitResults":[{"hash":"221f90a77e7bfc6be4d9108ae09348661e7eabd7","isMergeCommit":false,"messageTitle":"Update the DG for use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":111,"deletions":8}}}]},{"date":"2024-03-08","commitResults":[{"hash":"bcb7ce3eed49c1bc9d75e6265e2f15b35afebe43","isMergeCommit":true,"messageTitle":"Merge pull request #26 from LimZiJia/update-zijia-about-us","messageBody":"Update zijia about us","fileTypesAndContributionMap":{}},{"hash":"a176a4d01319b033e415e147facc6840aff30867","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}},{"hash":"02a882c1fb0936d16cf06039940eb6fde3f28186","isMergeCommit":true,"messageTitle":"Merge pull request #30 from gosongying/master","messageBody":"Update README","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"274e60f1353dc16f201b6a27dcfd06800a76af90","isMergeCommit":false,"messageTitle":"Update UG for delete command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":6}}},{"hash":"cc074a24178d9ec3c68a7210cd5adba41b3ec3d9","isMergeCommit":true,"messageTitle":"Merge pull request #39 from gosongying/master","messageBody":"Update UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"c48f725873bb84679d4fe47011eca4c4968320aa","isMergeCommit":false,"messageTitle":"Add test cases for Housekeeper and TypePredicate classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":179,"deletions":2}}},{"hash":"94520e06850d8393cafbc53263f02ddbb17672fd","isMergeCommit":true,"messageTitle":"Merge pull request #53 from GERARDJM018/V1.2-List","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"9fe46fd827280c44241d8a4d5b2e96c2e2728322","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":7}}},{"hash":"b89fa1e21c95c6980397cbb75303edfef31d52f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-UG","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"17de517c9391b9666c714dad5d521194634ece7c","isMergeCommit":false,"messageTitle":"Add AddSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":83,"deletions":0}}},{"hash":"3fb5e51add9b2ec7a7fed367b2eeca4b66ee4094","isMergeCommit":true,"messageTitle":"Merge pull request #63 from LimZiJia/Update-model-class-diagram-UML","messageBody":"Update BetterModelClassDiagram.puml","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"13b2e6bb5a45a1e5e76a0dfe568f5e6d5b36eb83","isMergeCommit":false,"messageTitle":"Implement booking system","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":635,"deletions":15}}},{"hash":"911f19c14d0fc3fab73ae5a872bebf09075acfda","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into implement-booking-system","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"577466f111db3af4b5a81d2703a86913ae5c283a","isMergeCommit":false,"messageTitle":"Fix minor merge errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}}]},{"date":"2024-04-03","commitResults":[{"hash":"83890a70b838de684324a5dcd57c6e398b0c64ee","isMergeCommit":false,"messageTitle":"Implement booking search command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":178,"deletions":30}}},{"hash":"47d55589c485f8a499ee79b728a0a55e924ec97f","isMergeCommit":true,"messageTitle":"Merge pull request #97 from gosongying/Update-UI","messageBody":"Update UI","fileTypesAndContributionMap":{}},{"hash":"88b8d2d7e2aea5edb70cdb37c5ded98988e0d94a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-Message","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2b4cb88a8f420e6900e24dacdd737e83c2470b63","isMergeCommit":true,"messageTitle":"Merge pull request #99 from gosongying/Update-Message","messageBody":"Update message","fileTypesAndContributionMap":{}},{"hash":"035dac092575c0e80be60783e9e03db1cdfbcb9d","isMergeCommit":true,"messageTitle":"Merge pull request #98 from LimZiJia/implement-client-booking-command","messageBody":"Implement add and delete Booking for client","fileTypesAndContributionMap":{}},{"hash":"c248620fcbba9189f608203e7f041a50550cb683","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into implement-booking-search","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"c8e803b49b97d9933f4b8ad0a84c93692c9a0981","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":11}}},{"hash":"e66533abe9cd2e20843c9afb346ad2325c4af582","isMergeCommit":true,"messageTitle":"Merge pull request #105 from LimZiJia/Update-UG-for-booking-command","messageBody":"Improve UG format","fileTypesAndContributionMap":{}},{"hash":"051554b5c584945804593bde8f61c77bb6b8998f","isMergeCommit":false,"messageTitle":"Fix invalid input bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":5}}},{"hash":"ec767579e55a5702a662a73ebfc93211f90e8cfb","isMergeCommit":true,"messageTitle":"Merge pull request #114 from GERARDJM018/V1.3-Edit-Booking","messageBody":"Fix command result","fileTypesAndContributionMap":{}},{"hash":"c1dfad0bbc3d14671eb4ec03303665a164a4637c","isMergeCommit":false,"messageTitle":"Fix error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":25},"docs":{"insertions":1,"deletions":1}}}]}],"gosongying":[{"date":"2024-03-07","commitResults":[{"hash":"5e4572baf8a27a58e9332ced314704840132da9d","isMergeCommit":true,"messageTitle":"Merge pull request #22 from GERARDJM018/Developer-Guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"d3640276dd019e68f68682bb1987cb9e41b5bae2","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}},{"hash":"1f859cf8f7de75a5bb62381812712d3cc086c7de","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}},{"hash":"7de7649f1759b8dd52db5e6772772c2fc9543291","isMergeCommit":true,"messageTitle":"Merge pull request #31 from GERARDJM018/about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"50fe3e3389722c7f2fad17eee2d1bcca8ee54ffc","isMergeCommit":true,"messageTitle":"Merge pull request #36 from GERARDJM018/master","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"a84b0c9f7f90fbc76fb38b393e5089c40875143c","isMergeCommit":true,"messageTitle":"Merge pull request #38 from moguries/update-UG-for-delete-command","messageBody":"Update UG for delete command","fileTypesAndContributionMap":{}},{"hash":"a86f684c87d68d518d6d372de4e5389c3b0a486b","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":10}}}]},{"date":"2024-03-16","commitResults":[{"hash":"c1a33724ead8a47a49782419db7e9261fe40b539","isMergeCommit":true,"messageTitle":"Merge pull request #41 from LimZiJia/Implement-client-and-housekeeper","messageBody":"Add base classes of Client and Housekeer","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"0d727ca0aeb00af5553216972a76da8793995e93","isMergeCommit":false,"messageTitle":"Change Person to abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":26}}},{"hash":"2bcca87539e758397845a07ca40e7f90098b2f67","isMergeCommit":false,"messageTitle":"Differentiate between Client and Housekeeper","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":11}}},{"hash":"a80832dcce70e767ae75f5839def1c867c64edea","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"docs":{"insertions":4,"deletions":4}}},{"hash":"a1ac2dd0806f6fc2fb028f9e8e2f48570f6d278a","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}}]},{"date":"2024-03-20","commitResults":[{"hash":"cea57772ae5f5dd411853350aeaa5cd1dcf591ff","isMergeCommit":false,"messageTitle":"Enhance UI and change user guide\u0027s url","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":37},"docs":{"insertions":3,"deletions":3}}},{"hash":"f80114109d7a89b8080a0ef714b7157700e9dd84","isMergeCommit":true,"messageTitle":"Merge pull request #50 from LimZiJia/Update-features-and-add-glossary-UG","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"e756e090801c5f8a85f29a465fab112ae99889cc","isMergeCommit":true,"messageTitle":"Merge pull request #51 from moguries/add-test-cases-1","messageBody":"Add test cases for Housekeeper and TypePredicate classes","fileTypesAndContributionMap":{}},{"hash":"7c155750b0816b2aeb8a96235c631b39a2a42e40","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"docs":{"insertions":21,"deletions":14}}},{"hash":"c20a70350f835ba14e8766fe5b020b05131773bc","isMergeCommit":true,"messageTitle":"Merge pull request #54 from gosongying/update-UG","messageBody":"Update UG\u0027s welcome note, glossary, change some keyword and update help feature","tags":["v1.2.0"],"fileTypesAndContributionMap":{}},{"hash":"1e4925fe97ba7074247fdfba504fb4e72321ca60","isMergeCommit":false,"messageTitle":"Change command success and failure message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":9}}},{"hash":"a874d8ff9c8705792944bb0e12375d17a5941ec9","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a69ddf831f816b2073d29c1cd2ada54e87dd5696","isMergeCommit":true,"messageTitle":"Merge pull request #55 from LimZiJia/Update-quick-start-UG","messageBody":"Update quick start ug","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"f026a67593eb14be865708bae2275cc39b0ae3a6","isMergeCommit":false,"messageTitle":"Change test cases of List Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":0},"test-code":{"insertions":51,"deletions":9}}},{"hash":"9dfb731899c5db3df43bcffdb9d6ad3e9715910d","isMergeCommit":true,"messageTitle":"Merge pull request #60 from GERARDJM018/V1.2-List","messageBody":"Update Test Case","tags":["v1.2.1"],"fileTypesAndContributionMap":{}},{"hash":"24298cad0fbd930481de94a850839e544ffee7b7","isMergeCommit":true,"messageTitle":"Merge commit \u00279dfb731899c5db3df43bcffdb9d6ad3e9715910d\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e9fa2ff1908cdc9657be80183d0b820611548d1","isMergeCommit":false,"messageTitle":"Add codecov badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"71ed1bfb546329743881fbca72b0cd19d5ec49c6","isMergeCommit":false,"messageTitle":"Update ModalClassDiagram.puml","messageBody":"Add Type attribute, Client and Housekeeper subclasses to Person.\n","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}}]},{"date":"2024-03-26","commitResults":[{"hash":"647fe724937556a6e76501b523bb6c8c160ea06e","isMergeCommit":false,"messageTitle":"Implement separate lists and change UI","messageBody":"Client and Housekeeper are stored in one general list.\n\nShowing one list in UI does not provide good visualisation, have to use\ncommand list client or list housekeeper to filter out contacts by type,\nmaking it inefficient.\n\nStoring Clients and Housekeepers in two separate lists in the hard disk,\nand read from the two lists when startup.\n\nBy storing in two separate lists, loading and saving become more\nefficient, leading to an improved performance.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":758,"deletions":225}}}]},{"date":"2024-03-29","commitResults":[{"hash":"286f81d0b96bffa96a37eecdc8cc8dfc02e97186","isMergeCommit":true,"messageTitle":"Merge pull request #83 from GERARDJM018/V1.3-DG","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"ea794f9237dbdc423598077de0902844333d98e9","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":82,"deletions":3}}},{"hash":"60c9fe304e4921d63275beab4add169c45fbf7f7","isMergeCommit":true,"messageTitle":"Merge pull request #85 from LimZiJia/Update-DG-v1.3","messageBody":"Update dg v1.3","fileTypesAndContributionMap":{}},{"hash":"3f491ad0d7f50d592f7a343f1a0b7c717a41e0d8","isMergeCommit":true,"messageTitle":"Merge pull request #86 from LimZiJia/Enable-assertions","messageBody":"Enable assertions","fileTypesAndContributionMap":{}}]},{"date":"2024-04-01","commitResults":[{"hash":"a0412867a93c8a9001548ffe9bebaf78cdcffe8e","isMergeCommit":true,"messageTitle":"Merge pull request #82 from GERARDJM018/V1.3-Find","messageBody":"Update find feature implementation","fileTypesAndContributionMap":{}},{"hash":"a7dca4725de9a7326f1fdac58a6da6b364a4b9be","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Housekeeping-details","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5483ad958f66ede9bbf701ef315bc47daa3c6578","isMergeCommit":true,"messageTitle":"Merge pull request #81 from LimZiJia/Housekeeping-details","messageBody":"Housekeeping details","fileTypesAndContributionMap":{}},{"hash":"bf133308c6910a487af619fdb3e719c6c35e2ca9","isMergeCommit":false,"messageTitle":"Remove unused methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":43}}},{"hash":"dd57a97d0211908d2500a4f6b355d78d4683d58b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gosongying/tp","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"62d46836690eab2e12cb75a8c5b6b408299a0d2a","isMergeCommit":false,"messageTitle":"Fix type errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"2aa9282cd0640cd75b62c0e15e72d7361a8b8fc4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gosongying/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fa54d56d33b9e565ddb55b425fb59e1d470d2c98","isMergeCommit":false,"messageTitle":"Update UI","messageBody":"Labels are used to differentiate between client and housekeeper. Client\ncard is storing contact detail and housekeeping detail.\n\nThere is no obvious differentiation between client list and housekeeper\nlist. Client card is storing too much information.\n\nTitling client list and housekeeper list. Splitting client card into two\nhalves, one half stores contact detail, the other half stores\nhousekeeping detail.\n\nIt is easy to differentiate two lists by title. Separating contact\ndetail and housekeeping detail makes it tidier.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":181,"deletions":29}}}]},{"date":"2024-04-03","commitResults":[{"hash":"f4df10848302179cb25515130df847133ebd1268","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gosongying/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fef6f49b958525fbd8d6bbf3274bdc6543d02dde","isMergeCommit":false,"messageTitle":"Update Commands\u0027 success and error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":428,"deletions":178}}}]},{"date":"2024-04-04","commitResults":[{"hash":"c17b65dbc0effc10f21c8837cb601af718166f57","isMergeCommit":true,"messageTitle":"Merge pull request #103 from GERARDJM018/V1.3-Edit-Booking","messageBody":"Implement edit booking/housekeeping details and deferment command","fileTypesAndContributionMap":{}},{"hash":"7f39bab75a3e5bbbfd2e949c0c383f4a408a223f","isMergeCommit":true,"messageTitle":"Merge pull request #104 from LimZiJia/Update-UG-for-booking-command","messageBody":"Update ug for booking command","fileTypesAndContributionMap":{}},{"hash":"1e5e1159b3c6bf200f544e43956525a8e3632d82","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":161,"deletions":132},"test-code":{"insertions":394,"deletions":49}}},{"hash":"ccd13c532e256a02e6d7e17ae6e57ddc1b901065","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Remove-Type","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5b0c4abff9630cdfb0227246043c605fedb4ac3f","isMergeCommit":false,"messageTitle":"Fix bug from imcompatible type for Predicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":18}}},{"hash":"c2ca9b67b54d933bad6839a37e4e4b1f1112e79b","isMergeCommit":false,"messageTitle":"Update Model.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1ef1be99e7d5a3c8207571ca8b1af016168bdc95","isMergeCommit":false,"messageTitle":"Fix imcompatible type in ModelManager.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d87e45dcd3db292d100108343f6c11fbed43c6b6","isMergeCommit":true,"messageTitle":"Merge pull request #110 from GERARDJM018/V1.3-Edit-Booking","messageBody":"Fix edit booking bug","fileTypesAndContributionMap":{}},{"hash":"ab0e45144b0cb4c2864f09c0ae1ff9bd8244d8ff","isMergeCommit":true,"messageTitle":"Merge pull request #115 from GERARDJM018/V1.3-Documentation","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"4287ef79baf2d8471f04950a25fac9bcaa92300b","isMergeCommit":false,"messageTitle":"Fix some test cases\u0027 compilation error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":577,"deletions":392}}},{"hash":"165ad1552485455e23bb586cb4655a728cfe446c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Testing","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/model/ModelManagerTest.java\n#\tsrc/test/java/seedu/address/testutil/ClientBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"77af47bb68ad5353056b812baadb59f131919cf8","isMergeCommit":false,"messageTitle":"Fix all testing compilation error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":25},"test-code":{"insertions":249,"deletions":360}}},{"hash":"5803db2e5f397d1eb64a6dc7a343ff8f2a223671","isMergeCommit":false,"messageTitle":"Fix test cases compilation error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":103,"deletions":134}}},{"hash":"086115e8aca8d842f1666579b75c91b85246f5de","isMergeCommit":true,"messageTitle":"Merge pull request #123 from GERARDJM018/V1.3-post-testing","messageBody":"Fix test cases","fileTypesAndContributionMap":{}},{"hash":"92b854075aa037ac27a93ce9034f732cb759dba8","isMergeCommit":true,"messageTitle":"Merge pull request #127 from LimZiJia/Update-DG-v1.3","messageBody":"Update links and HousekeepingDetails diagram","fileTypesAndContributionMap":{}}]}],"GERARDJM018":[{"date":"2024-03-07","commitResults":[{"hash":"4a6461f6ad7de9271210e08c55e12a665d0f250e","isMergeCommit":true,"messageTitle":"Merge pull request #19 from LimZiJia/update-dg-user-stories-and-glossary","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"8ae312fdf7b18f360d89ff0ff7888d9595e4e05a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":3}}},{"hash":"3b06122880c2883b7937f2a0806275b955e9cdb1","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}}]},{"date":"2024-03-08","commitResults":[{"hash":"3b42659caf493aace51027d3b27c82c0023325a1","isMergeCommit":true,"messageTitle":"Merge pull request #27 from gosongying/update-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"daa06b3db4496389a6c71d492e71781bc1adb9ed","isMergeCommit":true,"messageTitle":"Merge pull request #29 from moguries/update-aboutus","messageBody":"Update AboutUs Celeste","fileTypesAndContributionMap":{}},{"hash":"225fe7fba04f500d0df18a17078017b1538c606c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"425369d3645673a4eb5c039cc0ad7f6d638e1512","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Delete some dummy profiles.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":37}}}]},{"date":"2024-03-15","commitResults":[{"hash":"67c1df7cd834aba88c4bd4f4e5fefcdf7b71d1d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027about-us\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"42ea52a1af55b4b231c854962fbb66129ea7577b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"57638c6bac44b6e9ee1861681e21f9d96d83bb09","isMergeCommit":true,"messageTitle":"Merge pull request #37 from LimZiJia/Adding-commands-UG","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"1f69b743faa7a41be4f2e9d4ad577e266c5c57df","isMergeCommit":false,"messageTitle":"Update ListCommand.java","messageBody":"Update the implementation of List Command.\n\nNew feature to view list only the given type of person/contact.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":103,"deletions":2}}},{"hash":"5740de08eb515bd761e6c086643ff17ca2768d31","isMergeCommit":true,"messageTitle":"Merge pull request #44 from gosongying/Client-Housekeeper","messageBody":"Update Person.java\r\n\r\nUpdate the use/implementation using Client and Housekeeper.","fileTypesAndContributionMap":{}},{"hash":"4f7b7b9a8add672bc93c816cde21407f572309cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-List","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"dd2edab114c13e2629a926d6486c76a67d74d06b","isMergeCommit":false,"messageTitle":"Update TypePredicate.java","messageBody":"Update TypePredicate.java to use isClient method.\n\nThis changes is made to maintain consistency.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b7fe4848de86c0b2b0b41146e16c9a771ab17dc2","isMergeCommit":true,"messageTitle":"Merge pull request #46 from LimZiJia/Implement-add-command","messageBody":"Implement AddCommand","fileTypesAndContributionMap":{}},{"hash":"a887fa33328e819534d59f0e3bba419327e7c437","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-List","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"255672ab608c7b79b59a10ee2b1a3d0071ec1c57","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6},"docs":{"insertions":9,"deletions":9},"test-code":{"insertions":20,"deletions":7}}},{"hash":"34fe138ea3c2fd6335c747b59e1db6f6b5b0b3b3","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"2d25cd0349efceebe8043b008cf7ec2d9885bcac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-List","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2218ed8be412b619756977c42442a9fecaabbe82","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"d8c54ecd4102d1ed708885bb4f4f1dc8f9ecd8d8","isMergeCommit":false,"messageTitle":"Update Test Cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":55}}},{"hash":"9f3670289ba0937fbc7be64c887beb1f3fcb094e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from gosongying/test-case","messageBody":"Update Test Cases","fileTypesAndContributionMap":{}},{"hash":"c79e19b9e0c4622a16f60928fee622bb47fb2d25","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-List","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b96ae3873052dbe1c5148ec9e5a5c2dd1677e0ae","isMergeCommit":false,"messageTitle":"Update Check Style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":70,"deletions":55}}},{"hash":"bfbf13bb103d762f464f5e584acffa10aab5a696","isMergeCommit":false,"messageTitle":"Update UMLDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":0}}},{"hash":"cbaf49e352aa441bac9b02397b95518e9dcea866","isMergeCommit":true,"messageTitle":"Merge pull request #65 from gosongying/UML","messageBody":"Update UML","fileTypesAndContributionMap":{}}]},{"date":"2024-03-28","commitResults":[{"hash":"3e5147c0e7a2734bd2605bab30197cff881ffbb0","isMergeCommit":true,"messageTitle":"Merge pull request #80 from gosongying/Separate-list","messageBody":"Implement separate lists and change UI","fileTypesAndContributionMap":{}},{"hash":"f41977d066c74e4e4632b06067d4511846aef847","isMergeCommit":false,"messageTitle":"Add Area.java","messageBody":"Add new attribute for Person, Area. This to determine the availability\nof the Housekeeper.\n\nMade some changes on implementation of add and edit method. This way\nit can use the new attribute, Area.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":181,"deletions":49},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-29","commitResults":[{"hash":"64cd452c6b10111e0b9fec17343f2d906c87037e","isMergeCommit":false,"messageTitle":"Update find feature implementation","messageBody":"Update the implementation of find feature using new predicate. This way\nit can takes address and area keywords.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":30}}},{"hash":"0365b414732547b1d13aba8c584193940bcf2938","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":68,"deletions":0}}}]},{"date":"2024-04-02","commitResults":[{"hash":"151068958cf3f453b861e2d5f8df965fb9b58122","isMergeCommit":true,"messageTitle":"Merge pull request #96 from LimZiJia/implement-client-booking-command","messageBody":"Implement client booking commands","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"a574acaa10e2c4da76961c0eef586438ef264385","isMergeCommit":false,"messageTitle":"Implement edit booking command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":305,"deletions":11},"test-code":{"insertions":1,"deletions":1}}},{"hash":"7e1e3242b251c8641bed5d6b1a920851c8d1f4ca","isMergeCommit":true,"messageTitle":"Merge pull request #101 from moguries/implement-booking-search","messageBody":"Implement booking search command","fileTypesAndContributionMap":{}},{"hash":"07eeae6788ca4f354f705b9b0fab52f3c2942e3f","isMergeCommit":false,"messageTitle":"Implement booking deferment command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":8}}},{"hash":"5081554205663a28041d27f42e0a277dcab0e4f1","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"d6931403af15ab9c881ad1817746be99e92899dd","isMergeCommit":true,"messageTitle":"Merge pull request #108 from LimZiJia/Update-UG-for-booking-command","messageBody":"Fix editing booking details commands","fileTypesAndContributionMap":{}},{"hash":"24fdf0734c81388d2fcd7a876859ec7c1244c33e","isMergeCommit":false,"messageTitle":"Fix edit booking bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":14}}},{"hash":"dd111251776cbde38236b2082662dbb04223f5c7","isMergeCommit":false,"messageTitle":"Fix check style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}},{"hash":"7417bb12c790d95220d95d1c18025c1c0e0c5826","isMergeCommit":true,"messageTitle":"Merge pull request #111 from gosongying/master","messageBody":"Fix bug from imcompatible type for Predicate","fileTypesAndContributionMap":{}},{"hash":"1bb36be261103afaa3f50e1b8f1514f0dcb1edfc","isMergeCommit":true,"messageTitle":"Merge pull request #112 from gosongying/master","messageBody":"Fix imcompatible type in ModelManager.java","fileTypesAndContributionMap":{}},{"hash":"907e9644437ba1c0a62e23e6d8b17c884cdd95cd","isMergeCommit":false,"messageTitle":"Implement edit booking for booking date and deferment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":137,"deletions":17}}},{"hash":"f1c1a9513f8256bcb05e2d39d182383a48d48dc1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.3-Edit-Booking","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/Messages.java\n","fileTypesAndContributionMap":{}},{"hash":"deaecfda5c002ac92f15eb73efbb89b5bd9f7219","isMergeCommit":false,"messageTitle":"Fix command result","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"55951c2bda986ccebc3bb6ed163c680e1f0d2aec","isMergeCommit":true,"messageTitle":"Merge pull request #113 from moguries/fix-invalid-input-bugs","messageBody":"Fix invalid input bugs","fileTypesAndContributionMap":{}},{"hash":"b175279d107421fa4d1208b4b48788a3fa327b75","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":11}}},{"hash":"d30fbd9b8eee6671be9ddfd92d649478bf43ea79","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":6}}},{"hash":"b61db4d569f739067160c3179d2f465e50d70197","isMergeCommit":true,"messageTitle":"Merge pull request #116 from LimZiJia/testing-leads","messageBody":"Fix leads feature bug","fileTypesAndContributionMap":{}},{"hash":"f6953910585e7c8b52724acf5b1c76c18a835446","isMergeCommit":true,"messageTitle":"Merge pull request #118 from moguries/fix-error-message","messageBody":"Fix error message","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"892d9d104e4f9c3d3e641d87da32f4ee4b616c9b","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":159,"deletions":100}}},{"hash":"81c6324412832d31e5bf72f0b96566d0dd60dc11","isMergeCommit":true,"messageTitle":"Merge pull request #122 from gosongying/Testing","messageBody":"Update test cases","fileTypesAndContributionMap":{}},{"hash":"5586bc71baaea062b8562c8604e72ae0f433c8a5","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":36}}},{"hash":"de5e4b58895fc22e153b045e2cf885aa762d9f44","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.3-post-testing","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/commands/EditCommandTest.java\n#\tsrc/test/java/seedu/address/model/person/HousekeeperTest.java\n#\tsrc/test/java/seedu/address/model/person/LeadsFilterPredicateTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"d39c7d13c71a9e19df6b47ea16b5c98a7dff26d8","isMergeCommit":false,"messageTitle":"Fix bug and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4},"test-code":{"insertions":42,"deletions":44}}},{"hash":"6d876eb96d565327ac17f7ccbb186858896cd5a9","isMergeCommit":true,"messageTitle":"Merge pull request #120 from LimZiJia/minor-updates","messageBody":"Update UI.png","fileTypesAndContributionMap":{}},{"hash":"62faca1b6e9a086766280fffdb18991c96d27019","isMergeCommit":true,"messageTitle":"Merge pull request #126 from LimZiJia/Update-DG-v1.3","messageBody":"Update dg v1.3","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LimZiJia":{"docs":371,"functional-code":1492,"test-code":689,"other":12},"moguries":{"docs":231,"functional-code":763,"test-code":116},"gosongying":{"docs":128,"functional-code":1289,"test-code":934},"GERARDJM018":{"docs":205,"functional-code":757,"test-code":233}},"authorContributionVariance":{"LimZiJia":197425.98,"moguries":12488.644,"gosongying":108607.445,"GERARDJM018":12522.901},"authorDisplayNameMap":{"LimZiJia":"CS2103T-W09-1 LIM .. JIA","moguries":"CS2103T-W09-1 HUAN..ESTE","gosongying":"CS2103T-W09-1 GO S..YING","GERARDJM018":"CS2103T-W09-1 GERA..THEW"}} diff --git a/AY2324S2-CS2103T-W11-1_tp_master/authorship.json b/AY2324S2-CS2103T-W11-1_tp_master/authorship.json index 3c6b9d1c..9d614187 100644 --- a/AY2324S2-CS2103T-W11-1_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W11-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-W11-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W11-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-05"},{"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":"LWS49"},"content":"# Welcome to **CareerSync!**","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"## This is a CLI-managed internship application tracker that satisfies all your basic needs.","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"Effortlessly manage, search, and sift through your various internship applications. Enter details rapidly using CLI, and","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"avoid losing track of crucial information. Targeted to those with numerous applications to keep track of and prefer ","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"using CLI. Your all-in-one solution for seamless application management.","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"* For the detailed documentation of this project, see the **[CareerSync Product Guide](https://ay2324s2-cs2103t-w11-1.github.io/tp/DeveloperGuide.html)**.","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"* For details of our members who developed this app, see the **[About Us](https://ay2324s2-cs2103t-w11-1.github.io/tp/AboutUs.html)**.","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"jieqiboh":1,"LWS49":9,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.1.0\u0027 // JavaFX plugin","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"javafx {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" version \u003d \u002717\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" modules \u003d [\u0027javafx.controls\u0027, \u0027javafx.fxml\u0027]","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" platform \u003d \u0027win\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" platform \u003d \u0027mac\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" platform \u003d \u0027linux\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" systemProperty(\"headless\", \"true\")","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" String javaFxVersion \u003d \u002717.0.10\u0027","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" // TestFX dependencies","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation \u0027org.testfx:testfx-junit5:4.0.18\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation \u0027org.testfx:testfx-core:4.0.18\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation group: \u0027org.assertj\u0027, name: \u0027assertj-core\u0027, version: \u00273.13.2\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation group: \u0027org.hamcrest\u0027, name: \u0027hamcrest\u0027, version: \u00272.1\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation \u0027org.testfx:openjfx-monocle:jdk-12.0.1+2\u0027 // Adds headless testing mode support. While the jdk","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" // parameter is set to 12.0.1+2, it is compatible with Java 11.","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" archiveFileName \u003d \u0027CareerSync.jar\u0027","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":"run {","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"HM33-Stu":3,"-":72,"CaptainKeqing":21}},{"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":"jieqiboh"},"content":"You can reach us at the email `cs2103t_w11_1[at]comp.nus.edu.sg`","lastModifiedDate":"2024-02-29"},{"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":"HM33-Stu"},"content":"### Loh Jun Heng Donovan","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"\u003cimg src\u003d\"images/captainkeqing.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"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":"HM33-Stu"},"content":"[[github](https://github.com/CaptainKeqing)]","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"[[portfolio](team/captainkeqing.md)]","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"* Role: Code Quality Manager","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"### Hariprasath S/O R Mohan","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"\u003cimg src\u003d\"images/hm33-stu.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"[[github](http://github.com/HM33-Stu)]","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"[[portfolio](team/hm33-stu.md)]","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"* Role: Documentation, Deliverables and Deadlines","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"### Wei Sheng","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"\u003cimg src\u003d\"images/lws49.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"[[github](http://github.com/LWS49)]","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"[[portfolio](team/lws49.md)]","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"* Role: Tech Lead, Scheduling and Tracking","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"### Boh Jie Qi","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"\u003cimg src\u003d\"images/jieqiboh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"[[github](https://github.com/jieqiboh)]","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"[[portfolio](team/jieqiboh)]","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":"### Rajendran Ramesh Babu Manoj Narender","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":"\u003cimg src\u003d\"images/theman-oj10.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":"[[github](http://github.com/theman-oj10)]","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"[[portfolio](team/theman-oj10.md)]","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":"* Role: Integration, Testing","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":2,"HM33-Stu":12,"LWS49":6,"theman-oj10":5,"-":32}},{"path":"docs/Configuration.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Configuration guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: `config.json`).","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"jieqiboh":2,"-":4}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: DevOps guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26"}],"authorContributionMap":{"jieqiboh":5,"-":74}},{"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":"LWS49"},"content":"c","lastModifiedDate":"2024-03-04"},{"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":"CaptainKeqing"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-03-26"},{"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":"CaptainKeqing"},"content":"* [**`InternshipLogic`**](#internshiplogic-component): The command executor.","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"* [**`InternshipModel`**](#internshipmodel-component): Holds the data of the App in memory.","lastModifiedDate":"2024-03-26"},{"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":"HM33-Stu"},"content":"For example, the `InternshipLogic` component defines its API in the `InternshipLogic.java` interface and implements its functionality using the `InternshipLogicManager.java` class which follows the `InternshipLogic` 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":"2024-03-22"},{"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":"CaptainKeqing"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-26"},{"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":"CaptainKeqing"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `InternshipListPanel`, `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":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"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/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-26"},{"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":"HM33-Stu"},"content":"* executes user commands using the `InternshipLogic` component.","lastModifiedDate":"2024-03-22"},{"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":"HM33-Stu"},"content":"* keeps a reference to the `InternshipLogic` component, because the `UI` relies on the `InternshipLogic` to execute commands.","lastModifiedDate":"2024-03-22"},{"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":"HM33-Stu"},"content":"### InternshipLogic component","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":"**API** : [`InternshipLogic.java`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/InternshipLogic/InternshipLogic.java)","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":"Here\u0027s a (partial) class diagram of the `InternshipLogic` component:","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":"\u003cimg src\u003d\"images/InternshipLogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"HM33-Stu"},"content":"The sequence diagram below illustrates the interactions within the `InternshipLogic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":"![Interactions Inside the InternshipLogic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2024-03-22"},{"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":"HM33-Stu"},"content":"How the `InternshipLogic` component works:","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":"1. When `InternshipLogic` is called upon to execute a command, it is passed to an `InternshipDataParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"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 `InternshipLogicManager`.","lastModifiedDate":"2024-03-22"},{"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":"HM33-Stu"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `InternshipLogic`.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":"Here are the other classes in `InternshipLogic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2024-03-22"},{"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":"theman-oj10"},"content":"* When called upon to parse a user command, the `InternshipDataParser` 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 `InternshipDataParser` returns back as a `Command` object.","lastModifiedDate":"2024-03-21"},{"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":"CaptainKeqing"},"content":"### InternshipModel component","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":"**API** : [`InternshipModel.java`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/model/InternshipModel.java)","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":"\u003cimg src\u003d\"images/InternshipModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":"theman-oj10"},"content":"* stores the internship data i.e., all `Internship` objects (which are contained in a `UniqueInternshipList` object).","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":"* stores the currently \u0027selected\u0027 `Internship` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cInternship\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":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":"* stores a `InternshipUserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyInternshipUserPref` objects.","lastModifiedDate":"2024-03-21"},{"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":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":"\u003cimg src\u003d\"images/InternshipStorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":"* can save both internship data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":"* inherits from both `InternshipDataStorage` and `InternshipUserPrefsStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"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":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedInternshipData`. It extends `InternshipData` with an undo/redo history, stored internally as an `internshipDataStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":"* `VersionedInternshipData#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":"* `VersionedInternshipData#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":"* `VersionedInternshipData#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":"These operations are exposed in the `InternshipModel` interface as `InternshipModel#commitInternshipData()`, `InternshipModel#undoInternshipData()` and `InternshipModel#redoInternshipData()` respectively.","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"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":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":"Step 1. The user launches the application for the first time. The `VersionedInternshipData` will be initialized with the initial internship data state, and the `currentStatePointer` pointing to that single internship data state.","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the internship data. The `delete` command calls `InternshipModel#commitInternshipData()`, causing the modified state of the internship data after the `delete 5` command executes to be saved in the `internshipDataStateList`, and the `currentStatePointer` is shifted to the newly inserted internship data state.","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":"Step 3. The user executes `add n/David …​` to add a new internship. The `add` command also calls `InternshipModel#commitInternshipData()`, causing another modified internship data state to be saved into the `internshipDataStateList`.","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `InternshipModel#commitInternshipData()`, so the address book state will not be saved into the `internshipDataStateList`.","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":"Step 4. The user now decides that adding the internship was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `InternshipModel#undoInternshipData()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous internship data state, and restores the internship data to that state.","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"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 InternshipData state, then there are no previous InternshipData states to restore. The `undo` command uses `InternshipModel#canUndoInternshipData()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":"The following sequence diagram shows how an undo operation goes through the `InternshipLogic` component:","lastModifiedDate":"2024-03-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-InternshipLogic.png)","lastModifiedDate":"2024-03-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":"The `redo` command does the opposite — it calls `InternshipModel#redoInternshipData()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the internship data to that state.","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `internshipDataStateList.size() - 1`, pointing to the latest internship data state, then there are no undone InternshipData states to restore. The `redo` command uses `InternshipModel#canRedoInternshipData()` 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":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the internship data, such as `list`, will usually not call `InternshipModel#commitInternshipData()`, `InternshipModel#undoInternshipData()` or `InternshipModel#redoInternshipData()`. Thus, the `internshipDataStateList` remains unchanged.","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":"Step 6. The user executes `clear`, which calls `InternshipModel#commitInternshipData()`. Since the `currentStatePointer` is not pointing at the end of the `internshipDataStateList`, all internship data 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":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":"* **Alternative 1 (current choice):** Saves the entire internship data.","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"HM33-Stu"},"content":"**Target user profile**: People sourcing for internships (specifically, CS students)","lastModifiedDate":"2024-03-02"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"HM33-Stu"},"content":"* has a need to manage a significant number of internship applications","lastModifiedDate":"2024-03-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"HM33-Stu"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-02"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"HM33-Stu"},"content":"``` plaintext","lastModifiedDate":"2024-03-02"},{"lineNumber":267,"author":{"gitId":"HM33-Stu"},"content":"Effortlessly manage, search, and sift through your various internship applications.","lastModifiedDate":"2024-03-02"},{"lineNumber":268,"author":{"gitId":"HM33-Stu"},"content":"Enter details rapidly using CLI, and avoid losing track of crucial information.","lastModifiedDate":"2024-03-02"},{"lineNumber":269,"author":{"gitId":"HM33-Stu"},"content":"Targeted to those with numerous applications to keep track of and prefer using CLI.","lastModifiedDate":"2024-03-02"},{"lineNumber":270,"author":{"gitId":"HM33-Stu"},"content":"Your all-in-one solution for seamless application management.","lastModifiedDate":"2024-03-02"},{"lineNumber":271,"author":{"gitId":"HM33-Stu"},"content":"```","lastModifiedDate":"2024-03-02"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"HM33-Stu"},"content":"Priorities: High (Must-Have) - `* * *`, Medium (Nice-To-Have) - `* *`, Low (Not Useful) - `*`","lastModifiedDate":"2024-03-02"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"HM33-Stu"},"content":"| Priority | As a/an …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-02"},{"lineNumber":278,"author":{"gitId":"HM33-Stu"},"content":"|----------|-----------------|--------------------------------------------------|---------------------------------------------------------------|","lastModifiedDate":"2024-03-02"},{"lineNumber":279,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | impatient user | Enter internship information from the main page | Quickly note down potential internships at a career fair |","lastModifiedDate":"2024-03-02"},{"lineNumber":280,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | savvy user | Access all commands via a text-based input | Add, delete, and modify entries without using my mouse |","lastModifiedDate":"2024-03-02"},{"lineNumber":281,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | beginner user | Access sample data in the app | Play around with the features to get the hang of them |","lastModifiedDate":"2024-03-02"},{"lineNumber":282,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | up-to-date user | Modify internship details | Keep myself updated on changing details |","lastModifiedDate":"2024-03-02"},{"lineNumber":283,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | regular user | View all internship details | Easily view all details in one screen. |","lastModifiedDate":"2024-03-02"},{"lineNumber":284,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | detailed user | Add information to the notes section of an entry | Customise to see internships that fall under specific fields. |","lastModifiedDate":"2024-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"HM33-Stu"},"content":"(For all use cases below, the **System** is `CareerSync` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-02"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Enter Internship Information From The Main Page**","lastModifiedDate":"2024-03-02"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":297,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to enter internship information. ","lastModifiedDate":"2024-03-02"},{"lineNumber":298,"author":{"gitId":"HM33-Stu"},"content":"3. System prompts the user to input internship details such as title, company, start/end dates, etc. ","lastModifiedDate":"2024-03-02"},{"lineNumber":299,"author":{"gitId":"HM33-Stu"},"content":"4. User inputs the required internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":300,"author":{"gitId":"HM33-Stu"},"content":"5. System validates the input data. ","lastModifiedDate":"2024-03-02"},{"lineNumber":301,"author":{"gitId":"HM33-Stu"},"content":"6. System saves the internship information. ","lastModifiedDate":"2024-03-02"},{"lineNumber":302,"author":{"gitId":"HM33-Stu"},"content":"7. System displays a confirmation message indicating successful submission.","lastModifiedDate":"2024-03-02"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":309,"author":{"gitId":"HM33-Stu"},"content":" *1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":310,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels entering internship information.","lastModifiedDate":"2024-03-02"},{"lineNumber":311,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the entry process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":312,"author":{"gitId":"HM33-Stu"},"content":"* 5a. User inputs invalid internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":313,"author":{"gitId":"HM33-Stu"},"content":" * 5a1. System displays an error message indicating the specific validation error(s).","lastModifiedDate":"2024-03-02"},{"lineNumber":314,"author":{"gitId":"HM33-Stu"},"content":"* 6a. System fails to save the internship information.","lastModifiedDate":"2024-03-02"},{"lineNumber":315,"author":{"gitId":"HM33-Stu"},"content":" * 6a1. System displays an error message and prompts the user to retry or cancel the submission.","lastModifiedDate":"2024-03-02"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Access All Commands Via A Text-Based Input**","lastModifiedDate":"2024-03-02"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":323,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":324,"author":{"gitId":"HM33-Stu"},"content":"2. System displays a prompt for text-based input. ","lastModifiedDate":"2024-03-02"},{"lineNumber":325,"author":{"gitId":"HM33-Stu"},"content":"3. User enters a command using text-based input. ","lastModifiedDate":"2024-03-02"},{"lineNumber":326,"author":{"gitId":"HM33-Stu"},"content":"4. System recognizes and processes the entered command. ","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"HM33-Stu"},"content":"5. System executes the requested action corresponding to the entered command. ","lastModifiedDate":"2024-03-02"},{"lineNumber":328,"author":{"gitId":"HM33-Stu"},"content":"6. User receives feedback or output based on the executed command.","lastModifiedDate":"2024-03-02"},{"lineNumber":329,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":330,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":331,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":332,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":333,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":334,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":335,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":336,"author":{"gitId":"HM33-Stu"},"content":"* 3a. User enters an invalid command.","lastModifiedDate":"2024-03-02"},{"lineNumber":337,"author":{"gitId":"HM33-Stu"},"content":" * 3a1. System displays an error message indicating that the command is not recognized.","lastModifiedDate":"2024-03-02"},{"lineNumber":338,"author":{"gitId":"HM33-Stu"},"content":"* 4a. System fails to recognize or process the entered command.","lastModifiedDate":"2024-03-02"},{"lineNumber":339,"author":{"gitId":"HM33-Stu"},"content":" * 4a1. System displays an error message and prompts the user to retry or enter a different command.","lastModifiedDate":"2024-03-02"},{"lineNumber":340,"author":{"gitId":"HM33-Stu"},"content":"* 5a. System encounters an error while executing the requested action.","lastModifiedDate":"2024-03-02"},{"lineNumber":341,"author":{"gitId":"HM33-Stu"},"content":" * 5a1. System displays an error message and prompts the user to retry or perform a different action.","lastModifiedDate":"2024-03-02"},{"lineNumber":342,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":343,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":344,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":345,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Access Sample Data In The App**","lastModifiedDate":"2024-03-02"},{"lineNumber":346,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":347,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":348,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":349,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":350,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to access sample data. ","lastModifiedDate":"2024-03-02"},{"lineNumber":351,"author":{"gitId":"HM33-Stu"},"content":"3. System retrieves and displays sample internship data. ","lastModifiedDate":"2024-03-02"},{"lineNumber":352,"author":{"gitId":"HM33-Stu"},"content":"4. User views the sample internship data presented by the system.","lastModifiedDate":"2024-03-02"},{"lineNumber":353,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":354,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":355,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":356,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":357,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":358,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":359,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":360,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels accessing sample data.","lastModifiedDate":"2024-03-02"},{"lineNumber":361,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":362,"author":{"gitId":"HM33-Stu"},"content":"* 3a. System fails to retrieve sample data.","lastModifiedDate":"2024-03-02"},{"lineNumber":363,"author":{"gitId":"HM33-Stu"},"content":" * 3a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":364,"author":{"gitId":"HM33-Stu"},"content":"* 4a. User encounters issues while viewing the sample data.","lastModifiedDate":"2024-03-02"},{"lineNumber":365,"author":{"gitId":"HM33-Stu"},"content":" * 4a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":366,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":367,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":368,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":369,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Modify Internship Details**","lastModifiedDate":"2024-03-02"},{"lineNumber":370,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":371,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":372,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":373,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":374,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to view all internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":375,"author":{"gitId":"HM33-Stu"},"content":"3. System retrieves and displays a list of all entered internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":376,"author":{"gitId":"HM33-Stu"},"content":"4. User selects the internship entry to be modified. ","lastModifiedDate":"2024-03-02"},{"lineNumber":377,"author":{"gitId":"HM33-Stu"},"content":"5. System presents the selected internship details for editing. ","lastModifiedDate":"2024-03-02"},{"lineNumber":378,"author":{"gitId":"HM33-Stu"},"content":"6. User modifies the necessary internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":379,"author":{"gitId":"HM33-Stu"},"content":"7. System validates the modified data.","lastModifiedDate":"2024-03-02"},{"lineNumber":380,"author":{"gitId":"HM33-Stu"},"content":"8. System saves the updated internship information. ","lastModifiedDate":"2024-03-02"},{"lineNumber":381,"author":{"gitId":"HM33-Stu"},"content":"9. System displays a confirmation message indicating successful modification.","lastModifiedDate":"2024-03-02"},{"lineNumber":382,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":383,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":386,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":387,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":388,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":389,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels viewing all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":390,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":391,"author":{"gitId":"HM33-Stu"},"content":"* 4a. User cancels selecting the internship entry to be modified.","lastModifiedDate":"2024-03-02"},{"lineNumber":392,"author":{"gitId":"HM33-Stu"},"content":" * 4a1. System cancels the modification process and returns the user to the list of internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":393,"author":{"gitId":"HM33-Stu"},"content":"* 6a. User inputs invalid internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":394,"author":{"gitId":"HM33-Stu"},"content":" * 6a1. System displays an error message indicating the specific validation error(s).","lastModifiedDate":"2024-03-02"},{"lineNumber":395,"author":{"gitId":"HM33-Stu"},"content":"* 7a. System fails to validate the modified data.","lastModifiedDate":"2024-03-02"},{"lineNumber":396,"author":{"gitId":"HM33-Stu"},"content":" * 7a1. System displays an error message and prompts the user to correct the data.","lastModifiedDate":"2024-03-02"},{"lineNumber":397,"author":{"gitId":"HM33-Stu"},"content":"* 8a. System fails to save the updated internship information.","lastModifiedDate":"2024-03-02"},{"lineNumber":398,"author":{"gitId":"HM33-Stu"},"content":" * 8a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":399,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":400,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":401,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":402,"author":{"gitId":"HM33-Stu"},"content":"**Use case: View All Internship Details**","lastModifiedDate":"2024-03-02"},{"lineNumber":403,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":404,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":405,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":406,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":407,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to view all internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":408,"author":{"gitId":"HM33-Stu"},"content":"3. System retrieves and displays a list of all entered internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":409,"author":{"gitId":"HM33-Stu"},"content":"4. User views the list of internship details presented by the system.","lastModifiedDate":"2024-03-02"},{"lineNumber":410,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":411,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":412,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":413,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":414,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":415,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":416,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":417,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels viewing all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":418,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":419,"author":{"gitId":"HM33-Stu"},"content":"* 3a. System fails to retrieve all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":420,"author":{"gitId":"HM33-Stu"},"content":" * 3a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":421,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":422,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":423,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":424,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Add Information To The Notes Section Of An Entry**","lastModifiedDate":"2024-03-02"},{"lineNumber":425,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":426,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":427,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":428,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":429,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to view all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":430,"author":{"gitId":"HM33-Stu"},"content":"3. System retrieves and displays a list of all entered internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":431,"author":{"gitId":"HM33-Stu"},"content":"4. User selects the internship entry to which notes will be added.","lastModifiedDate":"2024-03-02"},{"lineNumber":432,"author":{"gitId":"HM33-Stu"},"content":"5. System presents the selected internship details along with the current notes section.","lastModifiedDate":"2024-03-02"},{"lineNumber":433,"author":{"gitId":"HM33-Stu"},"content":"6. User enters additional information in the notes section.","lastModifiedDate":"2024-03-02"},{"lineNumber":434,"author":{"gitId":"HM33-Stu"},"content":"7. System saves the updated notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":435,"author":{"gitId":"HM33-Stu"},"content":"8. System displays a confirmation message indicating successful addition of notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":436,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":437,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":438,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":439,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":440,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":441,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":442,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":443,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels viewing all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":444,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":445,"author":{"gitId":"HM33-Stu"},"content":"* 4a. User cancels selecting the internship entry to add notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":446,"author":{"gitId":"HM33-Stu"},"content":" * 4a1. System cancels the process and returns the user to the list of internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":447,"author":{"gitId":"HM33-Stu"},"content":"* 6a. User encounters an error while adding notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":448,"author":{"gitId":"HM33-Stu"},"content":" * 6a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":449,"author":{"gitId":"HM33-Stu"},"content":"* 7a. System fails to save the updated notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":450,"author":{"gitId":"HM33-Stu"},"content":" * 7a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":451,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":452,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"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":459,"author":{"gitId":"HM33-Stu"},"content":"2. Should be able to hold up to 100 internship entries without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-02"},{"lineNumber":460,"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":461,"author":{"gitId":"HM33-Stu"},"content":"4. Storage of data should be in a format that is easy to read and write by humans, and easy to parse by machines.","lastModifiedDate":"2024-03-02"},{"lineNumber":462,"author":{"gitId":"HM33-Stu"},"content":"5. System should be backward compatible with data produced by earlier versions of the system.","lastModifiedDate":"2024-03-02"},{"lineNumber":463,"author":{"gitId":"HM33-Stu"},"content":"6. System is expected to be used by a single user on a machine, and does not need to support multiple users on the same machine.","lastModifiedDate":"2024-03-02"},{"lineNumber":464,"author":{"gitId":"HM33-Stu"},"content":"7. System should launch within 2 seconds on any modern machine.","lastModifiedDate":"2024-03-02"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"LWS49"},"content":"* **API**: Application Programming Interface. The entirety of published methods, properties and other means for software developers to access an application through software they write using this application.","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"LWS49"},"content":"* **GUI**: Graphical User Interface. A graphical user interface uses graphical representations of commands, status feedbacks and data of an application, and offers methods to interact with it through graphical devices, such as a mouse or tablets.","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"LWS49"},"content":"* **Mainstream OS**: Mainstream Operating Systems. Refers to Windows, Linux, Unix and MacOS.","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"LWS49"},"content":"* **UI**: User Interface. The point where a user and a software application meet and interact.","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"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":483,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"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":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"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":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"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":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"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":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"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":517,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":3,"HM33-Stu":187,"LWS49":5,"theman-oj10":22,"-":302,"CaptainKeqing":8}},{"path":"docs/Documentation.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Documentation guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"**Setting up and maintaining the project website:**","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation.","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"* The `docs/` folder is used for documentation.","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html).","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"* Note these points when adapting the documentation to a different project/product:","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * The \u0027Site-wide settings\u0027 section of the page linked above has information on how to update site-wide elements such as the top navigation bar.","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" * :bulb: In addition to updating content files, you might have to update the config files `docs\\_config.yml` and `docs\\_sass\\minima\\_base.scss` (which contains a reference to `AB-3` that comes into play when converting documentation pages to PDF format).","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"* If you are using Intellij for editing documentation files, you can consider enabling \u0027soft wrapping\u0027 for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping)","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Style guidance:**","lastModifiedDate":"2020-06-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style).","lastModifiedDate":"2020-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html)","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"**Diagrams:**","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html)","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"**Converting a document to the PDF format:**","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html)","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":18,"-":11}},{"path":"docs/Logging.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Logging guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* We are using `java.util.logging` package for logging.","lastModifiedDate":"2020-06-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"* The `LogsCenter` class is used to manage the logging levels and logging destinations.","lastModifiedDate":"2020-06-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to the specified logging level.","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"* Log messages are output through the console and to a `.log` file.","lastModifiedDate":"2020-06-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The output logging level can be controlled using the `logLevel` setting in the configuration file (See the [Configuration guide](Configuration.md) section).","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"* **When choosing a level for a log message**, follow the conventions given in [_[se-edu/guides] Java: Logging conventions_](https://se-education.org/guides/conventions/java/logging.html).","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"jieqiboh":2,"-":9}},{"path":"docs/SettingUp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Setting up and getting started","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":" 1. Run the `seedu.address.Main` and try a few commands.","lastModifiedDate":"2020-06-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"jieqiboh":10,"-":45}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Testing guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-secondary\"\u003e:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" e.g. `seedu.address.storage.StorageManagerTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" e.g. `seedu.address.logic.LogicManagerTest`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":7,"-":29}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"title: User Guide","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"pageNav: 3","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"### Table of Contents","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"1. [Introduction](#introduction)","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" - [Who is CareerSync for?](#who-is-careersync-for)","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" - [What is the purpose of this User Guide](#what-is-the-purpose-of-this-user-guide)","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" - [What can students do with CareerSync?](#what-can-students-do-with-careersync)","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"2. [Essential Terms \u0026 Symbols](#essential-terms--symbols)","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" - [Glossary](#glossary)","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" - [Legend](#legend)","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"3. [Quick Start](#quick-start)","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" - [Installation](#installation)","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" - [Navigating CareerSync](#navigating-careersync)","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" - [Tutorial](#tutorial)","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"4. [Commands](#commands)","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" - [Command Summary](#command-summary)","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" - [Viewing help](#viewing-help-help)","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" - [Adding an internship](#adding-an-internship-add)","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" - [Deleting an internship](#deleting-an-internship-delete)","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" - [Listing all internships](#listing-all-internships-list)","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" - [Editing an internship](#editing-an-internship-edit)","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" - [Adding a remark](#adding-a-remark-addremark)","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" - [Finding internships by keywords](#finding-internships-by-keywords-find)","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" - [Sorting internships by fields](#sorting-internships-by-fields-sort)","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" - [Add a Task to an Internship](#add-a-task-to-an-internship-addtask)","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" - [Set Deadline to a Task](#set-deadline-to-a-task-setdeadline)","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" - [Deleting Tasks from an Internship](#deleting-tasks-from-an-internship-deletetask)","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" - [Clearing all internships](#clearing-all-internships-clear)","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" - [Exiting the program](#exiting-the-program-exit)","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"5. [Miscellaneous](#miscellaneous)","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" - [Saving and Editing Your Internship Data](#saving-and-editing-your-internship-data)","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" - [FAQ](#faq)","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" - [Known issues](#known-issues)","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" - [Field Summary](#field-summary)","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"### **Introduction**","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"Welcome to \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e\u0027s User Guide! \u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"\u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e is an **internship application manager designed to simplify the management of internship applications**. We\u0027re here to help ","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"you keep track of your internships, so you can focus on preparing for your interviews and securing your dream internship! :grin:","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"#### Who is CareerSync for?","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"\u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e is **tailored to NUS Computing students** with **experience in command line interfaces (CLI)**.","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"Our app is driven by command inputs through the CLI, making it **faster than conventional GUI-based applications.**\u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"If you are a beginner, don\u0027t worry! Our [Quick Start](#quick-start) section will guide you through the installation of all the necessary tools, even if you have never used a CLI before.","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"#### What is the purpose of this User Guide?","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"This user guide was created to help students starting out with CareerSync get started with using our application quickly!","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"**For first-time users**, we recommend starting at the [Quick Start](#quick-start) section to install CareerSync, before heading to the [Tutorial](#tutorial) section.","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"**For experienced users**, check out the [Commands](#commands) section for a quick reference. ","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"Do check out our [FAQ](#faq), [Known Issues](#known-issues) and [Glossary](#glossary) sections for more information!","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"#### What can students do with CareerSync?","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"As computing students, keeping track of all the internship applications we\u0027ve made tends to be a hassle.\u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"With CareerSync, you can:","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"1. **Add** internships, along with details such as company name, description, status and more!","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"2. **Find** internships by keywords, making it easy to find the information you need.","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"3. **Manage tasks** for your applications and keep track of their individual deadlines.","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"And so much more!","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":"### **Essential Terms \u0026 Symbols**","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"This section explains the common terms that you may not be familiar with, and the symbols used in this User Guide. Read through this section first so that","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":"you understand the contents of this User Guide.","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":"#### Glossary","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"| Term | Meaning |","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":"|-----------|-------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":"| CLI | [Command Line Interface](https://en.wikipedia.org/wiki/Command-line_interface) |","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":"| GUI | [Graphical User Interface](https://en.wikipedia.org/wiki/Graphical_user_interface) |","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":"| JSON | [JavaScript Object Notation](https://www.json.org/json-en.html) |","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":"| JAR | [Java Archive: A file format to store and distribute Java Applications](https://en.wikipedia.org/wiki/JAR_(file_format)) |","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":"| File Path | [The location of a file in the computer\u0027s file system](https://www.w3schools.com/html/html_filepaths.asp) |","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":"#### Legend","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"This User Guide contains coloured blocks that highlight important information!","lastModifiedDate":"2024-03-28"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" 💡 Green blocks contain examples that you can follow on \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e yourself!","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" ℹ️ Blue blocks contain tips to enhance your experience using \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e!","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" ⚠️ ","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":"Red blocks contain warnings to note when using \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e!","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":"### **Quick Start**","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":"#### Installation","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":"1. Ensure that you have [Java 11 or above](https://www.java.com/en/download/) installed on your computer if you are using Windows.","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" - If you are using MacOS, follow the instructions [here](https://nus-cs2103-ay2324s2.github.io/website/admin/programmingLanguages.html) instead.","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":"2. Download the latest `CareerSync.jar` file [here](https://github.com/AY2324S2-CS2103T-W11-1/tp/releases/tag/v1.3). ","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":"3. Make sure your [jar](#glossary) file is located in an empty folder.","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":"4. Start \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e.","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" - For **MacOS**:","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" - Open up your Terminal by typing \u003ckbd\u003eCommand\u003c/kbd\u003e + \u003ckbd\u003eSpace\u003c/kbd\u003e, then type `Terminal` and \u003ckbd\u003eEnter\u003c/kbd\u003e.\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" - Navigate to the folder containing your jar file using `cd`. If you are not sure how to use `cd`, refer to [this link](https://www.ibm.com/docs/en/aix/7.2?topic\u003ddirectories-changing-another-directory-cd-command)!\u003cbr\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" - Enter `java -jar CareerSync.jar` and type \u003ckbd\u003eEnter\u003c/kbd\u003e.","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" - For **Windows**:","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" - Open the folder containing `CareerSync.jar`.","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" - Double-click on `CareerSync.jar` to start up our application!","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":"5. The **Graphical User Interace** similar to the image below should pop up on your screen.","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":"For more information on the interface, please refer to the [Navigating CareerSync](#navigating-careersync) section.","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":"### Navigating CareerSync","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":"When you first start \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e, you will see this window. This is the main window of \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e, where you can view all your internship applications.","lastModifiedDate":"2024-03-28"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":"#### Areas","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":"The main window of \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e is divided into four main areas: the **Tab Area**, the **CLI**, the **Message Box** and the **Internship List Display**.","lastModifiedDate":"2024-03-28"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":"![Areas Annotation](images/introduction/AreasAnnotation.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":"1. **Tab Area**: The Tab Area contains File and Help, which allows you to navigate its respective functions.","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":"2. **CLI**: The Command Line Interface (CLI) is where you can input commands to interact with \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e.","lastModifiedDate":"2024-03-28"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":"3. **Message Box**: The Message Box displays messages to provide feedback to you.","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":"4. **Internship List Display**: The Internship List Display displays the details of all your internship applications.","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":"#### Internship Fields","lastModifiedDate":"2024-03-29"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":"The names of the fields for each internship application is as stated below. When you edit these fields, you will see the changes reflected in the display.","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":"For the restrictions on what is accepted for each field, kindly refer to [Fields Summary](#fields-summary).","lastModifiedDate":"2024-03-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":"![Fields Annotation](images/introduction/FieldsAnnotation.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":"1. `INDEX` - The index of the internship application in the filtered list.","lastModifiedDate":"2024-03-27"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":"2. `COMPANY_NAME` - The name of the company you are applying to.","lastModifiedDate":"2024-03-27"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":"3. `ROLE` - The role you are applying for.","lastModifiedDate":"2024-03-27"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":"4. `STATUS` - The status of your application.","lastModifiedDate":"2024-03-27"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":"5. `DESCRIPTION` - A brief description of the internship.","lastModifiedDate":"2024-03-27"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":"6. `LOCATION` - The location of the internship.","lastModifiedDate":"2024-03-27"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":"7. `CONTACT_NAME` - The name of the contact person.","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":"8. `CONTACT_EMAIL` - The email of the contact person.","lastModifiedDate":"2024-03-27"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":"9. `CONTACT_NUMBER` - The phone number of the contact person.","lastModifiedDate":"2024-03-27"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":"10. `TASK` - The description of the task.","lastModifiedDate":"2024-04-04"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":"11. `DEADLINE` - The deadline of the task.","lastModifiedDate":"2024-04-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":"### Tutorial","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":"This section would guide you through the basic commands of \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e, and how to use them.","lastModifiedDate":"2024-03-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":"#### Clear sample internship entries: `clear`","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":"To begin using \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e, you should clear the sample internship entries that are present when you first start the ","lastModifiedDate":"2024-03-28"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":"application.","lastModifiedDate":"2024-03-27"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":178,"author":{"gitId":"LWS49"},"content":"Key in the command `clear` in the CLI and press `Enter` to clear the sample internship entries.","lastModifiedDate":"2024-03-27"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":180,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":182,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" `clear`\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" ![Before clearing](./images/clear/clear-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":"2. Successful Output after clearing entries:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" ![After successfully clearing](./images/clear/clear-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" There are no more internships in the list.","lastModifiedDate":"2024-03-27"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":"#### Add an internship entry: `add`","lastModifiedDate":"2024-04-03"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":"Next, let us try to add an internship entry. ","lastModifiedDate":"2024-03-27"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":198,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `add /com Tiktok /desc create new recommendation engine /status ongoing /poc jane yeo /email hr@tiktok.com","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":"/phone 90890301 /loc remote /role Software Intern`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":"Successful output after adding the entry:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" ![After successfully adding](./images/tutorial/add.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" You can now see your new internship with the details you entered in the **Internship List Display!**","lastModifiedDate":"2024-03-27"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"LWS49"},"content":"#### Edit an internship entry: `edit`","lastModifiedDate":"2024-04-03"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":"Oh no! You made a mistake in the email address of the contact person. Let\u0027s edit the email address.","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":213,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":214,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":215,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `edit 1 /email janeyeo@gmail.com`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":218,"author":{"gitId":"LWS49"},"content":"Successful output after editing the entry:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":"![After successfully editing](./images/tutorial/edit.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":"Your internship now has the updated email that you keyed in.","lastModifiedDate":"2024-03-27"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"jieqiboh"},"content":"#### Find internship entries: `find`","lastModifiedDate":"2024-03-29"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":"Before you continue, add a few more internship entries using these commands:","lastModifiedDate":"2024-03-27"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":"1. `add /com Google /desc create new search engine /status to_apply /poc john tan /email johntan@gmail.com /phone 98765432 /loc local /role Software Intern`","lastModifiedDate":"2024-03-27"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":"2. `add /com Facebook /desc create new social media platform /status to_apply /poc jane tan /email facebookhr@gmail.com /phone 87654321 /loc remote /role Software Intern`","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":"Successful output after adding the entries:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":"![After successfully adding more](./images/tutorial/addmore.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":"Let\u0027s say you want to find all internships that you want to apply for, that give you a software intern role.","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":"`find` is the command you need!","lastModifiedDate":"2024-03-27"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `find withall /status to_apply /role Software Intern`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"LWS49"},"content":"Successful output after finding all entries that satisfy the conditions:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":242,"author":{"gitId":"LWS49"},"content":"![After successfully finding](./images/tutorial/find.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"LWS49"},"content":"Your **Internship List Display** now only has all the internships satisfying both conditions.","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":246,"author":{"gitId":"LWS49"},"content":"#### Delete an internship entry: `delete`","lastModifiedDate":"2024-04-03"},{"lineNumber":247,"author":{"gitId":"LWS49"},"content":"You decide that to no longer pursue the internship at Facebook. Let\u0027s delete that entry.","lastModifiedDate":"2024-03-27"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":249,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":251,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":253,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `delete 2`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"LWS49"},"content":"Successful output after deleting the entry:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":256,"author":{"gitId":"LWS49"},"content":"![After successfully deleting](./images/tutorial/delete.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"LWS49"},"content":"The Facebook internship entry has been removed, and is no longer present in your database.","lastModifiedDate":"2024-03-27"},{"lineNumber":258,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":259,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":260,"author":{"gitId":"LWS49"},"content":"#### List all internships: `list`","lastModifiedDate":"2024-04-03"},{"lineNumber":261,"author":{"gitId":"LWS49"},"content":"You used find to filter the internships. How do you see all the internships again?","lastModifiedDate":"2024-03-27"},{"lineNumber":262,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":263,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":264,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":265,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":266,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":267,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `list`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":269,"author":{"gitId":"LWS49"},"content":"Successful output after listing:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":270,"author":{"gitId":"LWS49"},"content":"![After successfully listing](./images/tutorial/list.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"LWS49"},"content":"You now see all your internships. Your Tiktok internship, previously hidden, is now back in view.","lastModifiedDate":"2024-03-27"},{"lineNumber":272,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":273,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":274,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":275,"author":{"gitId":"LWS49"},"content":"#### Exit the program: `exit`","lastModifiedDate":"2024-04-03"},{"lineNumber":276,"author":{"gitId":"LWS49"},"content":"You decide that you are done for the day. How do you exit the application and save the file?","lastModifiedDate":"2024-03-27"},{"lineNumber":277,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":278,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":279,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":280,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":281,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":282,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `exit`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":284,"author":{"gitId":"LWS49"},"content":"Upon reopening the app:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":285,"author":{"gitId":"LWS49"},"content":"![After successfully reopening](./images/tutorial/reopen.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":286,"author":{"gitId":"LWS49"},"content":"You now see all your internships that you have when you exited. Your data was saved!","lastModifiedDate":"2024-03-27"},{"lineNumber":287,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":288,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":289,"author":{"gitId":"jieqiboh"},"content":"#### Wrapping up the tutorial","lastModifiedDate":"2024-03-29"},{"lineNumber":290,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":291,"author":{"gitId":"jieqiboh"},"content":"This wraps up our tutorial! Hope you now have a better understanding of how to use \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e to manage your internship ","lastModifiedDate":"2024-03-28"},{"lineNumber":292,"author":{"gitId":"LWS49"},"content":"applications now.","lastModifiedDate":"2024-03-27"},{"lineNumber":293,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":294,"author":{"gitId":"LWS49"},"content":"Only **simple and common use cases** are covered in this tutorial. Please refer to the [Commands](#commands) section so that","lastModifiedDate":"2024-03-27"},{"lineNumber":295,"author":{"gitId":"LWS49"},"content":"you fully understand each command and their usage.","lastModifiedDate":"2024-03-27"},{"lineNumber":296,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":297,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":298,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":299,"author":{"gitId":"LWS49"},"content":"____________________________________________________________________________________________________________________","lastModifiedDate":"2024-03-27"},{"lineNumber":300,"author":{"gitId":"LWS49"},"content":"### **Commands**","lastModifiedDate":"2024-04-02"},{"lineNumber":301,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":302,"author":{"gitId":"HM33-Stu"},"content":"Let\u0027s do a quick review of the commands!","lastModifiedDate":"2024-04-03"},{"lineNumber":303,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":304,"author":{"gitId":"LWS49"},"content":"#### Command Summary","lastModifiedDate":"2024-04-02"},{"lineNumber":305,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":306,"author":{"gitId":"HM33-Stu"},"content":"| Action | Description | Format |","lastModifiedDate":"2024-03-27"},{"lineNumber":307,"author":{"gitId":"LWS49"},"content":"|------------------------------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-04"},{"lineNumber":308,"author":{"gitId":"CaptainKeqing"},"content":"| [help](#viewing-help-help) | Get access to the help page | `help` |","lastModifiedDate":"2024-04-04"},{"lineNumber":309,"author":{"gitId":"CaptainKeqing"},"content":"| [add](#adding-an-internship-add) | Adds an internship. | `add /com COMPANY_NAME /desc DESCRIPTION /status STATUS /poc CONTACT_NAME /email CONTACT_EMAIL /phone CONTACT_NUMBER [/loc LOCATION_ENUM] [/role ROLE]` |","lastModifiedDate":"2024-04-03"},{"lineNumber":310,"author":{"gitId":"CaptainKeqing"},"content":"| [delete](#deleting-an-internship-delete) | Removes a internship. | `delete INDEX` |","lastModifiedDate":"2024-04-03"},{"lineNumber":311,"author":{"gitId":"CaptainKeqing"},"content":"| [list](#listing-all-internships-list) | Lists all internships. | `list` |","lastModifiedDate":"2024-04-03"},{"lineNumber":312,"author":{"gitId":"LWS49"},"content":"| [edit](#editing-an-internship-edit) | Modifies an existing internship. | `edit INDEX [/com COMPANY_NAME] [/poc CONTACT_NAME] [/email CONTACT_EMAIL] [/phone CONTACT_NUMBER] [/loc LOCATION_ENUM] [/status STATUS] [/desc DESCRIPTION] [/role ROLE] [/remark REMARK]` |","lastModifiedDate":"2024-04-04"},{"lineNumber":313,"author":{"gitId":"CaptainKeqing"},"content":"| [addremark](#adding-a-remark-addremark) | Adds a remark to an existing internship. | `addremark INDEX [/remark REMARK]` |","lastModifiedDate":"2024-04-03"},{"lineNumber":314,"author":{"gitId":"CaptainKeqing"},"content":"| [find](#finding-internships-by-keywords-find) | Finds an internship by keywords. | `find MODE [/com COMPANY_NAME_KEYWORDS] [/poc CONTACT_NAME_KEYWORDS] [/loc LOCATION_KEYWORDS] [/status STATUS_KEYWORDS] [/desc DESCRIPTION_KEYWORDS] [/role ROLE_KEYWORDS] [/remark REMARK_KEYWORDS]` |","lastModifiedDate":"2024-04-03"},{"lineNumber":315,"author":{"gitId":"CaptainKeqing"},"content":"| [sort](#sorting-internships-by-fields-sort) | Sorts the internships by fields. | `sort FIELD ORDER` |","lastModifiedDate":"2024-04-03"},{"lineNumber":316,"author":{"gitId":"LWS49"},"content":"| [addtask](#add-a-task-to-an-internship-addtask) | Adds a task to an internship. | `addtask INDEX /task TASK` |","lastModifiedDate":"2024-04-04"},{"lineNumber":317,"author":{"gitId":"CaptainKeqing"},"content":"| [setdeadline](#set-deadline-to-a-task-setdeadline) | Sets a deadline to a task. | `setdeadline INDEX_INTERNSHIP /selecttask INDEX_TASK /deadline DEADLINE` |","lastModifiedDate":"2024-04-03"},{"lineNumber":318,"author":{"gitId":"LWS49"},"content":"| [deletetask](#deleting-tasks-from-an-internship-deletetask) | Deletes a task from an internship. | `deletetask INDEX_INTERNSHIP /selecttask INDEX_TASK` |","lastModifiedDate":"2024-04-02"},{"lineNumber":319,"author":{"gitId":"CaptainKeqing"},"content":"| [clear](#clearing-all-internships-clear) | Removes all internships from the app. | `clear` |","lastModifiedDate":"2024-04-03"},{"lineNumber":320,"author":{"gitId":"HM33-Stu"},"content":"| [exit](#exiting-the-program-exit) | Exits and closes the application. | `exit` |","lastModifiedDate":"2024-03-27"},{"lineNumber":321,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":322,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"HM33-Stu"},"content":"**Notes about the command format**\u003cbr\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"LWS49"},"content":"* `INDEX` refers to the index of the internship in the list. It must be a positive integer (like 1, 2, 3 …) and one of ","lastModifiedDate":"2024-04-02"},{"lineNumber":327,"author":{"gitId":"LWS49"},"content":"the displayed internship indexes.","lastModifiedDate":"2024-04-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"CaptainKeqing"},"content":" e.g `/com COMPANY_NAME [/desc DESCRIPTION]` can be used as `/com Alibaba /desc Free shipping for employees` or as `/com Alibaba`.","lastModifiedDate":"2024-04-04"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"HM33-Stu"},"content":" e.g. if the command specifies `/com COMPANY_NAME /desc DESCRIPTION`, `/desc DESCRIPTION /com COMPANY_NAME` is also acceptable.","lastModifiedDate":"2024-03-20"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"HM33-Stu"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines","lastModifiedDate":"2024-03-20"},{"lineNumber":336,"author":{"gitId":"HM33-Stu"},"content":" as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2024-03-20"},{"lineNumber":337,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"jieqiboh"},"content":"#### Viewing help: `help`","lastModifiedDate":"2024-03-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"CaptainKeqing"},"content":"If you ever get lost or need a refresher on the commands, you can always use the `help` command to view the help message.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":342,"author":{"gitId":"CaptainKeqing"},"content":"This directs you to the User Guide (this page!), where you can find all the information you need to use CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":349,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":350,"author":{"gitId":"jieqiboh"},"content":"#### Adding an internship: `add`","lastModifiedDate":"2024-03-29"},{"lineNumber":351,"author":{"gitId":"CaptainKeqing"},"content":"Lets you add an internship entry to be tracked by CareerSync!","lastModifiedDate":"2024-04-04"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"HM33-Stu"},"content":"**Format:** `add /com COMPANY_NAME /desc DESCRIPTION /status STATUS /poc CONTACT_NAME /email CONTACT_EMAIL /phone CONTACT_NUMBER [/loc LOCATION_ENUM] [/role ROLE] ​` \u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"HM33-Stu"},"content":"* The fields `COMPANY_NAME`, `DESCRIPTION`, `CONTACT_NAME` and `ROLE` allow the use of any text, number and/or spaces","lastModifiedDate":"2024-03-27"},{"lineNumber":356,"author":{"gitId":"CaptainKeqing"},"content":"* The field `STATUS` accepts only the following inputs: `to_apply`, `ongoing`, `rejected`, `accepted` (case-insensitive)","lastModifiedDate":"2024-04-04"},{"lineNumber":357,"author":{"gitId":"CaptainKeqing"},"content":"* The field `CONTACT_EMAIL` accepts only the format of `\u003cemail\u003e@\u003cdomain\u003e.com`","lastModifiedDate":"2024-04-04"},{"lineNumber":358,"author":{"gitId":"LWS49"},"content":"* The field `CONTACT_NUMBER` must be unsigned, and it must be at least 7 digits long","lastModifiedDate":"2024-04-04"},{"lineNumber":359,"author":{"gitId":"CaptainKeqing"},"content":"* The field `LOCATION_ENUM` accepts only the following inputs: `remote`, `local`, `overseas` (case-insensitive)","lastModifiedDate":"2024-04-04"},{"lineNumber":360,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":361,"author":{"gitId":"HM33-Stu"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":362,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":363,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** If you haven\u0027t already, head over to the [Tutorial](#add-an-internship-entry-add) section to learn how to add an internship entry !","lastModifiedDate":"2024-04-04"},{"lineNumber":364,"author":{"gitId":"HM33-Stu"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":365,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"HM33-Stu"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":368,"author":{"gitId":"HM33-Stu"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":369,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":370,"author":{"gitId":"CaptainKeqing"},"content":"1. If you miss out any of the mandatory fields, the command will be rejected with an error message.","lastModifiedDate":"2024-04-04"},{"lineNumber":371,"author":{"gitId":"CaptainKeqing"},"content":"Make sure to refer to the error message displayed for the correct format to use!\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":372,"author":{"gitId":"CaptainKeqing"},"content":"2. If you input an invalid status, location or email format, the command will be rejected with an error message highlighting the valid values. \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":373,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":374,"author":{"gitId":"HM33-Stu"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":375,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":376,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":377,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":378,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":379,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":380,"author":{"gitId":"jieqiboh"},"content":"#### Deleting an internship: `delete`","lastModifiedDate":"2024-03-29"},{"lineNumber":381,"author":{"gitId":"CaptainKeqing"},"content":"Lets you delete an internship entry from CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":382,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":383,"author":{"gitId":"jieqiboh"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-03-19"},{"lineNumber":384,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":385,"author":{"gitId":"jieqiboh"},"content":"* Deletes the internship at the specified `INDEX`.","lastModifiedDate":"2024-03-19"},{"lineNumber":386,"author":{"gitId":"jieqiboh"},"content":"* The index refers to the index number shown in the displayed list of internship entries at point of deletion.","lastModifiedDate":"2024-03-19"},{"lineNumber":387,"author":{"gitId":"jieqiboh"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-19"},{"lineNumber":388,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":389,"author":{"gitId":"HM33-Stu"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":390,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** If you haven\u0027t already, head over to the [Tutorial](#delete-an-internship-entry-delete) section to learn how to delete an internship entry !","lastModifiedDate":"2024-04-04"},{"lineNumber":391,"author":{"gitId":"HM33-Stu"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":393,"author":{"gitId":"HM33-Stu"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":394,"author":{"gitId":"HM33-Stu"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":395,"author":{"gitId":"CaptainKeqing"},"content":"1. If you input an index that is not one of the displayed internship indexes, the command will not be executed and an error message will be displayed.","lastModifiedDate":"2024-04-04"},{"lineNumber":396,"author":{"gitId":"HM33-Stu"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":398,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":400,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":402,"author":{"gitId":"jieqiboh"},"content":"#### Listing all internships: `list`","lastModifiedDate":"2024-03-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"CaptainKeqing"},"content":"Shows you a list of all your internships tracked by CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"CaptainKeqing"},"content":"**Format:** `list`","lastModifiedDate":"2024-03-26"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":408,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":410,"author":{"gitId":"CaptainKeqing"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":411,"author":{"gitId":"CaptainKeqing"},"content":"When you first start the application, you will see a list of all the internships you have added. \u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":412,"author":{"gitId":"CaptainKeqing"},"content":"The [find](#finding-internships-by-keywords-find) command might be used to filter the visible list of internships. \u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":413,"author":{"gitId":"CaptainKeqing"},"content":"If you want to see all internships again, simply type `list` and press enter.","lastModifiedDate":"2024-03-26"},{"lineNumber":414,"author":{"gitId":"CaptainKeqing"},"content":"\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":416,"author":{"gitId":"CaptainKeqing"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":417,"author":{"gitId":"CaptainKeqing"},"content":" `list`\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":418,"author":{"gitId":"LWS49"},"content":" ![Before listing all internships](./images/list/list-before.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":419,"author":{"gitId":"CaptainKeqing"},"content":"In this example, the current view shows only internships with location \u0027REMOTE\u0027.","lastModifiedDate":"2024-03-26"},{"lineNumber":420,"author":{"gitId":"CaptainKeqing"},"content":"\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":422,"author":{"gitId":"CaptainKeqing"},"content":"2. Successful Output after executing list: \u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":423,"author":{"gitId":"LWS49"},"content":" ![After successfully listing all internships](./images/list/list-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":424,"author":{"gitId":"CaptainKeqing"},"content":"Any present filter will be removed, and all internships will be displayed in the list.","lastModifiedDate":"2024-03-26"},{"lineNumber":425,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":428,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** If you can\u0027t seem to find an internship you added, try using `list` to see all your internships.","lastModifiedDate":"2024-04-04"},{"lineNumber":429,"author":{"gitId":"CaptainKeqing"},"content":"You may have had a filter applied that is hiding the internship you are looking for.","lastModifiedDate":"2024-04-04"},{"lineNumber":430,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":432,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":434,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":435,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":436,"author":{"gitId":"jieqiboh"},"content":"#### Viewing an internship entry\u0027s details","lastModifiedDate":"2024-03-29"},{"lineNumber":437,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":438,"author":{"gitId":"CaptainKeqing"},"content":"When you click on an internship entry in the internship list, a separate window will be open showing","lastModifiedDate":"2024-04-04"},{"lineNumber":439,"author":{"gitId":"CaptainKeqing"},"content":"the detailed view of the internship entry.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":440,"author":{"gitId":"CaptainKeqing"},"content":"This view will show all the fields of the internship entry in a bigger font size for easier reading.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":441,"author":{"gitId":"CaptainKeqing"},"content":"![Detailed view window](./images/detailedview/detailedViewWindow.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":442,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":443,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":444,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** This feature is not recommended for efficient use of the application, as it is not a command that can be inputted into the CLI.","lastModifiedDate":"2024-04-04"},{"lineNumber":445,"author":{"gitId":"CaptainKeqing"},"content":"However, it serves as an aid to view the details of an internship entry in a more readable format.","lastModifiedDate":"2024-04-04"},{"lineNumber":446,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":447,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":448,"author":{"gitId":"theman-oj10"},"content":"[CLI](#glossary) input will be implemented in a future release.","lastModifiedDate":"2024-03-27"},{"lineNumber":449,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":450,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":451,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":452,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":453,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":454,"author":{"gitId":"jieqiboh"},"content":"#### Editing an internship: `edit`","lastModifiedDate":"2024-03-29"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"CaptainKeqing"},"content":"Lets you edit an existing internship entry in CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"LWS49"},"content":"**Format** : `edit INDEX [/com COMPANY_NAME] [/poc CONTACT_NAME] [/email CONTACT_EMAIL] [/phone CONTACT_NUMBER] [/loc LOCATION_ENUM] [/status STATUS] [/desc DESCRIPTION] [/role ROLE] [/remark remark] …​`","lastModifiedDate":"2024-04-04"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"jieqiboh"},"content":"* Edits the internship at the specified `INDEX`. The index refers to the index number shown in the displayed internship list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-19"},{"lineNumber":461,"author":{"gitId":"CaptainKeqing"},"content":"* At least one of the optional fields must be provided. ","lastModifiedDate":"2024-04-04"},{"lineNumber":462,"author":{"gitId":"CaptainKeqing"},"content":"* Multiple fields can be edited at once.","lastModifiedDate":"2024-04-04"},{"lineNumber":463,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"CaptainKeqing"},"content":"* Only valid field values will be accepted. For example, you cannot set the status to \u0027ghosted\u0027 as it is not a valid status.","lastModifiedDate":"2024-04-04"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":466,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":468,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":470,"author":{"gitId":"LWS49"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":471,"author":{"gitId":"LWS49"},"content":" `edit 1 /email google@gmail.com`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":472,"author":{"gitId":"LWS49"},"content":" ![Before editing](./images/edit/edit-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":474,"author":{"gitId":"LWS49"},"content":"2. Successful Output after editing an entry:\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":475,"author":{"gitId":"LWS49"},"content":" ![After successfully editing](./images/edit/edit-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":476,"author":{"gitId":"LWS49"},"content":" The email field of the first internship is successfully updated to `google@gmail.com`.","lastModifiedDate":"2024-04-04"},{"lineNumber":477,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":479,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":480,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":481,"author":{"gitId":"CaptainKeqing"},"content":"1. Make sure not to miss out the mandatory `INDEX` field. If you do, CareerSync won\u0027t know which internship to edit!","lastModifiedDate":"2024-04-04"},{"lineNumber":482,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":484,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":486,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":488,"author":{"gitId":"jieqiboh"},"content":"#### Adding a remark: `addremark`","lastModifiedDate":"2024-03-29"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":490,"author":{"gitId":"CaptainKeqing"},"content":"You can use this to add a remark or modify an existing one, of the internship at the specified `INDEX`.","lastModifiedDate":"2024-04-04"},{"lineNumber":491,"author":{"gitId":"CaptainKeqing"},"content":"Use this to keep track of your personal notes about the internship!","lastModifiedDate":"2024-04-04"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":493,"author":{"gitId":"jieqiboh"},"content":"**Format:** `addremark INDEX /remark REMARK`","lastModifiedDate":"2024-04-01"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":495,"author":{"gitId":"jieqiboh"},"content":"* `INDEX` refers to the index in the internship list and **must be a positive integer** 1, 2, 3, …","lastModifiedDate":"2024-04-03"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":499,"author":{"gitId":"jieqiboh"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":501,"author":{"gitId":"jieqiboh"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":502,"author":{"gitId":"jieqiboh"},"content":" `addremark 1 /remark This internship has a behavioural interview!`\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":503,"author":{"gitId":"jieqiboh"},"content":" ![Before adding a remark](./images/add-remark/addremark-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":505,"author":{"gitId":"jieqiboh"},"content":"2. Successful Output after adding a remark:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":506,"author":{"gitId":"LWS49"},"content":" ![After successfully adding a remark](./images/add-remark/addremark-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":507,"author":{"gitId":"CaptainKeqing"},"content":"This sets the remark of the internship at index 1 to be `This internship has a behavioural interview!`.","lastModifiedDate":"2024-04-04"},{"lineNumber":508,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":510,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":511,"author":{"gitId":"jieqiboh"},"content":"ℹ️ **Tip:** To delete an existing remark, simply input an empty string as the remark like so: \u003cbr\u003e`addremark INDEX /remark`.","lastModifiedDate":"2024-04-03"},{"lineNumber":512,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":514,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":515,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":516,"author":{"gitId":"CaptainKeqing"},"content":"1. Don\u0027t forget to have the `/remark` prefix before the remark you want to add.","lastModifiedDate":"2024-04-04"},{"lineNumber":517,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":519,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":521,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":523,"author":{"gitId":"jieqiboh"},"content":"#### Finding internships by keywords: `find`","lastModifiedDate":"2024-03-29"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"CaptainKeqing"},"content":"You can use this to filter the visible internships in CareerSync by keywords.","lastModifiedDate":"2024-04-03"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"CaptainKeqing"},"content":"**Format:** `find MODE [/com COMPANY_NAME_KEYWORDS] [/poc CONTACT_NAME_KEYWORDS] [/loc LOCATION_KEYWORDS] [/status STATUS_KEYWORDS] [/desc DESCRIPTION_KEYWORDS] [/role ROLE_KEYWORDS] [/remark REMARK_KEYWORDS]`","lastModifiedDate":"2024-04-03"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"CaptainKeqing"},"content":"* MODE is either \u0027withall\u0027 or \u0027withany\u0027.","lastModifiedDate":"2024-03-21"},{"lineNumber":530,"author":{"gitId":"CaptainKeqing"},"content":" * \u0027withall\u0027 returns internships that match each prefix-keyword predicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":531,"author":{"gitId":"CaptainKeqing"},"content":" * Within each prefix field that you specified, the internship just has to contain any of the keywords.","lastModifiedDate":"2024-04-03"},{"lineNumber":532,"author":{"gitId":"CaptainKeqing"},"content":" * \u0027withany\u0027 returns internships that match at least one prefix-keyword predicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":533,"author":{"gitId":"CaptainKeqing"},"content":"* The search is case-insensitive. e.g `google` will match `Google`","lastModifiedDate":"2024-03-21"},{"lineNumber":534,"author":{"gitId":"CaptainKeqing"},"content":"* The order of the keywords does not matter. e.g. `Microsoft Google` will match `Google Microsoft`","lastModifiedDate":"2024-03-21"},{"lineNumber":535,"author":{"gitId":"CaptainKeqing"},"content":"* Only full words will be matched e.g. `Goo` will not match `Google`","lastModifiedDate":"2024-03-21"},{"lineNumber":536,"author":{"gitId":"CaptainKeqing"},"content":"* Internship matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-21"},{"lineNumber":537,"author":{"gitId":"CaptainKeqing"},"content":" e.g. `Hewlett Song` will return `Hewlett Packard`, `Song Fa`","lastModifiedDate":"2024-03-21"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":541,"author":{"gitId":"CaptainKeqing"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":543,"author":{"gitId":"CaptainKeqing"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":544,"author":{"gitId":"CaptainKeqing"},"content":" `find withall /status to_apply /loc remote`\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":545,"author":{"gitId":"LWS49"},"content":" ![Before filtering by all toapply and remote](./images/find/find-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":546,"author":{"gitId":"CaptainKeqing"},"content":"This will filter the list of internships to show you only those with both status `TO_APPLY` and location `REMOTE`.\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":547,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":548,"author":{"gitId":"CaptainKeqing"},"content":"2. Successful Output after filtering:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":549,"author":{"gitId":"CaptainKeqing"},"content":" ![After successfully filtering by all toapply and remote](./images/find/find-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":550,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":551,"author":{"gitId":"CaptainKeqing"},"content":"3. Other examples:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":552,"author":{"gitId":"CaptainKeqing"},"content":" i.`find withany /com Google /loc local` shows you internships with either company name (case-insensitive) `Google` or location `LOCAL`\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":553,"author":{"gitId":"CaptainKeqing"},"content":" ii.`find withall /poc John /desc paperwork` shows you internships with both contact name (case-insensitive) `John` and description containing `paperwork`","lastModifiedDate":"2024-04-03"},{"lineNumber":554,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":555,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":556,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":557,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** If you want to view all internships again, simply use the [list](#listing-all-internships-list) command.","lastModifiedDate":"2024-04-03"},{"lineNumber":558,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":559,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":560,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":561,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":562,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":563,"author":{"gitId":"CaptainKeqing"},"content":"1. If you do not specify any field prefixes, or specified an invalid field prefix, the command will be rejected with error message:\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":564,"author":{"gitId":"CaptainKeqing"},"content":" `At least one supported field prefix and keyword must be specified to be searched.","lastModifiedDate":"2024-04-03"},{"lineNumber":565,"author":{"gitId":"CaptainKeqing"},"content":" Supported prefixes are /com, /poc, /loc, /status, /desc, /role, /remark`\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":566,"author":{"gitId":"CaptainKeqing"},"content":"2. Make sure you specify the MODE of search, which must be either `withall` or `withany`. If not, the command will be rejected with error message:\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":567,"author":{"gitId":"CaptainKeqing"},"content":"`Invalid mode specified. Please specify either \u0027withall\u0027 or \u0027withany\u0027.`\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":568,"author":{"gitId":"CaptainKeqing"},"content":"3. Just to note, the unsupported fields in this version are `/phone`, `/email`, `/task`, `/selecttask` and `/deadline`.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":569,"author":{"gitId":"CaptainKeqing"},"content":"Searching for these fields will result in an error message, highlighting the unsupported fields explicitly.","lastModifiedDate":"2024-04-05"},{"lineNumber":570,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":571,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":572,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":573,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":574,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":575,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":576,"author":{"gitId":"jieqiboh"},"content":"#### Sorting internships by fields: `sort`","lastModifiedDate":"2024-03-29"},{"lineNumber":577,"author":{"gitId":"LWS49"},"content":"This command allows you to sort the internships in CareerSync by the specified field in ascending or descending order.","lastModifiedDate":"2024-04-04"},{"lineNumber":578,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":579,"author":{"gitId":"theman-oj10"},"content":"**Format:** `sort FIELD ORDER`","lastModifiedDate":"2024-03-27"},{"lineNumber":580,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":581,"author":{"gitId":"theman-oj10"},"content":"* FIELD is the field to sort by. It is case-sensitive. The list of valid fields can be found [here](#field-summary).","lastModifiedDate":"2024-03-27"},{"lineNumber":582,"author":{"gitId":"CaptainKeqing"},"content":" * `/status` has an implicit ordering, in ascending order: `TO_APPLY` -\u003e `ONGOING` -\u003e `PENDING` -\u003e `ACCEPTED` -\u003e `REJECTED`.","lastModifiedDate":"2024-04-04"},{"lineNumber":583,"author":{"gitId":"CaptainKeqing"},"content":" * The rest of the fields are sorted in alphanumeric order. (A before Z, 0 before 9)","lastModifiedDate":"2024-04-04"},{"lineNumber":584,"author":{"gitId":"theman-oj10"},"content":"* ORDER is either `asc` or `desc`.","lastModifiedDate":"2024-04-02"},{"lineNumber":585,"author":{"gitId":"theman-oj10"},"content":" * `asc` sorts the internships in ascending order.","lastModifiedDate":"2024-03-27"},{"lineNumber":586,"author":{"gitId":"theman-oj10"},"content":" * `desc` sorts the internships in descending order.","lastModifiedDate":"2024-03-27"},{"lineNumber":587,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":588,"author":{"gitId":"theman-oj10"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":589,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":590,"author":{"gitId":"theman-oj10"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":591,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":592,"author":{"gitId":"theman-oj10"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":593,"author":{"gitId":"theman-oj10"},"content":" `sort /com asc`\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":594,"author":{"gitId":"theman-oj10"},"content":" ![Before filtering by all to_apply and remote](./images/sort/sort-before.png)\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":595,"author":{"gitId":"LWS49"},"content":"This will sort the list of internships by company name in ascending order.\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":596,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":597,"author":{"gitId":"theman-oj10"},"content":"2. Successful Output after sorting:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":598,"author":{"gitId":"theman-oj10"},"content":" ![After successfully filtering by all to_apply and remote](./images/sort/sort-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":599,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":600,"author":{"gitId":"theman-oj10"},"content":"3. Other examples:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":601,"author":{"gitId":"CaptainKeqing"},"content":" i.`sort /status asc` sorts your internships in the following order: `TO_APPLY` -\u003e `ONGOING` -\u003e `PENDING` -\u003e `ACCEPTED` -\u003e `REJECTED`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":602,"author":{"gitId":"CaptainKeqing"},"content":" ii.`sort /phone asc` sorts your internships in ascending order of phone numbers.","lastModifiedDate":"2024-04-04"},{"lineNumber":603,"author":{"gitId":"theman-oj10"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":604,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":605,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":606,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":607,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":608,"author":{"gitId":"CaptainKeqing"},"content":"1. Don\u0027t forget to specify the ORDER of sorting, which must be either `asc` or `desc`.","lastModifiedDate":"2024-04-04"},{"lineNumber":609,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":610,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":611,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":612,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":613,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":614,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":615,"author":{"gitId":"LWS49"},"content":"#### Add a Task to an Internship: `addtask`","lastModifiedDate":"2024-04-02"},{"lineNumber":616,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":617,"author":{"gitId":"LWS49"},"content":"Using this function, you can add a task to an internship so that you won\u0027t forget to complete it!","lastModifiedDate":"2024-04-02"},{"lineNumber":618,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":619,"author":{"gitId":"LWS49"},"content":"**Format:** `addtask INDEX /task TASK`","lastModifiedDate":"2024-04-04"},{"lineNumber":620,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":621,"author":{"gitId":"CaptainKeqing"},"content":"- `TASK` is the task you want to add to the internship.","lastModifiedDate":"2024-04-02"},{"lineNumber":622,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":623,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":624,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":625,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":626,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":627,"author":{"gitId":"LWS49"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":628,"author":{"gitId":"LWS49"},"content":" `addtask 1 /task Edit Resume`\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":629,"author":{"gitId":"LWS49"},"content":" ![Before Adding Task](./images/addtask/addtask-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":630,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":631,"author":{"gitId":"LWS49"},"content":"2. Successful Output after deleting task:\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":632,"author":{"gitId":"LWS49"},"content":" ![After Successfully Adding Task](./images/addtask/addtask-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":633,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":634,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":635,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":636,"author":{"gitId":"LWS49"},"content":"ℹ️ **Tip:** You cannot add a task using the `add` command. You must use the `addtask` command to add a task to an internship.","lastModifiedDate":"2024-04-02"},{"lineNumber":637,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":638,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":639,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":640,"author":{"gitId":"LWS49"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":641,"author":{"gitId":"LWS49"},"content":"1. The index must be a positive integer (like 1, 2, 3 …) and one of the displayed internship indexes. If not, the command will be rejected.","lastModifiedDate":"2024-04-02"},{"lineNumber":642,"author":{"gitId":"LWS49"},"content":"Refer to the error message displayed for the correct format to use!","lastModifiedDate":"2024-04-02"},{"lineNumber":643,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":644,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":645,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":646,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":647,"author":{"gitId":"LWS49"},"content":"#### Set Deadline to a Task: `setdeadline`","lastModifiedDate":"2024-04-02"},{"lineNumber":648,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":649,"author":{"gitId":"LWS49"},"content":"Using this function, you can set the deadline to a task under an internship so that you won\u0027t miss the deadline!","lastModifiedDate":"2024-04-02"},{"lineNumber":650,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":651,"author":{"gitId":"CaptainKeqing"},"content":"**Format:** `setdeadline INDEX_INTERNSHIP /selecttask INDEX_TASK /deadline DEADLINE`","lastModifiedDate":"2024-04-02"},{"lineNumber":652,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":653,"author":{"gitId":"LWS49"},"content":"- `INDEX_INTERNSHIP` is the index of the internship with the task you want to set the deadline for.","lastModifiedDate":"2024-04-02"},{"lineNumber":654,"author":{"gitId":"LWS49"},"content":"- `INDEX_TASK` is the index of the task that you want to set the deadline for.","lastModifiedDate":"2024-04-02"},{"lineNumber":655,"author":{"gitId":"CaptainKeqing"},"content":"- `DEADLINE` is the deadline you want to set for the task. It must be in the format `DD/MM/YYYY`, and a valid date.","lastModifiedDate":"2024-04-02"},{"lineNumber":656,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":657,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":658,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":659,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":660,"author":{"gitId":"CaptainKeqing"},"content":"Before you try this command, you need an internship that has at least 1 task. You can add it by using the [addtask](#add-a-task-to-an-internship-addtask) command. \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":661,"author":{"gitId":"LWS49"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":662,"author":{"gitId":"LWS49"},"content":" `setdeadline 1 /selecttask 1 /deadline 24/04/2024`\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":663,"author":{"gitId":"LWS49"},"content":" ![Before Setting Deadline](./images/setdeadline/setdeadline-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":664,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":665,"author":{"gitId":"LWS49"},"content":"2. Successful Output after adding deadline:\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":666,"author":{"gitId":"LWS49"},"content":" ![After Setting Deadline](./images/setdeadline/setdeadline-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":667,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":668,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":669,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":670,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** Once you set a deadline to a task, you can\u0027t remove it! You can only change the deadline using this command.","lastModifiedDate":"2024-04-02"},{"lineNumber":671,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":672,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":673,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":674,"author":{"gitId":"LWS49"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":675,"author":{"gitId":"LWS49"},"content":"1. Don\u0027t forget that you need to include both the internship index and the task index!","lastModifiedDate":"2024-04-02"},{"lineNumber":676,"author":{"gitId":"CaptainKeqing"},"content":"2. If your day or month is single-digit, remember to include a leading zero. For example, `01/04/2024` instead of `1/4/2024`.","lastModifiedDate":"2024-04-04"},{"lineNumber":677,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":678,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":679,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":680,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":681,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":682,"author":{"gitId":"jieqiboh"},"content":"#### Deleting Tasks from an Internship: `deletetask`","lastModifiedDate":"2024-04-01"},{"lineNumber":683,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":684,"author":{"gitId":"jieqiboh"},"content":"Lets you delete a task from an existing internship after it is complete!","lastModifiedDate":"2024-04-01"},{"lineNumber":685,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":686,"author":{"gitId":"jieqiboh"},"content":"**Format:** `deletetask INDEX /selecttask TASK_INDEX`","lastModifiedDate":"2024-04-01"},{"lineNumber":687,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":688,"author":{"gitId":"jieqiboh"},"content":"- `INDEX` and `TASK_INDEX` denote the internship index and task index respectively.","lastModifiedDate":"2024-04-01"},{"lineNumber":689,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":690,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":691,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":692,"author":{"gitId":"jieqiboh"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":693,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":694,"author":{"gitId":"jieqiboh"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":695,"author":{"gitId":"jieqiboh"},"content":" `deletetask 1 /selecttask 2`\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":696,"author":{"gitId":"LWS49"},"content":" ![Before Deleting Task](./images/deletetask/deletetask-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":697,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":698,"author":{"gitId":"jieqiboh"},"content":"2. Successful Output after deleting task:\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":699,"author":{"gitId":"jieqiboh"},"content":" ![After successfully deleting the task](./images/deletetask/deletetask-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":700,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":701,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":702,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":703,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":704,"author":{"gitId":"CaptainKeqing"},"content":"1. Don\u0027t forget that you need to include both the internship index and the task index!","lastModifiedDate":"2024-04-04"},{"lineNumber":705,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":706,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":707,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":708,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":709,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":710,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":711,"author":{"gitId":"jieqiboh"},"content":"#### Clearing all internships: `clear`","lastModifiedDate":"2024-03-29"},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":713,"author":{"gitId":"CaptainKeqing"},"content":"This clears all your internship entries from CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":714,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":715,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":716,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":717,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ Caution:","lastModifiedDate":"2024-04-04"},{"lineNumber":718,"author":{"gitId":"CaptainKeqing"},"content":"This operation is irreversible. Once you clear all entries, you cannot undo it.","lastModifiedDate":"2024-04-04"},{"lineNumber":719,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":721,"author":{"gitId":"CaptainKeqing"},"content":"**Format:** `clear`","lastModifiedDate":"2024-03-26"},{"lineNumber":722,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":723,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":724,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":725,"author":{"gitId":"CaptainKeqing"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":726,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":727,"author":{"gitId":"CaptainKeqing"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":728,"author":{"gitId":"CaptainKeqing"},"content":" `clear`\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":729,"author":{"gitId":"CaptainKeqing"},"content":" ![Before clearing](./images/clear/clear-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":730,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":731,"author":{"gitId":"CaptainKeqing"},"content":"2. Successful Output after clearing entries:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":732,"author":{"gitId":"LWS49"},"content":" ![After successfully clearing](./images/clear/clear-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":733,"author":{"gitId":"CaptainKeqing"},"content":"There are no more internships in the list.","lastModifiedDate":"2024-03-26"},{"lineNumber":734,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":735,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":736,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":737,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":738,"author":{"gitId":"jieqiboh"},"content":"#### Exiting the program: `exit`","lastModifiedDate":"2024-03-29"},{"lineNumber":739,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":740,"author":{"gitId":"CaptainKeqing"},"content":"When you\u0027re done using CareerSync, you can exit the application using this command.","lastModifiedDate":"2024-04-04"},{"lineNumber":741,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":742,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":743,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":744,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":745,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":746,"author":{"gitId":"LWS49"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":747,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":748,"author":{"gitId":"jieqiboh"},"content":"#### Saving and Editing Your Internship Data","lastModifiedDate":"2024-03-29"},{"lineNumber":749,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":750,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":751,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":752,"author":{"gitId":"jieqiboh"},"content":"⚠️ Caution:","lastModifiedDate":"2024-03-19"},{"lineNumber":753,"author":{"gitId":"jieqiboh"},"content":"Users are **NOT** recommended to modify their data file directly, since wrong formatting will cause the app to malfunction.","lastModifiedDate":"2024-03-19"},{"lineNumber":754,"author":{"gitId":"jieqiboh"},"content":"Only do so if you are an experienced user! \u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":755,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":756,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":757,"author":{"gitId":"HM33-Stu"},"content":"\u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e data is saved in the hard disk, as a [JSON](#glossary) file at the path ","lastModifiedDate":"2024-04-03"},{"lineNumber":758,"author":{"gitId":"CaptainKeqing"},"content":"`[JAR file location]/data/internshipdata.json`. After every command that changes the data, \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e performs a save automatically. There is no need to save manually.","lastModifiedDate":"2024-04-04"},{"lineNumber":759,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":760,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":761,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":762,"author":{"gitId":"LWS49"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":763,"author":{"gitId":"LWS49"},"content":"## **Miscellaneous**","lastModifiedDate":"2024-04-02"},{"lineNumber":764,"author":{"gitId":"jieqiboh"},"content":"### FAQ","lastModifiedDate":"2024-03-29"},{"lineNumber":765,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":766,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":767,"author":{"gitId":"theman-oj10"},"content":"**A**: Do the following steps: \u003cbr\u003e 1. Navigate to the folder where CareerSync.jar is stored. \u003cbr\u003e 2. Copy your data file from data/internshipdata.json. \u003cbr\u003e 3. Install the app in the other computer and overwrite the empty data file (data/internshipdata.json) it creates with the file that contains the data (JSON file) of your previous CareerSync home folder.","lastModifiedDate":"2024-03-27"},{"lineNumber":768,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":769,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":770,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":771,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":772,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":773,"author":{"gitId":"jieqiboh"},"content":"### Known issues","lastModifiedDate":"2024-03-29"},{"lineNumber":774,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":775,"author":{"gitId":"CaptainKeqing"},"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.\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":776,"author":{"gitId":"CaptainKeqing"},"content":"**The solution** is to delete the `preferences.json` file from the folder where you installed the application. Then, run the application again.","lastModifiedDate":"2024-03-26"},{"lineNumber":777,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":778,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":779,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":780,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":781,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":782,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":783,"author":{"gitId":"jieqiboh"},"content":"### Field Summary","lastModifiedDate":"2024-03-29"},{"lineNumber":784,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":785,"author":{"gitId":"theman-oj10"},"content":"| Field Name | Description | Valid Inputs |","lastModifiedDate":"2024-03-27"},{"lineNumber":786,"author":{"gitId":"theman-oj10"},"content":"|------------|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-28"},{"lineNumber":787,"author":{"gitId":"theman-oj10"},"content":"| `/com` | Company Name | Any text, numbers, or spaces |","lastModifiedDate":"2024-03-28"},{"lineNumber":788,"author":{"gitId":"theman-oj10"},"content":"| `/desc` | Description of Internship | Any text, numbers, or spaces |","lastModifiedDate":"2024-03-28"},{"lineNumber":789,"author":{"gitId":"theman-oj10"},"content":"| `/status` | Status of Application | `to_apply`, `ongoing`, `rejected`, `accepted` |","lastModifiedDate":"2024-03-28"},{"lineNumber":790,"author":{"gitId":"theman-oj10"},"content":"| `/poc` | Name of Person of Contact | Any text, numbers, or spaces |","lastModifiedDate":"2024-03-28"},{"lineNumber":791,"author":{"gitId":"theman-oj10"},"content":"| `/email` | Email of Person of Contact | Valid format: `local-part@domain`\u003cbr\u003e- The local-part should only contain alphanumeric characters and these special characters: `!#$%\u0026\u0027*+-/\u003d?^_{ \\|}~`. It may start or end with any special characters.\u003cbr\u003e- The domain name is made up of domain labels separated by periods. The domain name must:\u003cbr\u003e * End with a domain label at least 2 characters long \u003cbr\u003e * Have each domain label start and end with alphanumeric characters\u003cbr\u003e * Have each domain label consist of alphanumeric characters, separated only by hyphens, if any. |","lastModifiedDate":"2024-03-28"},{"lineNumber":792,"author":{"gitId":"LWS49"},"content":"| `/phone` | Contact Number of Person of Contact | At least 7 numbers |","lastModifiedDate":"2024-04-04"},{"lineNumber":793,"author":{"gitId":"theman-oj10"},"content":"| `/loc` | Location of Internship | `remote`, `local`, `overseas` |","lastModifiedDate":"2024-03-28"},{"lineNumber":794,"author":{"gitId":"theman-oj10"},"content":"| `/role` | Role for the Internship | Any text, numbers, or spaces |","lastModifiedDate":"2024-03-28"},{"lineNumber":795,"author":{"gitId":"LWS49"},"content":"| `/remark` | Remark for the Internship | Any text, numbers, or spaces |","lastModifiedDate":"2024-04-02"},{"lineNumber":796,"author":{"gitId":"LWS49"},"content":"| `/task` | Task for the Internship | Any text, numbers, or spaces |","lastModifiedDate":"2024-04-02"},{"lineNumber":797,"author":{"gitId":"CaptainKeqing"},"content":"| `/deadline`| Deadline for the Task | Valid format: `DD/MM/YYYY`\u003cbr\u003e- The date must be a valid date. |","lastModifiedDate":"2024-04-02"},{"lineNumber":798,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":799,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"jieqiboh":122,"HM33-Stu":28,"LWS49":330,"theman-oj10":36,"-":122,"CaptainKeqing":161}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","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":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","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":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"jieqiboh"},"content":" content: \"CareerSync\";","lastModifiedDate":"2024-02-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"jieqiboh":1,"-":294}},{"path":"docs/_sass/minima/_layout.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":" * Site header","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":".site-header {","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" border-top: 5px solid $brand-color-dark;","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" border-bottom: 1px solid $brand-color-light;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" min-height: $spacing-unit * 1.865;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" line-height: $base-line-height * $base-font-size * 2.25;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" // Positioning context for the mobile navigation icon","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" position: relative;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":".site-title {","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.625);","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" font-weight: 300;","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" letter-spacing: -1px;","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" float: left;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" @include media-query($on-palm) {","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" padding-right: 45px;","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" \u0026,","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" \u0026:visited {","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" color: $brand-color-dark;","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":".site-nav {","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" position: absolute;","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" top: 9px;","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" right: $spacing-unit / 2;","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" background-color: $background-color;","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" border-radius: 5px;","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" text-align: right;","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" .nav-trigger {","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" display: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" .menu-icon {","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" float: right;","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" width: 36px;","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" height: 26px;","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" line-height: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" padding-top: 10px;","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" text-align: center;","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" \u003e svg path {","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" fill: $brand-color-dark;","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" label[for\u003d\"nav-trigger\"] {","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" float: right;","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" width: 36px;","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" height: 36px;","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" z-index: 2;","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" cursor: pointer;","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" input ~ .trigger {","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" clear: both;","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" display: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" input:checked ~ .trigger {","lastModifiedDate":"2024-03-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" padding-bottom: 5px;","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" .page-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" color: $text-color;","lastModifiedDate":"2024-03-02"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" line-height: $base-line-height;","lastModifiedDate":"2024-03-02"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" padding: 5px 10px;","lastModifiedDate":"2024-03-02"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" // Gaps between nav items, but not on the last one","lastModifiedDate":"2024-03-02"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" \u0026:not(:last-child) {","lastModifiedDate":"2024-03-02"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" margin-right: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" margin-left: 20px;","lastModifiedDate":"2024-03-02"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" @media screen and (min-width: $on-medium) {","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" position: static;","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" float: right;","lastModifiedDate":"2024-03-02"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" border: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" background-color: inherit;","lastModifiedDate":"2024-03-02"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" label[for\u003d\"nav-trigger\"] {","lastModifiedDate":"2024-03-02"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" display: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" .menu-icon {","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" display: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" input ~ .trigger {","lastModifiedDate":"2024-03-02"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" .page-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" display: inline;","lastModifiedDate":"2024-03-02"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" padding: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" \u0026:not(:last-child) {","lastModifiedDate":"2024-03-02"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" margin-right: 20px;","lastModifiedDate":"2024-03-02"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" margin-left: auto;","lastModifiedDate":"2024-03-02"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" * Page content","lastModifiedDate":"2024-03-02"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":".page-content {","lastModifiedDate":"2024-03-02"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" padding: $spacing-unit 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" flex: 1 0 auto;","lastModifiedDate":"2024-03-02"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":".page-heading {","lastModifiedDate":"2024-03-02"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(2);","lastModifiedDate":"2024-03-02"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":".post-list-heading {","lastModifiedDate":"2024-03-02"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.75);","lastModifiedDate":"2024-03-02"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":".post-list {","lastModifiedDate":"2024-03-02"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" margin-left: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" list-style: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" \u003e li {","lastModifiedDate":"2024-03-02"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2024-03-02"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":".post-meta {","lastModifiedDate":"2024-03-02"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" font-size: $small-font-size;","lastModifiedDate":"2024-03-02"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" color: $brand-color;","lastModifiedDate":"2024-03-02"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":".post-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.5);","lastModifiedDate":"2024-03-02"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" * Posts","lastModifiedDate":"2024-03-02"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":".post-header {","lastModifiedDate":"2024-03-02"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2024-03-02"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":".post-title,","lastModifiedDate":"2024-03-02"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":".post-content h1 {","lastModifiedDate":"2024-03-02"},{"lineNumber":167,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(2.625);","lastModifiedDate":"2024-03-02"},{"lineNumber":168,"author":{"gitId":"jieqiboh"},"content":" letter-spacing: -1px;","lastModifiedDate":"2024-03-02"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" line-height: 1.15;","lastModifiedDate":"2024-03-02"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2024-03-02"},{"lineNumber":172,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(2.625);","lastModifiedDate":"2024-03-02"},{"lineNumber":173,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":174,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":176,"author":{"gitId":"jieqiboh"},"content":".post-content {","lastModifiedDate":"2024-03-02"},{"lineNumber":177,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2024-03-02"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":179,"author":{"gitId":"jieqiboh"},"content":" h1, h2, h3 { margin-top: $spacing-unit * 2 }","lastModifiedDate":"2024-03-02"},{"lineNumber":180,"author":{"gitId":"jieqiboh"},"content":" h4, h5, h6 { margin-top: $spacing-unit }","lastModifiedDate":"2024-03-02"},{"lineNumber":181,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":182,"author":{"gitId":"jieqiboh"},"content":" h2 {","lastModifiedDate":"2024-03-02"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.75);","lastModifiedDate":"2024-03-02"},{"lineNumber":184,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":185,"author":{"gitId":"jieqiboh"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2024-03-02"},{"lineNumber":186,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(2);","lastModifiedDate":"2024-03-02"},{"lineNumber":187,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":188,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":189,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":190,"author":{"gitId":"jieqiboh"},"content":" h3 {","lastModifiedDate":"2024-03-02"},{"lineNumber":191,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.375);","lastModifiedDate":"2024-03-02"},{"lineNumber":192,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":193,"author":{"gitId":"jieqiboh"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2024-03-02"},{"lineNumber":194,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.625);","lastModifiedDate":"2024-03-02"},{"lineNumber":195,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":196,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":197,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":198,"author":{"gitId":"jieqiboh"},"content":" h4 {","lastModifiedDate":"2024-03-02"},{"lineNumber":199,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.25);","lastModifiedDate":"2024-03-02"},{"lineNumber":200,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":201,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":202,"author":{"gitId":"jieqiboh"},"content":" h5 {","lastModifiedDate":"2024-03-02"},{"lineNumber":203,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2024-03-02"},{"lineNumber":204,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":205,"author":{"gitId":"jieqiboh"},"content":" h6 {","lastModifiedDate":"2024-03-02"},{"lineNumber":206,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.0625);","lastModifiedDate":"2024-03-02"},{"lineNumber":207,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":208,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":209,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":210,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":211,"author":{"gitId":"jieqiboh"},"content":".social-media-list {","lastModifiedDate":"2024-03-02"},{"lineNumber":212,"author":{"gitId":"jieqiboh"},"content":" display: table;","lastModifiedDate":"2024-03-02"},{"lineNumber":213,"author":{"gitId":"jieqiboh"},"content":" margin: 0 auto;","lastModifiedDate":"2024-03-02"},{"lineNumber":214,"author":{"gitId":"jieqiboh"},"content":" li {","lastModifiedDate":"2024-03-02"},{"lineNumber":215,"author":{"gitId":"jieqiboh"},"content":" float: left;","lastModifiedDate":"2024-03-02"},{"lineNumber":216,"author":{"gitId":"jieqiboh"},"content":" margin: 5px 10px 5px 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":217,"author":{"gitId":"jieqiboh"},"content":" \u0026:last-of-type { margin-right: 0 }","lastModifiedDate":"2024-03-02"},{"lineNumber":218,"author":{"gitId":"jieqiboh"},"content":" a {","lastModifiedDate":"2024-03-02"},{"lineNumber":219,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":220,"author":{"gitId":"jieqiboh"},"content":" padding: $spacing-unit / 4;","lastModifiedDate":"2024-03-02"},{"lineNumber":221,"author":{"gitId":"jieqiboh"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2024-03-02"},{"lineNumber":222,"author":{"gitId":"jieqiboh"},"content":" \u0026:hover { border-color: darken($brand-color-light, 10%) }","lastModifiedDate":"2024-03-02"},{"lineNumber":223,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":224,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":225,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":226,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":227,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":228,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":229,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":230,"author":{"gitId":"jieqiboh"},"content":" * Pagination navbar","lastModifiedDate":"2024-03-02"},{"lineNumber":231,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":232,"author":{"gitId":"jieqiboh"},"content":".pagination {","lastModifiedDate":"2024-03-02"},{"lineNumber":233,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2024-03-02"},{"lineNumber":234,"author":{"gitId":"jieqiboh"},"content":" @extend .social-media-list;","lastModifiedDate":"2024-03-02"},{"lineNumber":235,"author":{"gitId":"jieqiboh"},"content":" li {","lastModifiedDate":"2024-03-02"},{"lineNumber":236,"author":{"gitId":"jieqiboh"},"content":" a, div {","lastModifiedDate":"2024-03-02"},{"lineNumber":237,"author":{"gitId":"jieqiboh"},"content":" min-width: 41px;","lastModifiedDate":"2024-03-02"},{"lineNumber":238,"author":{"gitId":"jieqiboh"},"content":" text-align: center;","lastModifiedDate":"2024-03-02"},{"lineNumber":239,"author":{"gitId":"jieqiboh"},"content":" box-sizing: border-box;","lastModifiedDate":"2024-03-02"},{"lineNumber":240,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":241,"author":{"gitId":"jieqiboh"},"content":" div {","lastModifiedDate":"2024-03-02"},{"lineNumber":242,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":243,"author":{"gitId":"jieqiboh"},"content":" padding: $spacing-unit / 4;","lastModifiedDate":"2024-03-02"},{"lineNumber":244,"author":{"gitId":"jieqiboh"},"content":" border: 1px solid transparent;","lastModifiedDate":"2024-03-02"},{"lineNumber":245,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":246,"author":{"gitId":"jieqiboh"},"content":" \u0026.pager-edge {","lastModifiedDate":"2024-03-02"},{"lineNumber":247,"author":{"gitId":"jieqiboh"},"content":" color: darken($brand-color-light, 5%);","lastModifiedDate":"2024-03-02"},{"lineNumber":248,"author":{"gitId":"jieqiboh"},"content":" border: 1px dashed;","lastModifiedDate":"2024-03-02"},{"lineNumber":249,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":250,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":251,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":252,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":253,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":254,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":255,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":256,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":257,"author":{"gitId":"jieqiboh"},"content":" * Grid helpers","lastModifiedDate":"2024-03-02"},{"lineNumber":258,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":259,"author":{"gitId":"jieqiboh"},"content":"@media screen and (min-width: $on-large) {","lastModifiedDate":"2024-03-02"},{"lineNumber":260,"author":{"gitId":"jieqiboh"},"content":" .one-half {","lastModifiedDate":"2024-03-02"},{"lineNumber":261,"author":{"gitId":"jieqiboh"},"content":" width: calc(50% - (#{$spacing-unit} / 2));","lastModifiedDate":"2024-03-02"},{"lineNumber":262,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":263,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":263}},{"path":"docs/_sass/minima/custom-mixins.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@mixin alert-variant($background, $border, $color) {","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":" color: $color;","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":" @include gradient-bg($background);","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" border-color: $border;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" .alert-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" color: darken($color, 10%);","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"@mixin gradient-bg($color, $foreground: null) {","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" @if $enable-gradients {","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" @if $foreground {","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" background-image: $foreground, linear-gradient(180deg, mix($body-bg, $color, 15%), $color);","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" } @else {","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" background-image: linear-gradient(180deg, mix($body-bg, $color, 15%), $color);","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" } @else {","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" background-color: $color;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":21}},{"path":"docs/_sass/minima/custom-styles.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"// Placeholder to allow defining custom styles that override everything else.","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"// (Use `_sass/minima/custom-variables.scss` to override variable defaults)","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"h2, h3, h4, h5, h6 {","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" color: #e46c0a;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"// Bootstrap style alerts","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":".alert {","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" position: relative;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" padding: $alert-padding-y $alert-padding-x;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $alert-margin-bottom;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" border: $alert-border-width solid transparent;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" border-radius : $alert-border-radius;","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"// Headings for larger alerts","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":".alert-heading {","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" // Specified to prevent conflicts of changing $headings-color","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" color: inherit;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"// Provide class for links that match alerts","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":".alert-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" font-weight: $alert-link-font-weight;","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"// Generate contextual modifier classes for colorizing the alert.","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"@each $color, $value in $theme-colors {","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" .alert-#{$color} {","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" @include alert-variant(color-level($value, $alert-bg-level), color-level($value, $alert-border-level), color-level($value, $alert-color-level));","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":34}},{"path":"docs/_sass/minima/custom-variables.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"// Placeholder to allow overriding predefined variables smoothly.","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"//Bootstrap\u0027s default","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"$white: #fff !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"$gray-100: #f8f9fa !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"$gray-200: #e9ecef !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"$gray-300: #dee2e6 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"$gray-400: #ced4da !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"$gray-500: #adb5bd !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"$gray-600: #6c757d !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"$gray-700: #495057 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"$gray-800: #343a40 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"$gray-900: #212529 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"$black: #000 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"$blue: #0d6efd !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"$indigo: #6610f2 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"$purple: #6f42c1 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"$pink: #d63384 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"$red: #dc3545 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"$orange: #fd7e14 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"$yellow: #ffc107 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"$green: #28a745 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"$teal: #20c997 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"$cyan: #17a2b8 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"$primary: $blue !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"$secondary: $gray-600 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"$success: $green !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"$info: $cyan !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"$warning: $yellow !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"$danger: $red !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"$light: $gray-100 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"$dark: $gray-800 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"$theme-colors: (","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" \"primary\": $primary,","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" \"secondary\": $secondary,","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" \"success\": $success,","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" \"info\": $info,","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" \"warning\": $warning,","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" \"danger\": $danger,","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" \"light\": $light,","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" \"dark\": $dark","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":") !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"$theme-color-interval: 8% !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"$body-bg: $white !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"$body-color: $gray-900 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"$body-text-align: null !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"$enable-gradients: true;","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"// Define alert colors, border radius, and padding.","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"$border-radius: .25rem !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"$border-width: 1px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"$font-weight-bold: 700 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"$alert-padding-y: .75rem !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"$alert-padding-x: 1.25rem !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"$alert-margin-bottom: 1rem !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"$alert-border-radius: $border-radius !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"$alert-link-font-weight: $font-weight-bold !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"$alert-border-width: $border-width !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"$alert-bg-level: -10 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"$alert-border-level: -9 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"$alert-color-level: 6 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"// Request a color level","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"// scss-docs-start color-level","lastModifiedDate":"2024-03-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"@function color-level($color: $primary, $level: 0) {","lastModifiedDate":"2024-03-02"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" $color-base: if($level \u003e 0, $black, $white);","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" $level: abs($level);","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" @return mix($color-base, $color, $level * $theme-color-interval);","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":76}},{"path":"docs/_sass/minima/initialize.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@charset \"utf-8\";","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"// Define defaults for each variable.","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"$base-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Segoe UI Symbol\", \"Segoe UI Emoji\", \"Apple Color Emoji\", Roboto, Helvetica, Arial, sans-serif !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"$code-font-family: \"Menlo\", \"Inconsolata\", \"Consolas\", \"Roboto Mono\", \"Ubuntu Mono\", \"Liberation Mono\", \"Courier New\", monospace;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"$base-font-size: 16px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"$base-font-weight: 400 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"$small-font-size: $base-font-size * 0.875 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"$base-line-height: 1.5 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"$spacing-unit: 30px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"$table-text-align: left !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"// Width of the content area","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"$content-width: 800px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"$on-palm: 600px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"$on-laptop: 800px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"$on-medium: $on-palm !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"$on-large: $on-laptop !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"// Use media queries like this:","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"// @include media-query($on-palm) {","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"// .wrapper {","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"// padding-right: $spacing-unit / 2;","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"// padding-left: $spacing-unit / 2;","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"// }","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"// }","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"// Notice the following mixin uses max-width, in a deprecated, desktop-first","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"// approach, whereas media queries used elsewhere now use min-width.","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"@mixin media-query($device) {","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" @media screen and (max-width: $device) {","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" @content;","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"@mixin relative-font-size($ratio) {","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" font-size: #{$ratio}rem;","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"// Import pre-styling-overrides hook and style-partials.","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"@import","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" \"minima/custom-variables\", // Hook to override predefined variables.","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" \"minima/custom-mixins\", // Hook to add custom mixins.","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" \"minima/base\", // Defines element resets.","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" \"minima/layout\", // Defines structure and style based on CSS selectors.","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" \"minima/custom-styles\" // Hook to override existing styles.","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":";","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":51}},{"path":"docs/_sass/minima/skins/classic.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@charset \"utf-8\";","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"$brand-color: #828282 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"$brand-color-light: lighten($brand-color, 40%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"$brand-color-dark: darken($brand-color, 25%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"$text-color: #111 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"$background-color: #fdfdfd !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"$code-background-color: #eef !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"$link-base-color: #2a7ae2 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"$link-visited-color: darken($link-base-color, 15%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"$table-text-color: lighten($text-color, 18%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"$table-zebra-color: lighten($brand-color, 46%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"$table-header-bg-color: lighten($brand-color, 43%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"$table-header-border: lighten($brand-color, 36%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"$table-border-color: $brand-color-light !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"// Syntax highlighting styles should be adjusted appropriately for every \"skin\"","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"// ----------------------------------------------------------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":".highlight {","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" .c { color: #998; font-style: italic } // Comment","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" .err { color: #a61717; background-color: #e3d2d2 } // Error","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" .k { font-weight: bold } // Keyword","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" .o { font-weight: bold } // Operator","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" .cm { color: #998; font-style: italic } // Comment.Multiline","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" .cp { color: #999; font-weight: bold } // Comment.Preproc","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" .c1 { color: #998; font-style: italic } // Comment.Single","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" .gd { color: #000; background-color: #fdd } // Generic.Deleted","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" .ge { font-style: italic } // Generic.Emph","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" .gr { color: #a00 } // Generic.Error","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" .gh { color: #999 } // Generic.Heading","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" .gi { color: #000; background-color: #dfd } // Generic.Inserted","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" .go { color: #888 } // Generic.Output","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" .gp { color: #555 } // Generic.Prompt","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" .gs { font-weight: bold } // Generic.Strong","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" .gu { color: #aaa } // Generic.Subheading","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" .gt { color: #a00 } // Generic.Traceback","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" .kc { font-weight: bold } // Keyword.Constant","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" .kd { font-weight: bold } // Keyword.Declaration","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" .kp { font-weight: bold } // Keyword.Pseudo","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" .kr { font-weight: bold } // Keyword.Reserved","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" .kt { color: #458; font-weight: bold } // Keyword.Type","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" .m { color: #099 } // Literal.Number","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" .s { color: #d14 } // Literal.String","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" .na { color: #008080 } // Name.Attribute","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" .nb { color: #0086B3 } // Name.Builtin","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" .nc { color: #458; font-weight: bold } // Name.Class","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" .no { color: #008080 } // Name.Constant","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" .ni { color: #800080 } // Name.Entity","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" .ne { color: #900; font-weight: bold } // Name.Exception","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" .nf { color: #900; font-weight: bold } // Name.Function","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" .nn { color: #555 } // Name.Namespace","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" .nt { color: #000080 } // Name.Tag","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" .nv { color: #008080 } // Name.Variable","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" .ow { font-weight: bold } // Operator.Word","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" .w { color: #bbb } // Text.Whitespace","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" .mf { color: #099 } // Literal.Number.Float","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" .mh { color: #099 } // Literal.Number.Hex","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" .mi { color: #099 } // Literal.Number.Integer","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" .mo { color: #099 } // Literal.Number.Oct","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" .sb { color: #d14 } // Literal.String.Backtick","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" .sc { color: #d14 } // Literal.String.Char","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" .sd { color: #d14 } // Literal.String.Doc","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" .s2 { color: #d14 } // Literal.String.Double","lastModifiedDate":"2024-03-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" .se { color: #d14 } // Literal.String.Escape","lastModifiedDate":"2024-03-02"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" .sh { color: #d14 } // Literal.String.Heredoc","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" .si { color: #d14 } // Literal.String.Interpol","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" .sx { color: #d14 } // Literal.String.Other","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" .sr { color: #009926 } // Literal.String.Regex","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" .s1 { color: #d14 } // Literal.String.Single","lastModifiedDate":"2024-03-02"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" .ss { color: #990073 } // Literal.String.Symbol","lastModifiedDate":"2024-03-02"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" .bp { color: #999 } // Name.Builtin.Pseudo","lastModifiedDate":"2024-03-02"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" .vc { color: #008080 } // Name.Variable.Class","lastModifiedDate":"2024-03-02"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" .vg { color: #008080 } // Name.Variable.Global","lastModifiedDate":"2024-03-02"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" .vi { color: #008080 } // Name.Variable.Instance","lastModifiedDate":"2024-03-02"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" .il { color: #099 } // Literal.Number.Integer.Long","lastModifiedDate":"2024-03-02"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":84}},{"path":"docs/_sass/minima/skins/solarized-dark.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@charset \"utf-8\";","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"$sol-is-dark: true;","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"@import \"minima/skins/solarized\";","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":4}},{"path":"docs/_sass/minima/skins/solarized.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@charset \"utf-8\";","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"// Solarized skin","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"// \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"// Created by Sander Voerman \u003cmailto:sander@savoerman.nl\u003e using the Solarized","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"// color scheme by Ethan Schoonover \u003chttps://ethanschoonover.com/solarized\u003e.","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"// This style sheet implements two options for the minima.skin setting:","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"// \"solarized\" for light mode and \"solarized-dark\" for dark mode.","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"$sol-is-dark: false !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"// Color scheme","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"// ------------","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"// The inline comments show the canonical L*a*b values for each color.","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"$sol-base03: #002b36; // 15 -12 -12","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"$sol-base02: #073642; // 20 -12 -12","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"$sol-base01: #586e75; // 45 -07 -07","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"$sol-base00: #657b83; // 50 -07 -07","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"$sol-base0: #839496; // 60 -06 -03","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"$sol-base1: #93a1a1; // 65 -05 -02","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"$sol-base2: #eee8d5; // 92 -00 10","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"$sol-base3: #fdf6e3; // 97 00 10","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"$sol-yellow: #b58900; // 60 10 65","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"$sol-orange: #cb4b16; // 50 50 55","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"$sol-red: #dc322f; // 50 65 45","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"$sol-magenta: #d33682; // 50 65 -05","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"$sol-violet: #6c71c4; // 50 15 -45","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"$sol-blue: #268bd2; // 55 -10 -45","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"$sol-cyan: #2aa198; // 60 -35 -05","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"$sol-green: #859900; // 60 -20 65","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"$sol-mono3: $sol-base3;","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"$sol-mono2: $sol-base2;","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"$sol-mono1: $sol-base1;","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"$sol-mono00: $sol-base00;","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"$sol-mono01: $sol-base01;","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"@if $sol-is-dark {","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" $sol-mono3: $sol-base03;","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" $sol-mono2: $sol-base02;","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" $sol-mono1: $sol-base01;","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" $sol-mono00: $sol-base0;","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" $sol-mono01: $sol-base1;","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"// Minima color variables","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"// ----------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"$brand-color: $sol-mono1 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"$brand-color-light: mix($sol-mono1, $sol-mono3) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"$brand-color-dark: $sol-mono00 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"$text-color: $sol-mono01 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"$background-color: $sol-mono3 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"$code-background-color: $sol-mono2 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"$link-base-color: $sol-blue !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"$link-visited-color: mix($sol-blue, $sol-mono00) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"$table-text-color: $sol-mono00 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"$table-zebra-color: mix($sol-mono2, $sol-mono3) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"$table-header-bg-color: $sol-mono2 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"$table-header-border: $sol-mono1 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"$table-border-color: $sol-mono1 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"// Syntax highlighting styles","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"// --------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":".highlight {","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" .c { color: $sol-mono1; font-style: italic } // Comment","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" .err { color: $sol-red } // Error","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" .k { color: $sol-mono01; font-weight: bold } // Keyword","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" .o { color: $sol-mono01; font-weight: bold } // Operator","lastModifiedDate":"2024-03-02"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" .cm { color: $sol-mono1; font-style: italic } // Comment.Multiline","lastModifiedDate":"2024-03-02"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" .cp { color: $sol-mono1; font-weight: bold } // Comment.Preproc","lastModifiedDate":"2024-03-02"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" .c1 { color: $sol-mono1; font-style: italic } // Comment.Single","lastModifiedDate":"2024-03-02"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" .cs { color: $sol-mono1; font-weight: bold; font-style: italic } // Comment.Special","lastModifiedDate":"2024-03-02"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" .gd { color: $sol-red } // Generic.Deleted","lastModifiedDate":"2024-03-02"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" .gd .x { color: $sol-red } // Generic.Deleted.Specific","lastModifiedDate":"2024-03-02"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" .ge { color: $sol-mono00; font-style: italic } // Generic.Emph","lastModifiedDate":"2024-03-02"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" .gr { color: $sol-red } // Generic.Error","lastModifiedDate":"2024-03-02"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" .gh { color: $sol-mono1 } // Generic.Heading","lastModifiedDate":"2024-03-02"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" .gi { color: $sol-green } // Generic.Inserted","lastModifiedDate":"2024-03-02"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" .gi .x { color: $sol-green } // Generic.Inserted.Specific","lastModifiedDate":"2024-03-02"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" .go { color: $sol-mono00 } // Generic.Output","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" .gp { color: $sol-mono00 } // Generic.Prompt","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" .gs { color: $sol-mono01; font-weight: bold } // Generic.Strong","lastModifiedDate":"2024-03-02"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" .gu { color: $sol-mono1 } // Generic.Subheading","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" .gt { color: $sol-red } // Generic.Traceback","lastModifiedDate":"2024-03-02"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" .kc { color: $sol-mono01; font-weight: bold } // Keyword.Constant","lastModifiedDate":"2024-03-02"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" .kd { color: $sol-mono01; font-weight: bold } // Keyword.Declaration","lastModifiedDate":"2024-03-02"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" .kp { color: $sol-mono01; font-weight: bold } // Keyword.Pseudo","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" .kr { color: $sol-mono01; font-weight: bold } // Keyword.Reserved","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" .kt { color: $sol-violet; font-weight: bold } // Keyword.Type","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" .m { color: $sol-cyan } // Literal.Number","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" .s { color: $sol-magenta } // Literal.String","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" .na { color: $sol-cyan } // Name.Attribute","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" .nb { color: $sol-blue } // Name.Builtin","lastModifiedDate":"2024-03-02"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" .nc { color: $sol-violet; font-weight: bold } // Name.Class","lastModifiedDate":"2024-03-02"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" .no { color: $sol-cyan } // Name.Constant","lastModifiedDate":"2024-03-02"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" .ni { color: $sol-violet } // Name.Entity","lastModifiedDate":"2024-03-02"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" .ne { color: $sol-violet; font-weight: bold } // Name.Exception","lastModifiedDate":"2024-03-02"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" .nf { color: $sol-blue; font-weight: bold } // Name.Function","lastModifiedDate":"2024-03-02"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" .nn { color: $sol-mono00 } // Name.Namespace","lastModifiedDate":"2024-03-02"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" .nt { color: $sol-blue } // Name.Tag","lastModifiedDate":"2024-03-02"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" .nv { color: $sol-cyan } // Name.Variable","lastModifiedDate":"2024-03-02"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" .ow { color: $sol-mono01; font-weight: bold } // Operator.Word","lastModifiedDate":"2024-03-02"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" .w { color: $sol-mono1 } // Text.Whitespace","lastModifiedDate":"2024-03-02"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" .mf { color: $sol-cyan } // Literal.Number.Float","lastModifiedDate":"2024-03-02"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" .mh { color: $sol-cyan } // Literal.Number.Hex","lastModifiedDate":"2024-03-02"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" .mi { color: $sol-cyan } // Literal.Number.Integer","lastModifiedDate":"2024-03-02"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" .mo { color: $sol-cyan } // Literal.Number.Oct","lastModifiedDate":"2024-03-02"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" .sb { color: $sol-magenta } // Literal.String.Backtick","lastModifiedDate":"2024-03-02"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" .sc { color: $sol-magenta } // Literal.String.Char","lastModifiedDate":"2024-03-02"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" .sd { color: $sol-magenta } // Literal.String.Doc","lastModifiedDate":"2024-03-02"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" .s2 { color: $sol-magenta } // Literal.String.Double","lastModifiedDate":"2024-03-02"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" .se { color: $sol-magenta } // Literal.String.Escape","lastModifiedDate":"2024-03-02"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" .sh { color: $sol-magenta } // Literal.String.Heredoc","lastModifiedDate":"2024-03-02"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" .si { color: $sol-magenta } // Literal.String.Interpol","lastModifiedDate":"2024-03-02"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" .sx { color: $sol-magenta } // Literal.String.Other","lastModifiedDate":"2024-03-02"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" .sr { color: $sol-green } // Literal.String.Regex","lastModifiedDate":"2024-03-02"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" .s1 { color: $sol-magenta } // Literal.String.Single","lastModifiedDate":"2024-03-02"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" .ss { color: $sol-magenta } // Literal.String.Symbol","lastModifiedDate":"2024-03-02"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" .bp { color: $sol-mono1 } // Name.Builtin.Pseudo","lastModifiedDate":"2024-03-02"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" .vc { color: $sol-cyan } // Name.Variable.Class","lastModifiedDate":"2024-03-02"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" .vg { color: $sol-cyan } // Name.Variable.Global","lastModifiedDate":"2024-03-02"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" .vi { color: $sol-cyan } // Name.Variable.Instance","lastModifiedDate":"2024-03-02"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" .il { color: $sol-cyan } // Literal.Number.Integer.Long","lastModifiedDate":"2024-03-02"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":133}},{"path":"docs/assets/css/style.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"# Only the main Sass file needs front matter (the dashes are enough)","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"@import","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" \"minima/skins/{{ site.minima.skin | default: \u0027classic\u0027 }}\",","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" \"minima/initialize\";","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":".icon {","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" height: 21px;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" width: 21px","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":12}},{"path":"docs/diagrams/ArchitectureDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include \u003coffice/Concepts/globe_internet\u003e","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"!include \u003coffice/Concepts/documents\u003e","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"!include \u003coffice/Users/user\u003e","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package \" \"\u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":" Class UI UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" Class InternshipLogic LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" Class Storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" Class InternshipModel MODEL_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" Class Main #grey","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Class Commons LOGIC_COLOR_T2","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class \"\u003c$user\u003e\" as User MODEL_COLOR_T2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class \"\u003c$documents\u003e\" as File UI_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"UI -[#green]\u003e InternshipLogic","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"UI -right[#green]-\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogic -[#blue]-\u003e Storage","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogic -down[#blue]-\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Main -[#grey]-\u003e UI","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"Main -[#grey]-\u003e InternshipLogic","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Main -[#grey]-\u003e Storage","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"Main -up[#grey]-\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Main -down[hidden]-\u003e Commons","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"Storage -up[STORAGE_COLOR].\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Storage .right[STORAGE_COLOR].\u003eFile","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"User ..\u003e UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":24,"CaptainKeqing":9}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"Participant \":InternshipLogic\" as logic LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"Participant \":InternshipModel\" as model MODEL_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteInternship(p)","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveInternshipData(internshipData)","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":35,"CaptainKeqing":4}},{"path":"docs/diagrams/ComponentManagers.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2021-07-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2021-07-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2021-07-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2021-07-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2021-07-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Logic as LogicPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipLogic\" as Logic","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"Class InternshipLogicManager","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"package Model as ModelPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipModel\" as Model","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"Class InternshipModelManager","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2021-07-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Logic","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogicManager .up.|\u003e Logic","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"InternshipModelManager .up.|\u003e Model","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogicManager --\u003e Model","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogicManager --\u003e Storage","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"-":23,"CaptainKeqing":8}},{"path":"docs/diagrams/InternshipDeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"@startuml","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"!include style.puml","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"participant \":InternshipLogicManager\" as InternshipLogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"participant \":InternshipParser\" as InternshipParser LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"participant \":InternshipDeleteCommandParser\" as InternshipDeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"participant \"d:InternshipDeleteCommand\" as InternshipDeleteCommand LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"end box","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"end box","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"[-\u003e InternshipLogicManager : execute(\"delete 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"activate InternshipLogicManager","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"InternshipLogicManager -\u003e InternshipParser : parseCommand(\"delete 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"activate InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"create InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"InternshipParser -\u003e InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"activate InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommandParser --\u003e InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"deactivate InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"InternshipParser -\u003e InternshipDeleteCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"activate InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"create InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommandParser -\u003e InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"activate InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommand --\u003e InternshipDeleteCommandParser :","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"deactivate InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommandParser --\u003e InternshipParser : d","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"deactivate InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommandParser -[hidden]-\u003e InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"destroy InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"InternshipParser --\u003e InternshipLogicManager : d","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"deactivate InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"InternshipLogicManager -\u003e InternshipDeleteCommand : execute(m)","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"activate InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommand -\u003e Model : deleteInternship(1)","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"activate Model","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"Model --\u003e InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":"deactivate Model","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"create CommandResult","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommand -\u003e CommandResult","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":"activate CommandResult","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"CommandResult --\u003e InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommand --\u003e InternshipLogicManager : r","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":"deactivate InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"[\u003c--InternshipLogicManager","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"deactivate InternshipLogicManager","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":"@enduml","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":70}},{"path":"docs/diagrams/InternshipLogicClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"package InternshipLogic as InternshipLogicPackage {","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"package \"Internship Parser Classes\" as InternshipParserClasses{","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"Class InternshipXYZCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"Class CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"Class \"{abstract}\\nInternshipCommand\" as InternshipCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipLogic\" as InternshipLogic","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"Class InternshipLogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"package InternshipModel {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"package Storage {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"HiddenOutside ..\u003e InternshipLogic","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager .right.|\u003e InternshipLogic","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager -right-\u003e \" 1 \" InternshipParserClasses","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"InternshipParserClasses ..\u003e InternshipXYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":"InternshipXYZCommand -up-|\u003e InternshipCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager .left.\u003e InternshipCommand : \u003c\u003ccall\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager --\u003e InternshipModel","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager --\u003e Storage","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":"Storage --[hidden] InternshipModel","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"InternshipCommand .[hidden]up.\u003e Storage","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"InternshipCommand .right.\u003e InternshipModel","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"note right of InternshipXYZCommand: InternshipXYZCommand \u003d InternshipAddCommand, \\nInternshipFindCommand, etc","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogic ..\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager .down.\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":"InternshipCommand .up.\u003e CommandResult : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"HM33-Stu":47}},{"path":"docs/diagrams/InternshipParserClasses.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"@startuml","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"!include style.puml","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"Class XYZCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"package \"InternshipParser classes\"{","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipParser\" as InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"Class InternshipDataInternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"Class XYZCommandInternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"Class CliSyntax","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"Class InternshipInternshipParserUtil","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"Class ArgumentMultimap","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"Class ArgumentTokenizer","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"Class Prefix","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"HiddenOutside ..\u003e InternshipDataInternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"InternshipDataInternshipParser .down.\u003e XYZCommandInternshipParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"InternshipDataInternshipParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser .up.|\u003e InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e ArgumentMultimap","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e ArgumentTokenizer","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"ArgumentTokenizer .left.\u003e ArgumentMultimap","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e CliSyntax","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"CliSyntax ..\u003e Prefix","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e InternshipInternshipParserUtil","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"InternshipInternshipParserUtil .down.\u003e Prefix","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"ArgumentTokenizer .down.\u003e Prefix","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"@enduml","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":38}},{"path":"docs/diagrams/InternshipStorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipUserPrefsStorage\" as InternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"Class JsonInternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"Class InternshipStorageManager","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"package \"InternshipData Storage\" #F4F6F6{","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipDataStorage\" as InternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"Class JsonInternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"Class JsonSerializableInternshipData","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"Class JsonAdaptedInternship","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"InternshipStorageManager .up.|\u003e Storage","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"InternshipStorageManager -up-\u003e \"1\" InternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"InternshipStorageManager -up-\u003e \"1\" InternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"Storage -left-|\u003e InternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"Storage -right-|\u003e InternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"JsonInternshipUserPrefsStorage .up.|\u003e InternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"JsonInternshipDataStorage .up.|\u003e InternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"JsonInternshipDataStorage ..\u003e JsonSerializableInternshipData","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"JsonSerializableInternshipData --\u003e \"*\" JsonAdaptedInternship","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jieqiboh":41}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyInternshipData\" as ReadOnlyInternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyInternshipUserPrefs\" as ReadOnlyInternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipModel\" as InternshipModel","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"Class InternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"Class InternshipModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"Class InternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"Class UniqueInternshipList","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"Class Internship","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"Class ApplicationStatus","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"Class CompanyName","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"Class ContactName","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"Class ContactNumber","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"Class ContactEmail","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"Class Description","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"Class Location","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"Class Role","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"HiddenOutside ..\u003e InternshipModel","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":"InternshipData .up.|\u003e ReadOnlyInternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":"InternshipModelManager .up.|\u003e InternshipModel","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":"InternshipModel .right.\u003e ReadOnlyInternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":"InternshipModel .left.\u003e ReadOnlyInternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":"InternshipModelManager -left-\u003e \"1\" InternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":"InternshipModelManager -right-\u003e \"1\" InternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":"InternshipUserPrefs .up.|\u003e ReadOnlyInternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":"InternshipData *--\u003e \"1\" UniqueInternshipList","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":"InternshipModelManager --\u003e \"~* filtered\" Internship","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":"UniqueInternshipList --\u003e \"~* all\" Internship","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e ApplicationStatus","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e CompanyName","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e ContactName","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e ContactNumber","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e ContactEmail","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e Description","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e Location","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e Role","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":"Internship -[hidden]up--\u003e I","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":"UniqueInternshipList -[hidden]right-\u003e I","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":"CompanyName -[hidden]right-\u003e ContactNumber","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":"ContactNumber -[hidden]right-\u003e Description","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":"Description -[hidden]right-\u003e Role","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"theman-oj10":42,"-":19}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"\u0027 Add Detailed View Internship Window here (comment)","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"Class InternshipListPanel","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"Class InternshipCard","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"package InternshipModel \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"package InternshipLogic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"MainWindow *-down-\u003e \"1\" InternshipListPanel","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"InternshipListPanel -down-\u003e \"*\" InternshipCard","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":"InternshipListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"InternshipCard --|\u003e UiPart","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"InternshipCard ..\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":"UiManager -right-\u003e InternshipLogic","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"MainWindow -left-\u003e InternshipLogic","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":"InternshipListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":48,"CaptainKeqing":13}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: AddressBook Level-3","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"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":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":2,"-":17}},{"path":"docs/team/captainkeqing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"title: CaptainKeqing\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"### Project: CareerSync","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"CaptainKeqing":8}},{"path":"docs/team/hm33-stu.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"layout: page","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"title: HM33-Stu\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"### Project: CareerSync","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"HM33-Stu":8}},{"path":"docs/team/jieqiboh.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":"jieqiboh"},"content":"title: Boh Jie Qi\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":1,"-":45}},{"path":"docs/team/lws49.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"title: LWS49\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"### Project: CareerSync","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"LWS49":8}},{"path":"docs/team/theman-oj10.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"title: Manoj\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"### Project: CareerSync","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"theman-oj10":8}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"jieqiboh"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2024-03-02"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"jieqiboh"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2024-03-02"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"jieqiboh"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-02"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"jieqiboh":12,"-":387}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Removing Fields\"","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":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.person.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":8,"-":104}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Tracing code\"","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":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","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":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","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":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2024-03-02"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of persons is being tracked.","lastModifiedDate":"2021-07-31"},{"lineNumber":208,"author":{"gitId":"jieqiboh"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"jieqiboh"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"jieqiboh"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2024-03-02"},{"lineNumber":221,"author":{"gitId":"jieqiboh"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"jieqiboh"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","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":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":25,"-":276}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipLogicManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.util.InternshipSampleDataUtil;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import seedu.address.storage.InternshipDataStorage;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.InternshipStorageManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.InternshipUserPrefsStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"import seedu.address.storage.JsonInternshipDataStorage;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.JsonInternshipUserPrefsStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" public static final Version VERSION \u003d new Version(1, 3, 0, false);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" protected InternshipLogic logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" protected InternshipModel model;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing CareerSync ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" InternshipUserPrefsStorage userPrefsStorage \u003d new JsonInternshipUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" InternshipDataStorage internshipDataStorage \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" new JsonInternshipDataStorage(userPrefs.getInternshipDataFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" storage \u003d new InternshipStorageManager(internshipDataStorage, userPrefsStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" logic \u003d new InternshipLogicManager(model, storage);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" * Returns a {@code InternshipModelManager} with the data from {@code storage}\u0027s internship data and","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" * {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" * The data from the sample internship data will be used instead if {@code storage}\u0027s internship data is not found,","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" * or an empty internship data will be used instead if errors occur when reading {@code storage}\u0027s internship data.","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" private InternshipModel initModelManager(Storage storage, ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" logger.info(\"Using data file : \" + storage.getInternshipDataFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" Optional\u003cReadOnlyInternshipData\u003e internshipDataOptional;","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" ReadOnlyInternshipData initialData;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" internshipDataOptional \u003d storage.readInternshipData();","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" if (!internshipDataOptional.isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" logger.info(\"Creating a new data file \" + storage.getInternshipDataFilePath()","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" + \" populated with a sample InternshipData.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" initialData \u003d internshipDataOptional.orElseGet(InternshipSampleDataUtil::getSampleInternshipData);","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" logger.warning(\"Data file at \" + storage.getInternshipDataFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" + \" Will be starting with an empty InternshipData.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" initialData \u003d new InternshipData();","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" return new InternshipModelManager(initialData, userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" * Returns a {@code InternshipUserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" * or a new {@code InternshipUserPrefs} with default configuration if errors occur when","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" protected InternshipUserPrefs initPrefs(InternshipUserPrefsStorage storage) {","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs initializedPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" Optional\u003cInternshipUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" initializedPrefs \u003d prefsOptional.orElse(new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" initializedPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"LWS49"},"content":" logger.info(\"Starting InternshipData \" + MainApp.VERSION);","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping CareerSync ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jieqiboh":6,"HM33-Stu":1,"LWS49":40,"theman-oj10":1,"-":138,"CaptainKeqing":2}},{"path":"src/main/java/seedu/address/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" private static final String LOG_FILE \u003d \"internshipdata.log\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LWS49":1,"-":105}},{"path":"src/main/java/seedu/address/logic/InternshipLogic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"public interface InternshipLogic {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the InternshipData.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.model.InternshipModel#getInternshipData()","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" ReadOnlyInternshipData getInternshipData();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" /** Returns an unmodifiable view of the filtered list of internships */","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" ObservableList\u003cInternship\u003e getFilteredInternshipList();","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the model\u0027s selected internship.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.model.InternshipModel#getSelectedInternship()","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" ObservableList\u003cInternship\u003e getSelectedInternship();","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the selected internship in the model.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.model.InternshipModel#setSelectedInternship(Internship)","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" void setSelectedInternship(Internship internship);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the user prefs\u0027 internship data file path.","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"-":40,"CaptainKeqing":24}},{"path":"src/main/java/seedu/address/logic/InternshipLogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.InternshipDataParser;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" * The main InternshipLogicManager of the app.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipLogicManager implements InternshipLogic {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" private final Logger logger \u003d LogsCenter.getLogger(InternshipLogicManager.class);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipModel model;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipDataParser internshipDataParser;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * Constructs a {@code InternshipLogicManager} with the","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * given {@code InternshipModel} and {@code Storage}.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipLogicManager(InternshipModel model, Storage storage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" internshipDataParser \u003d new InternshipDataParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" InternshipCommand command \u003d internshipDataParser.parseCommand(commandText);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveInternshipData(model.getInternshipData());","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" public ReadOnlyInternshipData getInternshipData() {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" return model.getInternshipData();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public ObservableList\u003cInternship\u003e getFilteredInternshipList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" return model.getFilteredInternshipList();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" public void setSelectedInternship(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" model.setSelectedInternship(internship);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" public ObservableList\u003cInternship\u003e getSelectedInternship() {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" return model.getSelectedInternship();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" return model.getInternshipDataFilePath();","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"-":67,"CaptainKeqing":32}},{"path":"src/main/java/seedu/address/logic/InternshipMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" * Container for user visible messages.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"public class InternshipMessages {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX \u003d \"Index has to be a positive number \"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" + \"(1,2,3...) and one of the displayed internship indexes.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"Task index has to be a positive number \"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" + \"(1,2,3...) and one of the displayed task indexes of the internship.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_INTERNSHIPS_LISTED_OVERVIEW \u003d \"%1$d internships listed!\";","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" * Formats the {@code internship} for display to the user.","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" public static String format(Internship internship) {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" builder.append(\"\\nCompany Name: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" .append(internship.getCompanyName())","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" .append(\"Location: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" .append(internship.getLocation())","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" .append(\"Description: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" .append(internship.getDescription())","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" .append(\"Role: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" .append(internship.getRole())","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" .append(\"Contact Name: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" .append(internship.getContactName())","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" .append(\"Contact Email: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" .append(internship.getContactEmail())","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" .append(\"Contact Number: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" .append(internship.getContactNumber())","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" .append(\"Application Status: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" .append(internship.getApplicationStatus())","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" .append(\"Remark: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" .append(internship.getRemark())","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" .append(\"Tasks:\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" .append(internship.getTaskList());","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" return builder.toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":4,"LWS49":70}},{"path":"src/main/java/seedu/address/logic/commands/InternshipAddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" * Adds an internship to internship data.","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommand extends InternshipCommand {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds an internship to internship data. \"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_COMPANY + \" COMPANY_NAME \"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_DESCRIPTION + \" DESCRIPTION \"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_STATUS + \" STATUS \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_NAME + \" CONTACT_NAME \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_EMAIL + \" CONTACT_EMAIL \"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_NUMBER + \" CONTACT_NUMBER \"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" + \"[\" + PREFIX_LOCATION + \" LOCATION] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" + \"[\" + PREFIX_ROLE + \" ROLE]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_COMPANY + \" Tiktok \"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_DESCRIPTION + \" create new recommendation engine \"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_STATUS + \" ongoing \"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_NAME + \" jane yeo \"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_EMAIL + \" hr@tiktok.com \"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_NUMBER + \" 9089030 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_LOCATION + \" remote \"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_ROLE + \" Software Intern\";","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New internship added! %1$s\";","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_DUPLICATE_INTERNSHIP \u003d \"This internship already exists in the internship list\";","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" private final Internship toAdd;","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" * Creates an AddCommand to add the specified {@code Internship}.","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" public InternshipAddCommand(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" toAdd \u003d internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" if (model.hasInternship(toAdd)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" throw new CommandException(MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" model.addInternship(toAdd);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, InternshipMessages.format(toAdd)));","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" if (!(other instanceof InternshipAddCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand otherAddCommand \u003d (InternshipAddCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":91,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/commands/InternshipAddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" * Adds a task to an internship entry.","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"public class InternshipAddTaskCommand extends InternshipCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Add a task to the internship identified \"","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" + \"by the index number used in the displayed internship data.\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" + PREFIX_TASK + \" TASK\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" + PREFIX_TASK + \" edit resume\";","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_ADD_TASK_SUCCESS \u003d \"Task Added: %1$s\";","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_EMPTY_TASK \u003d \"Task cannot be blank!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" private final Index index;","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" private final Task task;","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" * @param index of the internship in the filtered internship list to edit","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" * @param task details to edit the internship with","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public InternshipAddTaskCommand(Index index, Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" if (index.getOneBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" Internship internshipToAddTask \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" Internship internshipWithTask \u003d createInternshipWithTask(internshipToAddTask, task);","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" model.setInternship(internshipToAddTask, internshipWithTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" return new CommandResult(String.format(MESSAGE_ADD_TASK_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" this.task));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof InternshipAddTaskCommand)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand otherEditCommand \u003d (InternshipAddTaskCommand) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 task.equals(otherEditCommand.task);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" .add(\"task\", task)","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" * Creates and returns a {@code Internship} with the details of {@code internshipToAddTask}","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" * edited with {@code internshipWithTaskDescriptor}.","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" private static Internship createInternshipWithTask(Internship internshipToAddTask, Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" assert internshipToAddTask !\u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" TaskList newTaskList \u003d internshipToAddTask.getTaskList().copy();","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" newTaskList.addTask(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" return new Internship(internshipToAddTask.getCompanyName(), internshipToAddTask.getContactName(),","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" internshipToAddTask.getContactEmail(), internshipToAddTask.getContactNumber(),","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" internshipToAddTask.getLocation(), internshipToAddTask.getApplicationStatus(),","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" internshipToAddTask.getDescription(), internshipToAddTask.getRole(),","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" internshipToAddTask.getRemark(),","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" newTaskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":111}},{"path":"src/main/java/seedu/address/logic/commands/InternshipClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" * Clears all internship data.","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipClearCommand extends InternshipCommand {","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Internship data has been cleared!\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" model.setInternshipData(new InternshipData());","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"CaptainKeqing":24}},{"path":"src/main/java/seedu/address/logic/commands/InternshipCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"public abstract class InternshipCommand {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" * @param model {@code InternshipModel} which the command should operate on.","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" public abstract CommandResult execute(InternshipModel model) throws CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":4,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/InternshipComparators.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import java.util.Map;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ApplicationStatus.StatusEnum;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":" * Contains utility methods for sorting internships.","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"public class InternshipComparators {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":" private static final Map\u003cStatusEnum, Integer\u003e statusOrder \u003d Map.of(","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.TO_APPLY, 0,","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.ONGOING, 1,","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.PENDING, 2,","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.ACCEPTED, 3,","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.REJECTED, 4","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the application status.","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the application status.","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byApplicationStatus(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" statusOrder.getOrDefault(internship.getApplicationStatus().getStatus(), Integer.MAX_VALUE));","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the company name.","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the company name.","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byCompanyName(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getCompanyName().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the description.","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the description.","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byDescription(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getDescription().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the role.","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the role.","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byRole(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getRole().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the contact name.","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the contact name.","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byContactName(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getContactName().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the contact email.","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the contact email.","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byContactEmail(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getContactEmail().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the contact number.","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the contact number.","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byPhone(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getContactNumber().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the remark.","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the remark.","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byRemark(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getRemark().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the location.","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the location.","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byLocation(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getLocation().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"theman-oj10":145}},{"path":"src/main/java/seedu/address/logic/commands/InternshipDeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" * Deletes the internship identified by the index number used in the displayed internship list","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipDeleteCommand extends InternshipCommand {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" + \": Deletes the internship identified by the index number used in the displayed internship list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_DELETE_INTERNSHIP_SUCCESS \u003d \"Deleted Internship: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" public InternshipDeleteCommand(Index targetIndex) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" Internship internshipToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" model.deleteInternship(internshipToDelete);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.format(internshipToDelete)));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" if (!(other instanceof InternshipDeleteCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand otherDeleteCommand \u003d (InternshipDeleteCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":70}},{"path":"src/main/java/seedu/address/logic/commands/InternshipDeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * Deletes an existing task from an existing Internship","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"public class InternshipDeleteTaskCommand extends InternshipCommand {","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Delete a task from the internship identified \"","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" + \"by the index number used in the displayed internship data.\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" + \"Parameters: INDEX (must be a positive integer) \" + PREFIX_SELECT_TASK + \" TASK_INDEX\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \" + PREFIX_SELECT_TASK + \" 1\";","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Task Deleted: %1$s\";","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" private final Index internshipIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * @param internshipIndex index of the internship in the filtered internship list to edit","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * @param taskIndex index of the task in the selected internship to edit","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" public InternshipDeleteTaskCommand(Index internshipIndex, Index taskIndex) {","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(internshipIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" this.internshipIndex \u003d internshipIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" if (internshipIndex.getOneBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" Internship internshipToDeleteTask \u003d lastShownList.get(internshipIndex.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" if (taskIndex.getOneBased() \u003e internshipToDeleteTask.getTaskList().getTaskListSize()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" Task taskToDelete \u003d internshipToDeleteTask.getTaskList().getTask(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" internshipToDeleteTask.getTaskList().deleteTask(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" // This is necessary to trigger the UI to update","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" model.setInternship(internshipToDeleteTask, internshipToDeleteTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, taskToDelete));","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-30"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-30"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof InternshipDeleteTaskCommand)) {","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand otherDeleteCommand \u003d (InternshipDeleteTaskCommand) other;","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" return internshipIndex.equals(otherDeleteCommand.internshipIndex)","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 taskIndex.equals(otherDeleteCommand.taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-30"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" .add(\"internshipIndex\", internshipIndex)","lastModifiedDate":"2024-03-30"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" .add(\"taskIndex\", taskIndex)","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" .toString();","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"jieqiboh":93,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/commands/InternshipEditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" * Edits the details of an existing internship in the internship data.","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"public class InternshipEditCommand extends InternshipCommand {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the internship identified \"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" + \"by the index number used in the displayed internship data. \"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" + \"At least one field to edit must be provided. \"","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" + \"Parameters: INDEX (must be a positive integer) \\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_COMPANY + \" COMPANY_NAME]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_CONTACT_NAME + \" CONTACT_NAME]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_CONTACT_EMAIL + \" CONTACT_EMAIL]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_CONTACT_NUMBER + \" CONTACT_NUMBER]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_LOCATION + \" LOCATION]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_STATUS + \" STATUS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_DESCRIPTION + \" DESCRIPTION]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_ROLE + \" ROLE]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_REMARK + \" REMARK]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" + PREFIX_CONTACT_EMAIL + \" john@example.com \"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" + PREFIX_CONTACT_NUMBER + \" 96661666\";","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_EDIT_INTERNSHIP_SUCCESS \u003d \"Internship edited! New edited internship: %1$s\";","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_DUPLICATE_INTERNSHIP \u003d \"This entry already exists in the internship data.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" private final Index index;","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" private final EditInternshipDescriptor editInternshipDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" * @param index of the internship in the filtered internship list to edit","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" * @param editInternshipDescriptor details to edit the internship with","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" public InternshipEditCommand(Index index, EditInternshipDescriptor editInternshipDescriptor) {","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" requireNonNull(editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" this.editInternshipDescriptor \u003d new EditInternshipDescriptor(editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" // This is the internship being displayed by the UI.","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" Internship currentSelectedInternship \u003d model.getSelectedInternship().get(0);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" Internship internshipToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" boolean isCurrentSelectedInternshipBeingEdited \u003d currentSelectedInternship.equals(internshipToEdit);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d createEditedInternship(internshipToEdit, editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" if (!internshipToEdit.isSameInternship(editedInternship) \u0026\u0026 model.hasInternship(editedInternship)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" throw new CommandException(MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" model.setInternship(internshipToEdit, editedInternship);","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" if (isCurrentSelectedInternshipBeingEdited) {","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" // This maintains the selected internship across the edit.","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" model.setSelectedInternship(editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship)));","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" * Creates and returns a {@code Internship} with the details of {@code internshipToEdit}","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" * edited with {@code editInternshipDescriptor}.","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" private static Internship createEditedInternship(Internship internshipToEdit,","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor editInternshipDescriptor) {","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" assert internshipToEdit !\u003d null;","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" CompanyName updatedCompanyName \u003d editInternshipDescriptor.getCompanyName()","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getCompanyName());","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" Location updatedLocation \u003d editInternshipDescriptor.getLocation()","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getLocation());","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" Description updatedDescription \u003d editInternshipDescriptor.getDescription()","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getDescription());","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" Role updatedRole \u003d editInternshipDescriptor.getRole().orElse(internshipToEdit","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" .getRole());","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" ContactName updatedContactName \u003d editInternshipDescriptor.getContactName()","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getContactName());","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" ContactEmail updatedContactEmail \u003d editInternshipDescriptor.getContactEmail()","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getContactEmail());","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" ContactNumber updatedContactNumber \u003d editInternshipDescriptor.getContactNumber()","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getContactNumber());","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" ApplicationStatus updatedApplicationStatus \u003d editInternshipDescriptor.getApplicationStatus()","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getApplicationStatus());","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" Remark updatedRemark \u003d editInternshipDescriptor.getRemark().orElse(internshipToEdit.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" // edit command cannot be used to edit task list","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d editInternshipDescriptor.getTaskList().orElse(internshipToEdit.getTaskList());","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" return new Internship(updatedCompanyName, updatedContactName, updatedContactEmail, updatedContactNumber,","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" updatedLocation, updatedApplicationStatus, updatedDescription, updatedRole, updatedRemark, taskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof InternshipEditCommand)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand otherEditCommand \u003d (InternshipEditCommand) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 editInternshipDescriptor.equals(otherEditCommand.editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":" .add(\"editInternshipDescriptor\", editInternshipDescriptor)","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" .toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":170,"author":{"gitId":"LWS49"},"content":" * Stores the details to edit the internship with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"LWS49"},"content":" * corresponding field value of the internship.","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":" public static class EditInternshipDescriptor {","lastModifiedDate":"2024-03-14"},{"lineNumber":174,"author":{"gitId":"LWS49"},"content":" private CompanyName companyName;","lastModifiedDate":"2024-03-14"},{"lineNumber":175,"author":{"gitId":"LWS49"},"content":" private Location location;","lastModifiedDate":"2024-03-14"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":" private Description description;","lastModifiedDate":"2024-03-14"},{"lineNumber":177,"author":{"gitId":"LWS49"},"content":" private Role role;","lastModifiedDate":"2024-03-14"},{"lineNumber":178,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":179,"author":{"gitId":"LWS49"},"content":" private ContactName contactName;","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"LWS49"},"content":" private ContactEmail contactEmail;","lastModifiedDate":"2024-03-14"},{"lineNumber":181,"author":{"gitId":"LWS49"},"content":" private ContactNumber contactNumber;","lastModifiedDate":"2024-03-14"},{"lineNumber":182,"author":{"gitId":"LWS49"},"content":" private ApplicationStatus applicationStatus;","lastModifiedDate":"2024-03-14"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" private TaskList taskList;","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-14"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptor(EditInternshipDescriptor toCopy) {","lastModifiedDate":"2024-03-14"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" setCompanyName(toCopy.companyName);","lastModifiedDate":"2024-03-14"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":" setLocation(toCopy.location);","lastModifiedDate":"2024-03-14"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":" setDescription(toCopy.description);","lastModifiedDate":"2024-03-14"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":" setRole(toCopy.role);","lastModifiedDate":"2024-03-14"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":" setContactName(toCopy.contactName);","lastModifiedDate":"2024-03-14"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":" setContactEmail(toCopy.contactEmail);","lastModifiedDate":"2024-03-14"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" setContactNumber(toCopy.contactNumber);","lastModifiedDate":"2024-03-14"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":" setApplicationStatus(toCopy.applicationStatus);","lastModifiedDate":"2024-03-14"},{"lineNumber":198,"author":{"gitId":"jieqiboh"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":" setTaskList(toCopy.taskList);","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptor() {}","lastModifiedDate":"2024-03-14"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-14"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-14"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":" return CollectionUtil.isAnyNonNull(companyName, location, description, role, contactName,","lastModifiedDate":"2024-03-14"},{"lineNumber":209,"author":{"gitId":"jieqiboh"},"content":" contactEmail, contactNumber, applicationStatus, remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":" public void setCompanyName(CompanyName companyName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":212,"author":{"gitId":"LWS49"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-03-14"},{"lineNumber":213,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":214,"author":{"gitId":"LWS49"},"content":" public Optional\u003cCompanyName\u003e getCompanyName() {","lastModifiedDate":"2024-03-14"},{"lineNumber":215,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(companyName);","lastModifiedDate":"2024-03-14"},{"lineNumber":216,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":217,"author":{"gitId":"LWS49"},"content":" public void setLocation(Location location) {","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"LWS49"},"content":" this.location \u003d location;","lastModifiedDate":"2024-03-15"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":" public Optional\u003cLocation\u003e getLocation() {","lastModifiedDate":"2024-03-15"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(location);","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":223,"author":{"gitId":"LWS49"},"content":" public void setDescription(Description description) {","lastModifiedDate":"2024-03-15"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-15"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":" public Optional\u003cDescription\u003e getDescription() {","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(description);","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":" public void setRole(Role role) {","lastModifiedDate":"2024-03-15"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":" public Optional\u003cRole\u003e getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":" public void setContactName(ContactName contactName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":" public Optional\u003cContactName\u003e getContactName() {","lastModifiedDate":"2024-03-15"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(contactName);","lastModifiedDate":"2024-03-15"},{"lineNumber":240,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":241,"author":{"gitId":"LWS49"},"content":" public void setContactEmail(ContactEmail contactEmail) {","lastModifiedDate":"2024-03-15"},{"lineNumber":242,"author":{"gitId":"LWS49"},"content":" this.contactEmail \u003d contactEmail;","lastModifiedDate":"2024-03-15"},{"lineNumber":243,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":244,"author":{"gitId":"LWS49"},"content":" public Optional\u003cContactEmail\u003e getContactEmail() {","lastModifiedDate":"2024-03-15"},{"lineNumber":245,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(contactEmail);","lastModifiedDate":"2024-03-15"},{"lineNumber":246,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":247,"author":{"gitId":"LWS49"},"content":" public void setContactNumber(ContactNumber contactNumber) {","lastModifiedDate":"2024-03-15"},{"lineNumber":248,"author":{"gitId":"LWS49"},"content":" this.contactNumber \u003d contactNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":249,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":250,"author":{"gitId":"LWS49"},"content":" public Optional\u003cContactNumber\u003e getContactNumber() {","lastModifiedDate":"2024-03-15"},{"lineNumber":251,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(contactNumber);","lastModifiedDate":"2024-03-15"},{"lineNumber":252,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":253,"author":{"gitId":"LWS49"},"content":" public void setApplicationStatus(ApplicationStatus applicationStatus) {","lastModifiedDate":"2024-03-15"},{"lineNumber":254,"author":{"gitId":"LWS49"},"content":" this.applicationStatus \u003d applicationStatus;","lastModifiedDate":"2024-03-15"},{"lineNumber":255,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":256,"author":{"gitId":"LWS49"},"content":" public Optional\u003cApplicationStatus\u003e getApplicationStatus() {","lastModifiedDate":"2024-03-15"},{"lineNumber":257,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(applicationStatus);","lastModifiedDate":"2024-03-15"},{"lineNumber":258,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":259,"author":{"gitId":"jieqiboh"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"jieqiboh"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":265,"author":{"gitId":"LWS49"},"content":" public void setTaskList(TaskList taskList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":266,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"LWS49"},"content":" public Optional\u003cTaskList\u003e getTaskList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(taskList);","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":271,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":272,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":273,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":274,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":275,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":276,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":277,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":278,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":279,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof EditInternshipDescriptor)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":280,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":281,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":282,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":283,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor otherEditInternshipDescriptor \u003d (EditInternshipDescriptor) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":284,"author":{"gitId":"LWS49"},"content":" return Objects.equals(companyName, otherEditInternshipDescriptor.companyName)","lastModifiedDate":"2024-03-14"},{"lineNumber":285,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(location, otherEditInternshipDescriptor.location)","lastModifiedDate":"2024-03-14"},{"lineNumber":286,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(description, otherEditInternshipDescriptor.description)","lastModifiedDate":"2024-03-14"},{"lineNumber":287,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(role, otherEditInternshipDescriptor.role)","lastModifiedDate":"2024-03-14"},{"lineNumber":288,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(contactName, otherEditInternshipDescriptor.contactName)","lastModifiedDate":"2024-03-14"},{"lineNumber":289,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(contactEmail, otherEditInternshipDescriptor.contactEmail)","lastModifiedDate":"2024-03-14"},{"lineNumber":290,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(contactNumber, otherEditInternshipDescriptor.contactNumber)","lastModifiedDate":"2024-03-14"},{"lineNumber":291,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 Objects.equals(applicationStatus, otherEditInternshipDescriptor.applicationStatus)","lastModifiedDate":"2024-03-19"},{"lineNumber":292,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 Objects.equals(remark, otherEditInternshipDescriptor.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":293,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":294,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":295,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":296,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":297,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-14"},{"lineNumber":298,"author":{"gitId":"LWS49"},"content":" .add(\"Company Name\", companyName)","lastModifiedDate":"2024-03-14"},{"lineNumber":299,"author":{"gitId":"LWS49"},"content":" .add(\"Location\", location)","lastModifiedDate":"2024-03-14"},{"lineNumber":300,"author":{"gitId":"LWS49"},"content":" .add(\"Description\", description)","lastModifiedDate":"2024-03-14"},{"lineNumber":301,"author":{"gitId":"LWS49"},"content":" .add(\"Role\", role)","lastModifiedDate":"2024-03-14"},{"lineNumber":302,"author":{"gitId":"LWS49"},"content":" .add(\"Contact Name\", contactName)","lastModifiedDate":"2024-03-14"},{"lineNumber":303,"author":{"gitId":"LWS49"},"content":" .add(\"Contact Email\", contactEmail)","lastModifiedDate":"2024-03-14"},{"lineNumber":304,"author":{"gitId":"LWS49"},"content":" .add(\"Contact Number\", contactNumber)","lastModifiedDate":"2024-03-14"},{"lineNumber":305,"author":{"gitId":"LWS49"},"content":" .add(\"Application Status\", applicationStatus)","lastModifiedDate":"2024-03-14"},{"lineNumber":306,"author":{"gitId":"jieqiboh"},"content":" .add(\"Remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":307,"author":{"gitId":"LWS49"},"content":" .add(\"Task List\", taskList)","lastModifiedDate":"2024-04-02"},{"lineNumber":308,"author":{"gitId":"LWS49"},"content":" .toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":309,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":310,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":311,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":25,"LWS49":275,"CaptainKeqing":11}},{"path":"src/main/java/seedu/address/logic/commands/InternshipExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipExitCommand extends InternshipCommand {","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting CareerSync as requested ...\";","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"-":14,"CaptainKeqing":4}},{"path":"src/main/java/seedu/address/logic/commands/InternshipFindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.InternshipFindCommandParser;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.InternshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * Finds and lists all internships in internship data whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipFindCommand extends InternshipCommand {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MODE_WITHALL \u003d \"withall\";","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MODE_WITHANY \u003d \"withany\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all internships whose fields match the keywords \"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" + \"and displays them as a list with index numbers. \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" + \"Parameters:\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" + \"MODE: \u0027withall\u0027 or \u0027withany\u0027. To specify if the search has to match every \"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" + \"prefix-keywords predicate or any prefix-keywords predicate.\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" + \"KEYWORDS: One or more keywords separated by whitespace that will be matched against \"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" + \"the preceding prefix. With more than one keyword, internships with fields matching any of the keywords\"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" + \" will be accepted for the predicate, regardless of mode.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_COMPANY + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_CONTACT_NAME + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_LOCATION + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_STATUS + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_DESCRIPTION + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_ROLE + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_REMARK + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" + \"Example: \" + COMMAND_WORD + \" withany \"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" + PREFIX_COMPANY + \" Tiktok Google \" + PREFIX_STATUS + \" accepted\";","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" public static final String NO_SEARCH_KEY_SPECIFIED \u003d \"At least one supported field prefix and keyword \"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" + \"must be specified to be searched.\\nSupported prefixes are \"","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" + Prefix.getPrefixesAsString(\", \", InternshipFindCommandParser.getSupportedPrefixes());","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" public static final String UNSUPPORTED_PREFIX_SPECIFIED \u003d \"Unsupported field prefix specified: %s\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" + \"Please specify only supported prefixes.\\nSupported prefixes are \"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" + Prefix.getPrefixesAsString(\", \", InternshipFindCommandParser.getSupportedPrefixes());","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" public static final String INVALID_MODE_SPECIFIED \u003d \"Invalid mode specified. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" + \"Please specify either \u0027withall\u0027 or \u0027withany\u0027.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" public static final String NO_KEYWORD_SPECIFIED \u003d \"At least one keyword must be specified for each field prefix.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipFindCommand(InternshipContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" model.updateFilteredInternshipList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipMessages.MESSAGE_INTERNSHIPS_LISTED_OVERVIEW,","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" model.getFilteredInternshipList().size()));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" if (!(other instanceof InternshipFindCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand otherFindCommand \u003d (InternshipFindCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"CaptainKeqing":91}},{"path":"src/main/java/seedu/address/logic/commands/InternshipHelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipHelpCommand extends InternshipCommand {","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"-":18,"CaptainKeqing":3}},{"path":"src/main/java/seedu/address/logic/commands/InternshipListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" * Lists all internships in the internship list to the user.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipListCommand extends InternshipCommand {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all internships\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"CaptainKeqing":24}},{"path":"src/main/java/seedu/address/logic/commands/InternshipRemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * Changes the remark of an existing internship in the internship.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"public class InternshipRemarkCommand extends InternshipCommand {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public static final String COMMAND_WORD \u003d \"addremark\";","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the remark of the internship identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" + \"by the index number used in the last internship listing. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" + PREFIX_REMARK + \" [REMARK]\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" + PREFIX_REMARK + \" Has a behavioural interview.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Internship: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Internship: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private final Index index;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * @param index of the internship in the filtered internship list to edit the remark","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" * @param remark of the internship to be updated to","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public InternshipRemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" Internship internshipToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" Internship editedInternship \u003d new Internship(","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" internshipToEdit.getCompanyName(), internshipToEdit.getContactName(),","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" internshipToEdit.getContactEmail(), internshipToEdit.getContactNumber(),","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" internshipToEdit.getLocation(), internshipToEdit.getApplicationStatus(),","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" internshipToEdit.getDescription(), internshipToEdit.getRole(),","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" remark, internshipToEdit.getTaskList());","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" model.setInternship(internshipToEdit, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" return new CommandResult(generateSuccessMessage(editedInternship));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" * {@code internshipToEdit}.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" private String generateSuccessMessage(Internship internshipToEdit) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" return String.format(message, internshipToEdit);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof InternshipRemarkCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" // state check","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand e \u003d (InternshipRemarkCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jieqiboh":96,"LWS49":1}},{"path":"src/main/java/seedu/address/logic/commands/InternshipSetDeadlineCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" * Adds a deadline to a task in an internship, or replaces the deadline if there already is one.","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"public class InternshipSetDeadlineCommand extends InternshipCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" public static final String COMMAND_WORD \u003d \"setdeadline\";","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Add a deadline to the task of the internship \"","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" + \"identified by the index number used in the displayed internship data. \"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" + \"Parameters: INDEX_INTERNSHIP (must be a positive integer)\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" + PREFIX_SELECT_TASK + \" INDEX_TASK (must be a positive integer)\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" + PREFIX_DEADLINE + \" DEADLINE\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" + Deadline.MESSAGE_CONSTRAINTS + \"\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \" + PREFIX_SELECT_TASK + \" 1 \"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" + PREFIX_DEADLINE + \" 20/04/2024\";","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_ADD_DEADLINE_SUCCESS \u003d \"Deadline Added: %1$s\";","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" private final Index internshipIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" private final Deadline deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" * @param internshipIndex index of the internship in the filtered internship list to edit","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" * @param taskIndex index of the task in the selected internship to edit","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" * @param deadline deadline of the task to be added","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" public InternshipSetDeadlineCommand(Index internshipIndex, Index taskIndex, Deadline deadline) {","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" requireNonNull(internshipIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" requireNonNull(taskIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" this.internshipIndex \u003d internshipIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" if (internshipIndex.getOneBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" Internship internshipToSetDeadline \u003d lastShownList.get(internshipIndex.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" if (taskIndex.getOneBased() \u003e internshipToSetDeadline.getTaskList().getTaskListSize()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" internshipToSetDeadline.getTaskList().getTask(taskIndex.getZeroBased()).setDeadline(deadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" // This is necessary to trigger the UI to update the displayed deadline","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" model.setInternship(internshipToSetDeadline, internshipToSetDeadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" return new CommandResult(String.format(MESSAGE_ADD_DEADLINE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" deadline));","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof InternshipSetDeadlineCommand)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand otherSetDeadlineCommand \u003d (InternshipSetDeadlineCommand) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" return internshipIndex.equals(otherSetDeadlineCommand.internshipIndex)","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 taskIndex.equals(otherSetDeadlineCommand.taskIndex)","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 deadline.equals(otherSetDeadlineCommand.deadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" .add(\"internshipIndex\", internshipIndex)","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" .add(\"taskIndex\", taskIndex)","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" .add(\"deadline\", deadline)","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":102,"CaptainKeqing":2}},{"path":"src/main/java/seedu/address/logic/commands/InternshipSortCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.InternshipSortCommandParser;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" * Sorts all internships in the Internship Data based on specified field and displays them as a list with index numbers.","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSortCommand extends InternshipCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" public static final String COMMAND_WORD \u003d \"sort\";","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" public static final String ORDER_ASCENDING \u003d \"asc\";","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" public static final String ORDER_DESCENDING \u003d \"desc\";","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sorts all internships based on specified field\"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" + \" (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" + \"Parameters: FIELD ORDER \\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" + \"FIELD: One of the following field \\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_COMPANY + \": Company Name\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NAME + \": Contact Name\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NUMBER + \": Contact Number\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_EMAIL + \": Contact Email\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_LOCATION + \": Location\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_STATUS + \": Status\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_DESCRIPTION + \": Description\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_ROLE + \": Role\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_REMARK + \": Remark\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" + \"ORDER: \" + ORDER_ASCENDING + \" or \" + ORDER_DESCENDING + \", to specify ascending or descending order\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" + \"Example: \" + COMMAND_WORD + \" /com \" + ORDER_ASCENDING + \"\\n\";","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_INVALID_FIELD \u003d \"Invalid field specified. Please specify one of the following:\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_COMPANY + \": Company Name\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NAME + \": Contact Name\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NUMBER + \": Contact Number\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_EMAIL + \": Contact Email\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_LOCATION + \": Location\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_STATUS + \": Status\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_DESCRIPTION + \": Description\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_ROLE + \": Role\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_REMARK + \": Remark\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" + \"Example: \" + COMMAND_WORD + \" /com \" + ORDER_ASCENDING + \"\\n\";","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_INVALID_ORDER \u003d \"Invalid order specified. Please specify either \"","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" + ORDER_ASCENDING + \" to sort in ascending order or \" + ORDER_DESCENDING","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" + \" to sort in descending order.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" + \"Example: \" + COMMAND_WORD + \" /com \" + ORDER_ASCENDING + \"\\n\";","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_NO_FIELD \u003d \"Please specify one of the following fields to sort by: \"","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_COMPANY + \": Company Name\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NAME + \": Contact Name\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NUMBER + \": Contact Number\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_EMAIL + \": Contact Email\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_LOCATION + \": Location\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_STATUS + \": Status\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_DESCRIPTION + \": Description\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_ROLE + \": Role\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_REMARK + \": Remark\\n\";;","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_NO_ORDER \u003d \"Please specify the order to sort by: \"","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" + ORDER_ASCENDING + \" to sort in ascending order or \" + ORDER_DESCENDING + \" to sort in descending order.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_EXTRA_ARGUMENTS \u003d \"Extra arguments detected. Please only specify one \"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" + \"field and one order.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" + \"Example: \" + COMMAND_WORD + \" /com \" + ORDER_ASCENDING + \"\\n\";","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" private final InternshipSortCommandParser.FieldEnum field;","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" private final InternshipSortCommandParser.OrderEnum order;","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" * Creates an InternshipSortCommand to sort internships based on the specified field and order.","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public InternshipSortCommand(InternshipSortCommandParser.FieldEnum field,","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(field);","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" this.field \u003d field;","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" if (order \u003d\u003d InternshipSortCommandParser.OrderEnum.DESCENDING) {","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d InternshipSortCommandParser.getComparator(field, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" } else {","lastModifiedDate":"2024-03-27"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d InternshipSortCommandParser.getComparator(field, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" String.format(InternshipMessages.MESSAGE_INTERNSHIPS_LISTED_OVERVIEW,","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" model.getFilteredInternshipList().size()));","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof InternshipSortCommand)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand otherCommand \u003d (InternshipSortCommand) other;","lastModifiedDate":"2024-03-27"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" return this.field.equals(otherCommand.getField()) \u0026\u0026 this.order.equals(otherCommand.getOrder());","lastModifiedDate":"2024-03-27"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" .add(\"field\", field)","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" .add(\"order\", order)","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" public InternshipSortCommandParser.FieldEnum getField() {","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" return field;","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" public InternshipSortCommandParser.OrderEnum getOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" return order;","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"theman-oj10":137}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an error which occurs during execution of a {@link seedu.address.logic.commands.InternshipCommand}.","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"-":16,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" throw new ParseException(InternshipMessages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public void verifyNoExtraArguments(int validArgs) throws IllegalArgumentException {","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" int count \u003d 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" for (List\u003cString\u003e values : argMultimap.values()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" count +\u003d values.size();","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" if (count \u003e validArgs) {","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" throw new IllegalArgumentException(\"Extra arguments provided. Only \"","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" + validArgs + \" arguments are allowed.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"LWS49":2,"theman-oj10":13,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" /* Prefix Definitions */","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_COMPANY \u003d new Prefix(\"/com\");","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_CONTACT_NAME \u003d new Prefix(\"/poc\");","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_CONTACT_EMAIL \u003d new Prefix(\"/email\");","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_CONTACT_NUMBER \u003d new Prefix(\"/phone\");","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_LOCATION \u003d new Prefix(\"/loc\");","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_STATUS \u003d new Prefix(\"/status\");","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_DESCRIPTION \u003d new Prefix(\"/desc\");","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"/role\");","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"/remark\");","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" public static final Prefix PREFIX_TASK \u003d new Prefix(\"/task\");","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" public static final Prefix PREFIX_SELECT_TASK \u003d new Prefix(\"/selecttask\");","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" public static final Prefix PREFIX_DEADLINE \u003d new Prefix(\"/deadline\");","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jieqiboh":1,"HM33-Stu":8,"LWS49":4,"-":7}},{"path":"src/main/java/seedu/address/logic/parser/InternshipAddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" * Parses input arguments and creates a new InternshipAddCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommandParser implements InternshipParser\u003cInternshipAddCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipAddCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" * and returns an InternshipAddCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" public InternshipAddCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_COMPANY, PREFIX_DESCRIPTION, PREFIX_STATUS, PREFIX_CONTACT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_ROLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_COMPANY, PREFIX_DESCRIPTION, PREFIX_STATUS, PREFIX_CONTACT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipAddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_COMPANY, PREFIX_DESCRIPTION, PREFIX_STATUS, PREFIX_CONTACT_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_ROLE);","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" CompanyName com \u003d InternshipParserUtil.parseCompanyName(argMultimap.getValue(PREFIX_COMPANY).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" ContactName poc \u003d InternshipParserUtil.parseContactName(argMultimap.getValue(PREFIX_CONTACT_NAME).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" ContactEmail email \u003d InternshipParserUtil.parseContactEmail(argMultimap.getValue(PREFIX_CONTACT_EMAIL).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" ContactNumber phone \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" InternshipParserUtil.parseContactNumber(argMultimap.getValue(PREFIX_CONTACT_NUMBER).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" Location loc \u003d InternshipParserUtil.parseOptionalLocation(argMultimap.getValue(PREFIX_LOCATION));","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" ApplicationStatus status \u003d InternshipParserUtil.parseStatus(argMultimap.getValue(PREFIX_STATUS).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":" Description desc \u003d InternshipParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" Role role \u003d InternshipParserUtil.parseOptionalRole(argMultimap.getValue(PREFIX_ROLE));","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" Remark remark \u003d new Remark(\"\"); // Add Command does not allow adding remarks immediately","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" TaskList taskList \u003d new TaskList(); // Add Command does not allow adding tasks immediately (for now)","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" Internship internship \u003d new Internship(com, poc, email, phone, loc, status, desc, role, remark, taskList);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" return new InternshipAddCommand(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"jieqiboh":11,"HM33-Stu":55,"LWS49":1,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/parser/InternshipAddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipAddTaskCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" * Parses input arguments and creates a new InternshipAddTaskCommand object","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"public class InternshipAddTaskCommandParser implements InternshipParser\u003cInternshipAddTaskCommand\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipAddTaskCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" * and returns an InternshipAddTaskCommand object for execution.","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" public InternshipAddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" Index index;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" Task task;","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getPreamble().isEmpty() || argMultimap.getValue(PREFIX_TASK).isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" index \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" task \u003d InternshipParserUtil.parseTask(argMultimap.getValue(PREFIX_TASK).get());","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand.MESSAGE_EMPTY_TASK), pe);","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TASK);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" return new InternshipAddTaskCommand(index, task);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":4,"LWS49":48}},{"path":"src/main/java/seedu/address/logic/parser/InternshipDataParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipAddTaskCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipClearCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipDeleteCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.InternshipDeleteTaskCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipEditCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipExitCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipFindCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipHelpCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipListCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipRemarkCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipSetDeadlineCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipSortCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" * Parses user input.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipDataParser {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(InternshipDataParser.class);","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" * @param userInput full user input string","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" * @return the command based on the user input","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipCommand parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" InternshipHelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" // log messages such as the one below.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" switch (commandWord) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipAddCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipAddCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipEditCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipEditCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipDeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipDeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipClearCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipClearCommand();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipFindCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipFindCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipListCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipListCommand();","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipExitCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipExitCommand();","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipHelpCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipHelpCommand();","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" case InternshipRemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" return new InternshipRemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" case InternshipSortCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" return new InternshipSortCommandParser().parse(arguments);","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" case InternshipAddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" return new InternshipAddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" case InternshipSetDeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" return new InternshipSetDeadlineCommandParser().parse(arguments);","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" case InternshipDeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" return new InternshipDeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" default:","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jieqiboh":7,"LWS49":8,"theman-oj10":14,"CaptainKeqing":77}},{"path":"src/main/java/seedu/address/logic/parser/InternshipDeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipDeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" * Parses input arguments and creates a new InternshipDeleteCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipDeleteCommandParser implements InternshipParser\u003cInternshipDeleteCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipDeleteCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" * and returns a InternshipDeleteCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" public InternshipDeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" Index index;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" index \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" return new InternshipDeleteCommand(index);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":41}},{"path":"src/main/java/seedu/address/logic/parser/InternshipDeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.InternshipDeleteTaskCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" * Parses input arguments and creates a new InternshipDeleteTaskCommand object","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"public class InternshipDeleteTaskCommandParser implements InternshipParser\u003cInternshipDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipDeleteTaskCommand","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * and returns an InternshipDeleteTaskCommand object for execution.","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public InternshipDeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_SELECT_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" if (argMultimap.getPreamble().isEmpty() || argMultimap.getValue(PREFIX_SELECT_TASK).isEmpty()) {","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" internshipIndex \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" taskIndex \u003d InternshipParserUtil.parseIndex(argMultimap.getValue(PREFIX_SELECT_TASK).get());","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_TASK_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_SELECT_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" return new InternshipDeleteTaskCommand(internshipIndex, taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"jieqiboh":51}},{"path":"src/main/java/seedu/address/logic/parser/InternshipEditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" * Parses input arguments and creates a new InternshipEditCommand object","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"public class InternshipEditCommandParser implements InternshipParser\u003cInternshipEditCommand\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipEditCommand","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" * and returns an InternshipEditCommand object for execution.","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" public InternshipEditCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_CONTACT_EMAIL,","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" Index index;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" if (!areAnyPrefixesPresent(argMultimap, PREFIX_COMPANY, PREFIX_DESCRIPTION, PREFIX_STATUS, PREFIX_CONTACT_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_ROLE, PREFIX_REMARK)","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" index \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_CONTACT_EMAIL,","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE, PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" EditInternshipDescriptor editInternshipDescriptor \u003d new EditInternshipDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_COMPANY).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setCompanyName(InternshipParserUtil.parseCompanyName(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_COMPANY).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_CONTACT_NAME).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setContactName(InternshipParserUtil.parseContactName(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_CONTACT_NAME).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_CONTACT_NUMBER).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setContactNumber(InternshipParserUtil.parseContactNumber(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_CONTACT_NUMBER).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_CONTACT_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setContactEmail(InternshipParserUtil.parseContactEmail(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_CONTACT_EMAIL).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":" editInternshipDescriptor.setLocation(InternshipParserUtil.parseOptionalLocation(argMultimap","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" .getValue(PREFIX_LOCATION)));","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_STATUS).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setApplicationStatus(InternshipParserUtil.parseStatus(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_STATUS).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setDescription(InternshipParserUtil.parseDescription(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_DESCRIPTION).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_ROLE).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" editInternshipDescriptor.setRole(InternshipParserUtil.parseOptionalRole(argMultimap","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":" .getValue(PREFIX_ROLE)));","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setRemark(InternshipParserUtil.parseRemark(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" .getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" if (!editInternshipDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" throw new ParseException(InternshipEditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" return new InternshipEditCommand(index, editInternshipDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" private static boolean areAnyPrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" return Stream.of(prefixes).anyMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":17,"HM33-Stu":4,"LWS49":86}},{"path":"src/main/java/seedu/address/logic/parser/InternshipFindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipFindCommand.MODE_WITHALL;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipFindCommand.MODE_WITHANY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipParserUtil.anyPrefixesPresent;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipParserUtil.prefixesPresentAreNotEmpty;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipFindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.InternshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * Parses input arguments and creates a new InternshipFindCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipFindCommandParser implements InternshipParser\u003cInternshipFindCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" private static final Prefix[] supportedPrefixes \u003d {PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_LOCATION,","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE, PREFIX_REMARK};","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" private static final Prefix[] unsupportedPrefixes \u003d {PREFIX_CONTACT_EMAIL,","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" PREFIX_CONTACT_NUMBER, PREFIX_SELECT_TASK, PREFIX_TASK, PREFIX_DEADLINE};","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipFindCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" * and returns a InternshipFindCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipFindCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" if (args.trim().isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipFindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentTokenizer.tokenize(args, InternshipFindCommandParser.supportedPrefixes);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap unsupportedArgMultimap \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentTokenizer.tokenize(args, InternshipFindCommandParser.unsupportedPrefixes);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" if (anyPrefixesPresent(unsupportedArgMultimap, InternshipFindCommandParser.unsupportedPrefixes)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] unsupportedPrefixesPresent \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" getPrefixesPresent(unsupportedArgMultimap, InternshipFindCommandParser.unsupportedPrefixes);","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(String.format(InternshipFindCommand.UNSUPPORTED_PREFIX_SPECIFIED,","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" Prefix.getPrefixesAsString(\", \", unsupportedPrefixesPresent)));","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" if (!anyPrefixesPresent(argMultimap, InternshipFindCommandParser.supportedPrefixes)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(InternshipFindCommand.NO_SEARCH_KEY_SPECIFIED);","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" String mode \u003d argMultimap.getPreamble().trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" if (!mode.equals(MODE_WITHALL) \u0026\u0026 !mode.equals(MODE_WITHANY)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(InternshipFindCommand.INVALID_MODE_SPECIFIED);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" if (!prefixesPresentAreNotEmpty(argMultimap, InternshipFindCommandParser.supportedPrefixes)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(InternshipFindCommand.NO_KEYWORD_SPECIFIED);","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(InternshipFindCommandParser.supportedPrefixes);","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipFindCommand(createPredicate(mode, argMultimap));","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" * @param argMultimap map of prefixes and their search keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" * @return a list of predicates that correspond to the prefixes present in the map","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" protected InternshipContainsKeywordsPredicate createPredicate(String mode, ArgumentMultimap argMultimap) {","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d new InternshipContainsKeywordsPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_COMPANY).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_CONTACT_NAME).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_LOCATION).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_STATUS).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_DESCRIPTION).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_ROLE).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_REMARK).orElse(null),","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" Objects.equals(mode, MODE_WITHALL));","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" return predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" * @return an array of the supported prefixes","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" public static Prefix[] getSupportedPrefixes() {","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" return supportedPrefixes.clone();","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" * @return an array of the prefixes from {@code prefixes} that are present in the given {@code ArgumentMultimap}","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" protected static Prefix[] getPrefixesPresent(ArgumentMultimap argMultimap, Prefix[] prefixes) {","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" return Arrays.stream(prefixes).filter(prefix -\u003e argMultimap.getValue(prefix).isPresent())","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"CaptainKeqing":113}},{"path":"src/main/java/seedu/address/logic/parser/InternshipParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a Parser that is able to parse user input into a {@code InternshipCommand} of type {@code T}.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"public interface InternshipParser\u003cT extends InternshipCommand\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":2,"-":13,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/parser/InternshipParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipSortCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"public class InternshipParserUtil {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index has to be a positive number! (1,2,3...).\";","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" * trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String companyName} into a {@code CompanyName}.","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" public static CompanyName parseCompanyName(String companyName) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" requireNonNull(companyName);","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" String trimmedName \u003d companyName.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" if (!CompanyName.isValidCompanyName(trimmedName)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" throw new ParseException(CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" return new CompanyName(trimmedName);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String description} into a {@code Description}.","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code description} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" public static Description parseDescription(String description) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" if (!Description.isValidDescription(trimmedDescription)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" return new Description(trimmedDescription);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String contactName} into a {@code ContactName}.","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code contactName} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" public static ContactName parseContactName(String contactName) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" requireNonNull(contactName);","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" String trimmedContactName \u003d contactName.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" if (!ContactName.isValidContactName(trimmedContactName)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" throw new ParseException(ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" return new ContactName(trimmedContactName);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String contactNumber} into a {@code ContactNumber}.","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code contactNumber} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" public static ContactNumber parseContactNumber(String contactNumber) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" requireNonNull(contactNumber);","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" String trimmedContactNumber \u003d contactNumber.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" if (!ContactNumber.isValidContactNumber(trimmedContactNumber)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" throw new ParseException(ContactNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" return new ContactNumber(trimmedContactNumber);","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String contactEmail} into a {@code ContactEmail}.","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code contactEmail} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" public static ContactEmail parseContactEmail(String contactEmail) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" requireNonNull(contactEmail);","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" String trimmedContactEmail \u003d contactEmail.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" if (!ContactEmail.isValidContactEmail(trimmedContactEmail)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" throw new ParseException(ContactEmail.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" return new ContactEmail(trimmedContactEmail);","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String status} into a {@code ApplicationStatus}.","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code status} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" public static ApplicationStatus parseStatus(String status) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" String trimmedStatus \u003d status.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" if (!ApplicationStatus.isValidApplicationStatus(trimmedStatus)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" throw new ParseException(ApplicationStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" return new ApplicationStatus(trimmedStatus);","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"HM33-Stu"},"content":" * Parses a {@code String role} into a {@code Role}.","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"HM33-Stu"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"HM33-Stu"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"HM33-Stu"},"content":" public static Role parseOptionalRole(Optional\u003cString\u003e role) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"HM33-Stu"},"content":" if (role.isEmpty()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"HM33-Stu"},"content":" return new Role(\"Unknown Role\");","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(role);","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"HM33-Stu"},"content":" String trimmedRole \u003d role.get().trim();","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"HM33-Stu"},"content":" if (!Role.isValidRole(trimmedRole)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":149,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"HM33-Stu"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" * Parses a {@code String remark} into a {@code Remark}.","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" * @throws ParseException if the given {@code remark} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" public static Remark parseRemark(String remark) {","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":" * Parses a {@code String order} into a {@code InternshipSortCommandParser.OrderEnum}.","lastModifiedDate":"2024-03-30"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-30"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" *","lastModifiedDate":"2024-03-30"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" * @throws ParseException if the given {@code order} is invalid.","lastModifiedDate":"2024-03-30"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" public static InternshipSortCommandParser.OrderEnum parseOrder(String order) throws ParseException {","lastModifiedDate":"2024-03-30"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-30"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" String trimmedOrder \u003d order.trim();","lastModifiedDate":"2024-03-30"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" if (!InternshipSortCommandParser.OrderEnum.isValidOrder(trimmedOrder)) {","lastModifiedDate":"2024-03-30"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_INVALID_ORDER);","lastModifiedDate":"2024-03-30"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum orderEnum \u003d InternshipSortCommandParser","lastModifiedDate":"2024-03-30"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" .OrderEnum.getOrderEnum(trimmedOrder);","lastModifiedDate":"2024-03-30"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" return orderEnum;","lastModifiedDate":"2024-03-30"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":183,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String task} into a {@code task}.","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code task} is invalid.","lastModifiedDate":"2024-03-26"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" public static Task parseTask(String task) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":" String trimmedTask \u003d task.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":" if (!Task.isValidTask(trimmedTask)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":" throw new ParseException(Task.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-27"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":" return new Task(trimmedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":198,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String deadline} into a {@code Deadline}.","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code deadline} is invalid.","lastModifiedDate":"2024-03-26"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":" public static Deadline parseDeadline(String deadline) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" String trimmedDeadline \u003d deadline.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":" if (!Deadline.isValidDeadline(trimmedDeadline)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":" throw new ParseException(Deadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":" return new Deadline(trimmedDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":212,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"HM33-Stu"},"content":" * Parses a {@code String location} into a {@code Location}.","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"HM33-Stu"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"HM33-Stu"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"HM33-Stu"},"content":" * @throws ParseException if the given {@code location} is invalid.","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"HM33-Stu"},"content":" public static Location parseOptionalLocation(Optional\u003cString\u003e location) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":220,"author":{"gitId":"HM33-Stu"},"content":" if (location.isEmpty()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":221,"author":{"gitId":"HM33-Stu"},"content":" return new Location(\"UNKNOWN\");","lastModifiedDate":"2024-04-03"},{"lineNumber":222,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":223,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(location);","lastModifiedDate":"2024-04-03"},{"lineNumber":224,"author":{"gitId":"HM33-Stu"},"content":" String trimmedLocation \u003d location.get().trim();","lastModifiedDate":"2024-04-02"},{"lineNumber":225,"author":{"gitId":"HM33-Stu"},"content":" if (!Location.isValidLocation(trimmedLocation)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":226,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":227,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":228,"author":{"gitId":"HM33-Stu"},"content":" return new Location(trimmedLocation);","lastModifiedDate":"2024-04-02"},{"lineNumber":229,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":230,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":231,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":232,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":233,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true if any of the prefixes contains {@code Optional} values, which are possibly empty, in the given","lastModifiedDate":"2024-04-02"},{"lineNumber":234,"author":{"gitId":"CaptainKeqing"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-02"},{"lineNumber":235,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":236,"author":{"gitId":"CaptainKeqing"},"content":" public static boolean anyPrefixesPresent(ArgumentMultimap argMulMap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":237,"author":{"gitId":"CaptainKeqing"},"content":" return Stream.of(prefixes).anyMatch(prefix -\u003e argMulMap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-02"},{"lineNumber":238,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":239,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":240,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":241,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true if all prefixes present in the {@code ArgumentMultimap} are non-empty.","lastModifiedDate":"2024-04-02"},{"lineNumber":242,"author":{"gitId":"CaptainKeqing"},"content":" * Vacuously true if no prefixes are present.","lastModifiedDate":"2024-04-02"},{"lineNumber":243,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":244,"author":{"gitId":"CaptainKeqing"},"content":" public static boolean prefixesPresentAreNotEmpty(ArgumentMultimap argMulMap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":245,"author":{"gitId":"CaptainKeqing"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"CaptainKeqing"},"content":" argMulMap.getValue(prefix).isEmpty()","lastModifiedDate":"2024-04-02"},{"lineNumber":247,"author":{"gitId":"CaptainKeqing"},"content":" || (argMulMap.getValue(prefix).isPresent() \u0026\u0026 !argMulMap.getValue(prefix).get().isEmpty()));","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":249,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":250,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":251,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true if all the prefixes contains {@code Optional} values, which could be empty, in the given","lastModifiedDate":"2024-04-02"},{"lineNumber":252,"author":{"gitId":"CaptainKeqing"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-02"},{"lineNumber":253,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":254,"author":{"gitId":"CaptainKeqing"},"content":" public static boolean arePrefixesPresent(ArgumentMultimap argMulMap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":255,"author":{"gitId":"CaptainKeqing"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argMulMap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-02"},{"lineNumber":256,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":257,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":258,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":13,"HM33-Stu":39,"LWS49":159,"theman-oj10":18,"CaptainKeqing":29}},{"path":"src/main/java/seedu/address/logic/parser/InternshipRemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.InternshipRemarkCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" * Parses input arguments and creates a new InternshipRemarkCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"public class InternshipRemarkCommandParser {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipRemarkCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" * and returns an InternshipRemarkCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public InternshipRemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" // addremark 1 /remark remark here","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" Index index;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" Remark remark;","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" if (argMultimap.getPreamble().isEmpty() || argMultimap.getValue(PREFIX_REMARK).isEmpty()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" index \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" remark \u003d InternshipParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get());","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_REMARK);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" return new InternshipRemarkCommand(index, remark);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jieqiboh":47}},{"path":"src/main/java/seedu/address/logic/parser/InternshipSetDeadlineCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipSetDeadlineCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" * Parses input arguments and creates a new InternshipSetDeadlineCommand object","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"public class InternshipSetDeadlineCommandParser implements InternshipParser\u003cInternshipSetDeadlineCommand\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipSetDeadlineCommand","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" * and returns an InternshipSetDeadlineCommand object for execution.","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" public InternshipSetDeadlineCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_SELECT_TASK, PREFIX_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" Index internshipIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" Index taskIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" Deadline deadline;","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getPreamble().isEmpty() || argMultimap.getValue(PREFIX_SELECT_TASK).isEmpty()","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" || argMultimap.getValue(PREFIX_DEADLINE).isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" internshipIndex \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" taskIndex \u003d InternshipParserUtil.parseIndex(argMultimap.getValue(PREFIX_SELECT_TASK).get());","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_TASK_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" deadline \u003d InternshipParserUtil.parseDeadline(argMultimap.getValue(PREFIX_DEADLINE).get());","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" Deadline.MESSAGE_CONSTRAINTS), pe);","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_SELECT_TASK, PREFIX_DEADLINE);","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" return new InternshipSetDeadlineCommand(internshipIndex, taskIndex, deadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":6,"LWS49":56}},{"path":"src/main/java/seedu/address/logic/parser/InternshipSortCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.commands.InternshipSortCommand.MESSAGE_EXTRA_ARGUMENTS;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.commands.InternshipSortCommand.ORDER_ASCENDING;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.commands.InternshipSortCommand.ORDER_DESCENDING;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipComparators;","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipSortCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" * Parses input arguments and creates a new InternshipSortCommand object","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSortCommandParser implements InternshipParser\u003cInternshipSortCommand\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" public static final Prefix[] SUPPORTED_PREFIXES \u003d {","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_CONTACT_NUMBER, PREFIX_CONTACT_EMAIL,","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" PREFIX_LOCATION, PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE, PREFIX_REMARK","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" };","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(InternshipSortCommandParser.class);","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" /** Enum of fields to sort by */","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" public enum FieldEnum {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" COMPANY(PREFIX_COMPANY.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" CONTACT_NAME(PREFIX_CONTACT_NAME.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" CONTACT_NUMBER(PREFIX_CONTACT_NUMBER.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" CONTACT_EMAIL(PREFIX_CONTACT_EMAIL.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" DESCRIPTION(PREFIX_DESCRIPTION.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" STATUS(PREFIX_STATUS.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" LOCATION(PREFIX_LOCATION.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" ROLE(PREFIX_ROLE.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" REMARK(PREFIX_REMARK.getPrefix());","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" private final String value;","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" FieldEnum(String value) {","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" this.value \u003d value;","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" public String getValue() {","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" return value;","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" * Returns the {@code FieldEnum} based on the given prefix string.","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" * @param prefixString prefix string","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" * @return the {@code FieldEnum} based on the given prefix string","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" public static FieldEnum fromPrefixString(String prefixString) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" for (FieldEnum field : FieldEnum.values()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" if (field.getValue().equals(prefixString)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" return field;","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_NO_FIELD);","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" /** Enum of order to sort by */","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" public enum OrderEnum {","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" ASCENDING(ORDER_ASCENDING), DESCENDING(ORDER_DESCENDING);","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" private final String value;","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" OrderEnum(String order) {","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" this.value \u003d order;","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public String getValue() {","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" return value;","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" * Returns the {@code OrderEnum} based on the given order.","lastModifiedDate":"2024-03-30"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" * @param order order to sort by","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" * @return the {@code OrderEnum} based on the given order","lastModifiedDate":"2024-03-30"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" public static OrderEnum getOrderEnum(String order) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" isValidOrder(order);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" if (order.equals(ORDER_ASCENDING)) {","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" return ASCENDING;","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" } else {","lastModifiedDate":"2024-03-30"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" return DESCENDING;","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" * Returns true if the given order is valid.","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" * @param trimmedOrder order to sort by","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" * @return true if the given order is valid","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" public static boolean isValidOrder(String trimmedOrder) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(trimmedOrder);","lastModifiedDate":"2024-03-30"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" if (trimmedOrder.equals(ORDER_ASCENDING) || trimmedOrder.equals(ORDER_DESCENDING)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_INVALID_ORDER);","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipSortCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" * and returns an InternshipSortCommand object for execution.","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" public InternshipSortCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-30"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" logger.info(\"Parsing internship sort command with args: \" + args);","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-30"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" String[] splitArgs \u003d trimmedArgs.split(\" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-30"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has no arguments\");","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-30"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipSortCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, SUPPORTED_PREFIXES);","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(SUPPORTED_PREFIXES);","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" if (!anyPrefixesPresent(argMultimap, SUPPORTED_PREFIXES)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has no valid prefixes\");","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_INVALID_FIELD);","lastModifiedDate":"2024-03-30"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" if (splitArgs.length !\u003d 2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" System.out.println(\"HIT\");","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has invalid number of arguments\");","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_EXTRA_ARGUMENTS));","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" OrderEnum parsedOrder \u003d assignOrder(argMultimap);","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" FieldEnum field \u003d assignField(argMultimap);","lastModifiedDate":"2024-03-30"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" argMultimap.verifyNoExtraArguments(2);","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(MESSAGE_EXTRA_ARGUMENTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" return new InternshipSortCommand(field, parsedOrder);","lastModifiedDate":"2024-03-30"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" * Assigns the field to sort by based on the prefixes present in the {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-30"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" * @param argMultimap map of prefixes and their search keywords","lastModifiedDate":"2024-03-30"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" * @return the field to sort by","lastModifiedDate":"2024-03-30"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" protected FieldEnum assignField(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" for (Prefix prefix : SUPPORTED_PREFIXES) {","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" if (argMultimap.getValue(prefix).isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" String prefixString \u003d prefix.getPrefix();","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" return FieldEnum.fromPrefixString(prefixString);","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has no field entered\");","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_INVALID_FIELD);","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" protected OrderEnum assignOrder(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" for (Prefix prefix : SUPPORTED_PREFIXES) {","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" if (argMultimap.getValue(prefix).isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" String order \u003d argMultimap.getValue(prefix).get();","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" return OrderEnum.getOrderEnum(order);","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has no field entered\");","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_NO_ORDER);","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"content":" * Returns true if any of the prefixes are present in the {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" * @param argumentMultimap map of prefixes and their search keywords","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" * @param prefixes prefixes to check for","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" * @return true if any of the prefixes are present in the {@code ArgumentMultimap}","lastModifiedDate":"2024-04-02"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":190,"author":{"gitId":"theman-oj10"},"content":" private static boolean anyPrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes)","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"theman-oj10"},"content":" throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":" for (Prefix prefix : prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":" Optional\u003cString\u003e value \u003d argumentMultimap.getValue(prefix);","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" if (value.isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"theman-oj10"},"content":" if (OrderEnum.isValidOrder(value.get())) {","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e getComparator(InternshipSortCommandParser.FieldEnum field,","lastModifiedDate":"2024-04-02"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" switch (field) {","lastModifiedDate":"2024-04-02"},{"lineNumber":206,"author":{"gitId":"theman-oj10"},"content":" case COMPANY:","lastModifiedDate":"2024-04-02"},{"lineNumber":207,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byCompanyName(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":" case CONTACT_NAME:","lastModifiedDate":"2024-04-02"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byContactName(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":" case CONTACT_NUMBER:","lastModifiedDate":"2024-04-02"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byPhone(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":" case CONTACT_EMAIL:","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byContactEmail(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"theman-oj10"},"content":" case STATUS:","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byApplicationStatus(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"theman-oj10"},"content":" case LOCATION:","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byLocation(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"theman-oj10"},"content":" case ROLE:","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byRole(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":" case REMARK:","lastModifiedDate":"2024-04-02"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byRemark(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" case DESCRIPTION:","lastModifiedDate":"2024-04-02"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byDescription(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" default:","lastModifiedDate":"2024-04-02"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":" throw new IllegalArgumentException(\"Invalid field for sorting: \" + field);","lastModifiedDate":"2024-04-02"},{"lineNumber":226,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":227,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"theman-oj10":228}},{"path":"src/main/java/seedu/address/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A prefix that marks the beginning of an argument in an arguments string.","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Prefix {","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private final String prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public Prefix(String prefix) {","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public String getPrefix() {","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return getPrefix();","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return prefix \u003d\u003d null ? 0 : prefix.hashCode();","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" public static String getPrefixesAsString(String delimiter, Prefix[] prefixes) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" .map(Prefix::toString)","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" .collect(Collectors.joining(delimiter));","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof Prefix)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Prefix otherPrefix \u003d (Prefix) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return prefix.equals(otherPrefix.prefix);","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"-":41,"CaptainKeqing":9}},{"path":"src/main/java/seedu/address/model/InternshipData.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.UniqueInternshipList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" * Wraps all data at the internship-display level","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" * Duplicates are not allowed (by .isSameInternship comparison)","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"public class InternshipData implements ReadOnlyInternshipData {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" private final UniqueInternshipList internshipList;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" * among constructors.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" public InternshipData() {}","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" * Creates an InternshipData using the Internships in the {@code toBeCopied}","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" public InternshipData(ReadOnlyInternshipData toBeCopied) {","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" this();","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" //// list overwrite operations","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" * Replaces the contents of the internship list with {@code internships}.","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" * {@code internships} must not contain duplicate internships.","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" public void setInternships(List\u003cInternship\u003e internships) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" this.internshipList.setInternships(internships);","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" * Resets the existing data of this {@code InternshipData} with {@code newData}.","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" public void resetData(ReadOnlyInternshipData newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" setInternships(newData.getInternshipList());","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" //// internship-level operations","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" * Returns true if a internship with the same identity as {@code internship} exists in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" return internshipList.contains(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" * Adds a internship to the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" * The internship must not already exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" public void addInternship(Internship i) {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" internshipList.add(i);","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" * Replaces the given internship {@code target} in the list with {@code editedInternship}.","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" * {@code target} must exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" * The internship identity of {@code editedInternship} must not be the same as another existing internship in the","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" * internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public void setInternship(Internship target, Internship editedInternship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" internshipList.setInternship(target, editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" * Removes {@code key} from this {@code InternshipData}.","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" * {@code key} must exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" public void removeInternship(Internship key) {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" internshipList.remove(key);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" //// util methods","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" .add(\"Internship list\", internshipList)","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" public ObservableList\u003cInternship\u003e getInternshipList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" return internshipList.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof InternshipData)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" InternshipData otherInternshipData \u003d (InternshipData) other;","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" return internshipList.equals(otherInternshipData.internshipList);","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" return internshipList.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"LWS49":18,"theman-oj10":112}},{"path":"src/main/java/seedu/address/model/InternshipModel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":" * The API of the Model component.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"public interface InternshipModel {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" Predicate\u003cInternship\u003e PREDICATE_SHOW_ALL_INTERNSHIPS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" void setUserPrefs(ReadOnlyInternshipUserPrefs userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" * Returns the user prefs.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" ReadOnlyInternshipUserPrefs getUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" * Returns the user prefs\u0027 internship data file path.","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" * Sets the user prefs internshipData file path.","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" void setInternshipDataFilePath(Path internshipDataFilePath);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" * Replaces internship data with the data in {@code internshipData}.","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" void setInternshipData(ReadOnlyInternshipData internshipData);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" /** Returns the InternshipData */","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" ReadOnlyInternshipData getInternshipData();","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" * Returns true if an internship with the same identity as {@code internship} exists in the internship list.","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" boolean hasInternship(Internship internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" * Deletes the given internship.","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" * The internship must exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" void deleteInternship(Internship target);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" * Adds the given internship.","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" * {@code internship} must not already exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" void addInternship(Internship internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" * Replaces the given internship {@code target} with {@code editedInternship}.","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" * {@code target} must exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" * The internship identity of {@code editedInternship} must not be the same as another existing internship in the","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" * internship list.","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" void setInternship(Internship target, Internship editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" /** Returns an unmodifiable view of the filtered internship list */","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" ObservableList\u003cInternship\u003e getFilteredInternshipList();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" * Updates the filter of the filtered internship list to filter by the given {@code predicate}.","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" void updateFilteredInternshipList(Predicate\u003cInternship\u003e predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" * Sorts the filtered internship list according to the given {@code comparator}.","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" * @throws NullPointerException if {@code comparator} is null.","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" void sortFilteredInternshipList(Comparator\u003cInternship\u003e comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the selected {@code internship} in the model selected internship.","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" * This represents the internship that the user is currently viewing in the detailed internship window.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" void setSelectedInternship(Internship internship);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" * Gets the model\u0027s selected internship, which represents the internship that the user is currently viewing in the","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" * detailed internship window.","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" ObservableList\u003cInternship\u003e getSelectedInternship();","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"LWS49":18,"theman-oj10":77,"CaptainKeqing":11}},{"path":"src/main/java/seedu/address/model/InternshipModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" * Represents the in-memory model of the Internship data.","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"public class InternshipModelManager implements InternshipModel {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(InternshipModelManager.class);","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" private final InternshipData internshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" private final InternshipUserPrefs userPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" private FilteredList\u003cInternship\u003e filteredInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" private SortedList\u003cInternship\u003e sortedInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" // The internship that is currently selected. Even though it is a list, it should only ever show one internship.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" // It is set as a FilteredList, so it can work with the existing UI components.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" private FilteredList\u003cInternship\u003e selectedInternship;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" * Initializes a ModelManager with the given internshipData and userPrefs.","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" public InternshipModelManager(ReadOnlyInternshipData internshipData, ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" requireAllNonNull(internshipData, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" logger.fine(\"Initializing with internship data: \" + internshipData + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" this.internshipData \u003d new InternshipData(internshipData);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" this.userPrefs \u003d new InternshipUserPrefs(userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" filteredInternships \u003d new FilteredList\u003c\u003e(this.internshipData.getInternshipList());","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" sortedInternships \u003d new SortedList\u003c\u003e(filteredInternships);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" selectedInternship \u003d new FilteredList\u003c\u003e(this.internshipData.getInternshipList());","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" public InternshipModelManager() {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" this(new InternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" public void setUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" public ReadOnlyInternshipUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" return userPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" return userPrefs.getInternshipDataFilePath();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" public void setInternshipDataFilePath(Path internshipDataFilePath) {","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" requireNonNull(internshipDataFilePath);","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" userPrefs.setInternshipDataFilePath(internshipDataFilePath);","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d InternshipData \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipData(ReadOnlyInternshipData internshipData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" this.internshipData.resetData(internshipData);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" public ReadOnlyInternshipData getInternshipData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" return internshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" return internshipData.hasInternship(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" public void deleteInternship(Internship target) {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" internshipData.removeInternship(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" public void addInternship(Internship internship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" public void setInternship(Internship target, Internship editedInternship) {","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" requireAllNonNull(target, editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" internshipData.setInternship(target, editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Internship List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" * Returns an unmodifiable view of the list of {@code Internship} backed by the internal list of","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" * {@code versionedInternshipData}","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" public ObservableList\u003cInternship\u003e getFilteredInternshipList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" return sortedInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" * Returns an unmodifiable view of the list of {@code Internship} backed by the internal list of","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" * {@code InternshipData}","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" public void sortFilteredInternshipList(Comparator\u003cInternship\u003e comparator) {","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(comparator);","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" sortedInternships.setComparator(comparator);","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" public void setSelectedInternship(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" selectedInternship.setPredicate(internship::equals);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" public ObservableList\u003cInternship\u003e getSelectedInternship() {","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":" return selectedInternship;","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" public void updateFilteredInternshipList(Predicate\u003cInternship\u003e predicate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" filteredInternships.setPredicate(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof InternshipModelManager)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager otherModelManager \u003d (InternshipModelManager) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" return internshipData.equals(otherModelManager.internshipData)","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" \u0026\u0026 filteredInternships.equals(otherModelManager.filteredInternships);","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"LWS49":15,"theman-oj10":144,"CaptainKeqing":15}},{"path":"src/main/java/seedu/address/model/InternshipUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"public class InternshipUserPrefs implements ReadOnlyInternshipUserPrefs {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" private Path internshipDataFilePath \u003d Paths.get(\"data\" , \"internshipdata.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" public InternshipUserPrefs() {}","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" public InternshipUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" public void resetData(ReadOnlyInternshipUserPrefs newUserPrefs) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" setInternshipDataFilePath(newUserPrefs.getInternshipDataFilePath());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" return internshipDataFilePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipDataFilePath(Path internshipDataFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(internshipDataFilePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" this.internshipDataFilePath \u003d internshipDataFilePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof InternshipUserPrefs)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs otherUserPrefs \u003d (InternshipUserPrefs) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" \u0026\u0026 internshipDataFilePath.equals(otherUserPrefs.internshipDataFilePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" return Objects.hash(guiSettings, internshipDataFilePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" sb.append(\"\\nLocal data file location : \" + internshipDataFilePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"theman-oj10":16,"-":72}},{"path":"src/main/java/seedu/address/model/ReadOnlyInternshipData.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":" * Unmodifiable view of an InternshipData","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"public interface ReadOnlyInternshipData {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":" * Returns an unmodifiable view of the internships list.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" * This list will not contain any duplicate internships.","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" ObservableList\u003cInternship\u003e getInternshipList();","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"LWS49":1,"theman-oj10":16}},{"path":"src/main/java/seedu/address/model/ReadOnlyInternshipUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"public interface ReadOnlyInternshipUserPrefs {","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"theman-oj10":2,"-":14}},{"path":"src/main/java/seedu/address/model/internship/ApplicationStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship\u0027s application status in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ApplicationStatus {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Application statuses have to be either to_apply, pending, \"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" + \"rejected, accepted, or ongoing\";","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" public static final String VALIDATION_REGEX \u003d \"(?i)to_apply|pending|rejected|accepted|ongoing\";","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * Enum of statuses","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" public enum StatusEnum {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" TO_APPLY,","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" PENDING,","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" REJECTED,","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" ACCEPTED,","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" ONGOING","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" private final StatusEnum applicationStatus;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code ApplicationStatus}.","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" * @param applicationStatus A valid application status.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public ApplicationStatus(String applicationStatus) {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(applicationStatus);","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidApplicationStatus(applicationStatus), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" this.applicationStatus \u003d StatusEnum.valueOf(applicationStatus.toUpperCase());","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid ApplicationStatus.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidApplicationStatus(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" return applicationStatus.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof ApplicationStatus)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus otherApplicationStatus \u003d (ApplicationStatus) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" return applicationStatus.equals(otherApplicationStatus.applicationStatus);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" return applicationStatus.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" * Returns the status of the application.","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" public StatusEnum getStatus() {","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" return applicationStatus;","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":64,"theman-oj10":12,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/CompanyName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" * Represents a Company\u0027s name in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCompanyName(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"public class CompanyName {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" \"Company Name should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * Matches one or more alphanumeric characters","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public final String companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code CompanyName}.","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * @param companyName A valid companyName.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public CompanyName(String companyName) {","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(companyName);","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidCompanyName(companyName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid companyName.","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidCompanyName(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" return companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof CompanyName)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" CompanyName otherName \u003d (CompanyName) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" return companyName.equals(otherName.companyName);","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" return companyName.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":62,"LWS49":1,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/CompanyNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" * Tests that a {@code Internship}\u0027s {@code CompanyName} matches any of the keywords given.","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"public class CompanyNameContainsKeywordsPredicate implements Predicate\u003cInternship\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" public CompanyNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" public boolean test(Internship internship) {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(internship.getCompanyName().companyName,","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" keyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof CompanyNameContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" CompanyNameContainsKeywordsPredicate otherCompanyNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" (CompanyNameContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" return keywords.equals(otherCompanyNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":46}},{"path":"src/main/java/seedu/address/model/internship/ContactEmail.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship Contact\u0027s email in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ContactEmail {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * Constructs an {@code ContactEmail}.","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * @param contactEmail A valid contactEmail address.","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public ContactEmail(String contactEmail) {","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(contactEmail);","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidContactEmail(contactEmail), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" value \u003d contactEmail;","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" * Returns if a given string is a valid contactEmail.","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidContactEmail(String test) {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof ContactEmail)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" ContactEmail otherEmail \u003d (ContactEmail) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":12,"-":64,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/ContactName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" * Represents a Company Contact\u0027s name in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactName(String)}","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"public class ContactName {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public final String contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code ContactName}.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" * @param contactName A valid contactName.","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public ContactName(String contactName) {","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(contactName);","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidContactName(contactName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid contactName.","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidContactName(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" return contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof ContactName)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" ContactName otherName \u003d (ContactName) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" return contactName.equals(otherName.contactName);","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" return contactName.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":17,"LWS49":1,"-":48}},{"path":"src/main/java/seedu/address/model/internship/ContactNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship Contact\u0027s contactNumber in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactNumber(String)}","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"public class ContactNumber {","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" \"Contact Number should only contain numbers, and it should be at least 7 digits long\";","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{7,}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code ContactNumber}.","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * @param contactNumber A valid contactNumber.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public ContactNumber(String contactNumber) {","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(contactNumber);","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidContactNumber(contactNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" value \u003d contactNumber;","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid contactNumber.","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidContactNumber(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof seedu.address.model.internship.ContactNumber)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" seedu.address.model.internship.ContactNumber otherContactNumber \u003d","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" (seedu.address.model.internship.ContactNumber) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" return value.equals(otherContactNumber.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":58,"LWS49":2,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an internship\u0027s deadline in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"public class Deadline {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" \"Deadline must be in the form DD/MM/YYYY, and be a valid date.\";","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" * The date format of the deadline.","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" private static final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" public final String deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" * Constructs a {@code Deadline}.","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" * @param deadline A valid deadline.","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" public Deadline(String deadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" checkArgument(isValidDeadline(deadline), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" * Returns true if a given string is a valid role.","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public static boolean isValidDeadline(String test) {","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" LocalDate date \u003d LocalDate.parse(test, formatter);","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" * Returns the deadline string.","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" return deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" * Checks equality based on the deadline string.","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof Deadline)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" Deadline otherDeadline \u003d (Deadline) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" return deadline.equals(otherDeadline.deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" * Generates hash code based on the deadline string.","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" return deadline.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":79,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Description.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship\u0027s description in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Description {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" \"Descriptions should not be blank!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" * Matches any characters that are not only whitespace","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?!\\\\s*$).+\";","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" public final String description;","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code Description}.","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" public Description(String description) {","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid Description.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" return description;","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof Description)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" Description otherName \u003d (Description) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" return description.equals(otherName.description);","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" return description.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":62,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Internship.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"public class Internship {","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" // Identity fields","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" private final CompanyName companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" private final Location location;","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" private final Description description;","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private final Role role;","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" // Data fields","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" private final ContactName contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private final ContactEmail contactEmail;","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" private final ContactNumber contactNumber;","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private final ApplicationStatus applicationStatus;","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * Every field except for remark must be present and not null.","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public Internship(CompanyName companyName, ContactName contactName, ContactEmail contactEmail,","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" ContactNumber contactNumber, Location location, ApplicationStatus applicationStatus,","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" Description description, Role role, Remark remark, TaskList taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" requireAllNonNull(companyName, contactName, contactEmail, contactNumber, applicationStatus, description);","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" this.contactEmail \u003d contactEmail;","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" this.contactNumber \u003d contactNumber;","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" this.location \u003d location;","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" this.applicationStatus \u003d applicationStatus;","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public CompanyName getCompanyName() {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" public ContactName getContactName() {","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" return contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" public ContactEmail getContactEmail() {","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" return contactEmail;","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" public ContactNumber getContactNumber() {","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" return contactNumber;","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" public Location getLocation() {","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" return location;","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" public ApplicationStatus getApplicationStatus() {","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" return applicationStatus;","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" public Description getDescription() {","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" return description;","lastModifiedDate":"2024-03-06"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" public Role getRole() {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" return role;","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" return remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" return taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" public int getTaskListSize() {","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" return taskList.getTaskListSize();","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" taskList.deleteTask(index);","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":" * Returns true if both internships have the same compulsory fields.","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" * This defines the same notion of equality between two internships. (Identity fields)","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" public boolean isSameInternship(Internship otherInternship) {","lastModifiedDate":"2024-03-06"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" if (otherInternship \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" return otherInternship !\u003d null","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 companyName.equals(otherInternship.companyName)","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 contactName.equals(otherInternship.contactName)","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 contactEmail.equals(otherInternship.contactEmail)","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 contactNumber.equals(otherInternship.contactNumber)","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 applicationStatus.equals(otherInternship.applicationStatus)","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 description.equals(otherInternship.description);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" * Returns true if both internships have the same identity and data fields.","lastModifiedDate":"2024-03-06"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" * This defines a stronger notion of equality between two internships.","lastModifiedDate":"2024-03-06"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof Internship)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" Internship otherInternship \u003d (Internship) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" return companyName.equals(otherInternship.companyName)","lastModifiedDate":"2024-03-06"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 contactName.equals(otherInternship.contactName)","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 contactEmail.equals(otherInternship.contactEmail)","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 contactNumber.equals(otherInternship.contactNumber)","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 applicationStatus.equals(otherInternship.applicationStatus)","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 description.equals(otherInternship.description)","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 role.equals(otherInternship.role)","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 location.equals(otherInternship.location);","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-06"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" return Objects.hash(companyName, location, role, description);","lastModifiedDate":"2024-03-06"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-06"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" .add(\"companyName\", companyName)","lastModifiedDate":"2024-03-06"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" .add(\"contactName\", contactName)","lastModifiedDate":"2024-03-06"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" .add(\"contactEmail\", contactEmail)","lastModifiedDate":"2024-03-06"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" .add(\"contactNumber\", contactNumber)","lastModifiedDate":"2024-03-06"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" .add(\"location\", location)","lastModifiedDate":"2024-03-06"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" .add(\"applicationStatus\", applicationStatus)","lastModifiedDate":"2024-03-06"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-03-06"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-06"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" .add(\"taskList\", taskList)","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" .toString();","lastModifiedDate":"2024-03-06"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":129,"HM33-Stu":12,"LWS49":16,"CaptainKeqing":7}},{"path":"src/main/java/seedu/address/model/internship/InternshipContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" * Tests that a {@code Internship}\u0027s fields matches any of the keywords given.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipContainsKeywordsPredicate implements Predicate\u003cInternship\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" private final boolean isMatchAll;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e companyNameKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e contactNameKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e locationKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e statusKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e descriptionKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e roleKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e remarkKeywords;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a predicate that checks if an internship\u0027s fields contain any of the keywords specified for that field.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" * Additionally, the isMatchAll parameter specifies if all fields and keywords must be matched.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" * @param companyNames A string of company names separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactNames A string of contact names separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * @param locations A string of locations separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * @param statuses A string of statuses separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" * @param descriptions A string of descriptions separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * @param roles A string of roles separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" * @param isMatchAll A boolean to indicate if all keywords must be matched","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipContainsKeywordsPredicate(String companyNames, String contactNames, String locations,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" String statuses, String descriptions, String roles, String remarks,","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" boolean isMatchAll) {","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" this.companyNameKeywords \u003d getKeywords(companyNames);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" this.contactNameKeywords \u003d getKeywords(contactNames);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" this.locationKeywords \u003d getKeywords(locations);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" this.statusKeywords \u003d getKeywords(statuses);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" this.descriptionKeywords \u003d getKeywords(descriptions);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" this.roleKeywords \u003d getKeywords(roles);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" this.remarkKeywords \u003d getKeywords(remarks);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" this.isMatchAll \u003d isMatchAll;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" * Tests if the given internship contains any of the keywords specified for all fields (when isMatchAll is true) or","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" * any of the keywords specified for any field (when isMatchAll is false).","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" public boolean test(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInCompanyName \u003d companyNameKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getCompanyName().companyName, keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInContactName \u003d contactNameKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getContactName().contactName, keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInLocation \u003d locationKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getLocation().toString(), keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInStatus \u003d statusKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getApplicationStatus().toString(), keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInDescription \u003d descriptionKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getDescription().description, keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInRole \u003d roleKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" internship.getRole().role, keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInRemark \u003d remarkKeywords.stream()","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" internship.getRemark().value, keyword)))","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" if (isMatchAll) {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" return foundInCompanyName \u0026\u0026 foundInContactName \u0026\u0026 foundInLocation","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 foundInStatus \u0026\u0026 foundInDescription \u0026\u0026 foundInRole \u0026\u0026 foundInRemark;","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" } else { // match any","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" return foundInCompanyName || foundInContactName || foundInLocation","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" || foundInStatus || foundInDescription || foundInRole || foundInRemark;","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" if (!(other instanceof InternshipContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate otherInternshipPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" (InternshipContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" return this.companyNameKeywords.equals(otherInternshipPredicate.companyNameKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.contactNameKeywords.equals(otherInternshipPredicate.contactNameKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.locationKeywords.equals(otherInternshipPredicate.locationKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.statusKeywords.equals(otherInternshipPredicate.statusKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.descriptionKeywords.equals(otherInternshipPredicate.descriptionKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.roleKeywords.equals(otherInternshipPredicate.roleKeywords)","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.remarkKeywords.equals(otherInternshipPredicate.remarkKeywords)","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.isMatchAll \u003d\u003d otherInternshipPredicate.isMatchAll;","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" companyNameKeywords\", companyNameKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" contactNameKeywords\", contactNameKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" locationKeywords\", locationKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" statusKeywords\", statusKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" descriptionKeywords\", descriptionKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" roleKeywords\", roleKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" remarkKeywords\", remarkKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" isMatchAll\", isMatchAll).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" * @param keywords A string of keywords separated by whitespace","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" * @return An Optional containing a set of keywords if the input is not null or empty, else an empty Optional","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" protected Optional\u003cSet\u003cString\u003e\u003e getKeywords(String keywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" if (keywords \u003d\u003d null || keywords.isBlank()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" String[] keywordsArr \u003d keywords.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" return Optional.of(Set.of(keywordsArr));","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":139}},{"path":"src/main/java/seedu/address/model/internship/Location.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship\u0027s location in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Location {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Locations have to be either local, overseas, or remote\";","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALIDATION_REGEX \u003d \"(?i)local|remote|overseas|unknown\";","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * Enum of locations","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" public enum LocationEnum {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" LOCAL,","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" OVERSEAS,","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" REMOTE,","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" UNKNOWN","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" private final LocationEnum location;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code ApplicationStatus}.","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * @param location A valid location.","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" public Location(String location) {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(location);","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidLocation(location), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" this.location \u003d Location.LocationEnum.valueOf(location.toUpperCase());","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid ApplicationStatus.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidLocation(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" return location.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof Location)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" Location otherLocation \u003d (Location) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" return location.equals(otherLocation.location);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" return location.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" * Returns the location of the internship.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" public LocationEnum getLocation() {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" return location;","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":61,"HM33-Stu":1,"theman-oj10":12,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * Represents an Internship\u0027s remarks in the internship data.","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Remark {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public final String value;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" * Constructs an {@code Remark}.","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * @param remark A valid remark.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" value \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" return value;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jieqiboh":38}},{"path":"src/main/java/seedu/address/model/internship/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an internship\u0027s role in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Role {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" \"Roles should not be blank!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * Matches any characters that are not only whitespace","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?!\\\\s*$).+\";","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public final String role;","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code Role}.","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * @param role A valid role.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public Role(String role) {","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidRole(role), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid role.","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidRole(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" return role;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" Role otherName \u003d (Role) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" return role.equals(otherName.role);","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" return role.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":62,"HM33-Stu":1,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.internship.Deadline.isValidDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import java.util.Map;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an internship\u0027s Task in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"public class Task {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" \"Task should not be blank!\";","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" * Matches any characters that are not only whitespace","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?!\\\\s*$).+\";","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" public final String task;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" private Deadline deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" private boolean isDeadlineSet \u003d false;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" * Constructs a {@code Task}.","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" * @param task A valid task.","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" public Task(String task) {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" checkArgument(isValidTask(task), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" * Constructs a {@code Task}.","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" * @param task","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" * @param deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" public Task(String task, String deadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" checkArgument(isValidTask(task), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" checkArgument(isValidDeadline(deadline), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d new Deadline(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" isDeadlineSet \u003d true;","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" * Constructs a {@code Task}.","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" * @param task","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" * @param deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" * @param isDeadlineSet","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" @JsonCreator","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" public Task(@JsonProperty(\"task\") String task,","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" @JsonProperty(\"deadline\") Map\u003cString, String\u003e deadlineMap,","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" @JsonProperty(\"isDeadlineSet\") boolean isDeadlineSet) {","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" checkArgument(isValidTask(task), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" if (isDeadlineSet \u0026\u0026 deadlineMap !\u003d null \u0026\u0026 deadlineMap.containsKey(\"deadline\")) {","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" String deadlineStr \u003d deadlineMap.get(\"deadline\");","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d new Deadline(deadlineStr);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" this.isDeadlineSet \u003d isDeadlineSet;","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":" * Returns true if a given string is a valid task.","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" public static boolean isValidTask(String test) {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" * Returns true if a given string is a valid task.","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" public String convertToJsonString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" return \"{\\\"task\\\": \\\"\" + task + \"\\\", \\\"deadline\\\": \\\"\" + deadline + \"\\\"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" * Replace deadline with {@code deadline}.","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" public void setDeadline(Deadline deadline) {","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" isDeadlineSet \u003d true;","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" * Returns the task string.","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":" public String toString() {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" if (isDeadlineSet) {","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" return task + \" Deadline: \" + deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" return task;","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"HM33-Stu"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"HM33-Stu"},"content":" Task otherName \u003d (Task) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" return task.equals(otherName.task) \u0026\u0026 isDeadlineSet \u003d\u003d otherName.isDeadlineSet","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 (isDeadlineSet ? deadline.equals(otherName.deadline) : true);","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"HM33-Stu"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"HM33-Stu"},"content":" return task.hashCode();","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"HM33-Stu":58,"LWS49":75,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a list of tasks in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"public class TaskList {","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" * Constructs a TaskList object.","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" public TaskList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" * Constructs a TaskList object from an existing list of tasks.","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" * Adds tasks from a comma-separated string into the task list. Only for testing purposes using TypicalInternships.","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" * @param tasksString the string containing comma-separated tasks","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" public TaskList(String tasksString) {","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" if (tasksString.equals(\"\") || tasksString.equals(\" \")) {","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" String[] tasksArray \u003d tasksString.split(\"; \");","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" for (String desc : tasksArray) {","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" // Check for a deadline pattern","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" if (desc.contains(\"(\") \u0026\u0026 desc.contains(\")\")) {","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" String description \u003d desc.substring(0, desc.indexOf(\"(\")).trim();","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" String deadlineStr \u003d desc.substring(desc.indexOf(\"(\") + 1, desc.indexOf(\")\")).trim();","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" taskList.add(new Task(description, deadlineStr));","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" taskList.add(new Task(desc.trim()));","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" * Returns the taskList with {@code ArrayList\u003cTask\u003e} type. Primarily for JSON purposes.","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" public ArrayList\u003cTask\u003e getArrayListTaskList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" return taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" taskList.add(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" * Deletes a task from the task list based on the index.","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" taskList.remove(index);","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" return taskList.get(index);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" * Returns the size of the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" public int getTaskListSize() {","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" return taskList.size();","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" * Returns a copy of the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" public TaskList copy() {","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" ArrayList\u003cTask\u003e copiedTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" copiedTaskList.add(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" return new TaskList(copiedTaskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" int count \u003d 1;","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" builder.append(count++).append(\". \").append(task.toString()).append(\"\\n\");","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" return builder.toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" * Converts the task list to a JSON string.","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" * @return JSON string representation of the task list","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" public String convertToJsonString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" builder.append(\"[\");","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" builder.append(task.convertToJsonString()).append(\",\");","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" if (taskList.size() \u003e 0) {","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" builder.deleteCharAt(builder.length() - 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" builder.append(\"]\");","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" return builder.toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof TaskList)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" TaskList otherTaskList \u003d (TaskList) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" if (this.taskList.size() !\u003d otherTaskList.taskList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" if (!this.taskList.get(i).equals(otherTaskList.taskList.get(i))) {","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-26"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" return taskList.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":7,"LWS49":136,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/UniqueInternshipList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.exceptions.DuplicateInternshipException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.exceptions.InternshipNotFoundException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" * A list of internships that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" * An internship is considered unique by comparing using {@code Internship#isSameInternship(Internship)}.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" * As such, adding and updating of internships uses Internship#isSameInternship(Internship) for equality","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" * to ensure that the internship being added or updated is unique in terms of identity in the","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" * UniqueInternshipList. However, the removal of a internship uses Internship#equals(Object),to","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" * ensure that the internship with exactly the same fields will be removed.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" * @see Internship#isSameInternship(Internship)","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"public class UniqueInternshipList implements Iterable\u003cInternship\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" private final ObservableList\u003cInternship\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" private final ObservableList\u003cInternship\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" * Returns true if the list contains an equivalent internship as the given argument.","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" * @param toCheck the internship to check for the equality of identity fields","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" public boolean contains(Internship toCheck) {","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" return internalList.stream().anyMatch(toCheck::isSameInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" * Adds a internship to the list.","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" * The internship must not already exist in the list.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" public void add(Internship toAdd) {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" throw new DuplicateInternshipException();","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" * Replaces the internship {@code target} in the list with {@code editedInternship}.","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" * The internship identity of {@code editedInternship} must not be the same as another","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" * existing internship in the list.","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" public void setInternship(Internship target, Internship editedInternship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" requireAllNonNull(target, editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" throw new InternshipNotFoundException();","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" if (!target.isSameInternship(editedInternship) \u0026\u0026 contains(editedInternship)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" throw new DuplicateInternshipException();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" internalList.set(index, editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" * Removes the equivalent internship from the list.","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" * The internship must exist in the list.","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" public void remove(Internship toRemove) {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" throw new InternshipNotFoundException();","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" public void setInternships(UniqueInternshipList replacement) {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" * Replaces the contents of this list with {@code internships}.","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" * {@code internships} must not contain duplicate internships.","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" public void setInternships(List\u003cInternship\u003e internships) {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" requireAllNonNull(internships);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" if (!internshipsAreUnique(internships)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" throw new DuplicateInternshipException();","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" internalList.setAll(internships);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" public ObservableList\u003cInternship\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" public Iterator\u003cInternship\u003e iterator() {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof UniqueInternshipList)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList otherUniqueInternshipList \u003d (UniqueInternshipList) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" return internalList.equals(otherUniqueInternshipList.internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" * Returns true if {@code internships} contains only unique internships.","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" private boolean internshipsAreUnique(List\u003cInternship\u003e internships) {","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" for (int i \u003d 0; i \u003c internships.size() - 1; i++) {","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" for (int j \u003d i + 1; j \u003c internships.size(); j++) {","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":" if (internships.get(i).isSameInternship(internships.get(j))) {","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" * Returns true if the list is empty.","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" return internalList.isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"theman-oj10":158,"CaptainKeqing":2}},{"path":"src/main/java/seedu/address/model/internship/exceptions/DuplicateInternshipException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship.exceptions;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Signals that the operation will result in duplicate Internship (Internships are considered duplicates if they","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" * have the same identity).","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"public class DuplicateInternshipException extends RuntimeException {","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" public DuplicateInternshipException() {","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" super(\"Operation would result in duplicate internships\");","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":11}},{"path":"src/main/java/seedu/address/model/internship/exceptions/InternshipNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship.exceptions;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Signals that the operation is unable to find the specified internship.","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class InternshipNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":6}},{"path":"src/main/java/seedu/address/model/util/InternshipSampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" * Contains utility methods for populating {@code InternshipData} with sample data.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSampleDataUtil {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" public static final TaskList EMPTY_TASKLIST \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" public static Internship[] getSampleInternships() {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" return new Internship[]{","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" new Internship(new CompanyName(\"Google\"), new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"johndoe@example.com\"), new ContactNumber(\"12345678\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"), new ApplicationStatus(\"to_apply\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Engineering Internship\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" new Role(\"Software Engineer\"), EMPTY_REMARK, EMPTY_TASKLIST),","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" new Internship(new CompanyName(\"Facebook\"), new ContactName(\"Jane Smith\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"janesmith@example.com\"), new ContactNumber(\"98765432\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" new Location(\"local\"), new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Product Management Internship\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" new Role(\"Product Manager\"), EMPTY_REMARK, EMPTY_TASKLIST),","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" new Internship(new CompanyName(\"Amazon\"), new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"), new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"), new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" new Role(\"Business Development Associate\"), EMPTY_REMARK, EMPTY_TASKLIST),","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" };","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" public static ReadOnlyInternshipData getSampleInternshipData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" InternshipData sampleInternshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" for (Internship sampleInternship : getSampleInternships()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" sampleInternshipData.addInternship(sampleInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" return sampleInternshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":12,"LWS49":5,"theman-oj10":34}},{"path":"src/main/java/seedu/address/storage/InternshipDataStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * Represents a storage for {@link seedu.address.model.InternshipData}.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"public interface InternshipDataStorage {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * Returns InternshipData data as a {@link ReadOnlyInternshipData}.","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" Optional\u003cReadOnlyInternshipData\u003e readInternshipData() throws DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * @see #getInternshipDataFilePath()","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" Optional\u003cReadOnlyInternshipData\u003e readInternshipData(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" * Saves the given {@link ReadOnlyInternshipData} to the storage.","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * @param internshipData cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" void saveInternshipData(ReadOnlyInternshipData internshipData) throws IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * @see #saveInternshipData(ReadOnlyInternshipData)","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" void saveInternshipData(ReadOnlyInternshipData internshipData, Path filePath) throws IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":44}},{"path":"src/main/java/seedu/address/storage/InternshipStorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" * Manages storage of InternshipData in local storage.","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"public class InternshipStorageManager implements Storage {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(InternshipStorageManager.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" private InternshipDataStorage internshipDataStorage;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" private InternshipUserPrefsStorage userPrefsStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * Creates a {@code InternshipStorageManager} with the given","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" * {@code InternshipDataStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" public InternshipStorageManager(InternshipDataStorage internshipDataStorage,","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" InternshipUserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" this.internshipDataStorage \u003d internshipDataStorage;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public Optional\u003cInternshipUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public void saveUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" return internshipDataStorage.getInternshipDataFilePath();","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cReadOnlyInternshipData\u003e readInternshipData() throws DataLoadingException {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" return readInternshipData(internshipDataStorage.getInternshipDataFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cReadOnlyInternshipData\u003e readInternshipData(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" return internshipDataStorage.readInternshipData(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" saveInternshipData(internshipData, internshipDataStorage.getInternshipDataFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData, Path filePath) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" internshipDataStorage.saveInternshipData(internshipData, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jieqiboh":41,"LWS49":5,"-":28}},{"path":"src/main/java/seedu/address/storage/InternshipUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a storage for {@link seedu.address.model.UserPrefs}.","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"public interface InternshipUserPrefsStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" Optional\u003cInternshipUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * Saves the given {@link seedu.address.model.ReadOnlyInternshipUserPrefs} to the storage.","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" void saveUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"jieqiboh":1,"LWS49":4,"-":30,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedInternship.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Jackson-friendly version of {@link Internship}.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"public class JsonAdaptedInternship {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Internship\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private final String companyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" private final String contactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" private final String contactEmail;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" private final String contactNumber;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" private final String applicationStatus;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" private final String location;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private final String description;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" private final String role;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" private final String remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code JsonAdaptedInternship} with the given internship details.","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @JsonCreator","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public JsonAdaptedInternship(@JsonProperty(\"companyName\") String companyName,","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"contactName\") String contactName,","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"contactEmail\") String contactEmail,","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"contactNumber\") String contactNumber,","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"location\") String location,","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"status\") String applicationStatus,","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"description\") String description,","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"role\") String role,","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" @JsonProperty(\"taskList\") ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" this.contactEmail \u003d contactEmail;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" this.contactNumber \u003d contactNumber;","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" this.applicationStatus \u003d applicationStatus;","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" this.location \u003d location;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" * Converts a given {@code Internship} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" public JsonAdaptedInternship(Internship source) {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" // Mandatory fields","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" companyName \u003d source.getCompanyName().companyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" contactName \u003d source.getContactName().contactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" contactEmail \u003d source.getContactEmail().value;","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" contactNumber \u003d source.getContactNumber().value;","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" applicationStatus \u003d source.getApplicationStatus().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" description \u003d source.getDescription().description;","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":" // Handle optional fields","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" location \u003d source.getLocation().toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" role \u003d source.getRole().role;","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" // Remark field","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":" remark \u003d source.getRemark().toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" taskList \u003d source.getTaskList().getArrayListTaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" * Converts this Jackson-friendly adapted internship object into the model\u0027s {@code Internship} object.","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted internship.","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" public Internship toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" if (companyName \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" CompanyName.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" if (!CompanyName.isValidCompanyName(companyName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" final CompanyName modelCompanyName \u003d new CompanyName(companyName);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" if (contactName \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" ContactName.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" if (!ContactName.isValidContactName(contactName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" final ContactName modelContactName \u003d new ContactName(contactName);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" if (contactEmail \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" ContactEmail.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" if (!ContactEmail.isValidContactEmail(contactEmail)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(ContactEmail.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" final ContactEmail modelContactEmail \u003d new ContactEmail(contactEmail);","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" if (contactNumber \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" ContactNumber.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" if (!ContactNumber.isValidContactNumber(contactNumber)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(ContactNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" final ContactNumber modelContactNumber \u003d new ContactNumber(contactNumber);","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" if (applicationStatus \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" if (!ApplicationStatus.isValidApplicationStatus(applicationStatus)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(ApplicationStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" final ApplicationStatus modelApplicationStatus \u003d new ApplicationStatus(applicationStatus);","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" Description.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" if (!Description.isValidDescription(description)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" final Description modelDescription \u003d new Description(description);","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" if (remark \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" if (taskList \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" TaskList.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" final TaskList modelTaskList \u003d new TaskList(taskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":161,"author":{"gitId":"HM33-Stu"},"content":" if (role \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":162,"author":{"gitId":"HM33-Stu"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName()));","lastModifiedDate":"2024-04-03"},{"lineNumber":163,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":164,"author":{"gitId":"HM33-Stu"},"content":" if (!Role.isValidRole(role)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":165,"author":{"gitId":"HM33-Stu"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"HM33-Stu"},"content":" final Role modelRole \u003d new Role(role);","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"HM33-Stu"},"content":" if (location \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"HM33-Stu"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-03"},{"lineNumber":171,"author":{"gitId":"HM33-Stu"},"content":" Location.class.getSimpleName()));","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"HM33-Stu"},"content":" if (!Location.isValidLocation(location)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"HM33-Stu"},"content":" throw new IllegalValueException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":" final Location modelLocation \u003d new Location(location);","lastModifiedDate":"2024-04-03"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":" return new Internship(modelCompanyName, modelContactName, modelContactEmail, modelContactNumber,","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"LWS49"},"content":" modelLocation, modelApplicationStatus, modelDescription, modelRole, modelRemark, modelTaskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":136,"HM33-Stu":30,"LWS49":17}},{"path":"src/main/java/seedu/address/storage/JsonInternshipDataStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * A class to access InternshipData data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"public class JsonInternshipDataStorage implements InternshipDataStorage {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonInternshipDataStorage.class);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private Path filePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public JsonInternshipDataStorage(Path filePath) {","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" return filePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cReadOnlyInternshipData\u003e readInternshipData() throws DataLoadingException {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" return readInternshipData(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" * Similar to {@link #readInternshipData()}.","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cReadOnlyInternshipData\u003e readInternshipData(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" Optional\u003cJsonSerializableInternshipData\u003e jsonInternshipData \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" filePath, JsonSerializableInternshipData.class);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" if (!jsonInternshipData.isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" return Optional.of(jsonInternshipData.get().toModelType());","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" saveInternshipData(internshipData, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" * Similar to {@link #saveInternshipData(ReadOnlyInternshipData)}.","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData, Path filePath) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(internshipData);","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" JsonUtil.saveJsonFile(new JsonSerializableInternshipData(internshipData), filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":79}},{"path":"src/main/java/seedu/address/storage/JsonInternshipUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A class to access UserPrefs stored in the hard disk as a json file","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"public class JsonInternshipUserPrefsStorage implements InternshipUserPrefsStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public JsonInternshipUserPrefsStorage(Path filePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" public Optional\u003cInternshipUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Similar to {@link #readUserPrefs()}","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public Optional\u003cInternshipUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" return JsonUtil.readJsonFile(prefsFilePath, InternshipUserPrefs.class);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public void saveUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"jieqiboh":2,"LWS49":6,"-":39}},{"path":"src/main/java/seedu/address/storage/JsonSerializableInternshipData.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * An Immutable InternshipData that is serializable to JSON format.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"@JsonRootName(value \u003d \"internshipdata\")","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"public class JsonSerializableInternshipData {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_DUPLICATE_INTERNSHIP \u003d \"Internships list contains duplicate internship(s).\";","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private final List\u003cJsonAdaptedInternship\u003e internships \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code JsonSerializableInternshipData} with the given internships.","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" @JsonCreator","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public JsonSerializableInternshipData(@JsonProperty(\"internships\") List\u003cJsonAdaptedInternship\u003e internships) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" this.internships.addAll(internships);","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * Converts a given {@code ReadOnlyInternshipData} into this class for Jackson use.","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableInternshipData}.","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" public JsonSerializableInternshipData(ReadOnlyInternshipData source) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" internships.addAll(source.getInternshipList().stream().map(JsonAdaptedInternship::new)","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" * Converts this internshipdata into the model\u0027s {@code InternshipData} object.","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public InternshipData toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" for (JsonAdaptedInternship jsonAdaptedInternship : internships) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" Internship internship \u003d jsonAdaptedInternship.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" if (internshipData.hasInternship(internship)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" return internshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":60}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"public interface Storage extends InternshipUserPrefsStorage, InternshipDataStorage {","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" Optional\u003cInternshipUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" void saveUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" Optional\u003cReadOnlyInternshipData\u003e readInternshipData() throws DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" void saveInternshipData(ReadOnlyInternshipData internshipData) throws IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jieqiboh":4,"LWS49":5,"-":23}},{"path":"src/main/java/seedu/address/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.logic.InternshipLogic#execute(String)","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"-":84,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/ui/DetailedInternshipCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * A UI component that displays information of a {@code Internship}.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"DetailedInternshipCard.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" private static final String preferredFontSizeStyle \u003d \"-fx-font-size: 16px\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" private static final String titleFontSizeStyle \u003d \"-fx-font-size: 22px\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" protected HBox cardPane;","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" protected Label companyNameAndRole;","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" protected Label status;","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" protected Label description;","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" protected Label loc;","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" protected Label cName;","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" protected Label cEmail;","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" protected Label cNum;","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" protected Label remark;","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-04-01"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" protected Label tasks;","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code InternshipCard} with the given {@code Internship}.","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" public DetailedInternshipCard(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" setStyles(true, companyNameAndRole, status, description, loc,","lastModifiedDate":"2024-04-01"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" cName, cEmail, cNum, remark, tasks);","lastModifiedDate":"2024-04-01"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" setCompanyNameAndRoleLabel(internship.getCompanyName(), internship.getRole());","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" setStatusLabel(internship.getApplicationStatus());","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" setDescriptionLabel(internship.getDescription());","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" setLocationLabel(internship.getLocation());","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" setContactNameLabel(internship.getContactName());","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" setContactEmailLabel(internship.getContactEmail());","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" setContactNumberLabel(internship.getContactNumber());","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" setRemarkLabel(internship.getRemark());","lastModifiedDate":"2024-04-01"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" setTasksLabel(internship.getTaskList());","lastModifiedDate":"2024-04-01"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the company name and role label to the given company name and role.","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" * @param companyName name of the company under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" * @param role role of the internship under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" private void setCompanyNameAndRoleLabel(CompanyName companyName, Role role) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" String stringToSet \u003d companyName.toString() + \" -- \" + role.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" companyNameAndRole.setText(stringToSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the status label to the given application status.","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" * @param applicationStatus status of the application under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" private void setStatusLabel(ApplicationStatus applicationStatus) {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" status.setText(\" * \" + applicationStatus.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the description label to the given description.","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" * @param desc description of the internship","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" private void setDescriptionLabel(Description desc) {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" description.setText(\"Description:\\t\\t\" + desc.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the location label to the given location.","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" * @param loc location of the internship","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" private void setLocationLabel(Location loc) {","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" this.loc.setText(\"Location:\\t\\t\\t\" + loc.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the contact name label to the given contact name.","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactName name of the contact person under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":" private void setContactNameLabel(ContactName contactName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" cName.setText(\"Contact name:\\t\\t\" + contactName.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the contact email label to the given contact email.","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactEmail email of the contact person under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" private void setContactEmailLabel(ContactEmail contactEmail) {","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" cEmail.setText(\"Contact email:\\t\\t\" + contactEmail.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the contact number label to the given contact number.","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactNumber phone number of the contact person under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" private void setContactNumberLabel(ContactNumber contactNumber) {","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" cNum.setText(\"Contact number:\\t\" + contactNumber.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the remark label to the given remark.","lastModifiedDate":"2024-04-01"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-04-01"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" * @param remark remark of the internship","lastModifiedDate":"2024-04-01"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":" private void setRemarkLabel(Remark remark) {","lastModifiedDate":"2024-04-01"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":" this.remark.setText(\"Remark:\\t\\t\\t\" + remark.toString());","lastModifiedDate":"2024-04-01"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the tasks label to the given tasks.","lastModifiedDate":"2024-04-01"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-04-01"},{"lineNumber":151,"author":{"gitId":"CaptainKeqing"},"content":" * @param tasks tasks of the internship","lastModifiedDate":"2024-04-01"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" private void setTasksLabel(TaskList tasks) {","lastModifiedDate":"2024-04-01"},{"lineNumber":154,"author":{"gitId":"CaptainKeqing"},"content":" this.tasks.setText(\"\\nTasks:\\n\" + tasks.toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":156,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":157,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"CaptainKeqing"},"content":" * Sets font size style for the given labels.","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"CaptainKeqing"},"content":" * @param labels labels to set the style for","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"CaptainKeqing"},"content":" private void setStyles(boolean isFirstTitle, Label... labels) {","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"CaptainKeqing"},"content":" for (Label label : labels) {","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"CaptainKeqing"},"content":" if (isFirstTitle) {","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"CaptainKeqing"},"content":" label.setStyle(titleFontSizeStyle);","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"CaptainKeqing"},"content":" isFirstTitle \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"CaptainKeqing"},"content":" label.setStyle(preferredFontSizeStyle);","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":172}},{"path":"src/main/java/seedu/address/ui/DetailedInternshipListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.SelectionModel;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Panel containing the list of internships.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"InternshipListPanel.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private final Logger logger \u003d LogsCenter.getLogger(DetailedInternshipListPanel.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private ListView\u003cInternship\u003e internshipListView;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" private final SelectionModel\u003cInternship\u003e selectionModel \u003d internshipListView.getSelectionModel();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code DetailedInternshipListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public DetailedInternshipListPanel(ObservableList\u003cInternship\u003e internshipList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" internshipListView.setItems(internshipList);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" internshipListView.setCellFactory(listView -\u003e new InternshipListViewCell());","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" protected ListView\u003cInternship\u003e getInternshipListView() {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" return internshipListView;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Internship} using a {@code InternshipCard}.","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" class InternshipListViewCell extends ListCell\u003cInternship\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" protected void updateItem(Internship internship, boolean empty) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" super.updateItem(internship, empty);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" if (empty || internship \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" setText(null);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" setGraphic(new DetailedInternshipCard(internship).getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":53}},{"path":"src/main/java/seedu/address/ui/DetailedInternshipWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"DetailedInternshipWindow.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private Stage primaryStage;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipLogic logic;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" private DetailedInternshipListPanel selectedInternshipListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" private StackPane selectedInternshipListPanelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" public DetailedInternshipWindow(Stage primaryStage, InternshipLogic logic) {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML, new Stage());","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" // Set dependencies","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" this.logic \u003d logic;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" // Configure the UI","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" fillInnerParts();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" * Fills up all the placeholders of this window except for the internship list panel.","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" void fillInnerParts() {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getInternshipDataFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" public void focus() {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" public void hide() {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" void show() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" getRoot().show();","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.logic.InternshipLogic#execute(String)","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" private CommandResult executeCommand(String commandText) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" String notImplementedMessage \u003d \"Commands are not implemented yet in detailed internship window\";","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" resultDisplay.setFeedbackToUser(notImplementedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" throw new CommandException(notImplementedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" * Populates the detailed internship window with the selected internship details.","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" public void populateInternshipDetails() {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" selectedInternshipListPanel \u003d new DetailedInternshipListPanel(logic.getSelectedInternship());","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" selectedInternshipListPanelPlaceholder.getChildren().add(selectedInternshipListPanel.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":108}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w11-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jieqiboh":1,"-":101}},{"path":"src/main/java/seedu/address/ui/InternshipCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ApplicationStatus.StatusEnum;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" * A UI component that displays information of a {@code Internship}.","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_RED \u003d \"-fx-text-fill: #ff0000;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_GREEN \u003d \"-fx-text-fill: #00ff00;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_YELLOW \u003d \"-fx-text-fill: #ffff00;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_CYAN \u003d \"-fx-text-fill: #00ffff;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_LIGHTSEAGREEN \u003d \"-fx-text-fill: #20b2aa;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"InternshipCard.fxml\";","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" public final Internship internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" private Label id;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" private Label companyNameAndRole;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" private Label status;","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" private Label description;","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" private Label loc;","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" private Label poc;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" private Label remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" @FXML","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" private Label tasks;","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code InternshipCard} with the given {@code Internship} and index to display.","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipCard(Internship internship, int displayedIndex) {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" this.internship \u003d internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" setCompanyNameAndRoleLabel(internship.getCompanyName(), internship.getRole());","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" setStatusLabel(internship.getApplicationStatus());","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" setDescriptionLabel(internship.getDescription());","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" setLocationLabel(internship.getLocation());","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" setPocLabel(internship.getContactName(), internship.getContactEmail(), internship.getContactNumber());","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" setRemarkLabel(internship.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" setTasksLabel(internship.getTaskList());","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the POC label to the given contact details.","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactName name of the contact person under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactEmail email of the contact person under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactNumber phone number of the contact person under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" private void setPocLabel(ContactName contactName, ContactEmail contactEmail, ContactNumber contactNumber) {","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" String stringToSet \u003d \"POC: \" + contactName.toString() + \" | \"","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" + contactEmail.toString() + \" | \" + contactNumber.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" poc.setText(stringToSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the location label to the given location.","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" * @param loc location of the internship","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" private void setLocationLabel(Location loc) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" this.loc.setText(loc.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the description label to the given description.","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" * @param desc description of the internship","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" private void setDescriptionLabel(Description desc) {","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" description.setText(desc.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the company name and role label to the given company name and role.","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" * @param companyName name of the company under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" * @param role role of the internship under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":" private void setCompanyNameAndRoleLabel(CompanyName companyName, Role role) {","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" String stringToSet \u003d companyName.toString() + \" -- \" + role.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" companyNameAndRole.setText(stringToSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the status label to the given application status.","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" * @param applicationStatus status of the application under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" private void setStatusLabel(ApplicationStatus applicationStatus) {","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" status.setText(\" * \" + applicationStatus.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" setStatusLabelColour(applicationStatus.getStatus());","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the remark label to the given remark.","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" * @param remark remark of the internship","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" private void setRemarkLabel(Remark remark) {","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" this.remark.setText(\"Remark: \" + remark.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the colour of the status label based on the status of the application.","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" * @param statusEnum status of the application under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" private void setStatusLabelColour(StatusEnum statusEnum) {","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" switch (statusEnum) {","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":" case TO_APPLY:","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_CYAN);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":" case PENDING:","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_YELLOW);","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"CaptainKeqing"},"content":" case REJECTED:","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_RED);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"CaptainKeqing"},"content":" case ACCEPTED:","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_GREEN);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"CaptainKeqing"},"content":" case ONGOING:","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_LIGHTSEAGREEN);","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"CaptainKeqing"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"CaptainKeqing"},"content":" throw new IllegalArgumentException(\"Unexpected application status: \"","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"CaptainKeqing"},"content":" + statusEnum);","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" * Sets the task label to the given task list.","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"LWS49"},"content":" * @param tasks tasklist of the internship","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"LWS49"},"content":" private void setTasksLabel(TaskList tasks) {","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"LWS49"},"content":" this.tasks.setText(\"Tasks:\\n\" + tasks.toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getIdLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"CaptainKeqing"},"content":" return id;","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getCompanyNameAndRoleLabel() {","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"CaptainKeqing"},"content":" return companyNameAndRole;","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getStatusLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"CaptainKeqing"},"content":" return status;","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getDescriptionLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"CaptainKeqing"},"content":" return description;","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getLocationLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"CaptainKeqing"},"content":" return loc;","lastModifiedDate":"2024-03-14"},{"lineNumber":193,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getPocLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"CaptainKeqing"},"content":" return poc;","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getRemarkLabel() {","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"CaptainKeqing"},"content":" return remark;","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":5,"LWS49":14,"CaptainKeqing":183}},{"path":"src/main/java/seedu/address/ui/InternshipListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.input.MouseEvent;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Panel containing the list of internships.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private static Internship lastSelectedInternship;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"InternshipListPanel.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" private final Logger logger \u003d LogsCenter.getLogger(InternshipListPanel.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" private ListView\u003cInternship\u003e internshipListView;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code InternshipListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipListPanel(ObservableList\u003cInternship\u003e internshipList) {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" internshipListView.setItems(internshipList);","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" internshipListView.setCellFactory(listView -\u003e new InternshipListViewCell());","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" * Handles the event when the user clicks on an internship in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" * InternshipListViewCell updates the lastSelectedInternship whenever a cell is pressed. All we have to do","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * here is to return the lastSelectedInternship.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * @return selected index","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" public Internship handleMouseClick() {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" if (lastSelectedInternship !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" return lastSelectedInternship;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" return null;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Internship} using a {@code InternshipCard}.","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" class InternshipListViewCell extends ListCell\u003cInternship\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipListViewCell() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" setOnMousePressed((MouseEvent event) -\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" lastSelectedInternship \u003d getItem();","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" logger.info(\"User clicked on internship index: \" + getIndex() + 1 + \u0027\\n\u0027 + lastSelectedInternship);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" });","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" protected void updateItem(Internship internship, boolean empty) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" super.updateItem(internship, empty);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" if (empty || internship \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" setText(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" setGraphic(new InternshipCard(internship, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"CaptainKeqing":71}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.input.MouseEvent;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" private InternshipLogic logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" private InternshipListPanel internshipListPanel;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" private DetailedInternshipWindow detailedInternshipWindow;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" private StackPane internshipListPanelPlaceholder;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code InternshipLogic}.","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" public MainWindow(Stage primaryStage, InternshipLogic logic) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow \u003d new DetailedInternshipWindow(primaryStage, logic);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" internshipListPanelPlaceholder.addEventFilter(MouseEvent.MOUSE_CLICKED, event -\u003e handleMouseClick());","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" * Handles the event when the user clicks on an internship in the list. Sets the selected internship in the logic","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" * and shows the detailed internship window. If the user clicks on an empty space, nothing happens.","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" public void handleMouseClick() {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" Internship selectedInternship \u003d internshipListPanel.handleMouseClick();","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" if (selectedInternship \u003d\u003d null) { // no internship selected, clicked on empty space","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" return;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" logic.setSelectedInternship(selectedInternship);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" showSelectedInternshipDetails();","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" logger.info(\"User clicked on internship: \" + selectedInternship);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" * Opens the detailed internship window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" private void showSelectedInternshipDetails() {","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow.populateInternshipDetails();","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" if (!detailedInternshipWindow.isShowing()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(\"showing\");","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow.show();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(\"focusing\");","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow.focus();","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" internshipListPanel \u003d new InternshipListPanel(logic.getFilteredInternshipList());","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" internshipListPanelPlaceholder.getChildren().add(internshipListPanel.getRoot());","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getInternshipDataFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":160,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":169,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":171,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":193,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":195,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":201,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow.hide();","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":" public InternshipListPanel getInternshipListPanel() {","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" return internshipListPanel;","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"CaptainKeqing"},"content":" * Executes the internship command and returns the result.","lastModifiedDate":"2024-04-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.logic.InternshipLogic#execute(String)","lastModifiedDate":"2024-04-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":231,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LWS49":10,"-":183,"CaptainKeqing":41}},{"path":"src/main/java/seedu/address/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2016-09-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the header of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ResultDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"ResultDisplay.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private TextArea resultDisplay;","lastModifiedDate":"2016-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code ResultDisplay} and sets the wrap text property to true.","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public ResultDisplay() {","lastModifiedDate":"2017-06-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" resultDisplay.setWrapText(true);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" * @param feedbackToUser to be set to the result display","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":28,"CaptainKeqing":7}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" private static final String ICON_APPLICATION \u003d \"/images/logo.png\";","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" private InternshipLogic logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code UiManager} with the given {@code InternshipLogic}.","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" public UiManager(InternshipLogic logic) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"HM33-Stu":1,"LWS49":3,"-":83,"CaptainKeqing":1}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"LWS49"},"content":"#filterField, #internshipListPanel, #internshipWebpage {","lastModifiedDate":"2024-04-04"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"LWS49":1,"-":351}},{"path":"src/main/resources/view/DetailedInternshipCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"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-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\" \u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"companyNameAndRole\" text\u003d\"\\$companyNameAndRole\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"loc\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$location\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"cName\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$contactName\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"cEmail\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$contactEmail\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"cNum\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$contactNumber\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"tasks\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tasks\" /\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":33}},{"path":"src/main/resources/view/DetailedInternshipWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"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-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" title\u003d\"Detailed Internship View\" minWidth\u003d\"450\" minHeight\u003d\"600\" \u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" \u003cVBox fx:id\u003d\"selectedInternshipList\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" \u003cStackPane fx:id\u003d\"selectedInternshipListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" minWidth\u003d\"700\" prefWidth\u003d\"700\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":34}},{"path":"src/main/resources/view/InternshipCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"companyNameAndRole\" text\u003d\"\\$companyNameAndRole\" styleClass\u003d\"cell_big_label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"loc\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$location\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"poc\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$contactInformation\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" \u003cLabel fx:id\u003d\"tasks\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tasks\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jieqiboh":1,"LWS49":1,"-":30,"CaptainKeqing":5}},{"path":"src/main/resources/view/InternshipListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" \u003cListView fx:id\u003d\"internshipListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":7,"CaptainKeqing":1}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" title\u003d\"CareerSync\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" \u003cImage url\u003d\"@/images/logo.png\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" \u003cVBox fx:id\u003d\"internshipList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" \u003cStackPane fx:id\u003d\"internshipListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"HM33-Stu":1,"LWS49":2,"-":56,"CaptainKeqing":1}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" final Index fifthInternshipIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" assertTrue(fifthInternshipIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" assertTrue(fifthInternshipIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" assertTrue(fifthInternshipIndex.equals(fifthInternshipIndex));","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" assertFalse(fifthInternshipIndex.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" assertFalse(fifthInternshipIndex.equals(5.0f));","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" assertFalse(fifthInternshipIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"LWS49":7,"-":60}},{"path":"src/test/java/seedu/address/logic/InternshipLogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.InternshipStorageManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.storage.JsonInternshipDataStorage;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.JsonInternshipUserPrefsStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipLogicManagerTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipModel model \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipLogic logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" JsonInternshipDataStorage internshipDataStorage \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" new JsonInternshipDataStorage(temporaryFolder.resolve(\"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" JsonInternshipUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" new JsonInternshipUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" InternshipStorageManager storage \u003d new InternshipStorageManager(internshipDataStorage, userPrefsStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" logic \u003d new InternshipLogicManager(model, storage);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" String listCommand \u003d InternshipListCommand.COMMAND_WORD;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(listCommand, InternshipListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" InternshipLogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" InternshipLogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" public void getFilteredInternshipList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredInternshipList().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandFailure(String, Class, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandFailure(String, Class, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandFailure(String, Class, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandFailure(String, Class, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(model.getInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandSuccess(String, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage, InternshipModel expectedModel) {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" * Tests the InternshipLogic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" * @param expectedMessage the message expected inside exception thrown by the InternshipLogic component","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionInternshipUserPrefs.json\");","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" // Inject InternshipLogicManager with an InternshipDataStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" JsonInternshipDataStorage internshipDataStorage \u003d new JsonInternshipDataStorage(prefPath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"CaptainKeqing"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData, Path filePath)","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" JsonInternshipUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" new JsonInternshipUserPrefsStorage(temporaryFolder.resolve(\"ExceptionInternshipUserPrefs.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" InternshipStorageManager storage \u003d new InternshipStorageManager(internshipDataStorage, userPrefsStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"CaptainKeqing"},"content":" logic \u003d new InternshipLogicManager(model, storage);","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" // Triggers the saveInternshipData method by executing an add command","lastModifiedDate":"2024-04-04"},{"lineNumber":168,"author":{"gitId":"CaptainKeqing"},"content":" String addCommand \u003d InternshipUtil.getAddCommand(new InternshipBuilder(AMY).build());","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"CaptainKeqing"},"content":" Internship expectedInternship \u003d new InternshipBuilder(AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModelManager expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.addInternship(expectedInternship);","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jieqiboh":8,"HM33-Stu":1,"LWS49":5,"-":117,"CaptainKeqing":43}},{"path":"src/test/java/seedu/address/logic/commands/InternshipAddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" * Contains integration tests (interaction with the InternshipModel) for {@code InternshipAddCommand}.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommandIntegrationTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" private InternshipModel model;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" public void setUp() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" public void execute_newInternship_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" Internship validInternship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(model.getInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" expectedModel.addInternship(validInternship);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" assertCommandSuccess(new InternshipAddCommand(validInternship), model,","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" String.format(InternshipAddCommand.MESSAGE_SUCCESS, InternshipMessages.format(validInternship)),","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" public void execute_duplicateInternship_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" Internship internshipInList \u003d model.getInternshipData().getInternshipList().get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" assertCommandFailure(new InternshipAddCommand(internshipInList), model,","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand.MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":45,"LWS49":4}},{"path":"src/test/java/seedu/address/logic/commands/InternshipAddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.HOON_APPLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternshipAddCommand(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" public void execute_internshipAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" ModelStubAcceptingInternshipAdded modelStub \u003d new ModelStubAcceptingInternshipAdded();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" Internship validInternship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" CommandResult commandResult \u003d new InternshipAddCommand(validInternship).execute(modelStub);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(String.format(InternshipAddCommand.MESSAGE_SUCCESS, InternshipMessages.format(validInternship)),","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(Arrays.asList(validInternship), modelStub.internshipsAdded);","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" public void execute_duplicateInternship_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" Internship validInternship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand internshipAddCommand \u003d new InternshipAddCommand(validInternship);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" ModelStub modelStub \u003d new ModelStubWithInternship(validInternship);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(CommandException.class, internshipAddCommand.MESSAGE_DUPLICATE_INTERNSHIP, ()","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" -\u003e internshipAddCommand.execute(modelStub));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" Internship alice \u003d new InternshipBuilder().withCompanyName(\"Microsoft\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" Internship bob \u003d new InternshipBuilder().withCompanyName(\"Google\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand addAliceCommand \u003d new InternshipAddCommand(alice);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand addBobCommand \u003d new InternshipAddCommand(bob);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand addAliceCommandCopy \u003d new InternshipAddCommand(alice);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" // different Internship -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand internshipAddCommand \u003d new InternshipAddCommand(HOON_APPLE);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" String expected \u003d InternshipAddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + HOON_APPLE + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(expected, internshipAddCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":" * A default model stub that have all methods failing.","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":" private class ModelStub implements InternshipModel {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" public void setUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" public ReadOnlyInternshipUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":" public void setInternshipDataFilePath(Path internshipDataFilePath) {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"HM33-Stu"},"content":" public void addInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"HM33-Stu"},"content":" public void setInternshipData(ReadOnlyInternshipData newData) {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"HM33-Stu"},"content":" public ReadOnlyInternshipData getInternshipData() {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"HM33-Stu"},"content":" public void deleteInternship(Internship target) {","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"HM33-Stu"},"content":" public void setInternship(Internship target, Internship editedInternship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"HM33-Stu"},"content":" public ObservableList\u003cInternship\u003e getFilteredInternshipList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"HM33-Stu"},"content":" public void updateFilteredInternshipList(Predicate\u003cInternship\u003e predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" public void sortFilteredInternshipList(Comparator\u003cInternship\u003e comparator) {","lastModifiedDate":"2024-03-27"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"CaptainKeqing"},"content":" public void setSelectedInternship(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"CaptainKeqing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"CaptainKeqing"},"content":" public ObservableList\u003cInternship\u003e getSelectedInternship() {","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"HM33-Stu"},"content":" * A Model stub that contains a single internship entry.","lastModifiedDate":"2024-03-16"},{"lineNumber":179,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"HM33-Stu"},"content":" private class ModelStubWithInternship extends ModelStub {","lastModifiedDate":"2024-03-16"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":" private final Internship internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"HM33-Stu"},"content":" ModelStubWithInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"HM33-Stu"},"content":" this.internship \u003d internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":186,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":187,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":188,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":189,"author":{"gitId":"HM33-Stu"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":191,"author":{"gitId":"HM33-Stu"},"content":" return this.internship.isSameInternship(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":193,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":194,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":195,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":196,"author":{"gitId":"HM33-Stu"},"content":" * A Model stub that always accept the Internship being added.","lastModifiedDate":"2024-03-16"},{"lineNumber":197,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":198,"author":{"gitId":"HM33-Stu"},"content":" private class ModelStubAcceptingInternshipAdded extends ModelStub {","lastModifiedDate":"2024-03-16"},{"lineNumber":199,"author":{"gitId":"HM33-Stu"},"content":" final ArrayList\u003cInternship\u003e internshipsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":200,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":201,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":202,"author":{"gitId":"HM33-Stu"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":203,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":204,"author":{"gitId":"HM33-Stu"},"content":" return internshipsAdded.stream().anyMatch(internship::isSameInternship);","lastModifiedDate":"2024-03-16"},{"lineNumber":205,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":206,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":207,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":208,"author":{"gitId":"HM33-Stu"},"content":" public void addInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":209,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":210,"author":{"gitId":"HM33-Stu"},"content":" internshipsAdded.add(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":211,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":212,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":213,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"HM33-Stu"},"content":" public ReadOnlyInternshipData getInternshipData() {","lastModifiedDate":"2024-03-16"},{"lineNumber":215,"author":{"gitId":"HM33-Stu"},"content":" return new InternshipData();","lastModifiedDate":"2024-03-16"},{"lineNumber":216,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":217,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":218,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":201,"LWS49":3,"theman-oj10":8,"CaptainKeqing":6}},{"path":"src/test/java/seedu/address/logic/commands/InternshipAddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipAddTaskCommand.","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"public class InternshipAddTaskCommandTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" private static final Task DEFAULT_TASK \u003d new Task(\"edit resume\");","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" private final InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" public void execute_internshipWithSpecifiedTask_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" Internship internshipWithAddedTask \u003d getTypicalInternships().get(0);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand addTaskCommand \u003d new InternshipAddTaskCommand(INDEX_FIRST_INTERNSHIP, DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipAddTaskCommand.MESSAGE_ADD_TASK_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), internshipWithAddedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(addTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand addTaskCommand \u003d new InternshipAddTaskCommand(outOfBoundIndex, DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(addTaskCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" final InternshipAddTaskCommand standardCommand \u003d new","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand(INDEX_FIRST_INTERNSHIP, DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand commandWithSameValues \u003d new InternshipAddTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipAddTaskCommand(INDEX_SECOND_INTERNSHIP, DEFAULT_TASK)));","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipAddTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" new Task(\"finalise resume\"))));","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand addTaskCommand \u003d new InternshipAddTaskCommand(index, DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" String expected \u003d InternshipAddTaskCommand.class.getCanonicalName() + \"{index\u003d\" + index","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" + \", task\u003d\" + DEFAULT_TASK + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" assertEquals(expected, addTaskCommand.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":90}},{"path":"src/test/java/seedu/address/logic/commands/InternshipClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipClearCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipClearCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_emptyInternshipData_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel model \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipClearCommand(), model,","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" InternshipClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_nonEmptyInternshipData_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.setInternshipData(new InternshipData());","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipClearCommand(), model,","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" InternshipClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_commandWordIsClear_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(InternshipClearCommand.COMMAND_WORD, \"clear\");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":4,"CaptainKeqing":39}},{"path":"src/test/java/seedu/address/logic/commands/InternshipCommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.CompanyNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"import seedu.address.testutil.EditInternshipDescriptorBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"public class InternshipCommandTestUtil {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_COMPANY_NAME_AMY \u003d \"Microsoft\";","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" public static final String VALID_COMPANY_NAME_BOB \u003d \"Facebook\";","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_LOCATION_AMY \u003d \"remote\";","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" public static final String VALID_LOCATION_BOB \u003d \"Overseas\";","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_DESCRIPTION_AMY \u003d \"Develop new microsoft web applications\";","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public static final String VALID_DESCRIPTION_BOB \u003d \"Product Management Intern\";","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_ROLE_AMY \u003d \"Application Engineer\";","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" public static final String VALID_ROLE_BOB \u003d \"Intern\";","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_NAME_AMY \u003d \"John Doe\";","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_NAME_BOB \u003d \"Jane Doe\";","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_EMAIL_AMY \u003d \"johndoe@gmail.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_EMAIL_BOB \u003d \"janedoe@gmail.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_CONTACT_NUMBER_AMY \u003d \"91001274\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_NUMBER_BOB \u003d \"12345678\";","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" public static final String VALID_APPLICATION_STATUS_AMY \u003d \"Pending\";","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" public static final String VALID_APPLICATION_STATUS_BOB \u003d \"Pending\";","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public static final String VALID_REMARK_AMY \u003d \"3 Leetcode questions\";","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public static final String VALID_REMARK_BOB \u003d \"Has a behavioural interview\";","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" public static final String VALID_TASK_AMY \u003d \"Sample task\";","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" public static final String VALID_DEADLINE_AMY \u003d \"24/02/2222\";","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" public static final String COMPANY_NAME_DESC_AMY \u003d \" \" + PREFIX_COMPANY + VALID_COMPANY_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" public static final String COMPANY_NAME_DESC_BOB \u003d \" \" + PREFIX_COMPANY + VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" public static final String LOCATION_DESC_AMY \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" public static final String LOCATION_DESC_BOB \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" public static final String DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" public static final String DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" public static final String ROLE_DESC_AMY \u003d \" \" + PREFIX_ROLE + VALID_ROLE_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" public static final String ROLE_DESC_BOB \u003d \" \" + PREFIX_ROLE + VALID_ROLE_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_NAME_DESC_AMY \u003d \" \" + PREFIX_CONTACT_NAME + VALID_CONTACT_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_NAME_DESC_BOB \u003d \" \" + PREFIX_CONTACT_NAME + VALID_CONTACT_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_EMAIL_DESC_AMY \u003d \" \" + PREFIX_CONTACT_EMAIL + VALID_CONTACT_EMAIL_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_EMAIL_DESC_BOB \u003d \" \" + PREFIX_CONTACT_EMAIL + VALID_CONTACT_EMAIL_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_NUMBER_DESC_AMY \u003d \" \" + PREFIX_CONTACT_NUMBER + VALID_CONTACT_NUMBER_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_NUMBER_DESC_BOB \u003d \" \" + PREFIX_CONTACT_NUMBER + VALID_CONTACT_NUMBER_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" public static final String APPLICATION_STATUS_DESC_AMY \u003d \" \" + PREFIX_STATUS + VALID_APPLICATION_STATUS_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" public static final String APPLICATION_STATUS_DESC_BOB \u003d \" \" + PREFIX_STATUS + VALID_APPLICATION_STATUS_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" public static final String TASK_DESC_AMY \u003d \" \" + PREFIX_TASK + VALID_TASK_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" public static final String DEADLINE_DESC_AMY \u003d \" \" + PREFIX_DEADLINE + VALID_DEADLINE_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_COMPANY_NAME_DESC \u003d \" \" + PREFIX_COMPANY + \"Google\u0026\";","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_LOCATION_DESC \u003d \" \" + PREFIX_LOCATION + \"Mountain View\";","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" // Locations have to be either local, overseas, or remote","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_DESCRIPTION_DESC \u003d \" \" + PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" // empty string not allowed for descriptions","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \" \"; // empty string not allowed for roles","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_CONTACT_NAME_DESC \u003d \" \" + PREFIX_CONTACT_NAME + \"John\u0026\";","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_CONTACT_EMAIL_DESC \u003d \" \" + PREFIX_CONTACT_EMAIL + \"johndoe!gmail\";","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_CONTACT_NUMBER_DESC \u003d \" \" + PREFIX_CONTACT_NUMBER + \"98765432a\";","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" // \u0027a\u0027 not allowed in contact numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_APPLICATION_STATUS_DESC \u003d \" \" + PREFIX_STATUS + \"WAITING\";","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" // Application statuses have to be either to_apply, pending, rejected, accepted, or ongoing","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_DEADLINE_DESC \u003d \" \" + PREFIX_DEADLINE + \"24/2/2222\";","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" // Date format has to be DD/MM/YYYY","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" public static final EditInternshipDescriptorBuilder DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public static final EditInternshipDescriptorBuilder DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" static {","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" DESC_AMY \u003d new EditInternshipDescriptorBuilder().withCompanyName(VALID_COMPANY_NAME_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" .withLocation(VALID_LOCATION_AMY).withDescription(VALID_DESCRIPTION_AMY).withRole(VALID_ROLE_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" .withContactName(VALID_CONTACT_NAME_AMY).withContactEmail(VALID_CONTACT_EMAIL_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_AMY).withApplicationStatus(VALID_APPLICATION_STATUS_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" DESC_BOB \u003d new EditInternshipDescriptorBuilder().withCompanyName(VALID_COMPANY_NAME_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" .withLocation(VALID_LOCATION_BOB).withDescription(VALID_DESCRIPTION_BOB).withRole(VALID_ROLE_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" .withContactName(VALID_CONTACT_NAME_BOB).withContactEmail(VALID_CONTACT_EMAIL_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_BOB).withApplicationStatus(VALID_APPLICATION_STATUS_BOB);","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" public static void assertCommandSuccess(InternshipCommand command, InternshipModel actualModel,","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" CommandResult expectedCommandResult, InternshipModel expectedModel) {","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(InternshipCommand, InternshipModel,","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" * CommandResult, InternshipModel)}","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" public static void assertCommandSuccess(InternshipCommand command, InternshipModel actualModel,","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" String expectedMessage, InternshipModel expectedModel) {","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" * - the internship data, filtered internship list and selected internship in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" public static void assertCommandFailure(InternshipCommand command, InternshipModel actualModel,","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" String expectedMessage) {","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" // only do so by copying its components.","lastModifiedDate":"2024-03-14"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" InternshipData expectedInternshipData \u003d new InternshipData(actualModel.getInternshipData());","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" List\u003cInternship\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredInternshipList());","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" assertEquals(expectedInternshipData, actualModel.getInternshipData());","lastModifiedDate":"2024-03-14"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredInternshipList());","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" * Updates {@code model}\u0027s filtered list to show only the internship at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" * {@code model}\u0027s internship data.","lastModifiedDate":"2024-03-15"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" public static void showInternshipAtIndex(InternshipModel model, Index targetIndex) {","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredInternshipList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" Internship internship \u003d model.getFilteredInternshipList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" final String[] splitName \u003d internship.getCompanyName().companyName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" model.updateFilteredInternshipList(new CompanyNameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" assertEquals(1, model.getFilteredInternshipList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":2,"HM33-Stu":5,"LWS49":157}},{"path":"src/test/java/seedu/address/logic/commands/InternshipComparatorsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"public class InternshipComparatorsTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" private InternshipBuilder internshipBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" @BeforeEach","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" public void setUp() {","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" public void byApplicationStatus_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byApplicationStatus(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withApplicationStatus(\"to_apply\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withApplicationStatus(\"rejected\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" public void byApplicationStatus_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byApplicationStatus(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withApplicationStatus(\"to_apply\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withApplicationStatus(\"rejected\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" public void byCompanyName_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byCompanyName(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withCompanyName(\"AAA\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withCompanyName(\"BBB\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" public void byCompanyName_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byCompanyName(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withCompanyName(\"AAA\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withCompanyName(\"BBB\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" public void byDescription_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byDescription(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withDescription(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withDescription(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" public void byDescription_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byDescription(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withDescription(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withDescription(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" public void byPhone_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byPhone(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactNumber(\"12345678\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactNumber(\"23456789\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" public void byPhone_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byPhone(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactNumber(\"12345678\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactNumber(\"23456789\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" public void byLocation_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byLocation(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withLocation(\"remote\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withLocation(\"overseas\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-3, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" public void byLocation_ascComparator_correctOrder() {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byLocation(true);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withLocation(\"remote\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withLocation(\"overseas\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" assertEquals(3, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" public void byRole_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byRole(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRole(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRole(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" public void byRole_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byRole(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRole(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRole(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" public void byContactName_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byContactName(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactName(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactName(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" public void byContactName_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byContactName(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactName(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactName(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" public void byContactEmail_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byContactEmail(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactEmail(\"email1@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactEmail(\"email2@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" public void byContactEmail_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byContactEmail(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactEmail(\"email1@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactEmail(\"email2@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" public void byRemark_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byRemark(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRemark(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRemark(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" public void byRemark_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byRemark(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRemark(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRemark(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"theman-oj10":164}},{"path":"src/test/java/seedu/address/logic/commands/InternshipDeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.showInternshipAtIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for {@code InternshipDeleteCommand}.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipDeleteCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" private InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" Internship internshipToDelete \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(InternshipDeleteCommand.MESSAGE_DELETE_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.format(internshipToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" InternshipModelManager expectedModel \u003d new InternshipModelManager(model.getInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" expectedModel.deleteInternship(internshipToDelete);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" assertCommandFailure(deleteCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" Internship internshipToDelete \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(InternshipDeleteCommand.MESSAGE_DELETE_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.format(internshipToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(model.getInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" expectedModel.deleteInternship(internshipToDelete);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" showNoInternship(expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" // ensures that outOfBoundIndex is still in bounds of internship data list","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getInternshipData().getInternshipList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" assertCommandFailure(deleteCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteFirstCommand \u003d new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteSecondCommand \u003d new InternshipDeleteCommand(INDEX_SECOND_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteFirstCommandCopy \u003d new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"HM33-Stu"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"HM33-Stu"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":" // different internship -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"HM33-Stu"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(targetIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":" String expected \u003d InternshipDeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":" private void showNoInternship(InternshipModel model) {","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":" model.updateFilteredInternshipList(p -\u003e false);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(model.getFilteredInternshipList().isEmpty());","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":115,"LWS49":6}},{"path":"src/test/java/seedu/address/logic/commands/InternshipDeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternships;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"public class InternshipDeleteTaskCommandTest {","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" private static final Index INDEX_FIRST_TASK \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" private static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private final InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" public void execute_internshipTask_success() {","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" Internship internshipWithDeletedTask \u003d getTypicalInternships().get(0);","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" internshipWithDeletedTask.deleteTask(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" Task taskToDelete \u003d internshipWithDeletedTask.getTaskList().getTask(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand deleteTaskCommand \u003d new InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" INDEX_FIRST_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(InternshipDeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" taskToDelete);","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), internshipWithDeletedTask);","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand deleteTaskCommand \u003d new InternshipDeleteTaskCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" INDEX_FIRST_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" assertCommandFailure(deleteTaskCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public void execute_invalidTaskIndex_failure() {","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" Internship internshipWithTask \u003d getTypicalInternships().get(0);","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(internshipWithTask.getTaskListSize() + 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand deleteTaskCommand \u003d new InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" outOfBoundIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" assertCommandFailure(deleteTaskCommand, model, InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-30"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" final InternshipDeleteTaskCommand standardCommand \u003d new","lastModifiedDate":"2024-03-30"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP, INDEX_FIRST_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand commandWithSameValues \u003d new InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" INDEX_FIRST_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-30"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-30"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-30"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" // different internship index -\u003e returns false","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipDeleteTaskCommand(INDEX_SECOND_INTERNSHIP, INDEX_FIRST_TASK)));","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" // different task index -\u003e returns false","lastModifiedDate":"2024-03-30"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP, INDEX_SECOND_TASK)));","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-30"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-30"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand deleteTaskCommand \u003d new InternshipDeleteTaskCommand(internshipIndex, taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" String expected \u003d InternshipDeleteTaskCommand.class.getCanonicalName() + \"{internshipIndex\u003d\" + internshipIndex","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" + \", taskIndex\u003d\" + taskIndex + \"}\";","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"jieqiboh":107}},{"path":"src/test/java/seedu/address/logic/commands/InternshipEditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_EMAIL_BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.showInternshipAtIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"import seedu.address.testutil.EditInternshipDescriptorBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipEditCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"public class InternshipEditCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" private final InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder(editedInternship).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" //creating another model because the static model seems to be affected by modifications from tests in other","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" //files","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" InternshipModel otherModel \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(otherModel.getInternshipData()),","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(otherModel.getFilteredInternshipList().get(0), editedInternship);","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(editCommand, otherModel, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" Index indexLastInternship \u003d Index.fromOneBased(model.getFilteredInternshipList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" Internship lastInternship \u003d model.getFilteredInternshipList().get(indexLastInternship.getZeroBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" InternshipBuilder internshipInList \u003d new InternshipBuilder(lastInternship);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d internshipInList.withCompanyName(VALID_COMPANY_NAME_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" .withContactEmail(VALID_CONTACT_EMAIL_BOB).withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_BOB).withContactEmail(VALID_CONTACT_EMAIL_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" .withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(indexLastInternship, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(lastInternship, editedInternship);","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" new EditInternshipDescriptor());","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" InternshipData(model.getInternshipData()), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" Internship internshipInFilteredList \u003d model.getFilteredInternshipList().get(","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d new InternshipBuilder(internshipInFilteredList)","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" new EditInternshipDescriptorBuilder().withCompanyName(VALID_COMPANY_NAME_BOB).build());","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), editedInternship);","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" public void execute_duplicateInternshipUnfilteredList_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" Internship firstInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder(firstInternship).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_SECOND_INTERNSHIP, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(editCommand, model, InternshipEditCommand.MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" public void execute_duplicateInternshipFilteredList_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" // edit internship in filtered list into a duplicate in internship data","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" Internship internshipInList \u003d model.getInternshipData().getInternshipList().get(INDEX_SECOND_INTERNSHIP","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" .getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" new EditInternshipDescriptorBuilder(internshipInList).build());","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(editCommand, model, InternshipEditCommand.MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(editCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" * but smaller than size of internship data","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" public void execute_invalidInternshipIndexFilteredList_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" // ensures that outOfBoundIndex is still in bounds of internship data list","lastModifiedDate":"2024-04-04"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getInternshipData().getInternshipList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" new EditInternshipDescriptorBuilder().withCompanyName(VALID_COMPANY_NAME_BOB).build());","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(editCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_selectedInternshipBeingEdited_updatesSelectedInternship() {","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"CaptainKeqing"},"content":" Internship internshipInFilteredList \u003d model.getFilteredInternshipList()","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"CaptainKeqing"},"content":" .get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"CaptainKeqing"},"content":" model.setSelectedInternship(internshipInFilteredList); // set selected internship to the first internship","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"CaptainKeqing"},"content":" Internship editedInternship \u003d new InternshipBuilder(internshipInFilteredList)","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"CaptainKeqing"},"content":" .withCompanyName(\"Microhard\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"CaptainKeqing"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"CaptainKeqing"},"content":" new EditInternshipDescriptorBuilder().withCompanyName(\"Microhard\").build());","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"CaptainKeqing"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":186,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(model.getSelectedInternship().get(0), editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_nonSelectedInternshipBeingEdited_noUpdateToSelectedInternship() {","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"CaptainKeqing"},"content":" Internship internshipInFilteredList \u003d model.getFilteredInternshipList()","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"CaptainKeqing"},"content":" .get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"CaptainKeqing"},"content":" // set selected internship to the second internship, which is not the same as the first","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"CaptainKeqing"},"content":" model.setSelectedInternship(model.getFilteredInternshipList().get(INDEX_SECOND_INTERNSHIP.getZeroBased()));","lastModifiedDate":"2024-04-04"},{"lineNumber":200,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"CaptainKeqing"},"content":" Internship editedInternship \u003d new InternshipBuilder(internshipInFilteredList)","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"CaptainKeqing"},"content":" .withCompanyName(\"Microhard\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"CaptainKeqing"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"CaptainKeqing"},"content":" new EditInternshipDescriptorBuilder().withCompanyName(\"Microhard\").build());","lastModifiedDate":"2024-04-04"},{"lineNumber":205,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"CaptainKeqing"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-04-04"},{"lineNumber":208,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":209,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-04-04"},{"lineNumber":210,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":211,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":212,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":213,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":214,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":215,"author":{"gitId":"CaptainKeqing"},"content":" assertNotEquals(model.getSelectedInternship().get(0), editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":216,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(model.getSelectedInternship().get(0), model.getFilteredInternshipList().get(1));","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":218,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":" final InternshipEditCommand standardCommand \u003d new","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand(INDEX_FIRST_INTERNSHIP, DESC_AMY.build());","lastModifiedDate":"2024-03-15"},{"lineNumber":223,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor copyDescriptor \u003d new EditInternshipDescriptor(DESC_AMY.build());","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand commandWithSameValues \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP, copyDescriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-14"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipEditCommand(INDEX_SECOND_INTERNSHIP, DESC_AMY.build())));","lastModifiedDate":"2024-03-15"},{"lineNumber":240,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":241,"author":{"gitId":"LWS49"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":242,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipEditCommand(INDEX_FIRST_INTERNSHIP, DESC_BOB.build())));","lastModifiedDate":"2024-03-15"},{"lineNumber":243,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":244,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":245,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":246,"author":{"gitId":"LWS49"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":247,"author":{"gitId":"LWS49"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-14"},{"lineNumber":248,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor editInternshipDescriptor \u003d new EditInternshipDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":249,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(index, editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":250,"author":{"gitId":"LWS49"},"content":" String expected \u003d InternshipEditCommand.class.getCanonicalName() + \"{index\u003d\" + index","lastModifiedDate":"2024-03-15"},{"lineNumber":251,"author":{"gitId":"LWS49"},"content":" + \", editInternshipDescriptor\u003d\" + editInternshipDescriptor + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":252,"author":{"gitId":"LWS49"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":253,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":254,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":255,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":204,"CaptainKeqing":51}},{"path":"src/test/java/seedu/address/logic/commands/InternshipExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipExitCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipExitCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel model \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_exit_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_commandWordIsExit_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(InternshipExitCommand.COMMAND_WORD, \"exit\");","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"CaptainKeqing":29}},{"path":"src/test/java/seedu/address/logic/commands/InternshipFindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INTERNSHIPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.CARL_OPENAI;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.HOON_APPLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.IDA_NETFLIX;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.InternshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) for {@code InternshipFindCommand}.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipFindCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel model;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel expectedModel;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipFindCommandTest() {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" model.addInternship(HOON_APPLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" model.addInternship(IDA_NETFLIX);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.addInternship(HOON_APPLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.addInternship(IDA_NETFLIX);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"first\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"second\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand findFirstCommand \u003d new InternshipFindCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand findSecondCommand \u003d new InternshipFindCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand findFirstCommandCopy \u003d new InternshipFindCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" // different internship -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" public void execute_zeroKeywords_noInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"Tiktok\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(Collections.emptyList(), model.getFilteredInternshipList());","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" public void execute_multipleKeywords_multipleInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"Microsoft OpenAI\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(Arrays.asList(ALICE_MICROSOFT, CARL_OPENAI), model.getFilteredInternshipList());","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public void execute_oneFieldIsMatchAll_multipleInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" // Predicate only role contains \"Engineer\"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicateRole \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(null, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" null, null, \"Engineer\", null, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicateRole);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicateRole);","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(model.getFilteredInternshipList().contains(HOON_APPLE));","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" public void execute_twoFieldsIsMatchAll_lessInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" // Predicate with role contains \"Engineer\" and status contains \"ongoing\"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicateRoleStatus \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(null, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" \"ongoing\", null, \"Engineer\", null, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicateRoleStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicateRoleStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(model.getFilteredInternshipList().contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(model.getFilteredInternshipList().contains(IDA_NETFLIX));","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" public void execute_twoFieldsIsMatchAny_moreInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" // Predicate with role contains \"Engineer\" or status contains \"pending\"","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 5);","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicateRoleStatus \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(null, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" \"pending\", null, \"Engineer\", null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicateRoleStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicateRoleStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"Tiktok\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand findCommand \u003d new InternshipFindCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" String expected \u003d InternshipFindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"LWS49":6,"CaptainKeqing":133}},{"path":"src/test/java/seedu/address/logic/commands/InternshipHelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipHelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipHelpCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipHelpCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel model \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_help_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipHelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_commandWordIsHelp_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(InternshipHelpCommand.COMMAND_WORD, \"help\");","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"CaptainKeqing":29}},{"path":"src/test/java/seedu/address/logic/commands/InternshipListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.showInternshipAtIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipListCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipListCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel model;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel expectedModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeEach","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" public void setUp() {","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" expectedModel \u003d new InternshipModelManager(model.getInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipListCommand(), model, InternshipListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipListCommand(), model, InternshipListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_commandWordIsList_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(InternshipListCommand.COMMAND_WORD, \"list\");","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" // Add tests for list if its sorted in the future","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":3,"CaptainKeqing":43}},{"path":"src/test/java/seedu/address/logic/commands/InternshipRemarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.showInternshipAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"public class InternshipRemarkCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" private static final String REMARK_STUB \u003d \"A remark\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public void execute_addRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" Internship firstInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" Internship editedInternship \u003d new InternshipBuilder(firstInternship).withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" new Remark(editedInternship.getRemark().value));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(InternshipRemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" expectedModel.setInternship(firstInternship, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" public void execute_deleteRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" Internship firstInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" Internship editedInternship \u003d new InternshipBuilder(firstInternship).withRemark(\"\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" new Remark(editedInternship.getRemark().toString()));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(InternshipRemarkCommand.MESSAGE_DELETE_REMARK_SUCCESS, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" expectedModel.setInternship(firstInternship, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" Internship firstInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" Internship editedInternship \u003d new InternshipBuilder(model.getFilteredInternshipList()","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" .get(INDEX_FIRST_INTERNSHIP.getZeroBased()))","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" .withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" new Remark(editedInternship.getRemark().value));","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(InternshipRemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" expectedModel.setInternship(firstInternship, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" assertCommandFailure(remarkCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" * but smaller than size of internship data","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" public void execute_invalidInternshipIndexFilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" // ensures that outOfBoundIndex is still in bounds of internship data list","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getInternshipData().getInternshipList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" assertCommandFailure(remarkCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" final InternshipRemarkCommand standardCommand \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_AMY));","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand commandWithSameValues \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_AMY));","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipRemarkCommand(INDEX_SECOND_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_AMY))));","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_BOB))));","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jieqiboh":138}},{"path":"src/test/java/seedu/address/logic/commands/InternshipSetDeadlineCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipSetDeadlineCommand.","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"public class InternshipSetDeadlineCommandTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" private static final Index INDEX_FIRST_TASK \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" private static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" private static final Deadline DEFAULT_DEADLINE \u003d new Deadline(\"20/04/2024\");","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" private final InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" public void execute_internshipWithSpecifiedTaskAndDeadline_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" //this is BENSON_GOOGLE","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" Internship internshipWithAddedDeadline \u003d getTypicalInternshipData().getInternshipList().get(1);","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" internshipWithAddedDeadline.getTaskList().getTask(0).setDeadline(DEFAULT_DEADLINE);","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand setDeadlineCommand \u003d new InternshipSetDeadlineCommand(INDEX_SECOND_INTERNSHIP,","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" INDEX_FIRST_TASK, DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipSetDeadlineCommand.MESSAGE_ADD_DEADLINE_SUCCESS,","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" DEFAULT_DEADLINE);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(getTypicalInternshipData()),","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(expectedModel.getFilteredInternshipList().get(1), internshipWithAddedDeadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(setDeadlineCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand setDeadlineCommand \u003d new InternshipSetDeadlineCommand(outOfBoundIndex,","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" INDEX_FIRST_TASK, DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(setDeadlineCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" public void execute_invalidTaskIndex_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" Internship internshipWithTask \u003d getTypicalInternships().get(0);","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(internshipWithTask.getTaskListSize() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand setDeadlineCommand \u003d new InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" outOfBoundIndex, DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(setDeadlineCommand, model, InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" final InternshipSetDeadlineCommand standardCommand \u003d new","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP, INDEX_FIRST_TASK, DEFAULT_DEADLINE);","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand commandWithSameValues \u003d new InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" INDEX_FIRST_TASK, DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" // different internship index -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipSetDeadlineCommand(INDEX_SECOND_INTERNSHIP, INDEX_FIRST_TASK,","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" DEFAULT_DEADLINE)));","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" // different task index -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP, INDEX_SECOND_TASK,","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" DEFAULT_DEADLINE)));","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP, INDEX_FIRST_TASK,","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" new Deadline(\"22/02/2022\"))));","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" Index internshipIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" Index taskIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand setDeadlineCommand \u003d new InternshipSetDeadlineCommand(internshipIndex, taskIndex,","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" String expected \u003d InternshipSetDeadlineCommand.class.getCanonicalName() + \"{internshipIndex\u003d\" + internshipIndex","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" + \", taskIndex\u003d\" + taskIndex + \", deadline\u003d\" + DEFAULT_DEADLINE + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" assertEquals(expected, setDeadlineCommand.toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":115}},{"path":"src/test/java/seedu/address/logic/commands/InternshipSortCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertSame;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.InternshipSortCommandParser;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSortCommandTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" private InternshipModel model;","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.FieldEnum fieldCompany;","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.FieldEnum fieldLocation;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.FieldEnum fieldContactNumber;","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.OrderEnum ascending;","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.OrderEnum descending;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" private InternshipBuilder internshipBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" @BeforeEach","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" public void setUp() {","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" fieldCompany \u003d InternshipSortCommandParser.FieldEnum.COMPANY;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" fieldLocation \u003d InternshipSortCommandParser.FieldEnum.LOCATION;","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" fieldContactNumber \u003d InternshipSortCommandParser.FieldEnum.CONTACT_NUMBER;","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" ascending \u003d InternshipSortCommandParser.OrderEnum.ASCENDING;","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" descending \u003d InternshipSortCommandParser.OrderEnum.DESCENDING;","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullField_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternshipSortCommand(null, ascending));","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullOrder_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternshipSortCommand(fieldCompany, null));","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" public void constructor_validFieldAndOrder_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortNameCommand \u003d new InternshipSortCommand(fieldCompany, ascending);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortLocationCommand \u003d new InternshipSortCommand(fieldLocation, descending);","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" assertSame(fieldCompany, sortNameCommand.getField());","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" assertSame(ascending, sortNameCommand.getOrder());","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" assertSame(fieldLocation, sortLocationCommand.getField());","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" assertSame(descending, sortLocationCommand.getOrder());","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortCompanyNameCommand \u003d new InternshipSortCommand(fieldCompany, ascending);","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortLocationCommand \u003d new InternshipSortCommand(fieldLocation, descending);","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" assertTrue(sortCompanyNameCommand.equals(sortCompanyNameCommand));","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortNameCommandCopy \u003d new InternshipSortCommand(fieldCompany, ascending);","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" assertTrue(sortCompanyNameCommand.equals(sortNameCommandCopy));","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" assertFalse(sortCompanyNameCommand.equals(1));","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" assertFalse(sortCompanyNameCommand.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" // different field -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" assertFalse(sortCompanyNameCommand.equals(sortLocationCommand));","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortCompanyName_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withCompanyName(\"AAA\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(fieldCompany, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"AAA\", model.getFilteredInternshipList().get(0).getCompanyName().toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortContactNumber_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactNumber(\"11111111\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(fieldContactNumber, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"11111111\", model.getFilteredInternshipList().get(0).getContactNumber().toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortContactEmail_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactEmail(\"aaa@gmail.com\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_EMAIL, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"aaa@gmail.com\", model.getFilteredInternshipList().get(0).getContactEmail().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortStatus_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-27"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withApplicationStatus(\"to_apply\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.STATUS, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"TO_APPLY\", model.getFilteredInternshipList().get(0).getApplicationStatus().toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortLocation_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withLocation(\"local\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(fieldLocation, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"LOCAL\", model.getFilteredInternshipList().get(0).getLocation().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortDescription_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withDescription(\"ZZZ\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.DESCRIPTION, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"ZZZ\", model.getFilteredInternshipList().get(0).getDescription().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortRemark_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRemark(\"111\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.REMARK, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"111\", model.getFilteredInternshipList().get(0).getRemark().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortRole_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRole(\"ZZZ\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.ROLE, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"ZZZ\", model.getFilteredInternshipList().get(0).getRole().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" public void toString_validFieldAndOrder_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":183,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortNameCommand \u003d new InternshipSortCommand(fieldCompany, ascending);","lastModifiedDate":"2024-03-27"},{"lineNumber":184,"author":{"gitId":"theman-oj10"},"content":" String expected \u003d InternshipSortCommand.class.getCanonicalName() + \"{field\u003d\"","lastModifiedDate":"2024-03-27"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"content":" + fieldCompany.toString() + \", order\u003d\" + ascending.toString() + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expected, sortNameCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"theman-oj10":188}},{"path":"src/test/java/seedu/address/logic/parser/InternshipAddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.APPLICATION_STATUS_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.APPLICATION_STATUS_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.COMPANY_NAME_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.COMPANY_NAME_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NAME_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NAME_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESCRIPTION_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_APPLICATION_STATUS_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_COMPANY_NAME_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_EMAIL_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_NAME_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_NUMBER_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.LOCATION_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.LOCATION_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.ROLE_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.ROLE_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_APPLICATION_STATUS_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" private InternshipAddCommandParser parser \u003d new InternshipAddCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" Internship expectedInternship \u003d new InternshipBuilder(BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_EMAIL_DESC_BOB + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB + ROLE_DESC_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" new InternshipAddCommand(expectedInternship));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" String validExpectedInternshipString \u003d COMPANY_NAME_DESC_BOB + INVALID_CONTACT_NAME_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_EMAIL_DESC_BOB + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":" + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB + ROLE_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":" // multiple company names","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_COMPANY));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" // multiple contact names","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, CONTACT_NAME_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NAME));","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":" // multiple contact emails","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, CONTACT_EMAIL_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":" // multiple contact numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, CONTACT_NUMBER_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"HM33-Stu"},"content":" // multiple locations","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, LOCATION_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"HM33-Stu"},"content":" // multiple application statuses","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, APPLICATION_STATUS_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_STATUS));","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":" // multiple descriptions","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, DESCRIPTION_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"HM33-Stu"},"content":" // multiple roles","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, ROLE_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" validExpectedInternshipString + COMPANY_NAME_DESC_BOB + INVALID_CONTACT_NAME_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_EMAIL_DESC_BOB + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":" + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":" + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_LOCATION, PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"HM33-Stu"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"HM33-Stu"},"content":" // invalid company name","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_COMPANY_NAME_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_COMPANY));","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact name","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_CONTACT_NAME_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NAME));","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact email","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_CONTACT_EMAIL_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact number","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_CONTACT_NUMBER_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" // invalid location","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_LOCATION_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"HM33-Stu"},"content":" // invalid application status","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_APPLICATION_STATUS_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_STATUS));","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"HM33-Stu"},"content":" // invalid description","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_DESCRIPTION_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"HM33-Stu"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_ROLE_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"HM33-Stu"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"HM33-Stu"},"content":" // invalid company name","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_COMPANY_NAME_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_COMPANY));","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact name","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_CONTACT_NAME_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NAME));","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact email","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_CONTACT_EMAIL_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-16"},{"lineNumber":170,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact number","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_CONTACT_NUMBER_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":" // invalid location","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_LOCATION_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":179,"author":{"gitId":"HM33-Stu"},"content":" // invalid application status","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_APPLICATION_STATUS_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_STATUS));","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"HM33-Stu"},"content":" // invalid description","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_DESCRIPTION_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2024-03-16"},{"lineNumber":186,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":187,"author":{"gitId":"HM33-Stu"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":188,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_ROLE_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":189,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":191,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":193,"author":{"gitId":"HM33-Stu"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":194,"author":{"gitId":"HM33-Stu"},"content":" // No optional fields filled in","lastModifiedDate":"2024-03-16"},{"lineNumber":195,"author":{"gitId":"HM33-Stu"},"content":" Internship expectedInternship \u003d new InternshipBuilder(AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":196,"author":{"gitId":"HM33-Stu"},"content":" assertParseSuccess(parser, COMPANY_NAME_DESC_AMY + CONTACT_NAME_DESC_AMY + CONTACT_EMAIL_DESC_AMY","lastModifiedDate":"2024-03-16"},{"lineNumber":197,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_AMY + LOCATION_DESC_AMY + APPLICATION_STATUS_DESC_AMY + DESCRIPTION_DESC_AMY","lastModifiedDate":"2024-03-16"},{"lineNumber":198,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_AMY, new InternshipAddCommand(expectedInternship));","lastModifiedDate":"2024-03-16"},{"lineNumber":199,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":200,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":201,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":202,"author":{"gitId":"HM33-Stu"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":203,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipAddCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":204,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":205,"author":{"gitId":"HM33-Stu"},"content":" // missing company name prefix","lastModifiedDate":"2024-03-16"},{"lineNumber":206,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, VALID_COMPANY_NAME_BOB + DESCRIPTION_DESC_BOB + APPLICATION_STATUS_DESC_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":207,"author":{"gitId":"HM33-Stu"},"content":" expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":208,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":209,"author":{"gitId":"HM33-Stu"},"content":" // missing description prefix","lastModifiedDate":"2024-03-16"},{"lineNumber":210,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + VALID_DESCRIPTION_BOB + APPLICATION_STATUS_DESC_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":211,"author":{"gitId":"HM33-Stu"},"content":" expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":212,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":213,"author":{"gitId":"HM33-Stu"},"content":" // missing status prefix","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + DESCRIPTION_DESC_BOB + VALID_APPLICATION_STATUS_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":215,"author":{"gitId":"HM33-Stu"},"content":" expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":216,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":217,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":218,"author":{"gitId":"HM33-Stu"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-16"},{"lineNumber":219,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, VALID_COMPANY_NAME_BOB + VALID_DESCRIPTION_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":220,"author":{"gitId":"HM33-Stu"},"content":" + VALID_APPLICATION_STATUS_BOB, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":221,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":222,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":223,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":224,"author":{"gitId":"HM33-Stu"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":225,"author":{"gitId":"HM33-Stu"},"content":" // invalid company name","lastModifiedDate":"2024-03-16"},{"lineNumber":226,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_COMPANY_NAME_DESC + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":227,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":228,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":229,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":230,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact name","lastModifiedDate":"2024-03-16"},{"lineNumber":231,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + INVALID_CONTACT_NAME_DESC + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":232,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":233,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":234,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":235,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact email","lastModifiedDate":"2024-03-16"},{"lineNumber":236,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + INVALID_CONTACT_EMAIL_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":237,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":238,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, ContactEmail.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":239,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":240,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact number","lastModifiedDate":"2024-03-16"},{"lineNumber":241,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":242,"author":{"gitId":"HM33-Stu"},"content":" + INVALID_CONTACT_NUMBER_DESC + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":243,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, ContactNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":244,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":245,"author":{"gitId":"HM33-Stu"},"content":" // invalid location","lastModifiedDate":"2024-03-16"},{"lineNumber":246,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":247,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + INVALID_LOCATION_DESC + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":248,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":249,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":250,"author":{"gitId":"HM33-Stu"},"content":" // invalid application status","lastModifiedDate":"2024-03-16"},{"lineNumber":251,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":252,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + INVALID_APPLICATION_STATUS_DESC + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":253,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, ApplicationStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":254,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":255,"author":{"gitId":"HM33-Stu"},"content":" // invalid description","lastModifiedDate":"2024-03-16"},{"lineNumber":256,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":257,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + INVALID_DESCRIPTION_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":258,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":259,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":260,"author":{"gitId":"HM33-Stu"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-16"},{"lineNumber":261,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + INVALID_CONTACT_NAME_DESC","lastModifiedDate":"2024-04-03"},{"lineNumber":262,"author":{"gitId":"HM33-Stu"},"content":" + INVALID_CONTACT_EMAIL_DESC + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB","lastModifiedDate":"2024-04-03"},{"lineNumber":263,"author":{"gitId":"HM33-Stu"},"content":" + DESCRIPTION_DESC_BOB + ROLE_DESC_BOB, ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":264,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":265,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":265}},{"path":"src/test/java/seedu/address/logic/parser/InternshipAddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.TASK_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_TASK_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipAddTaskCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"public class InternshipAddTaskCommandParserTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" private static final String SAMPLE_TASK \u003d \"Sample task\";","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipAddTaskCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" private InternshipAddTaskCommandParser parser \u003d new InternshipAddTaskCommandParser();","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" String userInputWithoutIndex \u003d PREFIX_TASK + SAMPLE_TASK;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" String userInputWithoutTask \u003d \"1 \" + PREFIX_TASK;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" String userInputWithoutPrefixTask \u003d \"1 \" + SAMPLE_TASK;","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" // no index specified","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutIndex, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" // no task specified","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutTask, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand.MESSAGE_EMPTY_TASK));","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" // no prefix task","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutPrefixTask, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" // negative index","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, \"-5 \" + PREFIX_TASK + SAMPLE_TASK, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" // zero index","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, \"0 \" + PREFIX_TASK + SAMPLE_TASK, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + TASK_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand expectedCommand \u003d new InternshipAddTaskCommand(targetIndex, new Task(VALID_TASK_AMY));","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":3,"LWS49":65}},{"path":"src/test/java/seedu/address/logic/parser/InternshipCommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"public class InternshipCommandParserTestUtil {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" public static void assertParseSuccess(InternshipParser\u003c? extends InternshipCommand\u003e parser, String userInput,","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" InternshipCommand expectedCommand) {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" InternshipCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" public static void assertParseFailure(InternshipParser\u003c? extends InternshipCommand\u003e parser, String userInput,","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" String expectedMessage) {","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":7,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/InternshipDataParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipClearCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipDeleteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipEditCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipExitCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipFindCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipHelpCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.EditInternshipDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipDataParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipDataParser parser \u003d new InternshipDataParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" Internship internship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" InternshipAddCommand command \u003d (InternshipAddCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" InternshipUtil.getAddCommand(internship));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" assertEquals(new InternshipAddCommand(internship), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipClearCommand.COMMAND_WORD) instanceof InternshipClearCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipClearCommand.COMMAND_WORD + \" 3\") instanceof InternshipClearCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" InternshipDeleteCommand command \u003d (InternshipDeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" InternshipDeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_INTERNSHIP.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" Internship internship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder(internship).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" InternshipEditCommand command \u003d (InternshipEditCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" InternshipEditCommand.COMMAND_WORD + \" \" + INDEX_FIRST_INTERNSHIP.getOneBased()","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" + \" \" + InternshipUtil.getEditInternshipDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new InternshipEditCommand(INDEX_FIRST_INTERNSHIP, descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipExitCommand.COMMAND_WORD) instanceof InternshipExitCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipExitCommand.COMMAND_WORD + \" 3\") instanceof InternshipExitCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand.COMMAND_WORD + \" \" + InternshipFindCommand.MODE_WITHALL","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" + \" \" + PREFIX_COMPANY + \" Microsoft Google \") instanceof InternshipFindCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand.COMMAND_WORD + \" \" + InternshipFindCommand.MODE_WITHANY","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" + \" \" + PREFIX_LOCATION + \" remote local \" + PREFIX_CONTACT_NAME + \" tom dick harry \")","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" instanceof InternshipFindCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipHelpCommand.COMMAND_WORD) instanceof InternshipHelpCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipHelpCommand.COMMAND_WORD + \" 3\") instanceof InternshipHelpCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipListCommand.COMMAND_WORD) instanceof InternshipListCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipListCommand.COMMAND_WORD + \" 3\") instanceof InternshipListCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" InternshipHelpCommand.MESSAGE_USAGE), () -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"HM33-Stu":3,"LWS49":6,"CaptainKeqing":96}},{"path":"src/test/java/seedu/address/logic/parser/InternshipDeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipDeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" * outside the InternshipDeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" * same path through the InternshipDeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipDeleteCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" private final InternshipDeleteCommandParser parser \u003d new InternshipDeleteCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" public void parse_validArgs_returnsInternshipDeleteCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" assertParseSuccess(parser, \"1\", new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, \"a\", MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" public void parse_emptyArgs_throwsParseException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":41}},{"path":"src/test/java/seedu/address/logic/parser/InternshipDeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DEADLINE_DESC_AMY;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.InternshipDeleteTaskCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"public class InternshipDeleteTaskCommandParserTest {","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" // deletetask INDEX /selecttask TASKINDEX","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" private static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipDeleteTaskCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" private InternshipDeleteTaskCommandParser parser \u003d new InternshipDeleteTaskCommandParser();","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" String userInputWithoutIndex \u003d String.format(\"%s %d\", PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" String userInputWithoutPrefixSelectTask \u003d String.format(\"%d %d\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" String userInputWithoutTaskIndex \u003d String.format(\"%d %s %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" PREFIX_SELECT_TASK, DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" // no internship index specified","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputWithoutIndex, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" // no prefix select task","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputWithoutPrefixSelectTask, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // no task index specified","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputWithoutTaskIndex, InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" String userInputNegativeInternshipIndex \u003d String.format(\"%d %s %d\", -5, PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" String userInputZeroInternshipIndex \u003d String.format(\"%d %s %d\", 0, PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" String userInputNegativeTaskIndex \u003d String.format(\"%d %s %d\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" PREFIX_SELECT_TASK, -5);","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" String userInputZeroTaskIndex \u003d String.format(\"%d %s %d\", internshipIndex.getOneBased(), PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" 0);","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" // negative index","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputNegativeInternshipIndex, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" // zero index","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputZeroInternshipIndex, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" // negative index","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputNegativeTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" // zero index","lastModifiedDate":"2024-03-30"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputZeroTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" String userInput \u003d String.format(\"%d %s %d\", internshipIndex.getOneBased(), PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand expectedCommand \u003d new InternshipDeleteTaskCommand(internshipIndex, taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"jieqiboh":89}},{"path":"src/test/java/seedu/address/logic/parser/InternshipEditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.APPLICATION_STATUS_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.COMPANY_NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.COMPANY_NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_APPLICATION_STATUS_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_COMPANY_NAME_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_EMAIL_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_NAME_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_NUMBER_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.LOCATION_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.ROLE_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_APPLICATION_STATUS_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_EMAIL_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NAME_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NUMBER_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NUMBER_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_LOCATION_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_ROLE_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_THIRD_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":"import seedu.address.testutil.EditInternshipDescriptorBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"public class InternshipEditCommandParserTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipEditCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" private InternshipEditCommandParser parser \u003d new InternshipEditCommandParser();","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" // no index specified","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, VALID_COMPANY_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" // no field specified","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" // negative index","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"-5\" + COMPANY_NAME_DESC_AMY, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" // zero index","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"0\" + COMPANY_NAME_DESC_AMY, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_COMPANY_NAME_DESC, CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" // invalid name","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_LOCATION_DESC, Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" //invalid location","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_DESCRIPTION_DESC, Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" //invalid description","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_CONTACT_NAME_DESC, ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" //invalid contact name","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_CONTACT_EMAIL_DESC, ContactEmail.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" //invalid contact email","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_CONTACT_NUMBER_DESC, ContactNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" //invalid contact number","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_APPLICATION_STATUS_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" ApplicationStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" //invalid application status","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" // invalid company name followed by valid email","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_COMPANY_NAME_DESC + CONTACT_EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_COMPANY_NAME_DESC + INVALID_CONTACT_EMAIL_DESC","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" + VALID_CONTACT_NUMBER_AMY + VALID_COMPANY_NAME_AMY, CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + COMPANY_NAME_DESC_AMY + LOCATION_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" + DESCRIPTION_DESC_AMY + ROLE_DESC_AMY + CONTACT_NAME_DESC_AMY + CONTACT_EMAIL_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" + CONTACT_NUMBER_DESC_AMY + APPLICATION_STATUS_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_AMY).withLocation(VALID_LOCATION_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" .withDescription(VALID_DESCRIPTION_AMY).withRole(VALID_ROLE_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" .withContactName(VALID_CONTACT_NAME_AMY).withContactEmail(VALID_CONTACT_EMAIL_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_AMY).withApplicationStatus(VALID_APPLICATION_STATUS_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" .build();","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + CONTACT_NUMBER_DESC_BOB + CONTACT_EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" .withContactEmail(VALID_CONTACT_EMAIL_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" // name","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_THIRD_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + COMPANY_NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":" // location","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + LOCATION_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withLocation(VALID_LOCATION_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":" // description","lastModifiedDate":"2024-03-15"},{"lineNumber":169,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withDescription(VALID_DESCRIPTION_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":171,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":172,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":174,"author":{"gitId":"LWS49"},"content":" // role","lastModifiedDate":"2024-03-15"},{"lineNumber":175,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + ROLE_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withRole(VALID_ROLE_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":177,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":178,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":179,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":180,"author":{"gitId":"LWS49"},"content":" // contact name","lastModifiedDate":"2024-03-15"},{"lineNumber":181,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + CONTACT_NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":182,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withContactName(VALID_CONTACT_NAME_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":183,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" // contact email","lastModifiedDate":"2024-03-15"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + CONTACT_EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withContactEmail(VALID_CONTACT_EMAIL_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":" // contact number","lastModifiedDate":"2024-03-15"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + CONTACT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withContactNumber(VALID_CONTACT_NUMBER_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":198,"author":{"gitId":"LWS49"},"content":" // application status","lastModifiedDate":"2024-03-15"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + APPLICATION_STATUS_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withApplicationStatus(VALID_APPLICATION_STATUS_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-15"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-15"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-15"},{"lineNumber":209,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-15"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":212,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_CONTACT_NUMBER_DESC + CONTACT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":213,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":214,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInput, InternshipMessages","lastModifiedDate":"2024-03-15"},{"lineNumber":215,"author":{"gitId":"LWS49"},"content":" .getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-15"},{"lineNumber":216,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":217,"author":{"gitId":"LWS49"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + CONTACT_NUMBER_DESC_BOB + INVALID_CONTACT_NUMBER_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInput, InternshipMessages","lastModifiedDate":"2024-03-15"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":" .getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":223,"author":{"gitId":"LWS49"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-15"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + COMPANY_NAME_DESC_AMY + CONTACT_NUMBER_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":" + CONTACT_NUMBER_DESC_BOB + COMPANY_NAME_DESC_BOB + CONTACT_EMAIL_DESC_AMY + CONTACT_NUMBER_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":" + CONTACT_EMAIL_DESC_AMY + CONTACT_NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInput, InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_COMPANY,","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":" PREFIX_CONTACT_NUMBER, PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-15"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_CONTACT_NUMBER_DESC + INVALID_ROLE_DESC","lastModifiedDate":"2024-03-15"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":" + INVALID_CONTACT_EMAIL_DESC + INVALID_CONTACT_NUMBER_DESC + INVALID_ROLE_DESC","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":" + INVALID_CONTACT_EMAIL_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInput, InternshipMessages","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":" .getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER, PREFIX_ROLE, PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-15"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":239}},{"path":"src/test/java/seedu/address/logic/parser/InternshipFindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipFindCommand.MODE_WITHALL;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipFindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.InternshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipFindCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipFindCommandParser parser \u003d new InternshipFindCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipFindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_invalidMode_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, \"withsome /com Microsoft Google\",","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.INVALID_MODE_SPECIFIED));","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_prefixPresentButNoKey_throwsParseException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /com\",","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand.NO_KEYWORD_SPECIFIED);","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_invalidPrefix_throwsParseException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /invalidPrefix Microsoft Google\",","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.NO_SEARCH_KEY_SPECIFIED));","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_noMode_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, \" /com Microsoft Google\",","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.INVALID_MODE_SPECIFIED));","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_noSearchKey_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL,","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.NO_SEARCH_KEY_SPECIFIED));","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand expectedFindCommand \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipFindCommand(new InternshipContainsKeywordsPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" \"Microsoft Google\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, true));","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" assertParseSuccess(parser, MODE_WITHALL + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" + PREFIX_COMPANY + \" Microsoft Google \", expectedFindCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" assertParseSuccess(parser, MODE_WITHALL + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" + PREFIX_COMPANY + \" \\n Microsoft \\n \\t Google \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_unsupportedPrefix_throwsParseException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Single unsupported prefix","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /phone 99999999\",","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.UNSUPPORTED_PREFIX_SPECIFIED, \"/phone\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Multiple unsupported prefixes","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /phone 99999999 /email helloworld@gmail.com\",","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.UNSUPPORTED_PREFIX_SPECIFIED, \"/email, /phone\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Multiple unsupported prefixes with supported prefix","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /selecttask 2 /phone 99999999 /com Microsoft Google\",","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.UNSUPPORTED_PREFIX_SPECIFIED, \"/phone, /selecttask\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" public void getPrefixesPresent() {","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Prefixes present","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(\"withall /com Microsoft Google\", PREFIX_COMPANY);","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixesPresent \u003d InternshipFindCommandParser","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" .getPrefixesPresent(argMultimap, new Prefix[]{PREFIX_COMPANY});","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(1, prefixesPresent.length);","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(PREFIX_COMPANY, prefixesPresent[0]);","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Prefixes not present","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(\"withall /com Microsoft Google\", PREFIX_COMPANY);","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" prefixesPresent \u003d InternshipFindCommandParser","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" .getPrefixesPresent(argMultimap, new Prefix[]{PREFIX_CONTACT_EMAIL});","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(0, prefixesPresent.length);","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"CaptainKeqing":100}},{"path":"src/test/java/seedu/address/logic/parser/InternshipParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"class InternshipParserUtilTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" void parseRemark_null_throwsNullPointerException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(NullPointerException.class, () -\u003e InternshipParserUtil.parseRemark(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" void parseRemarks_validValue_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" // whitespace only","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new Remark(\"\"), InternshipParserUtil.parseRemark(\" \"));","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" // removes leading and trailing whitespaces","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new Remark(\"This is a remark\"), InternshipParserUtil.parseRemark(\" This is a remark \"));","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" // multiple words","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new Remark(\"This is a remark\"), InternshipParserUtil.parseRemark(\"This is a remark\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" public void parseOptionalRole_emptyOptional_returnsUnknown() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(new Role(\"Unknown Role\"), InternshipParserUtil.parseOptionalRole(Optional.empty()));","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" public void parseOptionalRole_presentOptionalBlank_returnsUnknown() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(new Role(\"Unknown Role\"), InternshipParserUtil.parseOptionalRole(Optional.empty()));","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" public void parseOptionalLocation_emptyOptional_returnsUnknown() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(new Location(\"UNKNOWN\"), InternshipParserUtil.parseOptionalLocation(Optional.empty()));","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" public void parseOptionalLocation_presentOptionalBlank_returnsUnknown() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(new Location(\"UNKNOWN\"), InternshipParserUtil.parseOptionalLocation(Optional.empty()));","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" void anyPrefixesPresent_noPrefixesPresent_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \"No prefixes here, just a regular string\";","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.anyPrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" void anyPrefixesPresent_onePrefixPresentWithValue_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google random string random string Software Engineer\";","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.anyPrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" void anyPrefixesPresent_onePrefixPresentWithoutValue_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY;","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.anyPrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_noPrefixesPresent_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \"No prefixes here, just a regular string\";","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_onePrefixPresentWithValue_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google random string random string Software Engineer\";","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_onePrefixPresentWithNoValue_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY;","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_onePrefixPresentWithEmptyValue_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_onePrefixPresentWithValueOnePrefixPresentWithEmptyValue_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google \" + PREFIX_ROLE + \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" void arePrefixesPresent_noPrefixesPresent_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \"No prefixes here, just a regular string\";","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.arePrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" void arePrefixesPresent_somePrefixesPresent_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google\";","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.arePrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"CaptainKeqing"},"content":" void arePrefixesPresent_allPrefixesPresent_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google \" + PREFIX_ROLE + \" Software Engineer\";","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.arePrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":" void arePrefixesPresent_prefixesPresentButEmpty_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" \" + PREFIX_ROLE + \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.arePrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"HM33-Stu":26,"CaptainKeqing":128}},{"path":"src/test/java/seedu/address/logic/parser/InternshipSetDeadlineCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DEADLINE_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_DEADLINE_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DEADLINE_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipSetDeadlineCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"public class InternshipSetDeadlineCommandParserTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" private static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipSetDeadlineCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" private InternshipSetDeadlineCommandParser parser \u003d new InternshipSetDeadlineCommandParser();","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" String userInputWithoutIndex \u003d String.format(\"%s %d %s\", PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" String userInputWithoutPrefixSelectTask \u003d String.format(\"%d %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" String userInputWithoutTaskIndex \u003d String.format(\"%d %s %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" String userInputWithoutPrefixDeadline \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, taskIndex.getOneBased(), VALID_DEADLINE_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" String userInputWithoutDeadlineText \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, taskIndex.getOneBased(), PREFIX_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" // no index specified","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutIndex, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" // no prefix select task","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutPrefixSelectTask, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" // no task index specified","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputWithoutTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" // no prefix deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutPrefixDeadline, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" // no deadline text","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutDeadlineText, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" Deadline.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" String userInputNegativeInternshipIndex \u003d String.format(\"%d %s %d %s\", -5, PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" String userInputZeroInternshipIndex \u003d String.format(\"%d %s %d %s\", 0, PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" String userInputNegativeTaskIndex \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, -5, DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" String userInputZeroTaskIndex \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(), PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" 0, DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" String userInputWithInvalidDeadline \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, 1, INVALID_DEADLINE_DESC);","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" // negative index","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputNegativeInternshipIndex, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" // zero index","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputZeroInternshipIndex, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" // negative index","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputNegativeTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" // zero index","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputZeroTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" // invalid deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithInvalidDeadline, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" Deadline.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" String userInput \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(), PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand expectedCommand \u003d new InternshipSetDeadlineCommand(internshipIndex, taskIndex,","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" new Deadline(VALID_DEADLINE_AMY));","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":7,"LWS49":98}},{"path":"src/test/java/seedu/address/logic/parser/InternshipSortCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipSortCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSortCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" private final InternshipSortCommandParser parser \u003d new InternshipSortCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" public void parseValidInput() throws ParseException {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand expectedCommand \u003d new InternshipSortCommand(InternshipSortCommandParser.FieldEnum.COMPANY,","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum.ASCENDING);","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand actualCommand \u003d parser.parse(\" \" + PREFIX_COMPANY.getPrefix() + \" asc\");","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expectedCommand, actualCommand);","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" // Valid input: \"email desc\"","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" expectedCommand \u003d new InternshipSortCommand(InternshipSortCommandParser.FieldEnum.CONTACT_EMAIL,","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum.DESCENDING);","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" actualCommand \u003d parser.parse(\" \" + PREFIX_CONTACT_EMAIL.getPrefix() + \" desc\");","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expectedCommand, actualCommand);","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" public void parseEmptyField() {","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: empty field","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" asc\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" public void parseEmptyOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: empty order","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix()));","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" public void parseEmptyFieldAndOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: empty field and order","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" public void parseEmptyInput() {","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: empty input","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" public void parseExtraArguments() {","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: extra arguments","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix() + \" asc extra\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" public void parseMultiplePrefix() {","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: multiple prefixes","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix() + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_EMAIL.getPrefix() + \" asc\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" public void parseInvalidField() {","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: invalid field","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" invalid_field asc\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" public void parseInvalidOrder() {","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: invalid order","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix() + \" invalid_order\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" public void parseInvalidFieldAndOrder() {","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: invalid field and order","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" invalid_field invalid_order\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" public void parseMultipleFields() {","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: multiple fields","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix()","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" + \" asc \" + PREFIX_CONTACT_EMAIL + \" asc\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" public void parseValidInput_contactNameAsc() throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand expectedCommand \u003d new InternshipSortCommand(","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_NAME,","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum.ASCENDING","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand actualCommand \u003d parser.parse(\" \" + PREFIX_CONTACT_NAME.getPrefix() + \" asc\");","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expectedCommand, actualCommand);","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" public void getValue() {","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" assertEquals(PREFIX_COMPANY.getPrefix(), InternshipSortCommandParser.FieldEnum.COMPANY.getValue());","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" public void fromPrefixString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e InternshipSortCommandParser.FieldEnum.fromPrefixString(\"c\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"theman-oj10":111}},{"path":"src/test/java/seedu/address/logic/parser/PrefixTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"class PrefixTest {","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" void getPrefixesAsString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Empty Prefix[]","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] emptyPrefixes \u003d new Prefix[]{};","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(\"\", Prefix.getPrefixesAsString(\", \", emptyPrefixes));","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Single Prefix","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] singlePrefixes \u003d new Prefix[]{PREFIX_COMPANY};","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(\"/com\", Prefix.getPrefixesAsString(\", \", singlePrefixes));","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Multiple Prefixes","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] multiplePrefixes \u003d new Prefix[]{PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_LOCATION};","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(\"/com, /poc, /loc\", Prefix.getPrefixesAsString(\", \", multiplePrefixes));","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"CaptainKeqing":25}},{"path":"src/test/java/seedu/address/model/InternshipDataTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.model.util.InternshipSampleDataUtil.EMPTY_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.util.InternshipSampleDataUtil.EMPTY_TASKLIST;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":"public class InternshipDataTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" private final InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" public void testAddInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Amazon\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Business Development Associate\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipData.hasInternship(internship));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" public void testRemoveInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Google\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"johndoe@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"12345678\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Software Engineer\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" data.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" data.removeInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" assertFalse(data.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" public void testSetInternships() {","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Facebook\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Alice Smith\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"alicesmith@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"98765432\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"accepted\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Marketing Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Marketing Intern\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Microsoft\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Bob Brown\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"bobbrown@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"87654321\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Software Developer\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" List\u003cInternship\u003e internships \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" internships.add(internship1);","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" internships.add(internship2);","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" data.setInternships(internships);","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(internship1));","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(internship2));","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" public void testResetData() {","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Apple\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Eve Green\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"evegreen@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"13579246\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Product Management Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Product Manager\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" data.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" InternshipData newData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" Internship newInternship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Tesla\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Elon Musk\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"elonmusk@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"98765432\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"accepted\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Engineering Intern\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" newData.addInternship(newInternship);","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" data.resetData(newData);","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" assertFalse(data.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(newInternship));","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" public void testHasInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"SpaceX\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Elon Musk\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"elonmusk@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"98765432\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"accepted\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Engineering Intern\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" data.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" public void testSetInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Amazon\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Business Development Associate\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Google\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"johndoe@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"12345678\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Software Engineer\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":198,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"theman-oj10"},"content":" data.addInternship(internship1);","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":" data.setInternship(internship1, internship2);","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" assertFalse(data.hasInternship(internship1));","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(internship2));","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":" public void testEquals() {","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":" InternshipData data1 \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" InternshipData data2 \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" assertEquals(data1, data2);","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":" public void testGetInternshipList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":219,"author":{"gitId":"theman-oj10"},"content":" ObservableList\u003cInternship\u003e internshipList \u003d data.getInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":" assertNotNull(internshipList);","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipList.isEmpty());","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":" public void constructor() {","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"theman-oj10"},"content":" assertEquals(Collections.emptyList(), internshipData.getInternshipList());","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":230,"author":{"gitId":"theman-oj10"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e internshipData.resetData(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"theman-oj10"},"content":" public void resetData_withValidReadOnlyInternshipData_replacesData() {","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"theman-oj10"},"content":" InternshipData newData \u003d getTypicalInternshipData();","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"theman-oj10"},"content":" internshipData.resetData(newData);","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"theman-oj10"},"content":" assertEquals(newData, internshipData);","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e internshipData.hasInternship(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship_internshipNotInInternshipData_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"theman-oj10"},"content":" assertFalse(internshipData.hasInternship(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship_internshipInInternshipData() {","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipData.hasInternship(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship_internshipWithSameIdentityFieldsInInternshipData() {","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"theman-oj10"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withCompanyName(\"Google\")","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"theman-oj10"},"content":" .withContactName(\"John Doe\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"theman-oj10"},"content":" assertFalse(internshipData.hasInternship(editedAlice));","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"theman-oj10"},"content":" public void getInternshipList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"theman-oj10"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e internshipData.getInternshipList().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"theman-oj10"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"theman-oj10"},"content":" String expected \u003d InternshipData.class.getCanonicalName() + \"{Internship list\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"theman-oj10"},"content":" + internshipData.getInternshipList() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":273,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expected, internshipData.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":274,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":275,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":276,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":277,"author":{"gitId":"theman-oj10"},"content":" * A stub ReadOnlyInternshipData whose internships list can violate interface constraints.","lastModifiedDate":"2024-03-17"},{"lineNumber":278,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":279,"author":{"gitId":"theman-oj10"},"content":" private static class InternshipDataStub implements ReadOnlyInternshipData {","lastModifiedDate":"2024-03-17"},{"lineNumber":280,"author":{"gitId":"theman-oj10"},"content":" private final ObservableList\u003cInternship\u003e internships \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-17"},{"lineNumber":281,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":282,"author":{"gitId":"theman-oj10"},"content":" InternshipDataStub(Collection\u003cInternship\u003e internships) {","lastModifiedDate":"2024-03-17"},{"lineNumber":283,"author":{"gitId":"theman-oj10"},"content":" this.internships.setAll(internships);","lastModifiedDate":"2024-03-17"},{"lineNumber":284,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":285,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":286,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":287,"author":{"gitId":"theman-oj10"},"content":" public ObservableList\u003cInternship\u003e getInternshipList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":288,"author":{"gitId":"theman-oj10"},"content":" return internships;","lastModifiedDate":"2024-03-17"},{"lineNumber":289,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":290,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":291,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":292,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":293,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jieqiboh":11,"LWS49":19,"theman-oj10":263}},{"path":"src/test/java/seedu/address/model/InternshipModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipComparators;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.InternshipSortCommandParser;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"public class InternshipModelManagerTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" private final InternshipModelManager internshipModelManager \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" private final Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Amazon\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Business Development Associate\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" new Remark(\"\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" new TaskList()","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" public void constructor() {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" ReadOnlyInternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" ReadOnlyInternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager modelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipData, modelManager.getInternshipData());","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" assertEquals(Paths.get(\"data\", \"internshipdata.json\"), modelManager.getInternshipDataFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" public void addInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipModelManager.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipDataFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" Path path \u003d Paths.get(\"test.json\");","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.setInternshipDataFilePath(path);","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" assertEquals(path, internshipModelManager.getInternshipDataFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" public void getFilteredInternshipList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.getFilteredInternshipList().remove(0));","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" public void updateFilteredInternshipList_nullPredicate_throwsNullPointerException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e internshipModelManager.updateFilteredInternshipList(null));","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public void sortInternshipList_nullComparator_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e internshipModelManager.sortFilteredInternshipList(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" public void sortInternshipList_validComparator_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship);","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.sortFilteredInternshipList(InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.COMPANY, true));","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internship, internshipModelManager.getFilteredInternshipList().get(0));","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" public void equals() {","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager modelManagerCopy \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipModelManager, modelManagerCopy);","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipModelManager, internshipModelManager);","lastModifiedDate":"2024-03-30"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipModelManager.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" public void deleteInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.deleteInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" assertFalse(internshipModelManager.hasInternship(internship));","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" public void setInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Amazon\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Business Development Associate\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" new Remark(\"\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" new TaskList()","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" );","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Google\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"johndoe@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"12345678\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Software Engineer\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" new Remark(\"\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" new TaskList()","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship1);","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.setInternship(internship1, internship2);","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" assertFalse(internshipModelManager.hasInternship(internship1));","lastModifiedDate":"2024-03-30"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipModelManager.hasInternship(internship2));","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" public void getInternshipData() {","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipData, internshipModelManager.getInternshipData());","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" public void getInternshipUserPrefs() {","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" assertEquals(userPrefs, internshipModelManager.getUserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" public void getGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" assertEquals(new GuiSettings(), internshipModelManager.getGuiSettings());","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" public void setGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1000, 1000, 100, 100);","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" assertEquals(guiSettings, internshipModelManager.getGuiSettings());","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipData() {","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"theman-oj10"},"content":" InternshipData newInternshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"theman-oj10"},"content":" newInternshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.setInternshipData(newInternshipData);","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":" assertEquals(newInternshipData, internshipModelManager.getInternshipData());","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" public void getCompanyNameComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":206,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":207,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withCompanyName(\"AAA\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withCompanyName(\"BBB\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.COMPANY, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byCompanyName(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":214,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":" public void getDescriptionComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":218,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":219,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withDescription(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withDescription(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.DESCRIPTION, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byDescription(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":226,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":227,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":229,"author":{"gitId":"theman-oj10"},"content":" public void getRoleComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":230,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":231,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRole(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRole(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":234,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.ROLE, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":235,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byRole(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":236,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":237,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":238,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":239,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":241,"author":{"gitId":"theman-oj10"},"content":" public void getContactNameComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":242,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":243,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactName(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactName(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_NAME, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":247,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byContactName(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":248,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":249,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":251,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":252,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":253,"author":{"gitId":"theman-oj10"},"content":" public void getContactNumberComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":254,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactNumber(\"12345678\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":256,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactNumber(\"23456789\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":257,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":258,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_NUMBER, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":259,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byPhone(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":260,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":261,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":262,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":263,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":264,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":265,"author":{"gitId":"theman-oj10"},"content":" public void getLocationComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":266,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":267,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withLocation(\"remote\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":268,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withLocation(\"overseas\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":269,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.LOCATION, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":271,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byLocation(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":272,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":273,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":274,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":275,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":276,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":277,"author":{"gitId":"theman-oj10"},"content":" public void getRemarkComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":278,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":279,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRemark(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":280,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRemark(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":281,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":282,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.REMARK, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":283,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byRemark(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":284,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":285,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":286,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":287,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":288,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":289,"author":{"gitId":"theman-oj10"},"content":" public void getStatusComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":290,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":291,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withApplicationStatus(\"to_apply\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":292,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withApplicationStatus(\"rejected\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":293,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":294,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.STATUS, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":295,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byApplicationStatus(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":296,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":297,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":298,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":299,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":300,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":301,"author":{"gitId":"theman-oj10"},"content":" public void getContactEmailComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":302,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":303,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactEmail(\"email1@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":304,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactEmail(\"email2@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":305,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":306,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_EMAIL, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":307,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byContactEmail(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":308,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":309,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":310,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":311,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":312,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":313,"author":{"gitId":"theman-oj10"},"content":" public void getFilteredInternshipList() {","lastModifiedDate":"2024-03-27"},{"lineNumber":314,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipModelManager.getFilteredInternshipList(),","lastModifiedDate":"2024-03-27"},{"lineNumber":315,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.getFilteredInternshipList());","lastModifiedDate":"2024-03-27"},{"lineNumber":316,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":317,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jieqiboh":14,"LWS49":16,"theman-oj10":287}},{"path":"src/test/java/seedu/address/model/InternshipUserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"public class InternshipUserPrefsTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullInternshipUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternshipUserPrefs(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullInternshipUserPrefsAndNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nonNullInternshipUserPrefsAndNonNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" ReadOnlyInternshipUserPrefs emptyUserPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs(emptyUserPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" assertEquals(emptyUserPrefs, userPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullInternshipUserPrefsAndNonNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" GuiSettings guiSettings \u003d userPrefs.getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" userPrefs \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs finalUserPrefs \u003d userPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e finalUserPrefs.setGuiSettings(guiSettings));","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nonNullInternshipUserPrefsAndNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPref \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipDataFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setInternshipDataFilePath(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" public void resetData_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.resetData(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" public void resetData_nullUserPrefsAndNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" public void resetData_nullUserPrefsAndNonNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" GuiSettings guiSettings \u003d userPrefs.getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" userPrefs \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs finalUserPrefs \u003d userPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e finalUserPrefs.setGuiSettings(guiSettings));","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" public void resetData_nonNullUserPrefsAndNonNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" GuiSettings guiSettings \u003d userPrefs.getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(guiSettings);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" userPrefs.resetData(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" assert(userPrefs.equals(userPrefs2));","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" public void getInternshipDataFilePath_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" Path intershipDataPath \u003d userPrefs.getInternshipDataFilePath();","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" assert(intershipDataPath !\u003d null);","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipDataFilePath_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" assertEquals(Paths.get(\"data\", \"internshipdata2.json\"), userPrefs.getInternshipDataFilePath());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" public void hashCode_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" userPrefs.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" public void equals_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" assertFalse(userPrefs.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameInternshipDataFilePathAndGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePathAndGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePathAndSameGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameInternshipDataFilePathAndDifferentGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePathAndNullGuiSettings_nullPointer() {","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs2.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullInternshipDataFilePathAndDifferentGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullInternshipDataFilePathAndNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameInternshipDataFilePathAndNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullInternshipDataFilePathAndSameGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePathAndSameGuiSettingsAndNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"theman-oj10"},"content":" public void toString_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"theman-oj10"},"content":" public void toString_nullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"theman-oj10"},"content":" public void toString_nonNullInternshipDataFilePathAndGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"theman-oj10"},"content":" public void toString_nullInternshipDataFilePathAndGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"theman-oj10"},"content":" public void toString_nonNullInternshipDataFilePathAndNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"theman-oj10"},"content":" public void toString_nullInternshipDataFilePathAndNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":273,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":274,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":275,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":276,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":277,"author":{"gitId":"theman-oj10"},"content":" public void hashCode_nonNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":278,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":279,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":280,"author":{"gitId":"theman-oj10"},"content":" userPrefs.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":281,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":282,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":283,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":284,"author":{"gitId":"theman-oj10"},"content":" public void equals_nonNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":285,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":286,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":287,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":288,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":289,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":290,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":291,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":292,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":293,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":294,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":295,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":296,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":297,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":298,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":299,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":300,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":301,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":302,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":303,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":304,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":305,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":306,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":307,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":308,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":309,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":310,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":311,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":312,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":313,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":314,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":315,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullGuiSettingsAndDifferentInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":316,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":317,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":318,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":319,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":320,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":321,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":322,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":323,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullGuiSettingsAndNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":324,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":325,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":326,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":327,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":328,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":329,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":330,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameGuiSettingsAndNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":331,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":332,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":333,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":334,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":335,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":336,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":337,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":338,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullGuiSettingsAndSameInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":339,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":340,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":341,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":342,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":343,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":344,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":345,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":346,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentGuiSettingsAndNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":347,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":348,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":349,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":350,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":351,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":352,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":353,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":354,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":355,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameGuiSettingsAndDifferentInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":356,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":357,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":358,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":359,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":360,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":361,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":362,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":363,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":364,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":365,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentGuiSettingsAndSameInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":366,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":367,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":368,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":369,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":370,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":371,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":372,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":373,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":374,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":375,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":376,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameGuiSettingsAndSameInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":377,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":378,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":379,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":380,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":381,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":382,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":383,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":384,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":385,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":386,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":387,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentGuiSettingsAndDifferentInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":388,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":389,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":390,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":391,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":392,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":393,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":394,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":395,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":396,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":397,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":398,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"theman-oj10":398}},{"path":"src/test/java/seedu/address/model/internship/ApplicationStatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ApplicationStatusTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new ApplicationStatus(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidApplicationStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" String invalidApplicationStatus \u003d \"\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ApplicationStatus(invalidApplicationStatus));","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public void isValidApplicationStatus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" // null applicationStatuses","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e ApplicationStatus.isValidApplicationStatus(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" // invalid applicationStatuses","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ApplicationStatus.isValidApplicationStatus(\"\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ApplicationStatus.isValidApplicationStatus(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" // valid applicationStatuses","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"to_apply\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"pending\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"rejected\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"accepted\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"ongoing\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"TO_APPLY\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"PENDING\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"REJECTED\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"ACCEPTED\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"ONGOING\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" ;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus applicationStatus \u003d new ApplicationStatus(\"to_apply\");","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" assertTrue(applicationStatus.equals(new ApplicationStatus(\"to_apply\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" assertTrue(applicationStatus.equals(applicationStatus));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" assertFalse(applicationStatus.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" assertFalse(applicationStatus.equals(5.0f));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertFalse(applicationStatus.equals(new ApplicationStatus(\"pending\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public void string() {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus toApply \u003d new ApplicationStatus(\"to_apply\");","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus pending \u003d new ApplicationStatus(\"pending\");","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus rejected \u003d new ApplicationStatus(\"rejected\");","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus accepted \u003d new ApplicationStatus(\"accepted\");","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus ongoing \u003d new ApplicationStatus(\"ongoing\");","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" //test for equality","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" assertTrue(toApply.toString().equals(\"TO_APPLY\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" assertTrue(pending.toString().equals(\"PENDING\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" assertTrue(rejected.toString().equals(\"REJECTED\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" assertTrue(accepted.toString().equals(\"ACCEPTED\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ongoing.toString().equals(\"ONGOING\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" assertFalse(toApply.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" assertFalse(pending.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" assertFalse(rejected.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertFalse(accepted.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ongoing.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" // Test for case sensitivity","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assertFalse(toApply.toString().equals(\"to_apply\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" assertFalse(pending.toString().equals(\"pending\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" assertFalse(rejected.toString().equals(\"rejected\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" assertFalse(accepted.toString().equals(\"accepted\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ongoing.toString().equals(\"ongoing\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":93}},{"path":"src/test/java/seedu/address/model/internship/CompanyNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class CompanyNameTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new CompanyName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidCompanyName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" String invalidCompanyName \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new CompanyName(invalidCompanyName));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public void isValidCompanyName() {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" // null companyNames","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e CompanyName.isValidCompanyName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" // invalid companyNames","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertFalse(CompanyName.isValidCompanyName(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(CompanyName.isValidCompanyName(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(CompanyName.isValidCompanyName(\"^\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(CompanyName.isValidCompanyName(\"Facebook*\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(CompanyName.isValidCompanyName(\" Microsoft\")); // leading space","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" // valid companyNames","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" assertTrue(CompanyName.isValidCompanyName(\"Microsoft\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(CompanyName.isValidCompanyName(\"Hewlett Packard\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(CompanyName.isValidCompanyName(\"Kentucky Fried Chicken\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" CompanyName companyName \u003d new CompanyName(\"Google\");","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" assertTrue(companyName.equals(new CompanyName(\"Google\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" assertTrue(companyName.equals(companyName));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" assertFalse(companyName.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" assertFalse(companyName.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" assertFalse(companyName.equals(new CompanyName(\"Microsoft\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":53,"CaptainKeqing":6}},{"path":"src/test/java/seedu/address/model/internship/ContactEmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ContactEmailTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactEmail(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidContactEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" String invalidContactEmail \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactEmail(invalidContactEmail));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public void isValidContactEmail() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // null contactEmail","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactEmail.isValidContactEmail(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" // blank contactEmail","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" // missing parts","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" // invalid parts","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peter..jack@example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@.example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@-example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example.c\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" // valid contactEmail","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"a@bc\")); // minimal","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"a1+be.d@example1.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"peter_jack@very-very-very-long-example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"if.you.dream.it_you.can.do.it@example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" ContactEmail contactEmail \u003d new ContactEmail(\"valid@email\");","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" assertTrue(contactEmail.equals(new ContactEmail(\"valid@email\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" assertTrue(contactEmail.equals(contactEmail));","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactEmail.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactEmail.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactEmail.equals(new ContactEmail(\"other.valid@email\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":88}},{"path":"src/test/java/seedu/address/model/internship/ContactNumberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ContactNumberTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactNumber(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidContactNumber_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" String invalidContactNumber \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactNumber(invalidContactNumber));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public void isValidContactNumber() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // null contactNumber number","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactNumber.isValidContactNumber(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" // invalid contactNumber numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"contactNumber\")); // non-numeric","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" // valid contactNumber numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" assertTrue(ContactNumber.isValidContactNumber(\"9114433\")); // exactly 7 numbers","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactNumber.isValidContactNumber(\"93121534\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactNumber.isValidContactNumber(\"124293842033123\")); // long contactNumber numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" ContactNumber contactNumber \u003d new ContactNumber(\"9999999\");","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" assertTrue(contactNumber.equals(new ContactNumber(\"9999999\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" assertTrue(contactNumber.equals(contactNumber));","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactNumber.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactNumber.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" assertFalse(contactNumber.equals(new ContactNumber(\"9999995\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":56,"LWS49":4}},{"path":"src/test/java/seedu/address/model/internship/DeadlineTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e new Deadline(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_invalidDeadline_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" String invalidDeadline \u003d \"\";","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Deadline(invalidDeadline));","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" public void isValidDeadline() {","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" // null deadline","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e Deadline.isValidDeadline(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" // invalid deadlines","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\"\")); // Empty string","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\" \")); // Just whitespace","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\"23-03-2024\")); // Invalid format, should contain slashes","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\"23/Mar/2024\")); // Example of a invalid deadline using month name","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\"23/March/2024\")); // Example of a invalid deadline using month name","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" // valid deadlines","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(Deadline.isValidDeadline(\"23/03/2024\")); // Example of a valid deadline format (YYYY/MM/DD)","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" Deadline deadline \u003d new Deadline(\"23/03/2024\");","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(deadline.equals(new Deadline(\"23/03/2024\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(deadline.equals(deadline));","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deadline.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deadline.equals(5.0f));","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deadline.equals(new Deadline(\"25/04/2025\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"HM33-Stu":57}},{"path":"src/test/java/seedu/address/model/internship/DescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class DescriptionTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Description(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidDescription_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" String invalidDescription \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Description(invalidDescription));","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public void isValidDescription() {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" // null descriptions","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e Description.isValidDescription(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" // invalid descriptions","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Description.isValidDescription(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Description.isValidDescription(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" // valid descriptions","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Description.isValidDescription(\"Make UI Figma Mockups\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" Description description \u003d new Description(\"Make UI Figma Mockups\");","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertTrue(description.equals(new Description(\"Make UI Figma Mockups\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertFalse(description.equals(new Description(\"Write REST API endpoints\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":52}},{"path":"src/test/java/seedu/address/model/internship/InternshipContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" String firstPredicateKeywords \u003d \"first\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" String secondPredicateKeywords \u003d \"first second\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(firstPredicateKeywords, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(secondPredicateKeywords, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(firstPredicateKeywords, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" // different internship -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" public void test_companyNameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" // One keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"Google\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(predicate.test(new InternshipBuilder().withCompanyName(\"Google\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" predicate \u003d new InternshipContainsKeywordsPredicate(\"Hewlett Packard\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(predicate.test(new InternshipBuilder().withCompanyName(\"Hewlett Packard\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" predicate \u003d new InternshipContainsKeywordsPredicate(\"Microsoft Google\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(predicate.test(new InternshipBuilder().withCompanyName(\"Microsoft Facebook\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" predicate \u003d new InternshipContainsKeywordsPredicate(\"MicrOSoFt GOOgle\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(predicate.test(new InternshipBuilder().withCompanyName(\"Microsoft Google\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" String companyNameKeywords \u003d \"Google\";","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" String contactNameKeywords \u003d \"John\";","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" String locationKeywords \u003d \"Singapore\";","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" String statusKeywords \u003d \"accepted\";","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" String descriptionKeywords \u003d \"AI\";","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" String roleKeywords \u003d \"developer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" String remarkKeywords \u003d \"good\";","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" boolean isMatchAll \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d new InternshipContainsKeywordsPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" companyNameKeywords, contactNameKeywords, locationKeywords,","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" statusKeywords, descriptionKeywords, roleKeywords, remarkKeywords, isMatchAll);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" String expected \u003d InternshipContainsKeywordsPredicate.class.getCanonicalName() + \"{\"","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" + \" companyNameKeywords\u003d[\" + companyNameKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" + \" contactNameKeywords\u003d[\" + contactNameKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" + \" locationKeywords\u003d[\" + locationKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" + \" statusKeywords\u003d[\" + statusKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" + \" descriptionKeywords\u003d[\" + descriptionKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" + \" roleKeywords\u003d[\" + roleKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" + \" remarkKeywords\u003d[\" + remarkKeywords + \"], \"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" + \" isMatchAll\u003d\" + isMatchAll + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"LWS49":1,"CaptainKeqing":91}},{"path":"src/test/java/seedu/address/model/internship/InternshipTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.model.util.InternshipSampleDataUtil.EMPTY_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.util.InternshipSampleDataUtil.EMPTY_TASKLIST;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"public class InternshipTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public void constructor_allNull_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(NullPointerException.class, () -\u003e new Internship(null, null, null,","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" null, null, null, null, null, null, null));","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" public void constructor_nullCompanyName_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(NullPointerException.class, () -\u003e new Internship(null, new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" new ContactEmail(\"johnDoe@gmail.com\"), new ContactNumber(\"91234567\"), new Location(\"local\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" new ApplicationStatus(\"to_apply\"), new Description(\"Software Engineer Intern\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" new Role(\"Software Engineer\"), EMPTY_REMARK, EMPTY_TASKLIST));","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" public void isSameInternship() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(ALICE_MICROSOFT.isSameInternship(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" // same mandatory fields but all other attributes different -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withLocation(\"local\")","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" .withRole(\"Backend Engineer\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" // different company name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withCompanyName(VALID_COMPANY_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":" // different contact name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactName(\"Alicia Paulina\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" // different contact number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactNumber(\"85462364\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" // different contact email, all other attributes same -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactEmail(\"alicer@exampler.com\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" // different application status, all other attributes same -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withApplicationStatus(\"rejected\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" // different description, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withDescription(\"Data Analyst Intern\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" // company name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" Internship editedBob \u003d new InternshipBuilder(BOB).withCompanyName(VALID_COMPANY_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(BOB.isSameInternship(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" Internship aliceCopy \u003d new InternshipBuilder(ALICE_MICROSOFT).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(ALICE_MICROSOFT.equals(aliceCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(ALICE_MICROSOFT.equals(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(5));","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" // different internship -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" // different company name -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withCompanyName(VALID_COMPANY_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" // different contact name -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactName(\"John Doe\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" // different contact email -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactEmail(\"johnDoe@gmail.com\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":5,"HM33-Stu":15,"LWS49":3,"CaptainKeqing":80}},{"path":"src/test/java/seedu/address/model/internship/LocationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class LocationTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Location(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public void isValidLocation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" // null locations","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e Location.isValidLocation(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" // invalid locations","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Location.isValidLocation(\"\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Location.isValidLocation(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // valid locations","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"LOCAL\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"OVERSEAS\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"REMOTE\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"local\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"overseas\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"remote\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" Location location \u003d new Location(\"local\");","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertTrue(location.equals(new Location(\"LOCAL\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" assertTrue(location.equals(location));","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertFalse(location.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertFalse(location.equals(5.0f));","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertFalse(location.equals(new Location(\"OVERSEAS\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" public void string() {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" Location local \u003d new Location(\"local\");","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" Location remote \u003d new Location(\"remote\");","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" Location overseas \u003d new Location(\"overseas\");","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" // Test for equality","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" assertTrue(local.toString().equals(\"LOCAL\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertTrue(remote.toString().equals(\"REMOTE\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" assertTrue(overseas.toString().equals(\"OVERSEAS\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" assertFalse(local.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remote.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" assertFalse(overseas.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" // Test for case sensitivity","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" assertFalse(local.toString().equals(\"local\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remote.toString().equals(\"remote\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" assertFalse(overseas.toString().equals(\"overseas\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":73}},{"path":"src/test/java/seedu/address/model/internship/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class RemarkTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" Remark remark \u003d new Remark(\"Has a behavioural interview!\");","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" assertTrue(remark.equals(new Remark(\"Has a behavioural interview!\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remark.equals(5.0f));","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remark.equals(new Remark(\"Write REST API endpoints\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"jieqiboh":33}},{"path":"src/test/java/seedu/address/model/internship/RoleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class RoleTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Role(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public void isValidRole() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" // null roles","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e Role.isValidRole(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" // invalid roles","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Role.isValidRole(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Role.isValidRole(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // valid roles","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Role.isValidRole(\"UI Designer\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" Role role \u003d new Role(\"UI Designer\");","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertTrue(role.equals(new Role(\"UI Designer\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" assertTrue(role.equals(role));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" assertFalse(role.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" assertFalse(role.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" assertFalse(role.equals(new Role(\"Backend Engineer\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":46,"HM33-Stu":1}},{"path":"src/test/java/seedu/address/model/internship/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"public class TaskListTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.toString(), \"1. Submit Supporting Documents\\n2. Finish Resume\\n\");","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" public void addTaskTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.getTaskListSize(), 2);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public void deleteTaskTest() {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" Task task \u003d new Task(\"Submit Supporting Documents\");","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" Task task2 \u003d new Task(\"Finish Resume\");","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" taskList.addTask(task2);","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" taskList.deleteTask(0);","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertEquals(taskList.getTaskListSize(), 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" taskList.deleteTask(0);","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" assertEquals(taskList.getTaskListSize(), 0);","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" public void getTaskTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.getTask(0), new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.getTask(1), new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" public void getTaskListSizeTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.getTaskListSize(), 2);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" TaskList taskList2 \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" taskList2.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" taskList2.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" assertTrue(taskList2.equals(taskList));","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" assertTrue(taskList.equals(taskList));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" assertFalse(taskList.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" assertFalse(taskList.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" TaskList taskList3 \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" taskList3.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" assertFalse(taskList.equals(taskList3));","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":13,"LWS49":68}},{"path":"src/test/java/seedu/address/model/internship/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"public class TaskTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e new Task(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_invalidTask_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" String invalidTask \u003d \"\";","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Task(invalidTask));","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" public void isValidTask() {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" // null tasks","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e Task.isValidTask(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" // invalid tasks","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Task.isValidTask(\"\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Task.isValidTask(\" \"));","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" // valid tasks","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(Task.isValidTask(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" Task task \u003d new Task(\"Submit Supporting Documents\");","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(task.equals(new Task(\"Submit Supporting Documents\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(task.equals(task));","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(task.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(task.equals(5.0f));","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(task.equals(new Task(\"Complete Behavioural Assessment Form\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"HM33-Stu":52}},{"path":"src/test/java/seedu/address/model/internship/UniqueInternshipListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.BENSON_GOOGLE;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.exceptions.DuplicateInternshipException;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.exceptions.InternshipNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"public class UniqueInternshipListTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private final UniqueInternshipList uniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" public void contains_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.contains(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public void contains_internshipNotInList_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertFalse(uniqueInternshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public void contains_internshipInList_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" assertTrue(uniqueInternshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public void contains_internshipWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withLocation(\"local\")","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" .withRole(\"Artificial Intelligence Engineer\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" assertTrue(uniqueInternshipList.contains(editedAlice));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public void add_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.add(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" public void add_duplicateInternship_throwsDuplicateInternshipException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DuplicateInternshipException.class, () -\u003e uniqueInternshipList.add(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_nullTargetInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.setInternship(null, ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_nullEditedInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.setInternship(ALICE_MICROSOFT, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_targetInternshipNotInList_throwsInternshipNotFoundException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" assertThrows(InternshipNotFoundException.class, () -\u003e uniqueInternshipList.setInternship(ALICE_MICROSOFT,","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_editedInternshipIsSameInternship_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternship(ALICE_MICROSOFT, ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_editedInternshipHasSameIdentity_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withApplicationStatus(\"rejected\")","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" .withContactName(\"Not Alice\").withContactEmail(\"notalice@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" .withContactNumber(\"98765432\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternship(ALICE_MICROSOFT, editedAlice);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(editedAlice);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_editedInternshipHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternship(ALICE_MICROSOFT, BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_editedInternshipHasNonUniqueIdentity_throwsDuplicateInternshipException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DuplicateInternshipException.class, () -\u003e uniqueInternshipList.setInternship(ALICE_MICROSOFT,","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" BENSON_GOOGLE));","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" public void remove_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.remove(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" public void remove_internshipDoesNotExist_throwsInternshipNotFoundException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" assertThrows(InternshipNotFoundException.class, () -\u003e uniqueInternshipList.remove(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" public void remove_existingInternship_removesInternship() {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.remove(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_nullUniqueInternshipList_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternships((UniqueInternshipList) null));","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_uniqueInternshipList_replacesOwnListWithProvidedUniqueInternshipList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternships(expectedUniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.setInternships((List\u003cInternship\u003e) null));","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" List\u003cInternship\u003e internshipList \u003d Collections.singletonList(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternships(internshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_listWithDuplicateInternships_throwsDuplicateInternshipException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" List\u003cInternship\u003e listWithDuplicateInternships \u003d Arrays.asList(ALICE_MICROSOFT, ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DuplicateInternshipException.class, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternships(listWithDuplicateInternships));","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":" -\u003e uniqueInternshipList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"jieqiboh"},"content":" assertEquals(uniqueInternshipList.asUnmodifiableObservableList().toString(), uniqueInternshipList.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" public void testContains() {","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"jieqiboh"},"content":" assertTrue(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" public void testAddInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"jieqiboh"},"content":" assertTrue(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"theman-oj10"},"content":" public void testSetInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"jieqiboh"},"content":" internshipList.setInternship(ALICE_MICROSOFT, BENSON_GOOGLE);","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"jieqiboh"},"content":" assertFalse(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jieqiboh"},"content":" assertTrue(internshipList.contains(BENSON_GOOGLE));","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" public void testRemoveInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"jieqiboh"},"content":" internshipList.remove(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"jieqiboh"},"content":" assertFalse(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":" public void testSetInternships() {","lastModifiedDate":"2024-03-13"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList replacement \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"jieqiboh"},"content":" replacement.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":" internshipList.setInternships(replacement);","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"jieqiboh"},"content":" assertFalse(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"jieqiboh"},"content":" assertTrue(internshipList.contains(BENSON_GOOGLE));","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" public void testEquals() {","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList1 \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList2 \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"jieqiboh"},"content":" internshipList1.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"jieqiboh"},"content":" internshipList2.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipList1, internshipList2);","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":230,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":231,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":232,"author":{"gitId":"theman-oj10"},"content":" public void asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":233,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":234,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipList.asUnmodifiableObservableList().size(), 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":236,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":237,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":238,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":239,"author":{"gitId":"theman-oj10"},"content":" public void testHashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":240,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":241,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipList.hashCode(), internshipList.asUnmodifiableObservableList().hashCode());","lastModifiedDate":"2024-03-13"},{"lineNumber":243,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":244,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":245,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"theman-oj10"},"content":" public void testToString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":247,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":248,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"jieqiboh"},"content":" assertEquals(internshipList.toString(), internshipList.asUnmodifiableObservableList().toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":250,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":251,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jieqiboh":188,"HM33-Stu":2,"theman-oj10":61}},{"path":"src/test/java/seedu/address/model/util/InternshipSampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSampleDataUtilTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":" public void getSampleInternships() {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" Internship[] sampleInternships \u003d InternshipSampleDataUtil.getSampleInternships();","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" assertEquals(3, sampleInternships.length);","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Google\", sampleInternships[0].getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Facebook\", sampleInternships[1].getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Amazon\", sampleInternships[2].getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" public void getSampleInternshipData() {","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" InternshipData sampleInternshipData \u003d (InternshipData) InternshipSampleDataUtil.getSampleInternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" assertEquals(3, sampleInternshipData.getInternshipList().size());","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Google\", sampleInternshipData.getInternshipList().get(0).getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Facebook\", sampleInternshipData.getInternshipList().get(1).getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Amazon\", sampleInternshipData.getInternshipList().get(2).getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"theman-oj10":29}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedInternshipTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.storage.JsonAdaptedInternship.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"public class JsonAdaptedInternshipTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_COMPANY_NAME \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_CONTACT_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_CONTACT_EMAIL \u003d \"example!com\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_CONTACT_NUMBER \u003d \"+651234\";","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_LOCATION \u003d \"invalid location\";","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_APPLICATION_STATUS \u003d \"invalid status\";","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_COMPANY_NAME \u003d ALICE_MICROSOFT.getCompanyName().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_CONTACT_NAME \u003d ALICE_MICROSOFT.getContactName().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_CONTACT_EMAIL \u003d ALICE_MICROSOFT.getContactEmail().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_CONTACT_NUMBER \u003d ALICE_MICROSOFT.getContactNumber().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_LOCATION \u003d ALICE_MICROSOFT.getLocation().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_APPLICATION_STATUS \u003d ALICE_MICROSOFT.getApplicationStatus().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_DESCRIPTION \u003d ALICE_MICROSOFT.getDescription().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_ROLE \u003d ALICE_MICROSOFT.getRole().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_REMARK \u003d ALICE_MICROSOFT.getRemark().toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" private static final ArrayList\u003cTask\u003e VALID_TASKLIST \u003d ALICE_MICROSOFT.getTaskList().getArrayListTaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_validInternshipDetails_returnsInternship() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d new JsonAdaptedInternship(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" assertEquals(ALICE_MICROSOFT, internship.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidCompanyName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(INVALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d CompanyName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullCompanyName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(null, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, CompanyName.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidContactName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, INVALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d seedu.address.model.internship.ContactName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullContactName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, null, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, ContactName.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidContactEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, INVALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d ContactEmail.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullContactEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, ContactEmail.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidContactNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" INVALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS,","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" VALID_DESCRIPTION, VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d ContactNumber.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullContactNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" null, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, ContactNumber.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidApplicationStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, INVALID_APPLICATION_STATUS, VALID_DESCRIPTION,","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d ApplicationStatus.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullApplicationStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, null, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, ApplicationStatus.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, INVALID_DESCRIPTION,","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d Description.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Description.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"HM33-Stu"},"content":" public void toModelType_invalidLocation_throwsIllegalValueException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"HM33-Stu"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"HM33-Stu"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"HM33-Stu"},"content":" VALID_CONTACT_NUMBER, INVALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION,","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"HM33-Stu"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d Location.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"HM33-Stu"},"content":" public void toModelType_nullLocation_throwsIllegalValueException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"HM33-Stu"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":180,"author":{"gitId":"HM33-Stu"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-04-03"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":" VALID_CONTACT_NUMBER, null, VALID_APPLICATION_STATUS, VALID_DESCRIPTION,","lastModifiedDate":"2024-04-03"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-04-03"},{"lineNumber":183,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Location.class.getSimpleName());","lastModifiedDate":"2024-04-03"},{"lineNumber":184,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-04-03"},{"lineNumber":185,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":186,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":187,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":188,"author":{"gitId":"HM33-Stu"},"content":" public void toModelType_nullRole_throwsIllegalValueException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":189,"author":{"gitId":"HM33-Stu"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-04-03"},{"lineNumber":191,"author":{"gitId":"HM33-Stu"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION,","lastModifiedDate":"2024-04-03"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":" null, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-04-03"},{"lineNumber":193,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName());","lastModifiedDate":"2024-04-03"},{"lineNumber":194,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-04-03"},{"lineNumber":195,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":196,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":197,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":148,"HM33-Stu":31,"LWS49":18}},{"path":"src/test/java/seedu/address/storage/JsonInternshipDataStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.HOON_APPLE;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.IDA_NETFLIX;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"public class JsonInternshipDataStorageTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonInternshipDataStorageTest\");","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" @TempDir","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public void readInternshipData_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e readInternshipData(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private java.util.Optional\u003cReadOnlyInternshipData\u003e readInternshipData(String filePath) throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" return new JsonInternshipDataStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" .readInternshipData(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" : null;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertFalse(readInternshipData(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DataLoadingException.class, () -\u003e readInternshipData(\"notJsonFormatInternshipData.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" public void readInternshipData_invalidInternshipInternshipData_throwDataLoadingException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DataLoadingException.class, () -\u003e readInternshipData(\"invalidInternshipInternshipData.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public void readInternshipData_invalidAndValidInternshipInternshipData_throwDataLoadingException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DataLoadingException.class, () -\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" readInternshipData(\"invalidAndValidInternshipInternshipData.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" public void readAndSaveInternshipData_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" Path filePath \u003d testFolder.resolve(\"TempInternshipData.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" InternshipData original \u003d getTypicalInternshipData();","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" JsonInternshipDataStorage jsonInternshipDataStorage \u003d new JsonInternshipDataStorage(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" jsonInternshipDataStorage.saveInternshipData(original, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" ReadOnlyInternshipData readBack \u003d jsonInternshipDataStorage.readInternshipData(filePath).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" assertEquals(original, new InternshipData(readBack));","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" original.addInternship(HOON_APPLE);","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" original.removeInternship(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" jsonInternshipDataStorage.saveInternshipData(original, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" readBack \u003d jsonInternshipDataStorage.readInternshipData(filePath).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertEquals(original, new InternshipData(readBack));","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" original.addInternship(IDA_NETFLIX);","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" jsonInternshipDataStorage.saveInternshipData(original); // file path not specified","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" readBack \u003d jsonInternshipDataStorage.readInternshipData().get(); // file path not specified","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" assertEquals(original, new InternshipData(readBack));","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData_nullInternshipData_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e saveInternshipData(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" * Saves {@code internshipData} at the specified {@code filePath}.","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" private void saveInternshipData(ReadOnlyInternshipData internshipData, String filePath) {","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" new JsonInternshipDataStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" .saveInternshipData(internshipData, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e saveInternshipData(new InternshipData(), null));","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":113}},{"path":"src/test/java/seedu/address/storage/JsonSerializableInternshipDataTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.testutil.TypicalInternships;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"public class JsonSerializableInternshipDataTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" .get(\"src\", \"test\", \"data\", \"JsonSerializableInternshipDataTest\");","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" private static final Path TYPICAL_INTERNSHIPS_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" .resolve(\"typicalInternshipsInternshipData.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private static final Path INVALID_INTERNSHIP_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" .resolve(\"invalidInternshipInternshipData.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private static final Path DUPLICATE_INTERNSHIP_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" .resolve(\"duplicateInternshipInternshipData.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_typicalInternshipsFile_success() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_INTERNSHIPS_FILE,","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData.class).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" InternshipData internshipDataFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" InternshipData typicalInternshipsInternshipData \u003d TypicalInternships.getTypicalInternshipData();","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" assertEquals(internshipDataFromFile, typicalInternshipsInternshipData);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidInternshipFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData dataFromFile \u003d JsonUtil.readJsonFile(INVALID_INTERNSHIP_FILE,","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData.class).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_duplicateInternships_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_INTERNSHIP_FILE,","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData.class).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, JsonSerializableInternshipData.MESSAGE_DUPLICATE_INTERNSHIP,","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":48,"LWS49":2}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" private Optional\u003cInternshipUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder)","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" throws DataLoadingException {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" return new JsonInternshipUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" assertEquals(new InternshipUserPrefs(), actual);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" private InternshipUserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\\\\internshipdata.json\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new InternshipUserPrefs(), null));","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" private void saveUserPrefs(InternshipUserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" new JsonInternshipUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs original \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" JsonInternshipUserPrefsStorage jsonUserPrefsStorage \u003d new JsonInternshipUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"jieqiboh":3,"LWS49":18,"-":104}},{"path":"src/test/java/seedu/address/testutil/EditInternshipDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" * A utility class to help with building EditInternshipDescriptor objects.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"public class EditInternshipDescriptorBuilder {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" private EditInternshipDescriptor descriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder() {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" * Returns an {@code EditInternshipDescriptor} with fields containing {@code internship}\u0027s details","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder(Internship internship) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" descriptor.setCompanyName(internship.getCompanyName());","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" descriptor.setLocation(internship.getLocation());","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" descriptor.setDescription(internship.getDescription());","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" descriptor.setRole(internship.getRole());","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" descriptor.setContactName(internship.getContactName());","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" descriptor.setContactEmail(internship.getContactEmail());","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" descriptor.setContactNumber(internship.getContactNumber());","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" descriptor.setApplicationStatus(internship.getApplicationStatus());","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" descriptor.setRemark(internship.getRemark());","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" descriptor.setTaskList(internship.getTaskList());","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" * Sets the {@code companyName} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withCompanyName(String companyName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" descriptor.setCompanyName(new CompanyName(companyName));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" * Sets the {@code location} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withLocation(String location) {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" descriptor.setLocation(new Location(location));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" * Sets the {@code description} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withDescription(String description) {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" descriptor.setDescription(new Description(description));","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" * Sets the {@code role} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withRole(String role) {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" descriptor.setRole(new Role(role));","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" * Sets the {@code contactName} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withContactName(String contactName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" descriptor.setContactName(new ContactName(contactName));","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" * Sets the {@code contactEmail} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withContactEmail(String contactEmail) {","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" descriptor.setContactEmail(new ContactEmail(contactEmail));","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" * Sets the {@code contactNumber} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withContactNumber(String contactNumber) {","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" descriptor.setContactNumber(new ContactNumber(contactNumber));","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" * Sets the {@code applicationStatus} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withApplicationStatus(String applicationStatus) {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" descriptor.setApplicationStatus(new ApplicationStatus(applicationStatus));","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptor build() {","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" return descriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":109}},{"path":"src/test/java/seedu/address/testutil/InternshipBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * A utility class to help with building Internship objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"public class InternshipBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" public static final String DEFAULT_COMPANY_NAME \u003d \"Microsoft\";","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_CONTACT_NAME \u003d \"Amy Pauline\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_CONTACT_EMAIL \u003d \"amy@example.com\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_CONTACT_NUMBER \u003d \"91001274\";","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public static final String DEFAULT_LOCATION \u003d \"remote\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_APPLICATION_STATUS \u003d \"pending\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"Develop new microsoft web applications\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_ROLE \u003d \"Application Engineer\";","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public static final String DEFAULT_REMARK \u003d \"Has a behavioural interview!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" public static final String DEFAULT_TASKLIST \u003d \"Submit Documents (11/01/2011); Submit Resume\";","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" private CompanyName companyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" private ContactName contactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" private ContactEmail contactEmail;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private ContactNumber contactNumber;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" private Location location;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" private ApplicationStatus applicationStatus;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" private Description description;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" private Role role;","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" private TaskList taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" * Creates an {@code InternshipBuilder} with the default details.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" companyName \u003d new CompanyName(DEFAULT_COMPANY_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" contactName \u003d new ContactName(DEFAULT_CONTACT_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" contactEmail \u003d new ContactEmail(DEFAULT_CONTACT_EMAIL);","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" contactNumber \u003d new ContactNumber(DEFAULT_CONTACT_NUMBER);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" location \u003d new Location(DEFAULT_LOCATION);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" applicationStatus \u003d new ApplicationStatus(DEFAULT_APPLICATION_STATUS);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" description \u003d new Description(DEFAULT_DESCRIPTION);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" role \u003d new Role(DEFAULT_ROLE);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" taskList \u003d new TaskList(DEFAULT_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" * Initializes the InternshipBuilder with the data of {@code internshipToCopy}.","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder(Internship internshipToCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" companyName \u003d internshipToCopy.getCompanyName();","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" contactName \u003d internshipToCopy.getContactName();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" contactEmail \u003d internshipToCopy.getContactEmail();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" contactNumber \u003d internshipToCopy.getContactNumber();","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" location \u003d internshipToCopy.getLocation();","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" applicationStatus \u003d internshipToCopy.getApplicationStatus();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" description \u003d internshipToCopy.getDescription();","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" role \u003d internshipToCopy.getRole();","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" remark \u003d internshipToCopy.getRemark();","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" taskList \u003d internshipToCopy.getTaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code CompanyName} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withCompanyName(String companyName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" this.companyName \u003d new CompanyName(companyName);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code ContactName} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withContactName(String contactName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" this.contactName \u003d new ContactName(contactName);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code ContactEmail} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withContactEmail(String contactEmail) {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" this.contactEmail \u003d new ContactEmail(contactEmail);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code ContactNumber} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withContactNumber(String contactNumber) {","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" this.contactNumber \u003d new ContactNumber(contactNumber);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code Location} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withLocation(String location) {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" this.location \u003d new Location(location);","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code ApplicationStatus} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withApplicationStatus(String applicationStatus) {","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" this.applicationStatus \u003d new ApplicationStatus(applicationStatus);","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code Description} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withDescription(String description) {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d new Description(description);","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code Role} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withRole(String role) {","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" this.role \u003d new Role(role);","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code Remark} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" * Sets the {@code taskList} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" public InternshipBuilder withTaskList(String taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d new TaskList(taskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" * Builds the Internship object.","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" public Internship build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" return new Internship(companyName, contactName, contactEmail, contactNumber, location, applicationStatus,","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" description, role, remark, taskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":139,"HM33-Stu":6,"LWS49":17}},{"path":"src/test/java/seedu/address/testutil/InternshipTypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"public class InternshipTypicalIndexes {","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" public static final Index INDEX_FIRST_INTERNSHIP \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" public static final Index INDEX_SECOND_INTERNSHIP \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" public static final Index INDEX_THIRD_INTERNSHIP \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":12}},{"path":"src/test/java/seedu/address/testutil/InternshipUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" * A utility class for Internship.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipUtil {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * Returns an add command string for adding the {@code Internship}.","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" public static String getAddCommand(Internship internship) {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" return InternshipAddCommand.COMMAND_WORD + \" \" + getInternshipDetails(internship);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" * Returns the part of command string for the given {@code Internship}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" public static String getInternshipDetails(Internship internship) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_COMPANY + \" \" + internship.getCompanyName().companyName + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_CONTACT_NAME + \" \" + internship.getContactName().contactName + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_CONTACT_EMAIL + \" \" + internship.getContactEmail().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_CONTACT_NUMBER + \" \" + internship.getContactNumber().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_STATUS + \" \" + internship.getApplicationStatus().toString() + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_DESCRIPTION + \" \" + internship.getDescription().description + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" sb.append(PREFIX_LOCATION + \" \" + internship.getLocation().toString() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" sb.append(PREFIX_ROLE + \" \" + internship.getRole().role + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the part of command string for the given {@code EditInternshipDescriptor}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" public static String getEditInternshipDescriptorDetails(EditInternshipDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getCompanyName().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" companyName -\u003e sb.append(PREFIX_COMPANY).append(\" \").append(companyName.companyName).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getContactName().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" contactName -\u003e sb.append(PREFIX_CONTACT_NAME).append(\" \").append(contactName.contactName).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getContactEmail().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" contactEmail -\u003e sb.append(PREFIX_CONTACT_EMAIL).append(\" \").append(contactEmail.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getContactNumber().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" contactNumber -\u003e sb.append(PREFIX_CONTACT_NUMBER).append(\" \").append(contactNumber.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getLocation().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" location -\u003e sb.append(PREFIX_LOCATION).append(\" \").append(location).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getApplicationStatus().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" applicationStatus -\u003e sb.append(PREFIX_STATUS).append(\" \").append(applicationStatus).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getDescription().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" description -\u003e sb.append(PREFIX_DESCRIPTION).append(\" \").append(description.description).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getRole().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" role -\u003e sb.append(PREFIX_ROLE).append(\" \").append(role.role).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" descriptor.getRemark().ifPresent(","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" remark -\u003e sb.append(PREFIX_REMARK).append(\" \").append(remark.value).append(\" \"));","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" // TaskList is not included in the EditInternshipDescriptor because we can\u0027t add tasks through the edit command","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"HM33-Stu":3,"LWS49":3,"CaptainKeqing":65}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" * Returns the middle index of the internship in the {@code model}\u0027s internship list.","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public static Index getMidIndex(InternshipModel model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" return Index.fromOneBased(model.getFilteredInternshipList().size() / 2);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" * Returns the last index of the internship in the {@code model}\u0027s internship list.","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" public static Index getLastIndex(InternshipModel model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" return Index.fromOneBased(model.getFilteredInternshipList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" * Returns the internship in the {@code model}\u0027s internship list at {@code index}.","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" public static Internship getInternship(InternshipModel model, Index index) {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" return model.getFilteredInternshipList().get(index.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LWS49":11,"-":44}},{"path":"src/test/java/seedu/address/testutil/TypicalInternships.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_APPLICATION_STATUS_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_APPLICATION_STATUS_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_EMAIL_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_EMAIL_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NAME_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NUMBER_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NUMBER_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_LOCATION_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_LOCATION_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_ROLE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_ROLE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" * A utility class containing a list of {@code Internship} objects to be used in tests.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"public class TypicalInternships {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" public static final Internship ALICE_MICROSOFT \u003d new InternshipBuilder().withCompanyName(\"Microsoft\")","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" .withContactName(\"Alice Pauline\").withContactEmail(\"alice@example.com\").withContactNumber(\"94351253\")","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" .withApplicationStatus(\"ongoing\").withLocation(\"remote\")","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" .withDescription(\"Use Figma to design User-friendly web interfaces\").withRole(\"Frontend Engineer\")","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" .withRemark(\"Has a behavioural interview!\")","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" .withTaskList(\"Submit Documents (11/01/2011); Submit Resume\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" public static final Internship BENSON_GOOGLE \u003d new InternshipBuilder().withCompanyName(\"Google\")","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" .withContactName(\"Benson Meier\").withContactEmail(\"benson@example.com\").withContactNumber(\"98765432\")","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" .withLocation(\"local\").withApplicationStatus(\"pending\").withDescription(\"Write REST APIs for services\")","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" .withRole(\"Backend Engineer\").withRemark(\"3 Leetcode Hards\")","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" .withTaskList(\"Submit documents\").build();","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public static final Internship CARL_OPENAI \u003d new InternshipBuilder().withCompanyName(\"OpenAI\")","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" .withContactName(\"Carl Kurz\").withContactEmail(\"carl@google.com\").withContactNumber(\"95352563\")","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" .withLocation(\"overseas\").withApplicationStatus(\"rejected\").withDescription(\"Enter prompts into ChatGPT\")","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" .withRole(\"Prompt Engineer\").withRemark(\"System design questions asked\")","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" .withTaskList(\"Submit Resume (13/03/2033)\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // Manually added","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" public static final Internship HOON_APPLE \u003d new InternshipBuilder().withCompanyName(\"Apple\")","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" .withContactName(\"Hoon Meier\").withContactEmail(\"hoon@gmail.com\").withContactNumber(\"84824242\")","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" .withLocation(\"local\").withApplicationStatus(\"pending\").withDescription(\"Develop iOS applications\")","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" .withRole(\"iOS Developer\").withRemark(\"OA due tomorrow!\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" public static final Internship IDA_NETFLIX \u003d new InternshipBuilder().withCompanyName(\"Netflix\")","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" .withContactName(\"Ida Mueller\").withContactEmail(\"ida@example.com\").withContactNumber(\"84821312\")","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" .withLocation(\"remote\").withApplicationStatus(\"ongoing\").withDescription(\"Write REST APIs for netflix\")","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" .withRole(\"Backend Engineer\").withRemark(\"Has a behavioural interview\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" // Manually added - Internship details found in {@code InternshipCommandTestUtil}","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" public static final Internship AMY \u003d new InternshipBuilder().withCompanyName(VALID_COMPANY_NAME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" .withContactName(VALID_CONTACT_NAME_AMY).withContactEmail(VALID_CONTACT_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_AMY).withLocation(VALID_LOCATION_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" .withApplicationStatus(VALID_APPLICATION_STATUS_AMY).withDescription(VALID_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" .withRole(VALID_ROLE_AMY).withRemark(\"Likes to swim\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" public static final Internship BOB \u003d new InternshipBuilder().withCompanyName(VALID_COMPANY_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" .withContactName(VALID_CONTACT_NAME_BOB).withContactEmail(VALID_CONTACT_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_BOB).withLocation(VALID_LOCATION_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" .withApplicationStatus(VALID_APPLICATION_STATUS_BOB).withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" .withRole(VALID_ROLE_BOB).withRemark(\"Likes bread\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" private TypicalInternships() {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" } // prevents instantiation","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" * Returns an {@code InternshipData} with all the typical internships.","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" public static InternshipData getTypicalInternshipData() {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" InternshipData id \u003d new InternshipData();","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" for (Internship internship : getTypicalInternships()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" id.addInternship(internship);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" return id;","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" public static List\u003cInternship\u003e getTypicalInternships() {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE_MICROSOFT, BENSON_GOOGLE, CARL_OPENAI));","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":55,"HM33-Stu":28,"LWS49":8}},{"path":"src/test/java/seedu/address/ui/DetailedInternshipCardTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.testfx.assertions.api.Assertions.assertThat;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.extension.ExtendWith;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import org.testfx.framework.junit5.ApplicationExtension;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.TypicalInternships;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"@ExtendWith(ApplicationExtension.class)","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipCardTest extends UiTestBase {","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private DetailedInternshipCard detailedInternshipCard;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private Internship testInternship \u003d TypicalInternships.AMY;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeEach","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void initInternshipCard() {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipCard \u003d new DetailedInternshipCard(testInternship);","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" void getLabels() {","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" // Test the company name and role label","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.companyNameAndRole)","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(testInternship.getCompanyName().companyName + \" -- \" + testInternship.getRole().role);","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" // Test the status label","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.status)","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\" * \" + testInternship.getApplicationStatus().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" // Test the description label","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.description)","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Description:\\t\\t\" + testInternship.getDescription().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" // Test the location label","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.loc)","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Location:\\t\\t\\t\" + testInternship.getLocation().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" // Test the POC name label","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.cName)","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Contact name:\\t\\t\" + testInternship.getContactName().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" // Test the POC email label","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.cEmail)","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Contact email:\\t\\t\" + testInternship.getContactEmail().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" // Test the POC number label","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.cNum)","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Contact number:\\t\" + testInternship.getContactNumber().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" // Test the remark label","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.remark)","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Remark:\\t\\t\\t\" + testInternship.getRemark().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" // Test the tasks label","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.tasks)","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"\\nTasks:\\n\" + testInternship.getTaskList().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"CaptainKeqing":61}},{"path":"src/test/java/seedu/address/ui/DetailedInternshipListPanelTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.extension.ExtendWith;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import org.testfx.framework.junit5.ApplicationExtension;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.InternshipLogicManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"@ExtendWith(ApplicationExtension.class)","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipListPanelTest extends UiTestBase {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" private DetailedInternshipListPanel detailedInternshipListPanel;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipLogic testLogic;","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel testModel;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeEach","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" public void setUp() {","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" testModel \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" testLogic \u003d new InternshipLogicManager(testModel, null);","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipListPanel \u003d new DetailedInternshipListPanel(testLogic.getFilteredInternshipList());","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" public void selectInternship_index0_updatesLogicSelectedInternship() {","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipListPanel.getInternshipListView().getSelectionModel().select(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" Internship actualInternship \u003d testLogic.getFilteredInternshipList().get(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" Internship selectedInternship \u003d testLogic.getSelectedInternship().get(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(actualInternship, selectedInternship);","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"CaptainKeqing":40}},{"path":"src/test/java/seedu/address/ui/InternshipCardTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.testfx.assertions.api.Assertions.assertThat;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.extension.ExtendWith;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import org.testfx.framework.junit5.ApplicationExtension;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.TypicalInternships;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"@ExtendWith(ApplicationExtension.class)","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"class InternshipCardTest extends UiTestBase {","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipCard internshipCard;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private Internship testInternship \u003d TypicalInternships.AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeEach","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void initInternshipCard() {","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" void getLabels() {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" // Test the id label","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getIdLabel()).hasText(\"1. \");","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" // Test the company name and role label","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getCompanyNameAndRoleLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(testInternship.getCompanyName().companyName + \" -- \" + testInternship.getRole().role);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" // Test the status label","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\" * \" + testInternship.getApplicationStatus().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" // Test the description label","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getDescriptionLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(testInternship.getDescription().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" // Test the location label","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getLocationLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(testInternship.getLocation().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" // Test the POC label","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getPocLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"POC: \" + testInternship.getContactName().toString() + \" | \"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" + testInternship.getContactEmail().toString() + \" | \"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" + testInternship.getContactNumber().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" // Test the remark label","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getRemarkLabel())","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Remark: \" + testInternship.getRemark().toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" void checkStatusColours() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" // TO_APPLY status -\u003e Style should be font colour cyan","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"TO_APPLY\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_CYAN);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" // PENDING status -\u003e Style should be font colour yellow","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_YELLOW);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" // REJECTED status -\u003e Style should be font colour red","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"REJECTED\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_RED);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" // ACCEPTED status -\u003e Style should be font colour green","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"ACCEPTED\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_GREEN);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" // ONGOING status -\u003e Style should be font colour lightseagreen","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"ONGOING\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_LIGHTSEAGREEN);","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":87}},{"path":"src/test/java/seedu/address/ui/UiTestBase.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import org.testfx.framework.junit5.ApplicationTest;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * An abstract GUI Test class. Contains common setup code for GUI tests.","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public abstract class UiTestBase extends ApplicationTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeAll","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" public static void setupHeadlessMode() {","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" // Ensure that tests run in headless mode (i.e., without displaying the GUI).","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" if (Boolean.getBoolean(\"headless\")) { // headless mode is enabled","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(\"Headless mode enabled! Running tests without displaying the GUI.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"testfx.robot\", \"glass\");","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"testfx.headless\", \"true\");","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"prism.order\", \"sw\");","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"prism.text\", \"t2k\");","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"java.awt.headless\", \"true\");","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(\"Headful testing enabled! GUI will be shown.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"CaptainKeqing":24}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103T-W11-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W11-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-05"},{"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":"LWS49"},"content":"# Welcome to **CareerSync!**","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"## This is a CLI-managed internship application tracker that satisfies all your basic needs.","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"Effortlessly manage, search, and sift through your various internship applications. Enter details rapidly using CLI, and","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"avoid losing track of crucial information. Targeted to those with numerous applications to keep track of and prefer ","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"using CLI. Your all-in-one solution for seamless application management.","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"* For the detailed documentation of this project, see the **[CareerSync Product Guide](https://ay2324s2-cs2103t-w11-1.github.io/tp/DeveloperGuide.html)**.","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"* For details of our members who developed this app, see the **[About Us](https://ay2324s2-cs2103t-w11-1.github.io/tp/AboutUs.html)**.","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"jieqiboh":1,"LWS49":9,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.1.0\u0027 // JavaFX plugin","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"javafx {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" version \u003d \u002717\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" modules \u003d [\u0027javafx.controls\u0027, \u0027javafx.fxml\u0027]","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" platform \u003d \u0027win\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" platform \u003d \u0027mac\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" platform \u003d \u0027linux\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" systemProperty(\"headless\", \"true\")","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" String javaFxVersion \u003d \u002717.0.10\u0027","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" // TestFX dependencies","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation \u0027org.testfx:testfx-junit5:4.0.18\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation \u0027org.testfx:testfx-core:4.0.18\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation group: \u0027org.assertj\u0027, name: \u0027assertj-core\u0027, version: \u00273.13.2\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation group: \u0027org.hamcrest\u0027, name: \u0027hamcrest\u0027, version: \u00272.1\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" testImplementation \u0027org.testfx:openjfx-monocle:jdk-12.0.1+2\u0027 // Adds headless testing mode support. While the jdk","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" // parameter is set to 12.0.1+2, it is compatible with Java 11.","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" archiveFileName \u003d \u0027CareerSync.jar\u0027","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":"run {","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"HM33-Stu":3,"-":72,"CaptainKeqing":21}},{"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":"jieqiboh"},"content":"You can reach us at the email `cs2103t_w11_1[at]comp.nus.edu.sg`","lastModifiedDate":"2024-02-29"},{"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":"HM33-Stu"},"content":"### Loh Jun Heng Donovan","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"\u003cimg src\u003d\"images/captainkeqing.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"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":"HM33-Stu"},"content":"[[github](https://github.com/CaptainKeqing)]","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"[[portfolio](team/captainkeqing.md)]","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"* Role: Code Quality Manager","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"### Hariprasath S/O R Mohan","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"\u003cimg src\u003d\"images/hm33-stu.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"[[github](http://github.com/HM33-Stu)]","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"[[portfolio](team/hm33-stu.md)]","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"* Role: Documentation, Deliverables and Deadlines","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"### Wei Sheng","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"\u003cimg src\u003d\"images/lws49.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"[[github](http://github.com/LWS49)]","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"[[portfolio](team/lws49.md)]","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"* Role: Tech Lead, Scheduling and Tracking","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"### Boh Jie Qi","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"\u003cimg src\u003d\"images/jieqiboh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"[[github](https://github.com/jieqiboh)]","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"[[portfolio](team/jieqiboh)]","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":"### Rajendran Ramesh Babu Manoj Narender","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":"\u003cimg src\u003d\"images/theman-oj10.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":"[[github](http://github.com/theman-oj10)]","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"[[portfolio](team/theman-oj10.md)]","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":"* Role: Integration, Testing","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":2,"HM33-Stu":12,"LWS49":6,"theman-oj10":5,"-":32}},{"path":"docs/Configuration.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Configuration guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: `config.json`).","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"jieqiboh":2,"-":4}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: DevOps guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26"}],"authorContributionMap":{"jieqiboh":5,"-":74}},{"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":"LWS49"},"content":"c","lastModifiedDate":"2024-03-04"},{"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":"CaptainKeqing"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-03-26"},{"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":"CaptainKeqing"},"content":"* [**`InternshipLogic`**](#internshiplogic-component): The command executor.","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"* [**`InternshipModel`**](#internshipmodel-component): Holds the data of the App in memory.","lastModifiedDate":"2024-03-26"},{"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":"HM33-Stu"},"content":"For example, the `InternshipLogic` component defines its API in the `InternshipLogic.java` interface and implements its functionality using the `InternshipLogicManager.java` class which follows the `InternshipLogic` 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":"2024-03-22"},{"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":"CaptainKeqing"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-26"},{"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":"CaptainKeqing"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `InternshipListPanel`, `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":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"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/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-26"},{"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":"HM33-Stu"},"content":"* executes user commands using the `InternshipLogic` component.","lastModifiedDate":"2024-03-22"},{"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":"HM33-Stu"},"content":"* keeps a reference to the `InternshipLogic` component, because the `UI` relies on the `InternshipLogic` to execute commands.","lastModifiedDate":"2024-03-22"},{"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":"HM33-Stu"},"content":"### InternshipLogic component","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":"**API** : [`InternshipLogic.java`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/InternshipLogic/InternshipLogic.java)","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":"Here\u0027s a (partial) class diagram of the `InternshipLogic` component:","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":"\u003cimg src\u003d\"images/InternshipLogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"HM33-Stu"},"content":"The sequence diagram below illustrates the interactions within the `InternshipLogic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":"![Interactions Inside the InternshipLogic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2024-03-22"},{"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":"HM33-Stu"},"content":"How the `InternshipLogic` component works:","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":"1. When `InternshipLogic` is called upon to execute a command, it is passed to an `InternshipDataParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"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 `InternshipLogicManager`.","lastModifiedDate":"2024-03-22"},{"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":"HM33-Stu"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `InternshipLogic`.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":"Here are the other classes in `InternshipLogic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2024-03-22"},{"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":"theman-oj10"},"content":"* When called upon to parse a user command, the `InternshipDataParser` 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 `InternshipDataParser` returns back as a `Command` object.","lastModifiedDate":"2024-03-21"},{"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":"CaptainKeqing"},"content":"### InternshipModel component","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":"**API** : [`InternshipModel.java`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/model/InternshipModel.java)","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":"\u003cimg src\u003d\"images/InternshipModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":"theman-oj10"},"content":"* stores the internship data i.e., all `Internship` objects (which are contained in a `UniqueInternshipList` object).","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":"* stores the currently \u0027selected\u0027 `Internship` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cInternship\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":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":"* stores a `InternshipUserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyInternshipUserPref` objects.","lastModifiedDate":"2024-03-21"},{"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":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S2-CS2103T-W11-1/tp/blob/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":"\u003cimg src\u003d\"images/InternshipStorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":"* can save both internship data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":"* inherits from both `InternshipDataStorage` and `InternshipUserPrefsStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"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":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedInternshipData`. It extends `InternshipData` with an undo/redo history, stored internally as an `internshipDataStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":"* `VersionedInternshipData#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":"* `VersionedInternshipData#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":"* `VersionedInternshipData#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":"These operations are exposed in the `InternshipModel` interface as `InternshipModel#commitInternshipData()`, `InternshipModel#undoInternshipData()` and `InternshipModel#redoInternshipData()` respectively.","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"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":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":"Step 1. The user launches the application for the first time. The `VersionedInternshipData` will be initialized with the initial internship data state, and the `currentStatePointer` pointing to that single internship data state.","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the internship data. The `delete` command calls `InternshipModel#commitInternshipData()`, causing the modified state of the internship data after the `delete 5` command executes to be saved in the `internshipDataStateList`, and the `currentStatePointer` is shifted to the newly inserted internship data state.","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":"Step 3. The user executes `add n/David …​` to add a new internship. The `add` command also calls `InternshipModel#commitInternshipData()`, causing another modified internship data state to be saved into the `internshipDataStateList`.","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `InternshipModel#commitInternshipData()`, so the address book state will not be saved into the `internshipDataStateList`.","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":"Step 4. The user now decides that adding the internship was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `InternshipModel#undoInternshipData()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous internship data state, and restores the internship data to that state.","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"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 InternshipData state, then there are no previous InternshipData states to restore. The `undo` command uses `InternshipModel#canUndoInternshipData()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":"The following sequence diagram shows how an undo operation goes through the `InternshipLogic` component:","lastModifiedDate":"2024-03-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-InternshipLogic.png)","lastModifiedDate":"2024-03-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":"The `redo` command does the opposite — it calls `InternshipModel#redoInternshipData()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the internship data to that state.","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `internshipDataStateList.size() - 1`, pointing to the latest internship data state, then there are no undone InternshipData states to restore. The `redo` command uses `InternshipModel#canRedoInternshipData()` 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":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the internship data, such as `list`, will usually not call `InternshipModel#commitInternshipData()`, `InternshipModel#undoInternshipData()` or `InternshipModel#redoInternshipData()`. Thus, the `internshipDataStateList` remains unchanged.","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":"Step 6. The user executes `clear`, which calls `InternshipModel#commitInternshipData()`. Since the `currentStatePointer` is not pointing at the end of the `internshipDataStateList`, all internship data 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":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":"* **Alternative 1 (current choice):** Saves the entire internship data.","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"HM33-Stu"},"content":"**Target user profile**: People sourcing for internships (specifically, CS students)","lastModifiedDate":"2024-03-02"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"HM33-Stu"},"content":"* has a need to manage a significant number of internship applications","lastModifiedDate":"2024-03-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":262,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"HM33-Stu"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-02"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"HM33-Stu"},"content":"``` plaintext","lastModifiedDate":"2024-03-02"},{"lineNumber":267,"author":{"gitId":"HM33-Stu"},"content":"Effortlessly manage, search, and sift through your various internship applications.","lastModifiedDate":"2024-03-02"},{"lineNumber":268,"author":{"gitId":"HM33-Stu"},"content":"Enter details rapidly using CLI, and avoid losing track of crucial information.","lastModifiedDate":"2024-03-02"},{"lineNumber":269,"author":{"gitId":"HM33-Stu"},"content":"Targeted to those with numerous applications to keep track of and prefer using CLI.","lastModifiedDate":"2024-03-02"},{"lineNumber":270,"author":{"gitId":"HM33-Stu"},"content":"Your all-in-one solution for seamless application management.","lastModifiedDate":"2024-03-02"},{"lineNumber":271,"author":{"gitId":"HM33-Stu"},"content":"```","lastModifiedDate":"2024-03-02"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"HM33-Stu"},"content":"Priorities: High (Must-Have) - `* * *`, Medium (Nice-To-Have) - `* *`, Low (Not Useful) - `*`","lastModifiedDate":"2024-03-02"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"HM33-Stu"},"content":"| Priority | As a/an …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-02"},{"lineNumber":278,"author":{"gitId":"HM33-Stu"},"content":"|----------|-----------------|--------------------------------------------------|---------------------------------------------------------------|","lastModifiedDate":"2024-03-02"},{"lineNumber":279,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | impatient user | Enter internship information from the main page | Quickly note down potential internships at a career fair |","lastModifiedDate":"2024-03-02"},{"lineNumber":280,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | savvy user | Access all commands via a text-based input | Add, delete, and modify entries without using my mouse |","lastModifiedDate":"2024-03-02"},{"lineNumber":281,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | beginner user | Access sample data in the app | Play around with the features to get the hang of them |","lastModifiedDate":"2024-03-02"},{"lineNumber":282,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | up-to-date user | Modify internship details | Keep myself updated on changing details |","lastModifiedDate":"2024-03-02"},{"lineNumber":283,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | regular user | View all internship details | Easily view all details in one screen. |","lastModifiedDate":"2024-03-02"},{"lineNumber":284,"author":{"gitId":"HM33-Stu"},"content":"| `* * *` | detailed user | Add information to the notes section of an entry | Customise to see internships that fall under specific fields. |","lastModifiedDate":"2024-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"HM33-Stu"},"content":"(For all use cases below, the **System** is `CareerSync` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-02"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Enter Internship Information From The Main Page**","lastModifiedDate":"2024-03-02"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":297,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to enter internship information. ","lastModifiedDate":"2024-03-02"},{"lineNumber":298,"author":{"gitId":"HM33-Stu"},"content":"3. System prompts the user to input internship details such as title, company, start/end dates, etc. ","lastModifiedDate":"2024-03-02"},{"lineNumber":299,"author":{"gitId":"HM33-Stu"},"content":"4. User inputs the required internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":300,"author":{"gitId":"HM33-Stu"},"content":"5. System validates the input data. ","lastModifiedDate":"2024-03-02"},{"lineNumber":301,"author":{"gitId":"HM33-Stu"},"content":"6. System saves the internship information. ","lastModifiedDate":"2024-03-02"},{"lineNumber":302,"author":{"gitId":"HM33-Stu"},"content":"7. System displays a confirmation message indicating successful submission.","lastModifiedDate":"2024-03-02"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":309,"author":{"gitId":"HM33-Stu"},"content":" *1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":310,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels entering internship information.","lastModifiedDate":"2024-03-02"},{"lineNumber":311,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the entry process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":312,"author":{"gitId":"HM33-Stu"},"content":"* 5a. User inputs invalid internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":313,"author":{"gitId":"HM33-Stu"},"content":" * 5a1. System displays an error message indicating the specific validation error(s).","lastModifiedDate":"2024-03-02"},{"lineNumber":314,"author":{"gitId":"HM33-Stu"},"content":"* 6a. System fails to save the internship information.","lastModifiedDate":"2024-03-02"},{"lineNumber":315,"author":{"gitId":"HM33-Stu"},"content":" * 6a1. System displays an error message and prompts the user to retry or cancel the submission.","lastModifiedDate":"2024-03-02"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Access All Commands Via A Text-Based Input**","lastModifiedDate":"2024-03-02"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":323,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":324,"author":{"gitId":"HM33-Stu"},"content":"2. System displays a prompt for text-based input. ","lastModifiedDate":"2024-03-02"},{"lineNumber":325,"author":{"gitId":"HM33-Stu"},"content":"3. User enters a command using text-based input. ","lastModifiedDate":"2024-03-02"},{"lineNumber":326,"author":{"gitId":"HM33-Stu"},"content":"4. System recognizes and processes the entered command. ","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"HM33-Stu"},"content":"5. System executes the requested action corresponding to the entered command. ","lastModifiedDate":"2024-03-02"},{"lineNumber":328,"author":{"gitId":"HM33-Stu"},"content":"6. User receives feedback or output based on the executed command.","lastModifiedDate":"2024-03-02"},{"lineNumber":329,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":330,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":331,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":332,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":333,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":334,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":335,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":336,"author":{"gitId":"HM33-Stu"},"content":"* 3a. User enters an invalid command.","lastModifiedDate":"2024-03-02"},{"lineNumber":337,"author":{"gitId":"HM33-Stu"},"content":" * 3a1. System displays an error message indicating that the command is not recognized.","lastModifiedDate":"2024-03-02"},{"lineNumber":338,"author":{"gitId":"HM33-Stu"},"content":"* 4a. System fails to recognize or process the entered command.","lastModifiedDate":"2024-03-02"},{"lineNumber":339,"author":{"gitId":"HM33-Stu"},"content":" * 4a1. System displays an error message and prompts the user to retry or enter a different command.","lastModifiedDate":"2024-03-02"},{"lineNumber":340,"author":{"gitId":"HM33-Stu"},"content":"* 5a. System encounters an error while executing the requested action.","lastModifiedDate":"2024-03-02"},{"lineNumber":341,"author":{"gitId":"HM33-Stu"},"content":" * 5a1. System displays an error message and prompts the user to retry or perform a different action.","lastModifiedDate":"2024-03-02"},{"lineNumber":342,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":343,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":344,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":345,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Access Sample Data In The App**","lastModifiedDate":"2024-03-02"},{"lineNumber":346,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":347,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":348,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":349,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":350,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to access sample data. ","lastModifiedDate":"2024-03-02"},{"lineNumber":351,"author":{"gitId":"HM33-Stu"},"content":"3. System retrieves and displays sample internship data. ","lastModifiedDate":"2024-03-02"},{"lineNumber":352,"author":{"gitId":"HM33-Stu"},"content":"4. User views the sample internship data presented by the system.","lastModifiedDate":"2024-03-02"},{"lineNumber":353,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":354,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":355,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":356,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":357,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":358,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":359,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":360,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels accessing sample data.","lastModifiedDate":"2024-03-02"},{"lineNumber":361,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":362,"author":{"gitId":"HM33-Stu"},"content":"* 3a. System fails to retrieve sample data.","lastModifiedDate":"2024-03-02"},{"lineNumber":363,"author":{"gitId":"HM33-Stu"},"content":" * 3a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":364,"author":{"gitId":"HM33-Stu"},"content":"* 4a. User encounters issues while viewing the sample data.","lastModifiedDate":"2024-03-02"},{"lineNumber":365,"author":{"gitId":"HM33-Stu"},"content":" * 4a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":366,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":367,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":368,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":369,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Modify Internship Details**","lastModifiedDate":"2024-03-02"},{"lineNumber":370,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":371,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":372,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":373,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":374,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to view all internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":375,"author":{"gitId":"HM33-Stu"},"content":"3. System retrieves and displays a list of all entered internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":376,"author":{"gitId":"HM33-Stu"},"content":"4. User selects the internship entry to be modified. ","lastModifiedDate":"2024-03-02"},{"lineNumber":377,"author":{"gitId":"HM33-Stu"},"content":"5. System presents the selected internship details for editing. ","lastModifiedDate":"2024-03-02"},{"lineNumber":378,"author":{"gitId":"HM33-Stu"},"content":"6. User modifies the necessary internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":379,"author":{"gitId":"HM33-Stu"},"content":"7. System validates the modified data.","lastModifiedDate":"2024-03-02"},{"lineNumber":380,"author":{"gitId":"HM33-Stu"},"content":"8. System saves the updated internship information. ","lastModifiedDate":"2024-03-02"},{"lineNumber":381,"author":{"gitId":"HM33-Stu"},"content":"9. System displays a confirmation message indicating successful modification.","lastModifiedDate":"2024-03-02"},{"lineNumber":382,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":383,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":386,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":387,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":388,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":389,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels viewing all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":390,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":391,"author":{"gitId":"HM33-Stu"},"content":"* 4a. User cancels selecting the internship entry to be modified.","lastModifiedDate":"2024-03-02"},{"lineNumber":392,"author":{"gitId":"HM33-Stu"},"content":" * 4a1. System cancels the modification process and returns the user to the list of internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":393,"author":{"gitId":"HM33-Stu"},"content":"* 6a. User inputs invalid internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":394,"author":{"gitId":"HM33-Stu"},"content":" * 6a1. System displays an error message indicating the specific validation error(s).","lastModifiedDate":"2024-03-02"},{"lineNumber":395,"author":{"gitId":"HM33-Stu"},"content":"* 7a. System fails to validate the modified data.","lastModifiedDate":"2024-03-02"},{"lineNumber":396,"author":{"gitId":"HM33-Stu"},"content":" * 7a1. System displays an error message and prompts the user to correct the data.","lastModifiedDate":"2024-03-02"},{"lineNumber":397,"author":{"gitId":"HM33-Stu"},"content":"* 8a. System fails to save the updated internship information.","lastModifiedDate":"2024-03-02"},{"lineNumber":398,"author":{"gitId":"HM33-Stu"},"content":" * 8a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":399,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":400,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":401,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":402,"author":{"gitId":"HM33-Stu"},"content":"**Use case: View All Internship Details**","lastModifiedDate":"2024-03-02"},{"lineNumber":403,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":404,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":405,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":406,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":407,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to view all internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":408,"author":{"gitId":"HM33-Stu"},"content":"3. System retrieves and displays a list of all entered internship details. ","lastModifiedDate":"2024-03-02"},{"lineNumber":409,"author":{"gitId":"HM33-Stu"},"content":"4. User views the list of internship details presented by the system.","lastModifiedDate":"2024-03-02"},{"lineNumber":410,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":411,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":412,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":413,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":414,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":415,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":416,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":417,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels viewing all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":418,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":419,"author":{"gitId":"HM33-Stu"},"content":"* 3a. System fails to retrieve all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":420,"author":{"gitId":"HM33-Stu"},"content":" * 3a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":421,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":422,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":423,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":424,"author":{"gitId":"HM33-Stu"},"content":"**Use case: Add Information To The Notes Section Of An Entry**","lastModifiedDate":"2024-03-02"},{"lineNumber":425,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":426,"author":{"gitId":"HM33-Stu"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":427,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":428,"author":{"gitId":"HM33-Stu"},"content":"1. User accesses the main page. ","lastModifiedDate":"2024-03-02"},{"lineNumber":429,"author":{"gitId":"HM33-Stu"},"content":"2. User selects the option to view all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":430,"author":{"gitId":"HM33-Stu"},"content":"3. System retrieves and displays a list of all entered internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":431,"author":{"gitId":"HM33-Stu"},"content":"4. User selects the internship entry to which notes will be added.","lastModifiedDate":"2024-03-02"},{"lineNumber":432,"author":{"gitId":"HM33-Stu"},"content":"5. System presents the selected internship details along with the current notes section.","lastModifiedDate":"2024-03-02"},{"lineNumber":433,"author":{"gitId":"HM33-Stu"},"content":"6. User enters additional information in the notes section.","lastModifiedDate":"2024-03-02"},{"lineNumber":434,"author":{"gitId":"HM33-Stu"},"content":"7. System saves the updated notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":435,"author":{"gitId":"HM33-Stu"},"content":"8. System displays a confirmation message indicating successful addition of notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":436,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":437,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":438,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":439,"author":{"gitId":"HM33-Stu"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":440,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":441,"author":{"gitId":"HM33-Stu"},"content":"* 1a. User is unable to access the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":442,"author":{"gitId":"HM33-Stu"},"content":" * 1a1. System displays an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":443,"author":{"gitId":"HM33-Stu"},"content":"* 2a. User cancels viewing all internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":444,"author":{"gitId":"HM33-Stu"},"content":" * 2a1. System cancels the process and returns the user to the main page.","lastModifiedDate":"2024-03-02"},{"lineNumber":445,"author":{"gitId":"HM33-Stu"},"content":"* 4a. User cancels selecting the internship entry to add notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":446,"author":{"gitId":"HM33-Stu"},"content":" * 4a1. System cancels the process and returns the user to the list of internship details.","lastModifiedDate":"2024-03-02"},{"lineNumber":447,"author":{"gitId":"HM33-Stu"},"content":"* 6a. User encounters an error while adding notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":448,"author":{"gitId":"HM33-Stu"},"content":" * 6a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":449,"author":{"gitId":"HM33-Stu"},"content":"* 7a. System fails to save the updated notes.","lastModifiedDate":"2024-03-02"},{"lineNumber":450,"author":{"gitId":"HM33-Stu"},"content":" * 7a1. System displays an error message and prompts the user to retry or exit.","lastModifiedDate":"2024-03-02"},{"lineNumber":451,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":452,"author":{"gitId":"HM33-Stu"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"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":459,"author":{"gitId":"HM33-Stu"},"content":"2. Should be able to hold up to 100 internship entries without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-02"},{"lineNumber":460,"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":461,"author":{"gitId":"HM33-Stu"},"content":"4. Storage of data should be in a format that is easy to read and write by humans, and easy to parse by machines.","lastModifiedDate":"2024-03-02"},{"lineNumber":462,"author":{"gitId":"HM33-Stu"},"content":"5. System should be backward compatible with data produced by earlier versions of the system.","lastModifiedDate":"2024-03-02"},{"lineNumber":463,"author":{"gitId":"HM33-Stu"},"content":"6. System is expected to be used by a single user on a machine, and does not need to support multiple users on the same machine.","lastModifiedDate":"2024-03-02"},{"lineNumber":464,"author":{"gitId":"HM33-Stu"},"content":"7. System should launch within 2 seconds on any modern machine.","lastModifiedDate":"2024-03-02"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"LWS49"},"content":"* **API**: Application Programming Interface. The entirety of published methods, properties and other means for software developers to access an application through software they write using this application.","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"LWS49"},"content":"* **GUI**: Graphical User Interface. A graphical user interface uses graphical representations of commands, status feedbacks and data of an application, and offers methods to interact with it through graphical devices, such as a mouse or tablets.","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"LWS49"},"content":"* **Mainstream OS**: Mainstream Operating Systems. Refers to Windows, Linux, Unix and MacOS.","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"LWS49"},"content":"* **UI**: User Interface. The point where a user and a software application meet and interact.","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"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":483,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"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":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"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":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"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":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"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":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"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":517,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":3,"HM33-Stu":187,"LWS49":5,"theman-oj10":22,"-":302,"CaptainKeqing":8}},{"path":"docs/Documentation.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Documentation guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"**Setting up and maintaining the project website:**","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation.","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"* The `docs/` folder is used for documentation.","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html).","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"* Note these points when adapting the documentation to a different project/product:","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * The \u0027Site-wide settings\u0027 section of the page linked above has information on how to update site-wide elements such as the top navigation bar.","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" * :bulb: In addition to updating content files, you might have to update the config files `docs\\_config.yml` and `docs\\_sass\\minima\\_base.scss` (which contains a reference to `AB-3` that comes into play when converting documentation pages to PDF format).","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"* If you are using Intellij for editing documentation files, you can consider enabling \u0027soft wrapping\u0027 for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping)","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Style guidance:**","lastModifiedDate":"2020-06-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style).","lastModifiedDate":"2020-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html)","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"**Diagrams:**","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html)","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"**Converting a document to the PDF format:**","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html)","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":18,"-":11}},{"path":"docs/Logging.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Logging guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"* We are using `java.util.logging` package for logging.","lastModifiedDate":"2020-06-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"* The `LogsCenter` class is used to manage the logging levels and logging destinations.","lastModifiedDate":"2020-06-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to the specified logging level.","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"* Log messages are output through the console and to a `.log` file.","lastModifiedDate":"2020-06-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The output logging level can be controlled using the `logLevel` setting in the configuration file (See the [Configuration guide](Configuration.md) section).","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"* **When choosing a level for a log message**, follow the conventions given in [_[se-edu/guides] Java: Logging conventions_](https://se-education.org/guides/conventions/java/logging.html).","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"jieqiboh":2,"-":9}},{"path":"docs/SettingUp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Setting up and getting started","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.\u003cbr\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":" 1. Run the `seedu.address.Main` and try a few commands.","lastModifiedDate":"2020-06-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"jieqiboh":10,"-":45}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: Testing guide","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-secondary\"\u003e:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" e.g. `seedu.address.storage.StorageManagerTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" e.g. `seedu.address.logic.LogicManagerTest`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":7,"-":29}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"title: User Guide","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"pageNav: 3","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"### Table of Contents","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"1. [Introduction](#introduction)","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":" - [Who is CareerSync for?](#who-is-careersync-for)","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" - [What is the purpose of this User Guide](#what-is-the-purpose-of-this-user-guide)","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" - [What can students do with CareerSync?](#what-can-students-do-with-careersync)","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"2. [Essential Terms \u0026 Symbols](#essential-terms--symbols)","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" - [Glossary](#glossary)","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" - [Legend](#legend)","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"3. [Quick Start](#quick-start)","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" - [Installation](#installation)","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" - [Navigating CareerSync](#navigating-careersync)","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" - [Tutorial](#tutorial)","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"4. [Commands](#commands)","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" - [Command Summary](#command-summary)","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" - [Viewing help](#viewing-help-help)","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" - [Adding an internship](#adding-an-internship-add)","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" - [Deleting an internship](#deleting-an-internship-delete)","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" - [Listing all internships](#listing-all-internships-list)","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" - [Editing an internship](#editing-an-internship-edit)","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" - [Adding a remark](#adding-a-remark-addremark)","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" - [Finding internships by keywords](#finding-internships-by-keywords-find)","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" - [Sorting internships by fields](#sorting-internships-by-fields-sort)","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" - [Add a Task to an Internship](#add-a-task-to-an-internship-addtask)","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" - [Set Deadline to a Task](#set-deadline-to-a-task-setdeadline)","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" - [Deleting Tasks from an Internship](#deleting-tasks-from-an-internship-deletetask)","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" - [Clearing all internships](#clearing-all-internships-clear)","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" - [Exiting the program](#exiting-the-program-exit)","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"5. [Miscellaneous](#miscellaneous)","lastModifiedDate":"2024-04-03"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" - [Saving and Editing Your Internship Data](#saving-and-editing-your-internship-data)","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" - [FAQ](#faq)","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" - [Known issues](#known-issues)","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" - [Field Summary](#field-summary)","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"### **Introduction**","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"Welcome to \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e\u0027s User Guide! \u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"\u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e is an **internship application manager designed to simplify the management of internship applications**. We\u0027re here to help ","lastModifiedDate":"2024-03-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"you keep track of your internships, so you can focus on preparing for your interviews and securing your dream internship! :grin:","lastModifiedDate":"2024-03-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"#### Who is CareerSync for?","lastModifiedDate":"2024-03-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"\u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e is **tailored to NUS Computing students** with **experience in command line interfaces (CLI)**.","lastModifiedDate":"2024-03-28"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"Our app is driven by command inputs through the CLI, making it **faster than conventional GUI-based applications.**\u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"If you are a beginner, don\u0027t worry! Our [Quick Start](#quick-start) section will guide you through the installation of all the necessary tools, even if you have never used a CLI before.","lastModifiedDate":"2024-03-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"#### What is the purpose of this User Guide?","lastModifiedDate":"2024-03-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"This user guide was created to help students starting out with CareerSync get started with using our application quickly!","lastModifiedDate":"2024-03-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"**For first-time users**, we recommend starting at the [Quick Start](#quick-start) section to install CareerSync, before heading to the [Tutorial](#tutorial) section.","lastModifiedDate":"2024-03-28"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"**For experienced users**, check out the [Commands](#commands) section for a quick reference. ","lastModifiedDate":"2024-03-28"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"Do check out our [FAQ](#faq), [Known Issues](#known-issues) and [Glossary](#glossary) sections for more information!","lastModifiedDate":"2024-03-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"#### What can students do with CareerSync?","lastModifiedDate":"2024-03-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"As computing students, keeping track of all the internship applications we\u0027ve made tends to be a hassle.\u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"With CareerSync, you can:","lastModifiedDate":"2024-03-28"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"1. **Add** internships, along with details such as company name, description, status and more!","lastModifiedDate":"2024-03-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"2. **Find** internships by keywords, making it easy to find the information you need.","lastModifiedDate":"2024-03-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"3. **Manage tasks** for your applications and keep track of their individual deadlines.","lastModifiedDate":"2024-03-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"And so much more!","lastModifiedDate":"2024-03-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":"### **Essential Terms \u0026 Symbols**","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"This section explains the common terms that you may not be familiar with, and the symbols used in this User Guide. Read through this section first so that","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":"you understand the contents of this User Guide.","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":"#### Glossary","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"| Term | Meaning |","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":"|-----------|-------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":"| CLI | [Command Line Interface](https://en.wikipedia.org/wiki/Command-line_interface) |","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":"| GUI | [Graphical User Interface](https://en.wikipedia.org/wiki/Graphical_user_interface) |","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":"| JSON | [JavaScript Object Notation](https://www.json.org/json-en.html) |","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":"| JAR | [Java Archive: A file format to store and distribute Java Applications](https://en.wikipedia.org/wiki/JAR_(file_format)) |","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":"| File Path | [The location of a file in the computer\u0027s file system](https://www.w3schools.com/html/html_filepaths.asp) |","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":"#### Legend","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"This User Guide contains coloured blocks that highlight important information!","lastModifiedDate":"2024-03-28"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" 💡 Green blocks contain examples that you can follow on \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e yourself!","lastModifiedDate":"2024-03-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" ℹ️ Blue blocks contain tips to enhance your experience using \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e!","lastModifiedDate":"2024-03-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" ⚠️ ","lastModifiedDate":"2024-03-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":"Red blocks contain warnings to note when using \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e!","lastModifiedDate":"2024-03-28"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-03-28"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":"### **Quick Start**","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":"#### Installation","lastModifiedDate":"2024-03-28"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":"1. Ensure that you have [Java 11 or above](https://www.java.com/en/download/) installed on your computer if you are using Windows.","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" - If you are using MacOS, follow the instructions [here](https://nus-cs2103-ay2324s2.github.io/website/admin/programmingLanguages.html) instead.","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":"2. Download the latest `CareerSync.jar` file [here](https://github.com/AY2324S2-CS2103T-W11-1/tp/releases/tag/v1.3.1). ","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":"3. Make sure your [jar](#glossary) file is located in an empty folder.","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":"4. Start \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e.","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" - For **MacOS**:","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" - Open up your Terminal by typing \u003ckbd\u003eCommand\u003c/kbd\u003e + \u003ckbd\u003eSpace\u003c/kbd\u003e, then type `Terminal` and \u003ckbd\u003eEnter\u003c/kbd\u003e.\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" - Navigate to the folder containing your jar file using `cd`. If you are not sure how to use `cd`, refer to [this link](https://www.ibm.com/docs/en/aix/7.2?topic\u003ddirectories-changing-another-directory-cd-command)!\u003cbr\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" - Enter `java -jar CareerSync.jar` and type \u003ckbd\u003eEnter\u003c/kbd\u003e.","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" - For **Windows**:","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" - Open the folder containing `CareerSync.jar`.","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" - Double-click on `CareerSync.jar` to start up our application!","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":"5. The **Graphical User Interace** similar to the image below should pop up on your screen.","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":"For more information on the interface, please refer to the [Navigating CareerSync](#navigating-careersync) section.","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":"### Navigating CareerSync","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":"When you first start \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e, you will see this window. This is the main window of \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e, where you can view all your internship applications.","lastModifiedDate":"2024-03-28"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":"#### Areas","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":"The main window of \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e is divided into four main areas: the **Tab Area**, the **CLI**, the **Message Box** and the **Internship List Display**.","lastModifiedDate":"2024-03-28"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":"![Areas Annotation](images/introduction/AreasAnnotation.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":"1. **Tab Area**: The Tab Area contains File and Help, which allows you to navigate its respective functions.","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":"2. **CLI**: The Command Line Interface (CLI) is where you can input commands to interact with \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e.","lastModifiedDate":"2024-03-28"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":"3. **Message Box**: The Message Box displays messages to provide feedback to you.","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":"4. **Internship List Display**: The Internship List Display displays the details of all your internship applications.","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":"#### Internship Fields","lastModifiedDate":"2024-03-29"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":"The names of the fields for each internship application is as stated below. When you edit these fields, you will see the changes reflected in the display.","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":"For the restrictions on what is accepted for each field, kindly refer to [Fields Summary](#fields-summary).","lastModifiedDate":"2024-03-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":"![Fields Annotation](images/introduction/FieldsAnnotation.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":"1. `INDEX` - The index of the internship application in the filtered list.","lastModifiedDate":"2024-03-27"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":"2. `COMPANY_NAME` - The name of the company you are applying to.","lastModifiedDate":"2024-03-27"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":"3. `ROLE` - The role you are applying for.","lastModifiedDate":"2024-03-27"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":"4. `STATUS` - The status of your application.","lastModifiedDate":"2024-03-27"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":"5. `DESCRIPTION` - A brief description of the internship.","lastModifiedDate":"2024-03-27"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":"6. `LOCATION` - The location of the internship.","lastModifiedDate":"2024-03-27"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":"7. `CONTACT_NAME` - The name of the contact person.","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":"8. `CONTACT_EMAIL` - The email of the contact person.","lastModifiedDate":"2024-03-27"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":"9. `CONTACT_NUMBER` - The phone number of the contact person.","lastModifiedDate":"2024-03-27"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":"10. `TASK` - The description of the task.","lastModifiedDate":"2024-04-04"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":"11. `DEADLINE` - The deadline of the task.","lastModifiedDate":"2024-04-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":"### Tutorial","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":"This section would guide you through the basic commands of \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e, and how to use them.","lastModifiedDate":"2024-03-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":"#### Clear sample internship entries: `clear`","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":"To begin using \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e, you should clear the sample internship entries that are present when you first start the ","lastModifiedDate":"2024-03-28"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":"application.","lastModifiedDate":"2024-03-27"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":178,"author":{"gitId":"LWS49"},"content":"Key in the command `clear` in the CLI and press `Enter` to clear the sample internship entries.","lastModifiedDate":"2024-03-27"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":180,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":182,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" `clear`\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" ![Before clearing](./images/clear/clear-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":"2. Successful Output after clearing entries:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" ![After successfully clearing](./images/clear/clear-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" There are no more internships in the list.","lastModifiedDate":"2024-03-27"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":"#### Add an internship entry: `add`","lastModifiedDate":"2024-04-03"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":"Next, let us try to add an internship entry. ","lastModifiedDate":"2024-03-27"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":198,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `add /com Tiktok /desc create new recommendation engine /status ongoing /poc jane yeo /email hr@tiktok.com","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":"/phone 90890301 /loc remote /role Software Intern`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":"Successful output after adding the entry:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" ![After successfully adding](./images/tutorial/add.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" You can now see your new internship with the details you entered in the **Internship List Display!**","lastModifiedDate":"2024-03-27"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"LWS49"},"content":"#### Edit an internship entry: `edit`","lastModifiedDate":"2024-04-03"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":"Oh no! You made a mistake in the email address of the contact person. Let\u0027s edit the email address.","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":213,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":214,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":215,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `edit 1 /email janeyeo@gmail.com`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":218,"author":{"gitId":"LWS49"},"content":"Successful output after editing the entry:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":"![After successfully editing](./images/tutorial/edit.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":"Your internship now has the updated email that you keyed in.","lastModifiedDate":"2024-03-27"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"jieqiboh"},"content":"#### Find internship entries: `find`","lastModifiedDate":"2024-03-29"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":"Before you continue, add a few more internship entries using these commands:","lastModifiedDate":"2024-03-27"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":"1. `add /com Google /desc create new search engine /status to_apply /poc john tan /email johntan@gmail.com /phone 98765432 /loc local /role Software Intern`","lastModifiedDate":"2024-03-27"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":"2. `add /com Facebook /desc create new social media platform /status to_apply /poc jane tan /email facebookhr@gmail.com /phone 87654321 /loc remote /role Software Intern`","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":"Successful output after adding the entries:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":"![After successfully adding more](./images/tutorial/addmore.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":"Let\u0027s say you want to find all internships that you want to apply for, that give you a software intern role.","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":"`find` is the command you need!","lastModifiedDate":"2024-03-27"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `find withall /status to_apply /role Software Intern`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"LWS49"},"content":"Successful output after finding all entries that satisfy the conditions:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":242,"author":{"gitId":"LWS49"},"content":"![After successfully finding](./images/tutorial/find.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":243,"author":{"gitId":"LWS49"},"content":"Your **Internship List Display** now only has all the internships satisfying both conditions.","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":246,"author":{"gitId":"LWS49"},"content":"#### Delete an internship entry: `delete`","lastModifiedDate":"2024-04-03"},{"lineNumber":247,"author":{"gitId":"LWS49"},"content":"You decide that to no longer pursue the internship at Facebook. Let\u0027s delete that entry.","lastModifiedDate":"2024-03-27"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":249,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":251,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":253,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `delete 2`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"LWS49"},"content":"Successful output after deleting the entry:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":256,"author":{"gitId":"LWS49"},"content":"![After successfully deleting](./images/tutorial/delete.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"LWS49"},"content":"The Facebook internship entry has been removed, and is no longer present in your database.","lastModifiedDate":"2024-03-27"},{"lineNumber":258,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":259,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":260,"author":{"gitId":"LWS49"},"content":"#### List all internships: `list`","lastModifiedDate":"2024-04-03"},{"lineNumber":261,"author":{"gitId":"LWS49"},"content":"You used find to filter the internships. How do you see all the internships again?","lastModifiedDate":"2024-03-27"},{"lineNumber":262,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":263,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":264,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":265,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":266,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":267,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `list`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":268,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":269,"author":{"gitId":"LWS49"},"content":"Successful output after listing:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":270,"author":{"gitId":"LWS49"},"content":"![After successfully listing](./images/tutorial/list.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":271,"author":{"gitId":"LWS49"},"content":"You now see all your internships. Your Tiktok internship, previously hidden, is now back in view.","lastModifiedDate":"2024-03-27"},{"lineNumber":272,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":273,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":274,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":275,"author":{"gitId":"LWS49"},"content":"#### Exit the program: `exit`","lastModifiedDate":"2024-04-03"},{"lineNumber":276,"author":{"gitId":"LWS49"},"content":"You decide that you are done for the day. How do you exit the application and save the file?","lastModifiedDate":"2024-03-27"},{"lineNumber":277,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":278,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":279,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":280,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":281,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":282,"author":{"gitId":"LWS49"},"content":"Key in the following command in the CLI: `exit`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":284,"author":{"gitId":"LWS49"},"content":"Upon reopening the app:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":285,"author":{"gitId":"LWS49"},"content":"![After successfully reopening](./images/tutorial/reopen.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":286,"author":{"gitId":"LWS49"},"content":"You now see all your internships that you have when you exited. Your data was saved!","lastModifiedDate":"2024-03-27"},{"lineNumber":287,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":288,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":289,"author":{"gitId":"jieqiboh"},"content":"#### Wrapping up the tutorial","lastModifiedDate":"2024-03-29"},{"lineNumber":290,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":291,"author":{"gitId":"jieqiboh"},"content":"This wraps up our tutorial! Hope you now have a better understanding of how to use \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e to manage your internship ","lastModifiedDate":"2024-03-28"},{"lineNumber":292,"author":{"gitId":"LWS49"},"content":"applications now.","lastModifiedDate":"2024-03-27"},{"lineNumber":293,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":294,"author":{"gitId":"LWS49"},"content":"Only **simple and common use cases** are covered in this tutorial. Please refer to the [Commands](#commands) section so that","lastModifiedDate":"2024-03-27"},{"lineNumber":295,"author":{"gitId":"LWS49"},"content":"you fully understand each command and their usage.","lastModifiedDate":"2024-03-27"},{"lineNumber":296,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":297,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":298,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":299,"author":{"gitId":"LWS49"},"content":"____________________________________________________________________________________________________________________","lastModifiedDate":"2024-03-27"},{"lineNumber":300,"author":{"gitId":"LWS49"},"content":"### **Commands**","lastModifiedDate":"2024-04-02"},{"lineNumber":301,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":302,"author":{"gitId":"HM33-Stu"},"content":"Let\u0027s do a quick review of the commands!","lastModifiedDate":"2024-04-03"},{"lineNumber":303,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":304,"author":{"gitId":"LWS49"},"content":"#### Command Summary","lastModifiedDate":"2024-04-02"},{"lineNumber":305,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":306,"author":{"gitId":"HM33-Stu"},"content":"| Action | Description | Format |","lastModifiedDate":"2024-03-27"},{"lineNumber":307,"author":{"gitId":"LWS49"},"content":"|------------------------------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-04-04"},{"lineNumber":308,"author":{"gitId":"CaptainKeqing"},"content":"| [help](#viewing-help-help) | Get access to the help page | `help` |","lastModifiedDate":"2024-04-04"},{"lineNumber":309,"author":{"gitId":"CaptainKeqing"},"content":"| [add](#adding-an-internship-add) | Adds an internship. | `add /com COMPANY_NAME /desc DESCRIPTION /status STATUS /poc CONTACT_NAME /email CONTACT_EMAIL /phone CONTACT_NUMBER [/loc LOCATION_ENUM] [/role ROLE]` |","lastModifiedDate":"2024-04-03"},{"lineNumber":310,"author":{"gitId":"CaptainKeqing"},"content":"| [delete](#deleting-an-internship-delete) | Removes a internship. | `delete INDEX` |","lastModifiedDate":"2024-04-03"},{"lineNumber":311,"author":{"gitId":"CaptainKeqing"},"content":"| [list](#listing-all-internships-list) | Lists all internships. | `list` |","lastModifiedDate":"2024-04-03"},{"lineNumber":312,"author":{"gitId":"LWS49"},"content":"| [edit](#editing-an-internship-edit) | Modifies an existing internship. | `edit INDEX [/com COMPANY_NAME] [/poc CONTACT_NAME] [/email CONTACT_EMAIL] [/phone CONTACT_NUMBER] [/loc LOCATION_ENUM] [/status STATUS] [/desc DESCRIPTION] [/role ROLE] [/remark REMARK]` |","lastModifiedDate":"2024-04-04"},{"lineNumber":313,"author":{"gitId":"CaptainKeqing"},"content":"| [addremark](#adding-a-remark-addremark) | Adds a remark to an existing internship. | `addremark INDEX [/remark REMARK]` |","lastModifiedDate":"2024-04-03"},{"lineNumber":314,"author":{"gitId":"CaptainKeqing"},"content":"| [find](#finding-internships-by-keywords-find) | Finds an internship by keywords. | `find MODE [/com COMPANY_NAME_KEYWORDS] [/poc CONTACT_NAME_KEYWORDS] [/loc LOCATION_KEYWORDS] [/status STATUS_KEYWORDS] [/desc DESCRIPTION_KEYWORDS] [/role ROLE_KEYWORDS] [/remark REMARK_KEYWORDS]` |","lastModifiedDate":"2024-04-03"},{"lineNumber":315,"author":{"gitId":"CaptainKeqing"},"content":"| [sort](#sorting-internships-by-fields-sort) | Sorts the internships by fields. | `sort FIELD ORDER` |","lastModifiedDate":"2024-04-03"},{"lineNumber":316,"author":{"gitId":"LWS49"},"content":"| [addtask](#add-a-task-to-an-internship-addtask) | Adds a task to an internship. | `addtask INDEX /task TASK` |","lastModifiedDate":"2024-04-04"},{"lineNumber":317,"author":{"gitId":"CaptainKeqing"},"content":"| [setdeadline](#set-deadline-to-a-task-setdeadline) | Sets a deadline to a task. | `setdeadline INDEX_INTERNSHIP /selecttask INDEX_TASK /deadline DEADLINE` |","lastModifiedDate":"2024-04-03"},{"lineNumber":318,"author":{"gitId":"LWS49"},"content":"| [deletetask](#deleting-tasks-from-an-internship-deletetask) | Deletes a task from an internship. | `deletetask INDEX_INTERNSHIP /selecttask INDEX_TASK` |","lastModifiedDate":"2024-04-02"},{"lineNumber":319,"author":{"gitId":"CaptainKeqing"},"content":"| [clear](#clearing-all-internships-clear) | Removes all internships from the app. | `clear` |","lastModifiedDate":"2024-04-03"},{"lineNumber":320,"author":{"gitId":"HM33-Stu"},"content":"| [exit](#exiting-the-program-exit) | Exits and closes the application. | `exit` |","lastModifiedDate":"2024-03-27"},{"lineNumber":321,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":322,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"HM33-Stu"},"content":"**Notes about the command format**\u003cbr\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"LWS49"},"content":"* `INDEX` refers to the index of the internship in the list. It must be a positive integer (like 1, 2, 3 …) and one of ","lastModifiedDate":"2024-04-02"},{"lineNumber":327,"author":{"gitId":"LWS49"},"content":"the displayed internship indexes.","lastModifiedDate":"2024-04-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"CaptainKeqing"},"content":" e.g `/com COMPANY_NAME [/desc DESCRIPTION]` can be used as `/com Alibaba /desc Free shipping for employees` or as `/com Alibaba`.","lastModifiedDate":"2024-04-04"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"HM33-Stu"},"content":" e.g. if the command specifies `/com COMPANY_NAME /desc DESCRIPTION`, `/desc DESCRIPTION /com COMPANY_NAME` is also acceptable.","lastModifiedDate":"2024-03-20"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"HM33-Stu"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines","lastModifiedDate":"2024-03-20"},{"lineNumber":336,"author":{"gitId":"HM33-Stu"},"content":" as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2024-03-20"},{"lineNumber":337,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"jieqiboh"},"content":"#### Viewing help: `help`","lastModifiedDate":"2024-03-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"CaptainKeqing"},"content":"If you ever get lost or need a refresher on the commands, you can always use the `help` command to view the help message.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":342,"author":{"gitId":"CaptainKeqing"},"content":"This directs you to the User Guide (this page!), where you can find all the information you need to use CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":349,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":350,"author":{"gitId":"jieqiboh"},"content":"#### Adding an internship: `add`","lastModifiedDate":"2024-03-29"},{"lineNumber":351,"author":{"gitId":"CaptainKeqing"},"content":"Lets you add an internship entry to be tracked by CareerSync!","lastModifiedDate":"2024-04-04"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"HM33-Stu"},"content":"**Format:** `add /com COMPANY_NAME /desc DESCRIPTION /status STATUS /poc CONTACT_NAME /email CONTACT_EMAIL /phone CONTACT_NUMBER [/loc LOCATION_ENUM] [/role ROLE] ​` \u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"HM33-Stu"},"content":"* The fields `COMPANY_NAME`, `DESCRIPTION`, `CONTACT_NAME` and `ROLE` allow the use of any text, number and/or spaces","lastModifiedDate":"2024-03-27"},{"lineNumber":356,"author":{"gitId":"CaptainKeqing"},"content":"* The field `STATUS` accepts only the following inputs: `to_apply`, `ongoing`, `rejected`, `accepted` (case-insensitive)","lastModifiedDate":"2024-04-04"},{"lineNumber":357,"author":{"gitId":"CaptainKeqing"},"content":"* The field `CONTACT_EMAIL` accepts only the format of `\u003cemail\u003e@\u003cdomain\u003e.com`","lastModifiedDate":"2024-04-04"},{"lineNumber":358,"author":{"gitId":"LWS49"},"content":"* The field `CONTACT_NUMBER` must be unsigned, and it must be at least 7 digits long","lastModifiedDate":"2024-04-04"},{"lineNumber":359,"author":{"gitId":"CaptainKeqing"},"content":"* The field `LOCATION_ENUM` accepts only the following inputs: `remote`, `local`, `overseas` (case-insensitive)","lastModifiedDate":"2024-04-04"},{"lineNumber":360,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":361,"author":{"gitId":"HM33-Stu"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":362,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":363,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** If you haven\u0027t already, head over to the [Tutorial](#add-an-internship-entry-add) section to learn how to add an internship entry !","lastModifiedDate":"2024-04-04"},{"lineNumber":364,"author":{"gitId":"HM33-Stu"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":365,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"HM33-Stu"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":368,"author":{"gitId":"HM33-Stu"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":369,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":370,"author":{"gitId":"CaptainKeqing"},"content":"1. If you miss out any of the mandatory fields, the command will be rejected with an error message.","lastModifiedDate":"2024-04-04"},{"lineNumber":371,"author":{"gitId":"CaptainKeqing"},"content":"Make sure to refer to the error message displayed for the correct format to use!\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":372,"author":{"gitId":"CaptainKeqing"},"content":"2. If you input an invalid status, location or email format, the command will be rejected with an error message highlighting the valid values. \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":373,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":374,"author":{"gitId":"HM33-Stu"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":375,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":376,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":377,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":378,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":379,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":380,"author":{"gitId":"jieqiboh"},"content":"#### Deleting an internship: `delete`","lastModifiedDate":"2024-03-29"},{"lineNumber":381,"author":{"gitId":"CaptainKeqing"},"content":"Lets you delete an internship entry from CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":382,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":383,"author":{"gitId":"jieqiboh"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-03-19"},{"lineNumber":384,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":385,"author":{"gitId":"jieqiboh"},"content":"* Deletes the internship at the specified `INDEX`.","lastModifiedDate":"2024-03-19"},{"lineNumber":386,"author":{"gitId":"jieqiboh"},"content":"* The index refers to the index number shown in the displayed list of internship entries at point of deletion.","lastModifiedDate":"2024-03-19"},{"lineNumber":387,"author":{"gitId":"jieqiboh"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-19"},{"lineNumber":388,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":389,"author":{"gitId":"HM33-Stu"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":390,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** If you haven\u0027t already, head over to the [Tutorial](#delete-an-internship-entry-delete) section to learn how to delete an internship entry !","lastModifiedDate":"2024-04-04"},{"lineNumber":391,"author":{"gitId":"HM33-Stu"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":393,"author":{"gitId":"HM33-Stu"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":394,"author":{"gitId":"HM33-Stu"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-03-28"},{"lineNumber":395,"author":{"gitId":"CaptainKeqing"},"content":"1. If you input an index that is not one of the displayed internship indexes, the command will not be executed and an error message will be displayed.","lastModifiedDate":"2024-04-04"},{"lineNumber":396,"author":{"gitId":"HM33-Stu"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":398,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":400,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":402,"author":{"gitId":"jieqiboh"},"content":"#### Listing all internships: `list`","lastModifiedDate":"2024-03-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"CaptainKeqing"},"content":"Shows you a list of all your internships tracked by CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"CaptainKeqing"},"content":"**Format:** `list`","lastModifiedDate":"2024-03-26"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":408,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":410,"author":{"gitId":"CaptainKeqing"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":411,"author":{"gitId":"CaptainKeqing"},"content":"When you first start the application, you will see a list of all the internships you have added. \u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":412,"author":{"gitId":"CaptainKeqing"},"content":"The [find](#finding-internships-by-keywords-find) command might be used to filter the visible list of internships. \u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":413,"author":{"gitId":"CaptainKeqing"},"content":"If you want to see all internships again, simply type `list` and press enter.","lastModifiedDate":"2024-03-26"},{"lineNumber":414,"author":{"gitId":"CaptainKeqing"},"content":"\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":416,"author":{"gitId":"CaptainKeqing"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":417,"author":{"gitId":"CaptainKeqing"},"content":" `list`\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":418,"author":{"gitId":"LWS49"},"content":" ![Before listing all internships](./images/list/list-before.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":419,"author":{"gitId":"CaptainKeqing"},"content":"In this example, the current view shows only internships with location \u0027REMOTE\u0027.","lastModifiedDate":"2024-03-26"},{"lineNumber":420,"author":{"gitId":"CaptainKeqing"},"content":"\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":422,"author":{"gitId":"CaptainKeqing"},"content":"2. Successful Output after executing list: \u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":423,"author":{"gitId":"LWS49"},"content":" ![After successfully listing all internships](./images/list/list-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":424,"author":{"gitId":"CaptainKeqing"},"content":"Any present filter will be removed, and all internships will be displayed in the list.","lastModifiedDate":"2024-03-26"},{"lineNumber":425,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":428,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** If you can\u0027t seem to find an internship you added, try using `list` to see all your internships.","lastModifiedDate":"2024-04-04"},{"lineNumber":429,"author":{"gitId":"CaptainKeqing"},"content":"You may have had a filter applied that is hiding the internship you are looking for.","lastModifiedDate":"2024-04-04"},{"lineNumber":430,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":432,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":434,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":435,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":436,"author":{"gitId":"jieqiboh"},"content":"#### Viewing an internship entry\u0027s details","lastModifiedDate":"2024-03-29"},{"lineNumber":437,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":438,"author":{"gitId":"CaptainKeqing"},"content":"When you click on an internship entry in the internship list, a separate window will be open showing","lastModifiedDate":"2024-04-04"},{"lineNumber":439,"author":{"gitId":"CaptainKeqing"},"content":"the detailed view of the internship entry.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":440,"author":{"gitId":"CaptainKeqing"},"content":"This view will show all the fields of the internship entry in a bigger font size for easier reading.\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":441,"author":{"gitId":"CaptainKeqing"},"content":"![Detailed view window](./images/detailedview/detailedViewWindow.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":442,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":443,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":444,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** This feature is not recommended for efficient use of the application, as it is not a command that can be inputted into the CLI.","lastModifiedDate":"2024-04-04"},{"lineNumber":445,"author":{"gitId":"CaptainKeqing"},"content":"However, it serves as an aid to view the details of an internship entry in a more readable format.","lastModifiedDate":"2024-04-04"},{"lineNumber":446,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":447,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":448,"author":{"gitId":"theman-oj10"},"content":"[CLI](#glossary) input will be implemented in a future release.","lastModifiedDate":"2024-03-27"},{"lineNumber":449,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":450,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":451,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":452,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":453,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":454,"author":{"gitId":"jieqiboh"},"content":"#### Editing an internship: `edit`","lastModifiedDate":"2024-03-29"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"CaptainKeqing"},"content":"Lets you edit an existing internship entry in CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"LWS49"},"content":"**Format** : `edit INDEX [/com COMPANY_NAME] [/poc CONTACT_NAME] [/email CONTACT_EMAIL] [/phone CONTACT_NUMBER] [/loc LOCATION_ENUM] [/status STATUS] [/desc DESCRIPTION] [/role ROLE] [/remark remark] …​`","lastModifiedDate":"2024-04-04"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"jieqiboh"},"content":"* Edits the internship at the specified `INDEX`. The index refers to the index number shown in the displayed internship list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-19"},{"lineNumber":461,"author":{"gitId":"CaptainKeqing"},"content":"* At least one of the optional fields must be provided. ","lastModifiedDate":"2024-04-04"},{"lineNumber":462,"author":{"gitId":"CaptainKeqing"},"content":"* Multiple fields can be edited at once.","lastModifiedDate":"2024-04-04"},{"lineNumber":463,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"CaptainKeqing"},"content":"* Only valid field values will be accepted. For example, you cannot set the status to \u0027ghosted\u0027 as it is not a valid status.","lastModifiedDate":"2024-04-04"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":466,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":468,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":470,"author":{"gitId":"LWS49"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":471,"author":{"gitId":"LWS49"},"content":" `edit 1 /email google@gmail.com`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":472,"author":{"gitId":"LWS49"},"content":" ![Before editing](./images/edit/edit-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":474,"author":{"gitId":"LWS49"},"content":"2. Successful Output after editing an entry:\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":475,"author":{"gitId":"LWS49"},"content":" ![After successfully editing](./images/edit/edit-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":476,"author":{"gitId":"LWS49"},"content":" The email field of the first internship is successfully updated to `google@gmail.com`.","lastModifiedDate":"2024-04-04"},{"lineNumber":477,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":479,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":480,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":481,"author":{"gitId":"CaptainKeqing"},"content":"1. Make sure not to miss out the mandatory `INDEX` field. If you do, CareerSync won\u0027t know which internship to edit!","lastModifiedDate":"2024-04-04"},{"lineNumber":482,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":484,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":486,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":488,"author":{"gitId":"jieqiboh"},"content":"#### Adding a remark: `addremark`","lastModifiedDate":"2024-03-29"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":490,"author":{"gitId":"CaptainKeqing"},"content":"You can use this to add a remark or modify an existing one, of the internship at the specified `INDEX`.","lastModifiedDate":"2024-04-04"},{"lineNumber":491,"author":{"gitId":"CaptainKeqing"},"content":"Use this to keep track of your personal notes about the internship!","lastModifiedDate":"2024-04-04"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":493,"author":{"gitId":"jieqiboh"},"content":"**Format:** `addremark INDEX /remark REMARK`","lastModifiedDate":"2024-04-01"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":495,"author":{"gitId":"jieqiboh"},"content":"* `INDEX` refers to the index in the internship list and **must be a positive integer** 1, 2, 3, …","lastModifiedDate":"2024-04-03"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":499,"author":{"gitId":"jieqiboh"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":501,"author":{"gitId":"jieqiboh"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":502,"author":{"gitId":"jieqiboh"},"content":" `addremark 1 /remark This internship has a behavioural interview!`\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":503,"author":{"gitId":"jieqiboh"},"content":" ![Before adding a remark](./images/add-remark/addremark-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":505,"author":{"gitId":"jieqiboh"},"content":"2. Successful Output after adding a remark:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":506,"author":{"gitId":"LWS49"},"content":" ![After successfully adding a remark](./images/add-remark/addremark-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":507,"author":{"gitId":"CaptainKeqing"},"content":"This sets the remark of the internship at index 1 to be `This internship has a behavioural interview!`.","lastModifiedDate":"2024-04-04"},{"lineNumber":508,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":510,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":511,"author":{"gitId":"jieqiboh"},"content":"ℹ️ **Tip:** To delete an existing remark, simply input an empty string as the remark like so: \u003cbr\u003e`addremark INDEX /remark`.","lastModifiedDate":"2024-04-03"},{"lineNumber":512,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":514,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":515,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":516,"author":{"gitId":"CaptainKeqing"},"content":"1. Don\u0027t forget to have the `/remark` prefix before the remark you want to add.","lastModifiedDate":"2024-04-04"},{"lineNumber":517,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":519,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":521,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":523,"author":{"gitId":"jieqiboh"},"content":"#### Finding internships by keywords: `find`","lastModifiedDate":"2024-03-29"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"CaptainKeqing"},"content":"You can use this to filter the visible internships in CareerSync by keywords.","lastModifiedDate":"2024-04-03"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"CaptainKeqing"},"content":"**Format:** `find MODE [/com COMPANY_NAME_KEYWORDS] [/poc CONTACT_NAME_KEYWORDS] [/loc LOCATION_KEYWORDS] [/status STATUS_KEYWORDS] [/desc DESCRIPTION_KEYWORDS] [/role ROLE_KEYWORDS] [/remark REMARK_KEYWORDS]`","lastModifiedDate":"2024-04-03"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"CaptainKeqing"},"content":"* MODE is either \u0027withall\u0027 or \u0027withany\u0027.","lastModifiedDate":"2024-03-21"},{"lineNumber":530,"author":{"gitId":"CaptainKeqing"},"content":" * \u0027withall\u0027 returns internships that match each prefix-keyword predicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":531,"author":{"gitId":"CaptainKeqing"},"content":" * Within each prefix field that you specified, the internship just has to contain any of the keywords.","lastModifiedDate":"2024-04-03"},{"lineNumber":532,"author":{"gitId":"CaptainKeqing"},"content":" * \u0027withany\u0027 returns internships that match at least one prefix-keyword predicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":533,"author":{"gitId":"CaptainKeqing"},"content":"* The search is case-insensitive. e.g `google` will match `Google`","lastModifiedDate":"2024-03-21"},{"lineNumber":534,"author":{"gitId":"CaptainKeqing"},"content":"* The order of the keywords does not matter. e.g. `Microsoft Google` will match `Google Microsoft`","lastModifiedDate":"2024-03-21"},{"lineNumber":535,"author":{"gitId":"CaptainKeqing"},"content":"* Only full words will be matched e.g. `Goo` will not match `Google`","lastModifiedDate":"2024-03-21"},{"lineNumber":536,"author":{"gitId":"CaptainKeqing"},"content":"* Internship matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-21"},{"lineNumber":537,"author":{"gitId":"CaptainKeqing"},"content":" e.g. `Hewlett Song` will return `Hewlett Packard`, `Song Fa`","lastModifiedDate":"2024-03-21"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":541,"author":{"gitId":"CaptainKeqing"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":543,"author":{"gitId":"CaptainKeqing"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":544,"author":{"gitId":"CaptainKeqing"},"content":" `find withall /status to_apply /loc remote`\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":545,"author":{"gitId":"LWS49"},"content":" ![Before filtering by all toapply and remote](./images/find/find-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":546,"author":{"gitId":"CaptainKeqing"},"content":"This will filter the list of internships to show you only those with both status `TO_APPLY` and location `REMOTE`.\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":547,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":548,"author":{"gitId":"CaptainKeqing"},"content":"2. Successful Output after filtering:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":549,"author":{"gitId":"CaptainKeqing"},"content":" ![After successfully filtering by all toapply and remote](./images/find/find-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":550,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":551,"author":{"gitId":"CaptainKeqing"},"content":"3. Other examples:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":552,"author":{"gitId":"CaptainKeqing"},"content":" i.`find withany /com Google /loc local` shows you internships with either company name (case-insensitive) `Google` or location `LOCAL`\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":553,"author":{"gitId":"CaptainKeqing"},"content":" ii.`find withall /poc John /desc paperwork` shows you internships with both contact name (case-insensitive) `John` and description containing `paperwork`","lastModifiedDate":"2024-04-03"},{"lineNumber":554,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":555,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":556,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":557,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** If you want to view all internships again, simply use the [list](#listing-all-internships-list) command.","lastModifiedDate":"2024-04-03"},{"lineNumber":558,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":559,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":560,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":561,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":562,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":563,"author":{"gitId":"CaptainKeqing"},"content":"1. If you do not specify any field prefixes, or specified an invalid field prefix, the command will be rejected with error message:\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":564,"author":{"gitId":"CaptainKeqing"},"content":" `At least one supported field prefix and keyword must be specified to be searched.","lastModifiedDate":"2024-04-03"},{"lineNumber":565,"author":{"gitId":"CaptainKeqing"},"content":" Supported prefixes are /com, /poc, /loc, /status, /desc, /role, /remark`\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":566,"author":{"gitId":"CaptainKeqing"},"content":"2. Make sure you specify the MODE of search, which must be either `withall` or `withany`. If not, the command will be rejected with error message:\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":567,"author":{"gitId":"CaptainKeqing"},"content":"`Invalid mode specified. Please specify either \u0027withall\u0027 or \u0027withany\u0027.`\u003cbr\u003e","lastModifiedDate":"2024-04-03"},{"lineNumber":568,"author":{"gitId":"CaptainKeqing"},"content":"3. Just to note, the unsupported fields in this version are `/phone`, `/email`, `/task`, `/selecttask` and `/deadline`.\u003cbr\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":569,"author":{"gitId":"CaptainKeqing"},"content":"Searching for these fields will result in an error message, highlighting the unsupported fields explicitly.","lastModifiedDate":"2024-04-05"},{"lineNumber":570,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":571,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":572,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":573,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":574,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":575,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":576,"author":{"gitId":"jieqiboh"},"content":"#### Sorting internships by fields: `sort`","lastModifiedDate":"2024-03-29"},{"lineNumber":577,"author":{"gitId":"LWS49"},"content":"This command allows you to sort the internships in CareerSync by the specified field in ascending or descending order.","lastModifiedDate":"2024-04-04"},{"lineNumber":578,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":579,"author":{"gitId":"theman-oj10"},"content":"**Format:** `sort FIELD ORDER`","lastModifiedDate":"2024-03-27"},{"lineNumber":580,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":581,"author":{"gitId":"theman-oj10"},"content":"* FIELD is the field to sort by. It is case-sensitive. The list of valid fields can be found [here](#field-summary).","lastModifiedDate":"2024-03-27"},{"lineNumber":582,"author":{"gitId":"CaptainKeqing"},"content":" * `/status` has an implicit ordering, in ascending order: `TO_APPLY` -\u003e `ONGOING` -\u003e `PENDING` -\u003e `ACCEPTED` -\u003e `REJECTED`.","lastModifiedDate":"2024-04-04"},{"lineNumber":583,"author":{"gitId":"CaptainKeqing"},"content":" * The rest of the fields are sorted in alphanumeric order. (A before Z, 0 before 9)","lastModifiedDate":"2024-04-04"},{"lineNumber":584,"author":{"gitId":"theman-oj10"},"content":"* ORDER is either `asc` or `desc`.","lastModifiedDate":"2024-04-02"},{"lineNumber":585,"author":{"gitId":"theman-oj10"},"content":" * `asc` sorts the internships in ascending order.","lastModifiedDate":"2024-03-27"},{"lineNumber":586,"author":{"gitId":"theman-oj10"},"content":" * `desc` sorts the internships in descending order.","lastModifiedDate":"2024-03-27"},{"lineNumber":587,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":588,"author":{"gitId":"theman-oj10"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":589,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":590,"author":{"gitId":"theman-oj10"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":591,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":592,"author":{"gitId":"theman-oj10"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":593,"author":{"gitId":"theman-oj10"},"content":" `sort /com asc`\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":594,"author":{"gitId":"theman-oj10"},"content":" ![Before filtering by all to_apply and remote](./images/sort/sort-before.png)\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":595,"author":{"gitId":"LWS49"},"content":"This will sort the list of internships by company name in ascending order.\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":596,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":597,"author":{"gitId":"theman-oj10"},"content":"2. Successful Output after sorting:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":598,"author":{"gitId":"theman-oj10"},"content":" ![After successfully filtering by all to_apply and remote](./images/sort/sort-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":599,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":600,"author":{"gitId":"theman-oj10"},"content":"3. Other examples:\u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":601,"author":{"gitId":"CaptainKeqing"},"content":" i.`sort /status asc` sorts your internships in the following order: `TO_APPLY` -\u003e `ONGOING` -\u003e `PENDING` -\u003e `ACCEPTED` -\u003e `REJECTED`\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":602,"author":{"gitId":"CaptainKeqing"},"content":" ii.`sort /phone asc` sorts your internships in ascending order of phone numbers.","lastModifiedDate":"2024-04-04"},{"lineNumber":603,"author":{"gitId":"theman-oj10"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":604,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":605,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":606,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":607,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":608,"author":{"gitId":"CaptainKeqing"},"content":"1. Don\u0027t forget to specify the ORDER of sorting, which must be either `asc` or `desc`.","lastModifiedDate":"2024-04-04"},{"lineNumber":609,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":610,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":611,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":612,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":613,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":614,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":615,"author":{"gitId":"LWS49"},"content":"#### Add a Task to an Internship: `addtask`","lastModifiedDate":"2024-04-02"},{"lineNumber":616,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":617,"author":{"gitId":"LWS49"},"content":"Using this function, you can add a task to an internship so that you won\u0027t forget to complete it!","lastModifiedDate":"2024-04-02"},{"lineNumber":618,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":619,"author":{"gitId":"LWS49"},"content":"**Format:** `addtask INDEX /task TASK`","lastModifiedDate":"2024-04-04"},{"lineNumber":620,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":621,"author":{"gitId":"CaptainKeqing"},"content":"- `TASK` is the task you want to add to the internship.","lastModifiedDate":"2024-04-02"},{"lineNumber":622,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":623,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":624,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":625,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":626,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":627,"author":{"gitId":"LWS49"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":628,"author":{"gitId":"LWS49"},"content":" `addtask 1 /task Edit Resume`\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":629,"author":{"gitId":"LWS49"},"content":" ![Before Adding Task](./images/addtask/addtask-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":630,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":631,"author":{"gitId":"LWS49"},"content":"2. Successful Output after deleting task:\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":632,"author":{"gitId":"LWS49"},"content":" ![After Successfully Adding Task](./images/addtask/addtask-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":633,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":634,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":635,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":636,"author":{"gitId":"LWS49"},"content":"ℹ️ **Tip:** You cannot add a task using the `add` command. You must use the `addtask` command to add a task to an internship.","lastModifiedDate":"2024-04-02"},{"lineNumber":637,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":638,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":639,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":640,"author":{"gitId":"LWS49"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":641,"author":{"gitId":"LWS49"},"content":"1. The index must be a positive integer (like 1, 2, 3 …) and one of the displayed internship indexes. If not, the command will be rejected.","lastModifiedDate":"2024-04-02"},{"lineNumber":642,"author":{"gitId":"LWS49"},"content":"Refer to the error message displayed for the correct format to use!","lastModifiedDate":"2024-04-02"},{"lineNumber":643,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":644,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":645,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":646,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":647,"author":{"gitId":"LWS49"},"content":"#### Set Deadline to a Task: `setdeadline`","lastModifiedDate":"2024-04-02"},{"lineNumber":648,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":649,"author":{"gitId":"LWS49"},"content":"Using this function, you can set the deadline to a task under an internship so that you won\u0027t miss the deadline!","lastModifiedDate":"2024-04-02"},{"lineNumber":650,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":651,"author":{"gitId":"CaptainKeqing"},"content":"**Format:** `setdeadline INDEX_INTERNSHIP /selecttask INDEX_TASK /deadline DEADLINE`","lastModifiedDate":"2024-04-02"},{"lineNumber":652,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":653,"author":{"gitId":"LWS49"},"content":"- `INDEX_INTERNSHIP` is the index of the internship with the task you want to set the deadline for.","lastModifiedDate":"2024-04-02"},{"lineNumber":654,"author":{"gitId":"LWS49"},"content":"- `INDEX_TASK` is the index of the task that you want to set the deadline for.","lastModifiedDate":"2024-04-02"},{"lineNumber":655,"author":{"gitId":"CaptainKeqing"},"content":"- `DEADLINE` is the deadline you want to set for the task. It must be in the format `DD/MM/YYYY`, and a valid date.","lastModifiedDate":"2024-04-02"},{"lineNumber":656,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":657,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":658,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":659,"author":{"gitId":"LWS49"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":660,"author":{"gitId":"CaptainKeqing"},"content":"Before you try this command, you need an internship that has at least 1 task. You can add it by using the [addtask](#add-a-task-to-an-internship-addtask) command. \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":661,"author":{"gitId":"LWS49"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":662,"author":{"gitId":"LWS49"},"content":" `setdeadline 1 /selecttask 1 /deadline 24/04/2024`\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":663,"author":{"gitId":"LWS49"},"content":" ![Before Setting Deadline](./images/setdeadline/setdeadline-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":664,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":665,"author":{"gitId":"LWS49"},"content":"2. Successful Output after adding deadline:\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":666,"author":{"gitId":"LWS49"},"content":" ![After Setting Deadline](./images/setdeadline/setdeadline-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":667,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":668,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":669,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":670,"author":{"gitId":"CaptainKeqing"},"content":"ℹ️ **Tip:** Once you set a deadline to a task, you can\u0027t remove it! You can only change the deadline using this command.","lastModifiedDate":"2024-04-02"},{"lineNumber":671,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":672,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":673,"author":{"gitId":"LWS49"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":674,"author":{"gitId":"LWS49"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":675,"author":{"gitId":"LWS49"},"content":"1. Don\u0027t forget that you need to include both the internship index and the task index!","lastModifiedDate":"2024-04-02"},{"lineNumber":676,"author":{"gitId":"CaptainKeqing"},"content":"2. If your day or month is single-digit, remember to include a leading zero. For example, `01/04/2024` instead of `1/4/2024`.","lastModifiedDate":"2024-04-04"},{"lineNumber":677,"author":{"gitId":"LWS49"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":678,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":679,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":680,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":681,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":682,"author":{"gitId":"jieqiboh"},"content":"#### Deleting Tasks from an Internship: `deletetask`","lastModifiedDate":"2024-04-01"},{"lineNumber":683,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":684,"author":{"gitId":"jieqiboh"},"content":"Lets you delete a task from an existing internship after it is complete!","lastModifiedDate":"2024-04-01"},{"lineNumber":685,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":686,"author":{"gitId":"jieqiboh"},"content":"**Format:** `deletetask INDEX /selecttask TASK_INDEX`","lastModifiedDate":"2024-04-01"},{"lineNumber":687,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":688,"author":{"gitId":"jieqiboh"},"content":"- `INDEX` and `TASK_INDEX` denote the internship index and task index respectively.","lastModifiedDate":"2024-04-01"},{"lineNumber":689,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":690,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":691,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":692,"author":{"gitId":"jieqiboh"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":693,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":694,"author":{"gitId":"jieqiboh"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":695,"author":{"gitId":"jieqiboh"},"content":" `deletetask 1 /selecttask 2`\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":696,"author":{"gitId":"LWS49"},"content":" ![Before Deleting Task](./images/deletetask/deletetask-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":697,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":698,"author":{"gitId":"jieqiboh"},"content":"2. Successful Output after deleting task:\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":699,"author":{"gitId":"jieqiboh"},"content":" ![After successfully deleting the task](./images/deletetask/deletetask-after.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":700,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":701,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":702,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":703,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ **Common errors:** \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":704,"author":{"gitId":"CaptainKeqing"},"content":"1. Don\u0027t forget that you need to include both the internship index and the task index!","lastModifiedDate":"2024-04-04"},{"lineNumber":705,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":706,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":707,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":708,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":709,"author":{"gitId":"LWS49"},"content":"\u003cdiv style\u003d\"margin-top: 20px;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":710,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":711,"author":{"gitId":"jieqiboh"},"content":"#### Clearing all internships: `clear`","lastModifiedDate":"2024-03-29"},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":713,"author":{"gitId":"CaptainKeqing"},"content":"This clears all your internship entries from CareerSync.","lastModifiedDate":"2024-04-04"},{"lineNumber":714,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":715,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":716,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":717,"author":{"gitId":"CaptainKeqing"},"content":"⚠️ Caution:","lastModifiedDate":"2024-04-04"},{"lineNumber":718,"author":{"gitId":"CaptainKeqing"},"content":"This operation is irreversible. Once you clear all entries, you cannot undo it.","lastModifiedDate":"2024-04-04"},{"lineNumber":719,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":721,"author":{"gitId":"CaptainKeqing"},"content":"**Format:** `clear`","lastModifiedDate":"2024-03-26"},{"lineNumber":722,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":723,"author":{"gitId":"CaptainKeqing"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":724,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":725,"author":{"gitId":"CaptainKeqing"},"content":"💡 **Try It Out:**\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":726,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":727,"author":{"gitId":"CaptainKeqing"},"content":"1. Input:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":728,"author":{"gitId":"CaptainKeqing"},"content":" `clear`\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":729,"author":{"gitId":"CaptainKeqing"},"content":" ![Before clearing](./images/clear/clear-before.png)\u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":730,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":731,"author":{"gitId":"CaptainKeqing"},"content":"2. Successful Output after clearing entries:\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":732,"author":{"gitId":"LWS49"},"content":" ![After successfully clearing](./images/clear/clear-after.png)\u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":733,"author":{"gitId":"CaptainKeqing"},"content":"There are no more internships in the list.","lastModifiedDate":"2024-03-26"},{"lineNumber":734,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":735,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":736,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":737,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":738,"author":{"gitId":"jieqiboh"},"content":"#### Exiting the program: `exit`","lastModifiedDate":"2024-03-29"},{"lineNumber":739,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":740,"author":{"gitId":"CaptainKeqing"},"content":"When you\u0027re done using CareerSync, you can exit the application using this command.","lastModifiedDate":"2024-04-04"},{"lineNumber":741,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":742,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":743,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":744,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":745,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":746,"author":{"gitId":"LWS49"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":747,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":748,"author":{"gitId":"jieqiboh"},"content":"#### Saving and Editing Your Internship Data","lastModifiedDate":"2024-03-29"},{"lineNumber":749,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":750,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-danger\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":751,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":752,"author":{"gitId":"jieqiboh"},"content":"⚠️ Caution:","lastModifiedDate":"2024-03-19"},{"lineNumber":753,"author":{"gitId":"jieqiboh"},"content":"Users are **NOT** recommended to modify their data file directly, since wrong formatting will cause the app to malfunction.","lastModifiedDate":"2024-03-19"},{"lineNumber":754,"author":{"gitId":"jieqiboh"},"content":"Only do so if you are an experienced user! \u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":755,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":756,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":757,"author":{"gitId":"HM33-Stu"},"content":"\u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e data is saved in the hard disk, as a [JSON](#glossary) file at the path ","lastModifiedDate":"2024-04-03"},{"lineNumber":758,"author":{"gitId":"CaptainKeqing"},"content":"`[JAR file location]/data/internshipdata.json`. After every command that changes the data, \u003cspan style\u003d\"color: #f66a0a;\"\u003eCareerSync\u003c/span\u003e performs a save automatically. There is no need to save manually.","lastModifiedDate":"2024-04-04"},{"lineNumber":759,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":760,"author":{"gitId":"LWS49"},"content":"[Go to Field Summary](#field-summary) | [Go to Command Summary](#command-summary) | [Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":761,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":762,"author":{"gitId":"LWS49"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":763,"author":{"gitId":"LWS49"},"content":"## **Miscellaneous**","lastModifiedDate":"2024-04-02"},{"lineNumber":764,"author":{"gitId":"jieqiboh"},"content":"### FAQ","lastModifiedDate":"2024-03-29"},{"lineNumber":765,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":766,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":767,"author":{"gitId":"theman-oj10"},"content":"**A**: Do the following steps: \u003cbr\u003e 1. Navigate to the folder where CareerSync.jar is stored. \u003cbr\u003e 2. Copy your data file from data/internshipdata.json. \u003cbr\u003e 3. Install the app in the other computer and overwrite the empty data file (data/internshipdata.json) it creates with the file that contains the data (JSON file) of your previous CareerSync home folder.","lastModifiedDate":"2024-03-27"},{"lineNumber":768,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":769,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":770,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":771,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":772,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":773,"author":{"gitId":"jieqiboh"},"content":"### Known issues","lastModifiedDate":"2024-03-29"},{"lineNumber":774,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":775,"author":{"gitId":"CaptainKeqing"},"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.\u003cbr\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":776,"author":{"gitId":"CaptainKeqing"},"content":"**The solution** is to delete the `preferences.json` file from the folder where you installed the application. Then, run the application again.","lastModifiedDate":"2024-03-26"},{"lineNumber":777,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":778,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"},{"lineNumber":779,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":780,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-04-02"},{"lineNumber":781,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":782,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":783,"author":{"gitId":"jieqiboh"},"content":"### Field Summary","lastModifiedDate":"2024-03-29"},{"lineNumber":784,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":785,"author":{"gitId":"theman-oj10"},"content":"| Field Name | Description | Valid Inputs |","lastModifiedDate":"2024-03-27"},{"lineNumber":786,"author":{"gitId":"theman-oj10"},"content":"|------------|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-28"},{"lineNumber":787,"author":{"gitId":"theman-oj10"},"content":"| `/com` | Company Name | Any text, numbers, or spaces |","lastModifiedDate":"2024-03-28"},{"lineNumber":788,"author":{"gitId":"theman-oj10"},"content":"| `/desc` | Description of Internship | Any text, numbers, or spaces |","lastModifiedDate":"2024-03-28"},{"lineNumber":789,"author":{"gitId":"theman-oj10"},"content":"| `/status` | Status of Application | `to_apply`, `ongoing`, `rejected`, `accepted` |","lastModifiedDate":"2024-03-28"},{"lineNumber":790,"author":{"gitId":"theman-oj10"},"content":"| `/poc` | Name of Person of Contact | Any text, numbers, or spaces |","lastModifiedDate":"2024-03-28"},{"lineNumber":791,"author":{"gitId":"theman-oj10"},"content":"| `/email` | Email of Person of Contact | Valid format: `local-part@domain`\u003cbr\u003e- The local-part should only contain alphanumeric characters and these special characters: `!#$%\u0026\u0027*+-/\u003d?^_{ \\|}~`. It may start or end with any special characters.\u003cbr\u003e- The domain name is made up of domain labels separated by periods. The domain name must:\u003cbr\u003e * End with a domain label at least 2 characters long \u003cbr\u003e * Have each domain label start and end with alphanumeric characters\u003cbr\u003e * Have each domain label consist of alphanumeric characters, separated only by hyphens, if any. |","lastModifiedDate":"2024-03-28"},{"lineNumber":792,"author":{"gitId":"LWS49"},"content":"| `/phone` | Contact Number of Person of Contact | At least 7 numbers |","lastModifiedDate":"2024-04-04"},{"lineNumber":793,"author":{"gitId":"theman-oj10"},"content":"| `/loc` | Location of Internship | `remote`, `local`, `overseas` |","lastModifiedDate":"2024-03-28"},{"lineNumber":794,"author":{"gitId":"theman-oj10"},"content":"| `/role` | Role for the Internship | Any text, numbers, or spaces |","lastModifiedDate":"2024-03-28"},{"lineNumber":795,"author":{"gitId":"LWS49"},"content":"| `/remark` | Remark for the Internship | Any text, numbers, or spaces |","lastModifiedDate":"2024-04-02"},{"lineNumber":796,"author":{"gitId":"LWS49"},"content":"| `/task` | Task for the Internship | Any text, numbers, or spaces |","lastModifiedDate":"2024-04-02"},{"lineNumber":797,"author":{"gitId":"CaptainKeqing"},"content":"| `/deadline`| Deadline for the Task | Valid format: `DD/MM/YYYY`\u003cbr\u003e- The date must be a valid date. |","lastModifiedDate":"2024-04-02"},{"lineNumber":798,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-28"},{"lineNumber":799,"author":{"gitId":"LWS49"},"content":"[Go to Table of Contents](#table-of-contents)","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"jieqiboh":122,"HM33-Stu":28,"LWS49":329,"theman-oj10":36,"-":122,"CaptainKeqing":162}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","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":" * Reset some basic elements","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":" * Basic styling","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","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":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12"},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11"},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11"},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12"},{"lineNumber":291,"author":{"gitId":"jieqiboh"},"content":" content: \"CareerSync\";","lastModifiedDate":"2024-02-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12"}],"authorContributionMap":{"jieqiboh":1,"-":294}},{"path":"docs/_sass/minima/_layout.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":" * Site header","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":".site-header {","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" border-top: 5px solid $brand-color-dark;","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" border-bottom: 1px solid $brand-color-light;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" min-height: $spacing-unit * 1.865;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" line-height: $base-line-height * $base-font-size * 2.25;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" // Positioning context for the mobile navigation icon","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" position: relative;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":".site-title {","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.625);","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" font-weight: 300;","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" letter-spacing: -1px;","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" float: left;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" @include media-query($on-palm) {","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" padding-right: 45px;","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" \u0026,","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" \u0026:visited {","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" color: $brand-color-dark;","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":".site-nav {","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" position: absolute;","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" top: 9px;","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" right: $spacing-unit / 2;","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" background-color: $background-color;","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" border-radius: 5px;","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" text-align: right;","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" .nav-trigger {","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" display: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" .menu-icon {","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" float: right;","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" width: 36px;","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" height: 26px;","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" line-height: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" padding-top: 10px;","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" text-align: center;","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" \u003e svg path {","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" fill: $brand-color-dark;","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" label[for\u003d\"nav-trigger\"] {","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" float: right;","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" width: 36px;","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" height: 36px;","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" z-index: 2;","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" cursor: pointer;","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" input ~ .trigger {","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" clear: both;","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" display: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" input:checked ~ .trigger {","lastModifiedDate":"2024-03-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" padding-bottom: 5px;","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" .page-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" color: $text-color;","lastModifiedDate":"2024-03-02"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" line-height: $base-line-height;","lastModifiedDate":"2024-03-02"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" padding: 5px 10px;","lastModifiedDate":"2024-03-02"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" // Gaps between nav items, but not on the last one","lastModifiedDate":"2024-03-02"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" \u0026:not(:last-child) {","lastModifiedDate":"2024-03-02"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" margin-right: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" margin-left: 20px;","lastModifiedDate":"2024-03-02"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" @media screen and (min-width: $on-medium) {","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" position: static;","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" float: right;","lastModifiedDate":"2024-03-02"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" border: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" background-color: inherit;","lastModifiedDate":"2024-03-02"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" label[for\u003d\"nav-trigger\"] {","lastModifiedDate":"2024-03-02"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" display: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" .menu-icon {","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" display: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" input ~ .trigger {","lastModifiedDate":"2024-03-02"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" .page-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" display: inline;","lastModifiedDate":"2024-03-02"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" padding: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" \u0026:not(:last-child) {","lastModifiedDate":"2024-03-02"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" margin-right: 20px;","lastModifiedDate":"2024-03-02"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" margin-left: auto;","lastModifiedDate":"2024-03-02"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" * Page content","lastModifiedDate":"2024-03-02"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":".page-content {","lastModifiedDate":"2024-03-02"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" padding: $spacing-unit 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" flex: 1 0 auto;","lastModifiedDate":"2024-03-02"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":".page-heading {","lastModifiedDate":"2024-03-02"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(2);","lastModifiedDate":"2024-03-02"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":".post-list-heading {","lastModifiedDate":"2024-03-02"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.75);","lastModifiedDate":"2024-03-02"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":".post-list {","lastModifiedDate":"2024-03-02"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" margin-left: 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" list-style: none;","lastModifiedDate":"2024-03-02"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" \u003e li {","lastModifiedDate":"2024-03-02"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2024-03-02"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":".post-meta {","lastModifiedDate":"2024-03-02"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" font-size: $small-font-size;","lastModifiedDate":"2024-03-02"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" color: $brand-color;","lastModifiedDate":"2024-03-02"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":".post-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.5);","lastModifiedDate":"2024-03-02"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" * Posts","lastModifiedDate":"2024-03-02"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":".post-header {","lastModifiedDate":"2024-03-02"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2024-03-02"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":".post-title,","lastModifiedDate":"2024-03-02"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":".post-content h1 {","lastModifiedDate":"2024-03-02"},{"lineNumber":167,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(2.625);","lastModifiedDate":"2024-03-02"},{"lineNumber":168,"author":{"gitId":"jieqiboh"},"content":" letter-spacing: -1px;","lastModifiedDate":"2024-03-02"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" line-height: 1.15;","lastModifiedDate":"2024-03-02"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2024-03-02"},{"lineNumber":172,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(2.625);","lastModifiedDate":"2024-03-02"},{"lineNumber":173,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":174,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":176,"author":{"gitId":"jieqiboh"},"content":".post-content {","lastModifiedDate":"2024-03-02"},{"lineNumber":177,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2024-03-02"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":179,"author":{"gitId":"jieqiboh"},"content":" h1, h2, h3 { margin-top: $spacing-unit * 2 }","lastModifiedDate":"2024-03-02"},{"lineNumber":180,"author":{"gitId":"jieqiboh"},"content":" h4, h5, h6 { margin-top: $spacing-unit }","lastModifiedDate":"2024-03-02"},{"lineNumber":181,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":182,"author":{"gitId":"jieqiboh"},"content":" h2 {","lastModifiedDate":"2024-03-02"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.75);","lastModifiedDate":"2024-03-02"},{"lineNumber":184,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":185,"author":{"gitId":"jieqiboh"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2024-03-02"},{"lineNumber":186,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(2);","lastModifiedDate":"2024-03-02"},{"lineNumber":187,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":188,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":189,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":190,"author":{"gitId":"jieqiboh"},"content":" h3 {","lastModifiedDate":"2024-03-02"},{"lineNumber":191,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.375);","lastModifiedDate":"2024-03-02"},{"lineNumber":192,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":193,"author":{"gitId":"jieqiboh"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2024-03-02"},{"lineNumber":194,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.625);","lastModifiedDate":"2024-03-02"},{"lineNumber":195,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":196,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":197,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":198,"author":{"gitId":"jieqiboh"},"content":" h4 {","lastModifiedDate":"2024-03-02"},{"lineNumber":199,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.25);","lastModifiedDate":"2024-03-02"},{"lineNumber":200,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":201,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":202,"author":{"gitId":"jieqiboh"},"content":" h5 {","lastModifiedDate":"2024-03-02"},{"lineNumber":203,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2024-03-02"},{"lineNumber":204,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":205,"author":{"gitId":"jieqiboh"},"content":" h6 {","lastModifiedDate":"2024-03-02"},{"lineNumber":206,"author":{"gitId":"jieqiboh"},"content":" @include relative-font-size(1.0625);","lastModifiedDate":"2024-03-02"},{"lineNumber":207,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":208,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":209,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":210,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":211,"author":{"gitId":"jieqiboh"},"content":".social-media-list {","lastModifiedDate":"2024-03-02"},{"lineNumber":212,"author":{"gitId":"jieqiboh"},"content":" display: table;","lastModifiedDate":"2024-03-02"},{"lineNumber":213,"author":{"gitId":"jieqiboh"},"content":" margin: 0 auto;","lastModifiedDate":"2024-03-02"},{"lineNumber":214,"author":{"gitId":"jieqiboh"},"content":" li {","lastModifiedDate":"2024-03-02"},{"lineNumber":215,"author":{"gitId":"jieqiboh"},"content":" float: left;","lastModifiedDate":"2024-03-02"},{"lineNumber":216,"author":{"gitId":"jieqiboh"},"content":" margin: 5px 10px 5px 0;","lastModifiedDate":"2024-03-02"},{"lineNumber":217,"author":{"gitId":"jieqiboh"},"content":" \u0026:last-of-type { margin-right: 0 }","lastModifiedDate":"2024-03-02"},{"lineNumber":218,"author":{"gitId":"jieqiboh"},"content":" a {","lastModifiedDate":"2024-03-02"},{"lineNumber":219,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":220,"author":{"gitId":"jieqiboh"},"content":" padding: $spacing-unit / 4;","lastModifiedDate":"2024-03-02"},{"lineNumber":221,"author":{"gitId":"jieqiboh"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2024-03-02"},{"lineNumber":222,"author":{"gitId":"jieqiboh"},"content":" \u0026:hover { border-color: darken($brand-color-light, 10%) }","lastModifiedDate":"2024-03-02"},{"lineNumber":223,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":224,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":225,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":226,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":227,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":228,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":229,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":230,"author":{"gitId":"jieqiboh"},"content":" * Pagination navbar","lastModifiedDate":"2024-03-02"},{"lineNumber":231,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":232,"author":{"gitId":"jieqiboh"},"content":".pagination {","lastModifiedDate":"2024-03-02"},{"lineNumber":233,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2024-03-02"},{"lineNumber":234,"author":{"gitId":"jieqiboh"},"content":" @extend .social-media-list;","lastModifiedDate":"2024-03-02"},{"lineNumber":235,"author":{"gitId":"jieqiboh"},"content":" li {","lastModifiedDate":"2024-03-02"},{"lineNumber":236,"author":{"gitId":"jieqiboh"},"content":" a, div {","lastModifiedDate":"2024-03-02"},{"lineNumber":237,"author":{"gitId":"jieqiboh"},"content":" min-width: 41px;","lastModifiedDate":"2024-03-02"},{"lineNumber":238,"author":{"gitId":"jieqiboh"},"content":" text-align: center;","lastModifiedDate":"2024-03-02"},{"lineNumber":239,"author":{"gitId":"jieqiboh"},"content":" box-sizing: border-box;","lastModifiedDate":"2024-03-02"},{"lineNumber":240,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":241,"author":{"gitId":"jieqiboh"},"content":" div {","lastModifiedDate":"2024-03-02"},{"lineNumber":242,"author":{"gitId":"jieqiboh"},"content":" display: block;","lastModifiedDate":"2024-03-02"},{"lineNumber":243,"author":{"gitId":"jieqiboh"},"content":" padding: $spacing-unit / 4;","lastModifiedDate":"2024-03-02"},{"lineNumber":244,"author":{"gitId":"jieqiboh"},"content":" border: 1px solid transparent;","lastModifiedDate":"2024-03-02"},{"lineNumber":245,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":246,"author":{"gitId":"jieqiboh"},"content":" \u0026.pager-edge {","lastModifiedDate":"2024-03-02"},{"lineNumber":247,"author":{"gitId":"jieqiboh"},"content":" color: darken($brand-color-light, 5%);","lastModifiedDate":"2024-03-02"},{"lineNumber":248,"author":{"gitId":"jieqiboh"},"content":" border: 1px dashed;","lastModifiedDate":"2024-03-02"},{"lineNumber":249,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":250,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":251,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":252,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":253,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":254,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":255,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":256,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-02"},{"lineNumber":257,"author":{"gitId":"jieqiboh"},"content":" * Grid helpers","lastModifiedDate":"2024-03-02"},{"lineNumber":258,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-02"},{"lineNumber":259,"author":{"gitId":"jieqiboh"},"content":"@media screen and (min-width: $on-large) {","lastModifiedDate":"2024-03-02"},{"lineNumber":260,"author":{"gitId":"jieqiboh"},"content":" .one-half {","lastModifiedDate":"2024-03-02"},{"lineNumber":261,"author":{"gitId":"jieqiboh"},"content":" width: calc(50% - (#{$spacing-unit} / 2));","lastModifiedDate":"2024-03-02"},{"lineNumber":262,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":263,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":263}},{"path":"docs/_sass/minima/custom-mixins.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@mixin alert-variant($background, $border, $color) {","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":" color: $color;","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":" @include gradient-bg($background);","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" border-color: $border;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" .alert-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" color: darken($color, 10%);","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"@mixin gradient-bg($color, $foreground: null) {","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" @if $enable-gradients {","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" @if $foreground {","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" background-image: $foreground, linear-gradient(180deg, mix($body-bg, $color, 15%), $color);","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" } @else {","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" background-image: linear-gradient(180deg, mix($body-bg, $color, 15%), $color);","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" } @else {","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" background-color: $color;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":21}},{"path":"docs/_sass/minima/custom-styles.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"// Placeholder to allow defining custom styles that override everything else.","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"// (Use `_sass/minima/custom-variables.scss` to override variable defaults)","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"h2, h3, h4, h5, h6 {","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" color: #e46c0a;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"// Bootstrap style alerts","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":".alert {","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" position: relative;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" padding: $alert-padding-y $alert-padding-x;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" margin-bottom: $alert-margin-bottom;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" border: $alert-border-width solid transparent;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" border-radius : $alert-border-radius;","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"// Headings for larger alerts","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":".alert-heading {","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" // Specified to prevent conflicts of changing $headings-color","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" color: inherit;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"// Provide class for links that match alerts","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":".alert-link {","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" font-weight: $alert-link-font-weight;","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"// Generate contextual modifier classes for colorizing the alert.","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"@each $color, $value in $theme-colors {","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" .alert-#{$color} {","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" @include alert-variant(color-level($value, $alert-bg-level), color-level($value, $alert-border-level), color-level($value, $alert-color-level));","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":34}},{"path":"docs/_sass/minima/custom-variables.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"// Placeholder to allow overriding predefined variables smoothly.","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"//Bootstrap\u0027s default","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"$white: #fff !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"$gray-100: #f8f9fa !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"$gray-200: #e9ecef !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"$gray-300: #dee2e6 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"$gray-400: #ced4da !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"$gray-500: #adb5bd !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"$gray-600: #6c757d !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"$gray-700: #495057 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"$gray-800: #343a40 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"$gray-900: #212529 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"$black: #000 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"$blue: #0d6efd !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"$indigo: #6610f2 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"$purple: #6f42c1 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"$pink: #d63384 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"$red: #dc3545 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"$orange: #fd7e14 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"$yellow: #ffc107 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"$green: #28a745 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"$teal: #20c997 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"$cyan: #17a2b8 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"$primary: $blue !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"$secondary: $gray-600 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"$success: $green !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"$info: $cyan !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"$warning: $yellow !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"$danger: $red !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"$light: $gray-100 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"$dark: $gray-800 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"$theme-colors: (","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" \"primary\": $primary,","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" \"secondary\": $secondary,","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" \"success\": $success,","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" \"info\": $info,","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" \"warning\": $warning,","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" \"danger\": $danger,","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" \"light\": $light,","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" \"dark\": $dark","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":") !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"$theme-color-interval: 8% !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"$body-bg: $white !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"$body-color: $gray-900 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"$body-text-align: null !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"$enable-gradients: true;","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"// Define alert colors, border radius, and padding.","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"$border-radius: .25rem !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"$border-width: 1px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"$font-weight-bold: 700 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"$alert-padding-y: .75rem !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"$alert-padding-x: 1.25rem !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"$alert-margin-bottom: 1rem !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"$alert-border-radius: $border-radius !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"$alert-link-font-weight: $font-weight-bold !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"$alert-border-width: $border-width !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"$alert-bg-level: -10 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"$alert-border-level: -9 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"$alert-color-level: 6 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"// Request a color level","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"// scss-docs-start color-level","lastModifiedDate":"2024-03-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"@function color-level($color: $primary, $level: 0) {","lastModifiedDate":"2024-03-02"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" $color-base: if($level \u003e 0, $black, $white);","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" $level: abs($level);","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" @return mix($color-base, $color, $level * $theme-color-interval);","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":76}},{"path":"docs/_sass/minima/initialize.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@charset \"utf-8\";","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"// Define defaults for each variable.","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"$base-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Segoe UI Symbol\", \"Segoe UI Emoji\", \"Apple Color Emoji\", Roboto, Helvetica, Arial, sans-serif !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"$code-font-family: \"Menlo\", \"Inconsolata\", \"Consolas\", \"Roboto Mono\", \"Ubuntu Mono\", \"Liberation Mono\", \"Courier New\", monospace;","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"$base-font-size: 16px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"$base-font-weight: 400 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"$small-font-size: $base-font-size * 0.875 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"$base-line-height: 1.5 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"$spacing-unit: 30px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"$table-text-align: left !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"// Width of the content area","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"$content-width: 800px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"$on-palm: 600px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"$on-laptop: 800px !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"$on-medium: $on-palm !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"$on-large: $on-laptop !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"// Use media queries like this:","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"// @include media-query($on-palm) {","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"// .wrapper {","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"// padding-right: $spacing-unit / 2;","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"// padding-left: $spacing-unit / 2;","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"// }","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"// }","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"// Notice the following mixin uses max-width, in a deprecated, desktop-first","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"// approach, whereas media queries used elsewhere now use min-width.","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"@mixin media-query($device) {","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" @media screen and (max-width: $device) {","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" @content;","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"@mixin relative-font-size($ratio) {","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" font-size: #{$ratio}rem;","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"// Import pre-styling-overrides hook and style-partials.","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"@import","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" \"minima/custom-variables\", // Hook to override predefined variables.","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" \"minima/custom-mixins\", // Hook to add custom mixins.","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" \"minima/base\", // Defines element resets.","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" \"minima/layout\", // Defines structure and style based on CSS selectors.","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" \"minima/custom-styles\" // Hook to override existing styles.","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":";","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":51}},{"path":"docs/_sass/minima/skins/classic.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@charset \"utf-8\";","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"$brand-color: #828282 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"$brand-color-light: lighten($brand-color, 40%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"$brand-color-dark: darken($brand-color, 25%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"$text-color: #111 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"$background-color: #fdfdfd !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"$code-background-color: #eef !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"$link-base-color: #2a7ae2 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"$link-visited-color: darken($link-base-color, 15%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"$table-text-color: lighten($text-color, 18%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"$table-zebra-color: lighten($brand-color, 46%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"$table-header-bg-color: lighten($brand-color, 43%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"$table-header-border: lighten($brand-color, 36%) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"$table-border-color: $brand-color-light !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"// Syntax highlighting styles should be adjusted appropriately for every \"skin\"","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"// ----------------------------------------------------------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":".highlight {","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" .c { color: #998; font-style: italic } // Comment","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" .err { color: #a61717; background-color: #e3d2d2 } // Error","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" .k { font-weight: bold } // Keyword","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" .o { font-weight: bold } // Operator","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" .cm { color: #998; font-style: italic } // Comment.Multiline","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" .cp { color: #999; font-weight: bold } // Comment.Preproc","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" .c1 { color: #998; font-style: italic } // Comment.Single","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" .gd { color: #000; background-color: #fdd } // Generic.Deleted","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" .ge { font-style: italic } // Generic.Emph","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" .gr { color: #a00 } // Generic.Error","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" .gh { color: #999 } // Generic.Heading","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" .gi { color: #000; background-color: #dfd } // Generic.Inserted","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" .go { color: #888 } // Generic.Output","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" .gp { color: #555 } // Generic.Prompt","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" .gs { font-weight: bold } // Generic.Strong","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" .gu { color: #aaa } // Generic.Subheading","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" .gt { color: #a00 } // Generic.Traceback","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" .kc { font-weight: bold } // Keyword.Constant","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" .kd { font-weight: bold } // Keyword.Declaration","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" .kp { font-weight: bold } // Keyword.Pseudo","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" .kr { font-weight: bold } // Keyword.Reserved","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" .kt { color: #458; font-weight: bold } // Keyword.Type","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" .m { color: #099 } // Literal.Number","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" .s { color: #d14 } // Literal.String","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" .na { color: #008080 } // Name.Attribute","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" .nb { color: #0086B3 } // Name.Builtin","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" .nc { color: #458; font-weight: bold } // Name.Class","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" .no { color: #008080 } // Name.Constant","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" .ni { color: #800080 } // Name.Entity","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" .ne { color: #900; font-weight: bold } // Name.Exception","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" .nf { color: #900; font-weight: bold } // Name.Function","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" .nn { color: #555 } // Name.Namespace","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" .nt { color: #000080 } // Name.Tag","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" .nv { color: #008080 } // Name.Variable","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" .ow { font-weight: bold } // Operator.Word","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" .w { color: #bbb } // Text.Whitespace","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" .mf { color: #099 } // Literal.Number.Float","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" .mh { color: #099 } // Literal.Number.Hex","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" .mi { color: #099 } // Literal.Number.Integer","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" .mo { color: #099 } // Literal.Number.Oct","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" .sb { color: #d14 } // Literal.String.Backtick","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" .sc { color: #d14 } // Literal.String.Char","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" .sd { color: #d14 } // Literal.String.Doc","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" .s2 { color: #d14 } // Literal.String.Double","lastModifiedDate":"2024-03-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" .se { color: #d14 } // Literal.String.Escape","lastModifiedDate":"2024-03-02"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" .sh { color: #d14 } // Literal.String.Heredoc","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" .si { color: #d14 } // Literal.String.Interpol","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" .sx { color: #d14 } // Literal.String.Other","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" .sr { color: #009926 } // Literal.String.Regex","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" .s1 { color: #d14 } // Literal.String.Single","lastModifiedDate":"2024-03-02"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" .ss { color: #990073 } // Literal.String.Symbol","lastModifiedDate":"2024-03-02"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" .bp { color: #999 } // Name.Builtin.Pseudo","lastModifiedDate":"2024-03-02"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" .vc { color: #008080 } // Name.Variable.Class","lastModifiedDate":"2024-03-02"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" .vg { color: #008080 } // Name.Variable.Global","lastModifiedDate":"2024-03-02"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" .vi { color: #008080 } // Name.Variable.Instance","lastModifiedDate":"2024-03-02"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" .il { color: #099 } // Literal.Number.Integer.Long","lastModifiedDate":"2024-03-02"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":84}},{"path":"docs/_sass/minima/skins/solarized-dark.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@charset \"utf-8\";","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"$sol-is-dark: true;","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"@import \"minima/skins/solarized\";","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":4}},{"path":"docs/_sass/minima/skins/solarized.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@charset \"utf-8\";","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"// Solarized skin","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"// \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"// Created by Sander Voerman \u003cmailto:sander@savoerman.nl\u003e using the Solarized","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"// color scheme by Ethan Schoonover \u003chttps://ethanschoonover.com/solarized\u003e.","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"// This style sheet implements two options for the minima.skin setting:","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"// \"solarized\" for light mode and \"solarized-dark\" for dark mode.","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"$sol-is-dark: false !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"// Color scheme","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"// ------------","lastModifiedDate":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"// The inline comments show the canonical L*a*b values for each color.","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"$sol-base03: #002b36; // 15 -12 -12","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"$sol-base02: #073642; // 20 -12 -12","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"$sol-base01: #586e75; // 45 -07 -07","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"$sol-base00: #657b83; // 50 -07 -07","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"$sol-base0: #839496; // 60 -06 -03","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"$sol-base1: #93a1a1; // 65 -05 -02","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"$sol-base2: #eee8d5; // 92 -00 10","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"$sol-base3: #fdf6e3; // 97 00 10","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"$sol-yellow: #b58900; // 60 10 65","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"$sol-orange: #cb4b16; // 50 50 55","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"$sol-red: #dc322f; // 50 65 45","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"$sol-magenta: #d33682; // 50 65 -05","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"$sol-violet: #6c71c4; // 50 15 -45","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"$sol-blue: #268bd2; // 55 -10 -45","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"$sol-cyan: #2aa198; // 60 -35 -05","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"$sol-green: #859900; // 60 -20 65","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"$sol-mono3: $sol-base3;","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"$sol-mono2: $sol-base2;","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"$sol-mono1: $sol-base1;","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"$sol-mono00: $sol-base00;","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"$sol-mono01: $sol-base01;","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"@if $sol-is-dark {","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" $sol-mono3: $sol-base03;","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" $sol-mono2: $sol-base02;","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" $sol-mono1: $sol-base01;","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" $sol-mono00: $sol-base0;","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" $sol-mono01: $sol-base1;","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"// Minima color variables","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"// ----------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"$brand-color: $sol-mono1 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"$brand-color-light: mix($sol-mono1, $sol-mono3) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"$brand-color-dark: $sol-mono00 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"$text-color: $sol-mono01 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"$background-color: $sol-mono3 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"$code-background-color: $sol-mono2 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"$link-base-color: $sol-blue !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"$link-visited-color: mix($sol-blue, $sol-mono00) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"$table-text-color: $sol-mono00 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"$table-zebra-color: mix($sol-mono2, $sol-mono3) !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"$table-header-bg-color: $sol-mono2 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"$table-header-border: $sol-mono1 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"$table-border-color: $sol-mono1 !default;","lastModifiedDate":"2024-03-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"// Syntax highlighting styles","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"// --------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":".highlight {","lastModifiedDate":"2024-03-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" .c { color: $sol-mono1; font-style: italic } // Comment","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" .err { color: $sol-red } // Error","lastModifiedDate":"2024-03-02"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" .k { color: $sol-mono01; font-weight: bold } // Keyword","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" .o { color: $sol-mono01; font-weight: bold } // Operator","lastModifiedDate":"2024-03-02"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" .cm { color: $sol-mono1; font-style: italic } // Comment.Multiline","lastModifiedDate":"2024-03-02"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" .cp { color: $sol-mono1; font-weight: bold } // Comment.Preproc","lastModifiedDate":"2024-03-02"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" .c1 { color: $sol-mono1; font-style: italic } // Comment.Single","lastModifiedDate":"2024-03-02"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" .cs { color: $sol-mono1; font-weight: bold; font-style: italic } // Comment.Special","lastModifiedDate":"2024-03-02"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" .gd { color: $sol-red } // Generic.Deleted","lastModifiedDate":"2024-03-02"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" .gd .x { color: $sol-red } // Generic.Deleted.Specific","lastModifiedDate":"2024-03-02"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" .ge { color: $sol-mono00; font-style: italic } // Generic.Emph","lastModifiedDate":"2024-03-02"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" .gr { color: $sol-red } // Generic.Error","lastModifiedDate":"2024-03-02"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" .gh { color: $sol-mono1 } // Generic.Heading","lastModifiedDate":"2024-03-02"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" .gi { color: $sol-green } // Generic.Inserted","lastModifiedDate":"2024-03-02"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" .gi .x { color: $sol-green } // Generic.Inserted.Specific","lastModifiedDate":"2024-03-02"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" .go { color: $sol-mono00 } // Generic.Output","lastModifiedDate":"2024-03-02"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" .gp { color: $sol-mono00 } // Generic.Prompt","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" .gs { color: $sol-mono01; font-weight: bold } // Generic.Strong","lastModifiedDate":"2024-03-02"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" .gu { color: $sol-mono1 } // Generic.Subheading","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" .gt { color: $sol-red } // Generic.Traceback","lastModifiedDate":"2024-03-02"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" .kc { color: $sol-mono01; font-weight: bold } // Keyword.Constant","lastModifiedDate":"2024-03-02"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" .kd { color: $sol-mono01; font-weight: bold } // Keyword.Declaration","lastModifiedDate":"2024-03-02"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" .kp { color: $sol-mono01; font-weight: bold } // Keyword.Pseudo","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" .kr { color: $sol-mono01; font-weight: bold } // Keyword.Reserved","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" .kt { color: $sol-violet; font-weight: bold } // Keyword.Type","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" .m { color: $sol-cyan } // Literal.Number","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" .s { color: $sol-magenta } // Literal.String","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" .na { color: $sol-cyan } // Name.Attribute","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" .nb { color: $sol-blue } // Name.Builtin","lastModifiedDate":"2024-03-02"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" .nc { color: $sol-violet; font-weight: bold } // Name.Class","lastModifiedDate":"2024-03-02"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" .no { color: $sol-cyan } // Name.Constant","lastModifiedDate":"2024-03-02"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" .ni { color: $sol-violet } // Name.Entity","lastModifiedDate":"2024-03-02"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" .ne { color: $sol-violet; font-weight: bold } // Name.Exception","lastModifiedDate":"2024-03-02"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" .nf { color: $sol-blue; font-weight: bold } // Name.Function","lastModifiedDate":"2024-03-02"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" .nn { color: $sol-mono00 } // Name.Namespace","lastModifiedDate":"2024-03-02"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" .nt { color: $sol-blue } // Name.Tag","lastModifiedDate":"2024-03-02"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" .nv { color: $sol-cyan } // Name.Variable","lastModifiedDate":"2024-03-02"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" .ow { color: $sol-mono01; font-weight: bold } // Operator.Word","lastModifiedDate":"2024-03-02"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" .w { color: $sol-mono1 } // Text.Whitespace","lastModifiedDate":"2024-03-02"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" .mf { color: $sol-cyan } // Literal.Number.Float","lastModifiedDate":"2024-03-02"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" .mh { color: $sol-cyan } // Literal.Number.Hex","lastModifiedDate":"2024-03-02"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" .mi { color: $sol-cyan } // Literal.Number.Integer","lastModifiedDate":"2024-03-02"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" .mo { color: $sol-cyan } // Literal.Number.Oct","lastModifiedDate":"2024-03-02"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" .sb { color: $sol-magenta } // Literal.String.Backtick","lastModifiedDate":"2024-03-02"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" .sc { color: $sol-magenta } // Literal.String.Char","lastModifiedDate":"2024-03-02"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" .sd { color: $sol-magenta } // Literal.String.Doc","lastModifiedDate":"2024-03-02"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" .s2 { color: $sol-magenta } // Literal.String.Double","lastModifiedDate":"2024-03-02"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" .se { color: $sol-magenta } // Literal.String.Escape","lastModifiedDate":"2024-03-02"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" .sh { color: $sol-magenta } // Literal.String.Heredoc","lastModifiedDate":"2024-03-02"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" .si { color: $sol-magenta } // Literal.String.Interpol","lastModifiedDate":"2024-03-02"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" .sx { color: $sol-magenta } // Literal.String.Other","lastModifiedDate":"2024-03-02"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" .sr { color: $sol-green } // Literal.String.Regex","lastModifiedDate":"2024-03-02"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" .s1 { color: $sol-magenta } // Literal.String.Single","lastModifiedDate":"2024-03-02"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" .ss { color: $sol-magenta } // Literal.String.Symbol","lastModifiedDate":"2024-03-02"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" .bp { color: $sol-mono1 } // Name.Builtin.Pseudo","lastModifiedDate":"2024-03-02"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" .vc { color: $sol-cyan } // Name.Variable.Class","lastModifiedDate":"2024-03-02"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" .vg { color: $sol-cyan } // Name.Variable.Global","lastModifiedDate":"2024-03-02"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" .vi { color: $sol-cyan } // Name.Variable.Instance","lastModifiedDate":"2024-03-02"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" .il { color: $sol-cyan } // Literal.Number.Integer.Long","lastModifiedDate":"2024-03-02"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":133}},{"path":"docs/assets/css/style.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"# Only the main Sass file needs front matter (the dashes are enough)","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"@import","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" \"minima/skins/{{ site.minima.skin | default: \u0027classic\u0027 }}\",","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" \"minima/initialize\";","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":".icon {","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" height: 21px;","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" width: 21px","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"jieqiboh":12}},{"path":"docs/diagrams/ArchitectureDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include \u003coffice/Concepts/globe_internet\u003e","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"!include \u003coffice/Concepts/documents\u003e","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"!include \u003coffice/Users/user\u003e","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package \" \"\u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":" Class UI UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" Class InternshipLogic LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" Class Storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" Class InternshipModel MODEL_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" Class Main #grey","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Class Commons LOGIC_COLOR_T2","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class \"\u003c$user\u003e\" as User MODEL_COLOR_T2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class \"\u003c$documents\u003e\" as File UI_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"UI -[#green]\u003e InternshipLogic","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"UI -right[#green]-\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogic -[#blue]-\u003e Storage","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogic -down[#blue]-\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Main -[#grey]-\u003e UI","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"Main -[#grey]-\u003e InternshipLogic","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Main -[#grey]-\u003e Storage","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"Main -up[#grey]-\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Main -down[hidden]-\u003e Commons","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"Storage -up[STORAGE_COLOR].\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Storage .right[STORAGE_COLOR].\u003eFile","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"User ..\u003e UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":24,"CaptainKeqing":9}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"Participant \":InternshipLogic\" as logic LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"Participant \":InternshipModel\" as model MODEL_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteInternship(p)","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveInternshipData(internshipData)","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":35,"CaptainKeqing":4}},{"path":"docs/diagrams/ComponentManagers.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2021-07-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2021-07-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2021-07-31"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2021-07-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2021-07-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Logic as LogicPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipLogic\" as Logic","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"Class InternshipLogicManager","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"package Model as ModelPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipModel\" as Model","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"Class InternshipModelManager","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2021-07-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Logic","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogicManager .up.|\u003e Logic","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"InternshipModelManager .up.|\u003e Model","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogicManager --\u003e Model","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"InternshipLogicManager --\u003e Storage","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"-":23,"CaptainKeqing":8}},{"path":"docs/diagrams/InternshipDeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"@startuml","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"!include style.puml","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"participant \":InternshipLogicManager\" as InternshipLogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"participant \":InternshipParser\" as InternshipParser LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"participant \":InternshipDeleteCommandParser\" as InternshipDeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"participant \"d:InternshipDeleteCommand\" as InternshipDeleteCommand LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"end box","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"end box","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"[-\u003e InternshipLogicManager : execute(\"delete 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"activate InternshipLogicManager","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"InternshipLogicManager -\u003e InternshipParser : parseCommand(\"delete 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"activate InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"create InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"InternshipParser -\u003e InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"activate InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommandParser --\u003e InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"deactivate InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"InternshipParser -\u003e InternshipDeleteCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"activate InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"create InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommandParser -\u003e InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"activate InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommand --\u003e InternshipDeleteCommandParser :","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"deactivate InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommandParser --\u003e InternshipParser : d","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"deactivate InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommandParser -[hidden]-\u003e InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"destroy InternshipDeleteCommandParser","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"InternshipParser --\u003e InternshipLogicManager : d","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"deactivate InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"InternshipLogicManager -\u003e InternshipDeleteCommand : execute(m)","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"activate InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommand -\u003e Model : deleteInternship(1)","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"activate Model","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"Model --\u003e InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":"deactivate Model","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"create CommandResult","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommand -\u003e CommandResult","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":"activate CommandResult","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"CommandResult --\u003e InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"InternshipDeleteCommand --\u003e InternshipLogicManager : r","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":"deactivate InternshipDeleteCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"[\u003c--InternshipLogicManager","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"deactivate InternshipLogicManager","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":"@enduml","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":70}},{"path":"docs/diagrams/InternshipLogicClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"package InternshipLogic as InternshipLogicPackage {","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"package \"Internship Parser Classes\" as InternshipParserClasses{","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"Class InternshipXYZCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"Class CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"Class \"{abstract}\\nInternshipCommand\" as InternshipCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipLogic\" as InternshipLogic","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"Class InternshipLogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"package InternshipModel {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"package Storage {","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"HiddenOutside ..\u003e InternshipLogic","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager .right.|\u003e InternshipLogic","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager -right-\u003e \" 1 \" InternshipParserClasses","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"InternshipParserClasses ..\u003e InternshipXYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":"InternshipXYZCommand -up-|\u003e InternshipCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager .left.\u003e InternshipCommand : \u003c\u003ccall\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager --\u003e InternshipModel","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager --\u003e Storage","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":"Storage --[hidden] InternshipModel","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"InternshipCommand .[hidden]up.\u003e Storage","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"InternshipCommand .right.\u003e InternshipModel","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"note right of InternshipXYZCommand: InternshipXYZCommand \u003d InternshipAddCommand, \\nInternshipFindCommand, etc","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogic ..\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":"InternshipLogicManager .down.\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":"InternshipCommand .up.\u003e CommandResult : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"HM33-Stu":47}},{"path":"docs/diagrams/InternshipParserClasses.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"@startuml","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"!include style.puml","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"skinparam arrowColor LOGIC_COLOR_T4","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"Class XYZCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"package \"InternshipParser classes\"{","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipParser\" as InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"Class InternshipDataInternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"Class XYZCommandInternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"Class CliSyntax","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"Class InternshipInternshipParserUtil","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"Class ArgumentMultimap","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"Class ArgumentTokenizer","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"Class Prefix","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"HiddenOutside ..\u003e InternshipDataInternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"InternshipDataInternshipParser .down.\u003e XYZCommandInternshipParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"InternshipDataInternshipParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser .up.|\u003e InternshipParser","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e ArgumentMultimap","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e ArgumentTokenizer","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"ArgumentTokenizer .left.\u003e ArgumentMultimap","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e CliSyntax","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"CliSyntax ..\u003e Prefix","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"XYZCommandInternshipParser ..\u003e InternshipInternshipParserUtil","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"InternshipInternshipParserUtil .down.\u003e Prefix","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"ArgumentTokenizer .down.\u003e Prefix","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"@enduml","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":38}},{"path":"docs/diagrams/InternshipStorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipUserPrefsStorage\" as InternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"Class JsonInternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"Class InternshipStorageManager","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"package \"InternshipData Storage\" #F4F6F6{","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipDataStorage\" as InternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"Class JsonInternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"Class JsonSerializableInternshipData","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"Class JsonAdaptedInternship","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"InternshipStorageManager .up.|\u003e Storage","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"InternshipStorageManager -up-\u003e \"1\" InternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"InternshipStorageManager -up-\u003e \"1\" InternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"Storage -left-|\u003e InternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"Storage -right-|\u003e InternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"JsonInternshipUserPrefsStorage .up.|\u003e InternshipUserPrefsStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"JsonInternshipDataStorage .up.|\u003e InternshipDataStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"JsonInternshipDataStorage ..\u003e JsonSerializableInternshipData","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"JsonSerializableInternshipData --\u003e \"*\" JsonAdaptedInternship","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jieqiboh":41}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyInternshipData\" as ReadOnlyInternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyInternshipUserPrefs\" as ReadOnlyInternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nInternshipModel\" as InternshipModel","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"Class InternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"Class InternshipModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"Class InternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"Class UniqueInternshipList","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"Class Internship","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"Class ApplicationStatus","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"Class CompanyName","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"Class ContactName","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"Class ContactNumber","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"Class ContactEmail","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"Class Description","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"Class Location","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"Class Role","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"HiddenOutside ..\u003e InternshipModel","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":"InternshipData .up.|\u003e ReadOnlyInternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":"InternshipModelManager .up.|\u003e InternshipModel","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":"InternshipModel .right.\u003e ReadOnlyInternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":"InternshipModel .left.\u003e ReadOnlyInternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":"InternshipModelManager -left-\u003e \"1\" InternshipData","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":"InternshipModelManager -right-\u003e \"1\" InternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":"InternshipUserPrefs .up.|\u003e ReadOnlyInternshipUserPrefs","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":"InternshipData *--\u003e \"1\" UniqueInternshipList","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":"InternshipModelManager --\u003e \"~* filtered\" Internship","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":"UniqueInternshipList --\u003e \"~* all\" Internship","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e ApplicationStatus","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e CompanyName","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e ContactName","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e ContactNumber","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e ContactEmail","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e Description","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e Location","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"Internship *--\u003e Role","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":"Internship -[hidden]up--\u003e I","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":"UniqueInternshipList -[hidden]right-\u003e I","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":"CompanyName -[hidden]right-\u003e ContactNumber","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":"ContactNumber -[hidden]right-\u003e Description","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":"Description -[hidden]right-\u003e Role","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"theman-oj10":42,"-":19}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"\u0027 Add Detailed View Internship Window here (comment)","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"Class InternshipListPanel","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"Class InternshipCard","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"package InternshipModel \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"package InternshipLogic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"MainWindow *-down-\u003e \"1\" InternshipListPanel","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"InternshipListPanel -down-\u003e \"*\" InternshipCard","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":"InternshipListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"InternshipCard --|\u003e UiPart","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"InternshipCard ..\u003e InternshipModel","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":"UiManager -right-\u003e InternshipLogic","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"MainWindow -left-\u003e InternshipLogic","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":"InternshipListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":48,"CaptainKeqing":13}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"title: AddressBook Level-3","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"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":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":2,"-":17}},{"path":"docs/team/captainkeqing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"title: CaptainKeqing\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"### Project: CareerSync","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"CaptainKeqing":8}},{"path":"docs/team/hm33-stu.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"layout: page","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"title: HM33-Stu\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"### Project: CareerSync","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"HM33-Stu":8}},{"path":"docs/team/jieqiboh.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":"jieqiboh"},"content":"title: Boh Jie Qi\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":1,"-":45}},{"path":"docs/team/lws49.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"title: LWS49\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"### Project: CareerSync","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"LWS49":8}},{"path":"docs/team/theman-oj10.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"title: Manoj\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"### Project: CareerSync","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"theman-oj10":8}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"![The relationship between RemarkCommand and Command](../images/add-remark/RemarkCommandClass.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":"![The relationship between Parser and RemarkCommandParser](../images/add-remark/RemarkCommandParserClass.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"jieqiboh"},"content":":information_source: Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2024-03-02"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":233,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":247,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":259,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"jieqiboh"},"content":":bulb: Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2024-03-02"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":283,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"jieqiboh"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-02"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":298,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":358,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":399,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"jieqiboh":12,"-":387}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Removing Fields\"","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":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-success\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.person.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" :bulb: **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2024-03-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":8,"-":104}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"layout: page","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: \"Tutorial: Tracing code\"","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":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"* Table of Contents","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"{:toc}","lastModifiedDate":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"![ArchitectureDiagram](../images/ArchitectureDiagram.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"\u003cimg src\u003d\"../images/ArchitectureSequenceDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":":bulb: **Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"\u003cimg src\u003d\"../images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":":bulb: **Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2024-03-02"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":":bulb: **Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2024-03-02"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return commandResult;","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":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","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":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2024-03-02"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":" \u003cimg src\u003d\"../images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" ![Tracing an `edit` command through the Logic component](../images/tracing/LogicSequenceDiagram.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of persons is being tracked.","lastModifiedDate":"2021-07-31"},{"lineNumber":208,"author":{"gitId":"jieqiboh"},"content":" \u003cimg src\u003d\"../images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":215,"author":{"gitId":"jieqiboh"},"content":" \u003cimg src\u003d\"../images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"jieqiboh"},"content":" \u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2024-03-02"},{"lineNumber":221,"author":{"gitId":"jieqiboh"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":225,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"jieqiboh"},"content":" \u003cimg src\u003d\"../images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" ``` java","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","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":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jieqiboh":25,"-":276}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipLogicManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.util.InternshipSampleDataUtil;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import seedu.address.storage.InternshipDataStorage;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.InternshipStorageManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.InternshipUserPrefsStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"import seedu.address.storage.JsonInternshipDataStorage;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.JsonInternshipUserPrefsStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" public static final Version VERSION \u003d new Version(1, 3, 1, false);","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" protected InternshipLogic logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" protected InternshipModel model;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing CareerSync ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" InternshipUserPrefsStorage userPrefsStorage \u003d new JsonInternshipUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" InternshipDataStorage internshipDataStorage \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" new JsonInternshipDataStorage(userPrefs.getInternshipDataFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" storage \u003d new InternshipStorageManager(internshipDataStorage, userPrefsStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" logic \u003d new InternshipLogicManager(model, storage);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" * Returns a {@code InternshipModelManager} with the data from {@code storage}\u0027s internship data and","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" * {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" * The data from the sample internship data will be used instead if {@code storage}\u0027s internship data is not found,","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" * or an empty internship data will be used instead if errors occur when reading {@code storage}\u0027s internship data.","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" private InternshipModel initModelManager(Storage storage, ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" logger.info(\"Using data file : \" + storage.getInternshipDataFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" Optional\u003cReadOnlyInternshipData\u003e internshipDataOptional;","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" ReadOnlyInternshipData initialData;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" internshipDataOptional \u003d storage.readInternshipData();","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" if (!internshipDataOptional.isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" logger.info(\"Creating a new data file \" + storage.getInternshipDataFilePath()","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" + \" populated with a sample InternshipData.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" initialData \u003d internshipDataOptional.orElseGet(InternshipSampleDataUtil::getSampleInternshipData);","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" logger.warning(\"Data file at \" + storage.getInternshipDataFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" + \" Will be starting with an empty InternshipData.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" initialData \u003d new InternshipData();","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" return new InternshipModelManager(initialData, userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" * Returns a {@code InternshipUserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" * or a new {@code InternshipUserPrefs} with default configuration if errors occur when","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" protected InternshipUserPrefs initPrefs(InternshipUserPrefsStorage storage) {","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs initializedPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" Optional\u003cInternshipUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" initializedPrefs \u003d prefsOptional.orElse(new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" initializedPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"LWS49"},"content":" logger.info(\"Starting InternshipData \" + MainApp.VERSION);","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping CareerSync ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jieqiboh":6,"LWS49":40,"theman-oj10":1,"-":138,"CaptainKeqing":3}},{"path":"src/main/java/seedu/address/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" private static final String LOG_FILE \u003d \"internshipdata.log\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LWS49":1,"-":105}},{"path":"src/main/java/seedu/address/logic/InternshipLogic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"public interface InternshipLogic {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the InternshipData.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.model.InternshipModel#getInternshipData()","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" ReadOnlyInternshipData getInternshipData();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" /** Returns an unmodifiable view of the filtered list of internships */","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" ObservableList\u003cInternship\u003e getFilteredInternshipList();","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the model\u0027s selected internship.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.model.InternshipModel#getSelectedInternship()","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" ObservableList\u003cInternship\u003e getSelectedInternship();","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the selected internship in the model.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.model.InternshipModel#setSelectedInternship(Internship)","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" void setSelectedInternship(Internship internship);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the user prefs\u0027 internship data file path.","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"-":40,"CaptainKeqing":24}},{"path":"src/main/java/seedu/address/logic/InternshipLogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.InternshipDataParser;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" * The main InternshipLogicManager of the app.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipLogicManager implements InternshipLogic {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" private final Logger logger \u003d LogsCenter.getLogger(InternshipLogicManager.class);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipModel model;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipDataParser internshipDataParser;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * Constructs a {@code InternshipLogicManager} with the","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * given {@code InternshipModel} and {@code Storage}.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipLogicManager(InternshipModel model, Storage storage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" internshipDataParser \u003d new InternshipDataParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" InternshipCommand command \u003d internshipDataParser.parseCommand(commandText);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveInternshipData(model.getInternshipData());","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" public ReadOnlyInternshipData getInternshipData() {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" return model.getInternshipData();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public ObservableList\u003cInternship\u003e getFilteredInternshipList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" return model.getFilteredInternshipList();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" public void setSelectedInternship(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" model.setSelectedInternship(internship);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" public ObservableList\u003cInternship\u003e getSelectedInternship() {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" return model.getSelectedInternship();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" return model.getInternshipDataFilePath();","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"-":67,"CaptainKeqing":32}},{"path":"src/main/java/seedu/address/logic/InternshipMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" * Container for user visible messages.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"public class InternshipMessages {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX \u003d \"Index has to be a positive number \"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" + \"(1,2,3...) and one of the displayed internship indexes.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"Task index has to be a positive number \"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" + \"(1,2,3...) and one of the displayed task indexes of the internship.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_INTERNSHIPS_LISTED_OVERVIEW \u003d \"%1$d internships listed!\";","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" * Formats the {@code internship} for display to the user.","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" public static String format(Internship internship) {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" builder.append(\"\\nCompany Name: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" .append(internship.getCompanyName())","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" .append(\"Location: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" .append(internship.getLocation())","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" .append(\"Description: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" .append(internship.getDescription())","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" .append(\"Role: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" .append(internship.getRole())","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" .append(\"Contact Name: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" .append(internship.getContactName())","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" .append(\"Contact Email: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" .append(internship.getContactEmail())","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" .append(\"Contact Number: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" .append(internship.getContactNumber())","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" .append(\"Application Status: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" .append(internship.getApplicationStatus())","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" .append(\"Remark: \")","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" .append(internship.getRemark())","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" .append(\"\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" .append(\"Tasks:\\n\")","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" .append(internship.getTaskList());","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" return builder.toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":4,"LWS49":70}},{"path":"src/main/java/seedu/address/logic/commands/InternshipAddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" * Adds an internship to internship data.","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommand extends InternshipCommand {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds an internship to internship data. \"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_COMPANY + \" COMPANY_NAME \"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_DESCRIPTION + \" DESCRIPTION \"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_STATUS + \" STATUS \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_NAME + \" CONTACT_NAME \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_EMAIL + \" CONTACT_EMAIL \"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_NUMBER + \" CONTACT_NUMBER \"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" + \"[\" + PREFIX_LOCATION + \" LOCATION] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" + \"[\" + PREFIX_ROLE + \" ROLE]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_COMPANY + \" Tiktok \"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_DESCRIPTION + \" create new recommendation engine \"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_STATUS + \" ongoing \"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_NAME + \" jane yeo \"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_EMAIL + \" hr@tiktok.com \"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_CONTACT_NUMBER + \" 9089030 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_LOCATION + \" remote \"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" + PREFIX_ROLE + \" Software Intern\";","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New internship added! %1$s\";","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_DUPLICATE_INTERNSHIP \u003d \"This internship already exists in the internship list\";","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" private final Internship toAdd;","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" * Creates an AddCommand to add the specified {@code Internship}.","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" public InternshipAddCommand(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" toAdd \u003d internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" if (model.hasInternship(toAdd)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" throw new CommandException(MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" model.addInternship(toAdd);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, InternshipMessages.format(toAdd)));","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" if (!(other instanceof InternshipAddCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand otherAddCommand \u003d (InternshipAddCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":91,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/commands/InternshipAddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" * Adds a task to an internship entry.","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"public class InternshipAddTaskCommand extends InternshipCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Add a task to the internship identified \"","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" + \"by the index number used in the displayed internship data.\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" + PREFIX_TASK + \" TASK\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" + PREFIX_TASK + \" edit resume\";","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_ADD_TASK_SUCCESS \u003d \"Task Added: %1$s\";","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_EMPTY_TASK \u003d \"Task cannot be blank!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" private final Index index;","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" private final Task task;","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" * @param index of the internship in the filtered internship list to edit","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" * @param task details to edit the internship with","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public InternshipAddTaskCommand(Index index, Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" if (index.getOneBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" Internship internshipToAddTask \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" Internship internshipWithTask \u003d createInternshipWithTask(internshipToAddTask, task);","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" model.setInternship(internshipToAddTask, internshipWithTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" return new CommandResult(String.format(MESSAGE_ADD_TASK_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" this.task));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof InternshipAddTaskCommand)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand otherEditCommand \u003d (InternshipAddTaskCommand) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 task.equals(otherEditCommand.task);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" .add(\"task\", task)","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" * Creates and returns a {@code Internship} with the details of {@code internshipToAddTask}","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" * edited with {@code internshipWithTaskDescriptor}.","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" private static Internship createInternshipWithTask(Internship internshipToAddTask, Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" assert internshipToAddTask !\u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" TaskList newTaskList \u003d internshipToAddTask.getTaskList().copy();","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" newTaskList.addTask(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" return new Internship(internshipToAddTask.getCompanyName(), internshipToAddTask.getContactName(),","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" internshipToAddTask.getContactEmail(), internshipToAddTask.getContactNumber(),","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" internshipToAddTask.getLocation(), internshipToAddTask.getApplicationStatus(),","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" internshipToAddTask.getDescription(), internshipToAddTask.getRole(),","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" internshipToAddTask.getRemark(),","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" newTaskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":111}},{"path":"src/main/java/seedu/address/logic/commands/InternshipClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" * Clears all internship data.","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipClearCommand extends InternshipCommand {","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Internship data has been cleared!\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" model.setInternshipData(new InternshipData());","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"CaptainKeqing":24}},{"path":"src/main/java/seedu/address/logic/commands/InternshipCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"public abstract class InternshipCommand {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" * @param model {@code InternshipModel} which the command should operate on.","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" public abstract CommandResult execute(InternshipModel model) throws CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":4,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/InternshipComparators.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import java.util.Map;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ApplicationStatus.StatusEnum;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":" * Contains utility methods for sorting internships.","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"public class InternshipComparators {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":" private static final Map\u003cStatusEnum, Integer\u003e statusOrder \u003d Map.of(","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.TO_APPLY, 0,","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.ONGOING, 1,","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.PENDING, 2,","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.ACCEPTED, 3,","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" StatusEnum.REJECTED, 4","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the application status.","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the application status.","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byApplicationStatus(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" statusOrder.getOrDefault(internship.getApplicationStatus().getStatus(), Integer.MAX_VALUE));","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the company name.","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the company name.","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byCompanyName(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getCompanyName().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the description.","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the description.","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byDescription(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getDescription().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the role.","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the role.","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byRole(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getRole().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the contact name.","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the contact name.","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byContactName(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getContactName().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the contact email.","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the contact email.","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byContactEmail(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getContactEmail().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the contact number.","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the contact number.","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byPhone(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getContactNumber().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the remark.","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the remark.","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byRemark(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getRemark().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" * Returns a comparator that compares two internships based on the location.","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" * @param isAscending Whether to sort in ascending order.","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" * @return A comparator that compares two internships based on the location.","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e byLocation(boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d Comparator.comparing(internship -\u003e internship.getLocation().toString(),","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" String.CASE_INSENSITIVE_ORDER);","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" if (!isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d comparator.reversed();","lastModifiedDate":"2024-03-26"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" return comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"theman-oj10":145}},{"path":"src/main/java/seedu/address/logic/commands/InternshipDeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" * Deletes the internship identified by the index number used in the displayed internship list","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipDeleteCommand extends InternshipCommand {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" + \": Deletes the internship identified by the index number used in the displayed internship list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_DELETE_INTERNSHIP_SUCCESS \u003d \"Deleted Internship: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" public InternshipDeleteCommand(Index targetIndex) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" Internship internshipToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" model.deleteInternship(internshipToDelete);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.format(internshipToDelete)));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" if (!(other instanceof InternshipDeleteCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand otherDeleteCommand \u003d (InternshipDeleteCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":70}},{"path":"src/main/java/seedu/address/logic/commands/InternshipDeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * Deletes an existing task from an existing Internship","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"public class InternshipDeleteTaskCommand extends InternshipCommand {","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Delete a task from the internship identified \"","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" + \"by the index number used in the displayed internship data.\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" + \"Parameters: INDEX (must be a positive integer) \" + PREFIX_SELECT_TASK + \" TASK_INDEX\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \" + PREFIX_SELECT_TASK + \" 1\";","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_DELETE_TASK_SUCCESS \u003d \"Task Deleted: %1$s\";","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" private final Index internshipIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * @param internshipIndex index of the internship in the filtered internship list to edit","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * @param taskIndex index of the task in the selected internship to edit","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" public InternshipDeleteTaskCommand(Index internshipIndex, Index taskIndex) {","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(internshipIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" this.internshipIndex \u003d internshipIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" if (internshipIndex.getOneBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" Internship internshipToDeleteTask \u003d lastShownList.get(internshipIndex.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" if (taskIndex.getOneBased() \u003e internshipToDeleteTask.getTaskList().getTaskListSize()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" Task taskToDelete \u003d internshipToDeleteTask.getTaskList().getTask(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" internshipToDeleteTask.getTaskList().deleteTask(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" // This is necessary to trigger the UI to update","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" model.setInternship(internshipToDeleteTask, internshipToDeleteTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASK_SUCCESS, taskToDelete));","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-30"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-30"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof InternshipDeleteTaskCommand)) {","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand otherDeleteCommand \u003d (InternshipDeleteTaskCommand) other;","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" return internshipIndex.equals(otherDeleteCommand.internshipIndex)","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 taskIndex.equals(otherDeleteCommand.taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-30"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" .add(\"internshipIndex\", internshipIndex)","lastModifiedDate":"2024-03-30"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" .add(\"taskIndex\", taskIndex)","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" .toString();","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"jieqiboh":93,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/commands/InternshipEditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" * Edits the details of an existing internship in the internship data.","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"public class InternshipEditCommand extends InternshipCommand {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the internship identified \"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" + \"by the index number used in the displayed internship data. \"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" + \"At least one field to edit must be provided. \"","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" + \"Parameters: INDEX (must be a positive integer) \\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_COMPANY + \" COMPANY_NAME]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_CONTACT_NAME + \" CONTACT_NAME]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_CONTACT_EMAIL + \" CONTACT_EMAIL]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_CONTACT_NUMBER + \" CONTACT_NUMBER]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_LOCATION + \" LOCATION]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_STATUS + \" STATUS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_DESCRIPTION + \" DESCRIPTION]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_ROLE + \" ROLE]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" + \"[\" + PREFIX_REMARK + \" REMARK]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" + PREFIX_CONTACT_EMAIL + \" john@example.com \"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" + PREFIX_CONTACT_NUMBER + \" 96661666\";","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_EDIT_INTERNSHIP_SUCCESS \u003d \"Internship edited! New edited internship: %1$s\";","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_DUPLICATE_INTERNSHIP \u003d \"This entry already exists in the internship data.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" private final Index index;","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" private final EditInternshipDescriptor editInternshipDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" * @param index of the internship in the filtered internship list to edit","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" * @param editInternshipDescriptor details to edit the internship with","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" public InternshipEditCommand(Index index, EditInternshipDescriptor editInternshipDescriptor) {","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" requireNonNull(editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" this.editInternshipDescriptor \u003d new EditInternshipDescriptor(editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" // This is the internship being displayed by the UI.","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" Internship currentSelectedInternship \u003d model.getSelectedInternship().get(0);","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" Internship internshipToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" boolean isCurrentSelectedInternshipBeingEdited \u003d currentSelectedInternship.equals(internshipToEdit);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d createEditedInternship(internshipToEdit, editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" if (!internshipToEdit.isSameInternship(editedInternship) \u0026\u0026 model.hasInternship(editedInternship)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" throw new CommandException(MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" model.setInternship(internshipToEdit, editedInternship);","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" if (isCurrentSelectedInternshipBeingEdited) {","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" // This maintains the selected internship across the edit.","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" model.setSelectedInternship(editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship)));","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" * Creates and returns a {@code Internship} with the details of {@code internshipToEdit}","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" * edited with {@code editInternshipDescriptor}.","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" private static Internship createEditedInternship(Internship internshipToEdit,","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor editInternshipDescriptor) {","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" assert internshipToEdit !\u003d null;","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" CompanyName updatedCompanyName \u003d editInternshipDescriptor.getCompanyName()","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getCompanyName());","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" Location updatedLocation \u003d editInternshipDescriptor.getLocation()","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getLocation());","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" Description updatedDescription \u003d editInternshipDescriptor.getDescription()","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getDescription());","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" Role updatedRole \u003d editInternshipDescriptor.getRole().orElse(internshipToEdit","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" .getRole());","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" ContactName updatedContactName \u003d editInternshipDescriptor.getContactName()","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getContactName());","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" ContactEmail updatedContactEmail \u003d editInternshipDescriptor.getContactEmail()","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getContactEmail());","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" ContactNumber updatedContactNumber \u003d editInternshipDescriptor.getContactNumber()","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getContactNumber());","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" ApplicationStatus updatedApplicationStatus \u003d editInternshipDescriptor.getApplicationStatus()","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" .orElse(internshipToEdit.getApplicationStatus());","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" Remark updatedRemark \u003d editInternshipDescriptor.getRemark().orElse(internshipToEdit.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" // edit command cannot be used to edit task list","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d editInternshipDescriptor.getTaskList().orElse(internshipToEdit.getTaskList());","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" return new Internship(updatedCompanyName, updatedContactName, updatedContactEmail, updatedContactNumber,","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" updatedLocation, updatedApplicationStatus, updatedDescription, updatedRole, updatedRemark, taskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof InternshipEditCommand)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand otherEditCommand \u003d (InternshipEditCommand) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 editInternshipDescriptor.equals(otherEditCommand.editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":" .add(\"editInternshipDescriptor\", editInternshipDescriptor)","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" .toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":170,"author":{"gitId":"LWS49"},"content":" * Stores the details to edit the internship with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"LWS49"},"content":" * corresponding field value of the internship.","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":" public static class EditInternshipDescriptor {","lastModifiedDate":"2024-03-14"},{"lineNumber":174,"author":{"gitId":"LWS49"},"content":" private CompanyName companyName;","lastModifiedDate":"2024-03-14"},{"lineNumber":175,"author":{"gitId":"LWS49"},"content":" private Location location;","lastModifiedDate":"2024-03-14"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":" private Description description;","lastModifiedDate":"2024-03-14"},{"lineNumber":177,"author":{"gitId":"LWS49"},"content":" private Role role;","lastModifiedDate":"2024-03-14"},{"lineNumber":178,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":179,"author":{"gitId":"LWS49"},"content":" private ContactName contactName;","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"LWS49"},"content":" private ContactEmail contactEmail;","lastModifiedDate":"2024-03-14"},{"lineNumber":181,"author":{"gitId":"LWS49"},"content":" private ContactNumber contactNumber;","lastModifiedDate":"2024-03-14"},{"lineNumber":182,"author":{"gitId":"LWS49"},"content":" private ApplicationStatus applicationStatus;","lastModifiedDate":"2024-03-14"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" private TaskList taskList;","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-14"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptor(EditInternshipDescriptor toCopy) {","lastModifiedDate":"2024-03-14"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" setCompanyName(toCopy.companyName);","lastModifiedDate":"2024-03-14"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":" setLocation(toCopy.location);","lastModifiedDate":"2024-03-14"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":" setDescription(toCopy.description);","lastModifiedDate":"2024-03-14"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":" setRole(toCopy.role);","lastModifiedDate":"2024-03-14"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":" setContactName(toCopy.contactName);","lastModifiedDate":"2024-03-14"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":" setContactEmail(toCopy.contactEmail);","lastModifiedDate":"2024-03-14"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" setContactNumber(toCopy.contactNumber);","lastModifiedDate":"2024-03-14"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":" setApplicationStatus(toCopy.applicationStatus);","lastModifiedDate":"2024-03-14"},{"lineNumber":198,"author":{"gitId":"jieqiboh"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":" setTaskList(toCopy.taskList);","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptor() {}","lastModifiedDate":"2024-03-14"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-14"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-14"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":" return CollectionUtil.isAnyNonNull(companyName, location, description, role, contactName,","lastModifiedDate":"2024-03-14"},{"lineNumber":209,"author":{"gitId":"jieqiboh"},"content":" contactEmail, contactNumber, applicationStatus, remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":" public void setCompanyName(CompanyName companyName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":212,"author":{"gitId":"LWS49"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-03-14"},{"lineNumber":213,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":214,"author":{"gitId":"LWS49"},"content":" public Optional\u003cCompanyName\u003e getCompanyName() {","lastModifiedDate":"2024-03-14"},{"lineNumber":215,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(companyName);","lastModifiedDate":"2024-03-14"},{"lineNumber":216,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":217,"author":{"gitId":"LWS49"},"content":" public void setLocation(Location location) {","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"LWS49"},"content":" this.location \u003d location;","lastModifiedDate":"2024-03-15"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":" public Optional\u003cLocation\u003e getLocation() {","lastModifiedDate":"2024-03-15"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(location);","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":223,"author":{"gitId":"LWS49"},"content":" public void setDescription(Description description) {","lastModifiedDate":"2024-03-15"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-15"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":" public Optional\u003cDescription\u003e getDescription() {","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(description);","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":" public void setRole(Role role) {","lastModifiedDate":"2024-03-15"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":" public Optional\u003cRole\u003e getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":" public void setContactName(ContactName contactName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":" public Optional\u003cContactName\u003e getContactName() {","lastModifiedDate":"2024-03-15"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(contactName);","lastModifiedDate":"2024-03-15"},{"lineNumber":240,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":241,"author":{"gitId":"LWS49"},"content":" public void setContactEmail(ContactEmail contactEmail) {","lastModifiedDate":"2024-03-15"},{"lineNumber":242,"author":{"gitId":"LWS49"},"content":" this.contactEmail \u003d contactEmail;","lastModifiedDate":"2024-03-15"},{"lineNumber":243,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":244,"author":{"gitId":"LWS49"},"content":" public Optional\u003cContactEmail\u003e getContactEmail() {","lastModifiedDate":"2024-03-15"},{"lineNumber":245,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(contactEmail);","lastModifiedDate":"2024-03-15"},{"lineNumber":246,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":247,"author":{"gitId":"LWS49"},"content":" public void setContactNumber(ContactNumber contactNumber) {","lastModifiedDate":"2024-03-15"},{"lineNumber":248,"author":{"gitId":"LWS49"},"content":" this.contactNumber \u003d contactNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":249,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":250,"author":{"gitId":"LWS49"},"content":" public Optional\u003cContactNumber\u003e getContactNumber() {","lastModifiedDate":"2024-03-15"},{"lineNumber":251,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(contactNumber);","lastModifiedDate":"2024-03-15"},{"lineNumber":252,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":253,"author":{"gitId":"LWS49"},"content":" public void setApplicationStatus(ApplicationStatus applicationStatus) {","lastModifiedDate":"2024-03-15"},{"lineNumber":254,"author":{"gitId":"LWS49"},"content":" this.applicationStatus \u003d applicationStatus;","lastModifiedDate":"2024-03-15"},{"lineNumber":255,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":256,"author":{"gitId":"LWS49"},"content":" public Optional\u003cApplicationStatus\u003e getApplicationStatus() {","lastModifiedDate":"2024-03-15"},{"lineNumber":257,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(applicationStatus);","lastModifiedDate":"2024-03-15"},{"lineNumber":258,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":259,"author":{"gitId":"jieqiboh"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"jieqiboh"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":265,"author":{"gitId":"LWS49"},"content":" public void setTaskList(TaskList taskList) {","lastModifiedDate":"2024-04-02"},{"lineNumber":266,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-04-02"},{"lineNumber":267,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":268,"author":{"gitId":"LWS49"},"content":" public Optional\u003cTaskList\u003e getTaskList() {","lastModifiedDate":"2024-04-02"},{"lineNumber":269,"author":{"gitId":"LWS49"},"content":" return Optional.ofNullable(taskList);","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":271,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":272,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":273,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":274,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":275,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":276,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":277,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":278,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":279,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof EditInternshipDescriptor)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":280,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":281,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":282,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":283,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor otherEditInternshipDescriptor \u003d (EditInternshipDescriptor) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":284,"author":{"gitId":"LWS49"},"content":" return Objects.equals(companyName, otherEditInternshipDescriptor.companyName)","lastModifiedDate":"2024-03-14"},{"lineNumber":285,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(location, otherEditInternshipDescriptor.location)","lastModifiedDate":"2024-03-14"},{"lineNumber":286,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(description, otherEditInternshipDescriptor.description)","lastModifiedDate":"2024-03-14"},{"lineNumber":287,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(role, otherEditInternshipDescriptor.role)","lastModifiedDate":"2024-03-14"},{"lineNumber":288,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(contactName, otherEditInternshipDescriptor.contactName)","lastModifiedDate":"2024-03-14"},{"lineNumber":289,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(contactEmail, otherEditInternshipDescriptor.contactEmail)","lastModifiedDate":"2024-03-14"},{"lineNumber":290,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 Objects.equals(contactNumber, otherEditInternshipDescriptor.contactNumber)","lastModifiedDate":"2024-03-14"},{"lineNumber":291,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 Objects.equals(applicationStatus, otherEditInternshipDescriptor.applicationStatus)","lastModifiedDate":"2024-03-19"},{"lineNumber":292,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 Objects.equals(remark, otherEditInternshipDescriptor.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":293,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":294,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":295,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":296,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":297,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-14"},{"lineNumber":298,"author":{"gitId":"LWS49"},"content":" .add(\"Company Name\", companyName)","lastModifiedDate":"2024-03-14"},{"lineNumber":299,"author":{"gitId":"LWS49"},"content":" .add(\"Location\", location)","lastModifiedDate":"2024-03-14"},{"lineNumber":300,"author":{"gitId":"LWS49"},"content":" .add(\"Description\", description)","lastModifiedDate":"2024-03-14"},{"lineNumber":301,"author":{"gitId":"LWS49"},"content":" .add(\"Role\", role)","lastModifiedDate":"2024-03-14"},{"lineNumber":302,"author":{"gitId":"LWS49"},"content":" .add(\"Contact Name\", contactName)","lastModifiedDate":"2024-03-14"},{"lineNumber":303,"author":{"gitId":"LWS49"},"content":" .add(\"Contact Email\", contactEmail)","lastModifiedDate":"2024-03-14"},{"lineNumber":304,"author":{"gitId":"LWS49"},"content":" .add(\"Contact Number\", contactNumber)","lastModifiedDate":"2024-03-14"},{"lineNumber":305,"author":{"gitId":"LWS49"},"content":" .add(\"Application Status\", applicationStatus)","lastModifiedDate":"2024-03-14"},{"lineNumber":306,"author":{"gitId":"jieqiboh"},"content":" .add(\"Remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":307,"author":{"gitId":"LWS49"},"content":" .add(\"Task List\", taskList)","lastModifiedDate":"2024-04-02"},{"lineNumber":308,"author":{"gitId":"LWS49"},"content":" .toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":309,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":310,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":311,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":25,"LWS49":275,"CaptainKeqing":11}},{"path":"src/main/java/seedu/address/logic/commands/InternshipExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipExitCommand extends InternshipCommand {","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting CareerSync as requested ...\";","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"-":14,"CaptainKeqing":4}},{"path":"src/main/java/seedu/address/logic/commands/InternshipFindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-04-03"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-04-03"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-04-03"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-04-03"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-03"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.InternshipFindCommandParser;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.InternshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * Finds and lists all internships in internship data whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipFindCommand extends InternshipCommand {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MODE_WITHALL \u003d \"withall\";","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MODE_WITHANY \u003d \"withany\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all internships whose fields match the keywords \"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" + \"and displays them as a list with index numbers. \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" + \"Parameters:\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" + \"MODE: \u0027withall\u0027 or \u0027withany\u0027. To specify if the search has to match every \"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" + \"prefix-keywords predicate or any prefix-keywords predicate.\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" + \"KEYWORDS: One or more keywords separated by whitespace that will be matched against \"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" + \"the preceding prefix. With more than one keyword, internships with fields matching any of the keywords\"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" + \" will be accepted for the predicate, regardless of mode.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_COMPANY + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_CONTACT_NAME + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_LOCATION + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_STATUS + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_DESCRIPTION + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_ROLE + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" + \"[\" + PREFIX_REMARK + \" KEYWORDS]\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" + \"Example: \" + COMMAND_WORD + \" withany \"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" + PREFIX_COMPANY + \" Tiktok Google \" + PREFIX_STATUS + \" accepted\";","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" public static final String NO_SEARCH_KEY_SPECIFIED \u003d \"At least one supported field prefix and keyword \"","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" + \"must be specified to be searched.\\nSupported prefixes are \"","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" + Prefix.getPrefixesAsString(\", \", InternshipFindCommandParser.getSupportedPrefixes());","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" public static final String UNSUPPORTED_PREFIX_SPECIFIED \u003d \"Unsupported field prefix specified: %s\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" + \"Please specify only supported prefixes.\\nSupported prefixes are \"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" + Prefix.getPrefixesAsString(\", \", InternshipFindCommandParser.getSupportedPrefixes());","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" public static final String INVALID_MODE_SPECIFIED \u003d \"Invalid mode specified. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" + \"Please specify either \u0027withall\u0027 or \u0027withany\u0027.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" public static final String NO_KEYWORD_SPECIFIED \u003d \"At least one keyword must be specified for each field prefix.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipFindCommand(InternshipContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" model.updateFilteredInternshipList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipMessages.MESSAGE_INTERNSHIPS_LISTED_OVERVIEW,","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" model.getFilteredInternshipList().size()));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" if (!(other instanceof InternshipFindCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand otherFindCommand \u003d (InternshipFindCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"CaptainKeqing":91}},{"path":"src/main/java/seedu/address/logic/commands/InternshipHelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipHelpCommand extends InternshipCommand {","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"-":18,"CaptainKeqing":3}},{"path":"src/main/java/seedu/address/logic/commands/InternshipListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" * Lists all internships in the internship list to the user.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipListCommand extends InternshipCommand {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all internships\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"CaptainKeqing":24}},{"path":"src/main/java/seedu/address/logic/commands/InternshipRemarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * Changes the remark of an existing internship in the internship.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"public class InternshipRemarkCommand extends InternshipCommand {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public static final String COMMAND_WORD \u003d \"addremark\";","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the remark of the internship identified \"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" + \"by the index number used in the last internship listing. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" + PREFIX_REMARK + \" [REMARK]\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" + PREFIX_REMARK + \" Has a behavioural interview.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Internship: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Internship: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private final Index index;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * @param index of the internship in the filtered internship list to edit the remark","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" * @param remark of the internship to be updated to","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public InternshipRemarkCommand(Index index, Remark remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" Internship internshipToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" Internship editedInternship \u003d new Internship(","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" internshipToEdit.getCompanyName(), internshipToEdit.getContactName(),","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" internshipToEdit.getContactEmail(), internshipToEdit.getContactNumber(),","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" internshipToEdit.getLocation(), internshipToEdit.getApplicationStatus(),","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" internshipToEdit.getDescription(), internshipToEdit.getRole(),","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" remark, internshipToEdit.getTaskList());","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" model.setInternship(internshipToEdit, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" return new CommandResult(generateSuccessMessage(editedInternship));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" * {@code internshipToEdit}.","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" private String generateSuccessMessage(Internship internshipToEdit) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" return String.format(message, internshipToEdit);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof InternshipRemarkCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" // state check","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand e \u003d (InternshipRemarkCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jieqiboh":96,"LWS49":1}},{"path":"src/main/java/seedu/address/logic/commands/InternshipSetDeadlineCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.InternshipModel.PREDICATE_SHOW_ALL_INTERNSHIPS;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" * Adds a deadline to a task in an internship, or replaces the deadline if there already is one.","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"public class InternshipSetDeadlineCommand extends InternshipCommand {","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" public static final String COMMAND_WORD \u003d \"setdeadline\";","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Add a deadline to the task of the internship \"","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" + \"identified by the index number used in the displayed internship data. \"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" + \"Parameters: INDEX_INTERNSHIP (must be a positive integer)\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" + PREFIX_SELECT_TASK + \" INDEX_TASK (must be a positive integer)\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" + PREFIX_DEADLINE + \" DEADLINE\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" + Deadline.MESSAGE_CONSTRAINTS + \"\\n\"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \" + PREFIX_SELECT_TASK + \" 1 \"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" + PREFIX_DEADLINE + \" 20/04/2024\";","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_ADD_DEADLINE_SUCCESS \u003d \"Deadline Added: %1$s\";","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" private final Index internshipIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" private final Deadline deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" * @param internshipIndex index of the internship in the filtered internship list to edit","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" * @param taskIndex index of the task in the selected internship to edit","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" * @param deadline deadline of the task to be added","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" public InternshipSetDeadlineCommand(Index internshipIndex, Index taskIndex, Deadline deadline) {","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" requireNonNull(internshipIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" requireNonNull(taskIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" this.internshipIndex \u003d internshipIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" public CommandResult execute(InternshipModel model) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" List\u003cInternship\u003e lastShownList \u003d model.getFilteredInternshipList();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" if (internshipIndex.getOneBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" Internship internshipToSetDeadline \u003d lastShownList.get(internshipIndex.getZeroBased());","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" if (taskIndex.getOneBased() \u003e internshipToSetDeadline.getTaskList().getTaskListSize()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" throw new CommandException(InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" internshipToSetDeadline.getTaskList().getTask(taskIndex.getZeroBased()).setDeadline(deadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" // This is necessary to trigger the UI to update the displayed deadline","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" model.setInternship(internshipToSetDeadline, internshipToSetDeadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" model.updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" return new CommandResult(String.format(MESSAGE_ADD_DEADLINE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" deadline));","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof InternshipSetDeadlineCommand)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand otherSetDeadlineCommand \u003d (InternshipSetDeadlineCommand) other;","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" return internshipIndex.equals(otherSetDeadlineCommand.internshipIndex)","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 taskIndex.equals(otherSetDeadlineCommand.taskIndex)","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 deadline.equals(otherSetDeadlineCommand.deadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" .add(\"internshipIndex\", internshipIndex)","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" .add(\"taskIndex\", taskIndex)","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" .add(\"deadline\", deadline)","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":102,"CaptainKeqing":2}},{"path":"src/main/java/seedu/address/logic/commands/InternshipSortCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.InternshipSortCommandParser;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" * Sorts all internships in the Internship Data based on specified field and displays them as a list with index numbers.","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSortCommand extends InternshipCommand {","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" public static final String COMMAND_WORD \u003d \"sort\";","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" public static final String ORDER_ASCENDING \u003d \"asc\";","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" public static final String ORDER_DESCENDING \u003d \"desc\";","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Sorts all internships based on specified field\"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" + \" (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" + \"Parameters: FIELD ORDER \\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" + \"FIELD: One of the following field \\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_COMPANY + \": Company Name\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NAME + \": Contact Name\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NUMBER + \": Contact Number\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_EMAIL + \": Contact Email\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_LOCATION + \": Location\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_STATUS + \": Status\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_DESCRIPTION + \": Description\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_ROLE + \": Role\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_REMARK + \": Remark\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" + \"ORDER: \" + ORDER_ASCENDING + \" or \" + ORDER_DESCENDING + \", to specify ascending or descending order\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" + \"Example: \" + COMMAND_WORD + \" /com \" + ORDER_ASCENDING + \"\\n\";","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_INVALID_FIELD \u003d \"Invalid field specified. Please specify one of the following:\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_COMPANY + \": Company Name\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NAME + \": Contact Name\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NUMBER + \": Contact Number\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_EMAIL + \": Contact Email\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_LOCATION + \": Location\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_STATUS + \": Status\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_DESCRIPTION + \": Description\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_ROLE + \": Role\\n\"","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_REMARK + \": Remark\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" + \"Example: \" + COMMAND_WORD + \" /com \" + ORDER_ASCENDING + \"\\n\";","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_INVALID_ORDER \u003d \"Invalid order specified. Please specify either \"","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" + ORDER_ASCENDING + \" to sort in ascending order or \" + ORDER_DESCENDING","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" + \" to sort in descending order.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" + \"Example: \" + COMMAND_WORD + \" /com \" + ORDER_ASCENDING + \"\\n\";","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_NO_FIELD \u003d \"Please specify one of the following fields to sort by: \"","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_COMPANY + \": Company Name\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NAME + \": Contact Name\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_NUMBER + \": Contact Number\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_EMAIL + \": Contact Email\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_LOCATION + \": Location\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_STATUS + \": Status\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_DESCRIPTION + \": Description\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_ROLE + \": Role\\n\"","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_REMARK + \": Remark\\n\";;","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_NO_ORDER \u003d \"Please specify the order to sort by: \"","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" + ORDER_ASCENDING + \" to sort in ascending order or \" + ORDER_DESCENDING + \" to sort in descending order.\";","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" public static final String MESSAGE_EXTRA_ARGUMENTS \u003d \"Extra arguments detected. Please only specify one \"","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" + \"field and one order.\\n\"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" + \"Example: \" + COMMAND_WORD + \" /com \" + ORDER_ASCENDING + \"\\n\";","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" private final InternshipSortCommandParser.FieldEnum field;","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" private final InternshipSortCommandParser.OrderEnum order;","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" * Creates an InternshipSortCommand to sort internships based on the specified field and order.","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public InternshipSortCommand(InternshipSortCommandParser.FieldEnum field,","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum order) {","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(field);","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" this.field \u003d field;","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" this.order \u003d order;","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" public CommandResult execute(InternshipModel model) {","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" if (order \u003d\u003d InternshipSortCommandParser.OrderEnum.DESCENDING) {","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d InternshipSortCommandParser.getComparator(field, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" } else {","lastModifiedDate":"2024-03-27"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" comparator \u003d InternshipSortCommandParser.getComparator(field, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" String.format(InternshipMessages.MESSAGE_INTERNSHIPS_LISTED_OVERVIEW,","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" model.getFilteredInternshipList().size()));","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof InternshipSortCommand)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand otherCommand \u003d (InternshipSortCommand) other;","lastModifiedDate":"2024-03-27"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" return this.field.equals(otherCommand.getField()) \u0026\u0026 this.order.equals(otherCommand.getOrder());","lastModifiedDate":"2024-03-27"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" .add(\"field\", field)","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" .add(\"order\", order)","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" public InternshipSortCommandParser.FieldEnum getField() {","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" return field;","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" public InternshipSortCommandParser.OrderEnum getOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" return order;","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"theman-oj10":137}},{"path":"src/main/java/seedu/address/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands.exceptions;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an error which occurs during execution of a {@link seedu.address.logic.commands.InternshipCommand}.","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"-":16,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" throw new ParseException(InternshipMessages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-04-03"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-03"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public void verifyNoExtraArguments(int validArgs) throws IllegalArgumentException {","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" int count \u003d 0;","lastModifiedDate":"2024-04-03"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" for (List\u003cString\u003e values : argMultimap.values()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" count +\u003d values.size();","lastModifiedDate":"2024-04-03"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" if (count \u003e validArgs) {","lastModifiedDate":"2024-04-03"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" throw new IllegalArgumentException(\"Extra arguments provided. Only \"","lastModifiedDate":"2024-04-03"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" + validArgs + \" arguments are allowed.\");","lastModifiedDate":"2024-04-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"LWS49":2,"theman-oj10":13,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" /* Prefix Definitions */","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_COMPANY \u003d new Prefix(\"/com\");","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_CONTACT_NAME \u003d new Prefix(\"/poc\");","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_CONTACT_EMAIL \u003d new Prefix(\"/email\");","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_CONTACT_NUMBER \u003d new Prefix(\"/phone\");","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_LOCATION \u003d new Prefix(\"/loc\");","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_STATUS \u003d new Prefix(\"/status\");","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_DESCRIPTION \u003d new Prefix(\"/desc\");","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"/role\");","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"/remark\");","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" public static final Prefix PREFIX_TASK \u003d new Prefix(\"/task\");","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" public static final Prefix PREFIX_SELECT_TASK \u003d new Prefix(\"/selecttask\");","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" public static final Prefix PREFIX_DEADLINE \u003d new Prefix(\"/deadline\");","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jieqiboh":1,"HM33-Stu":8,"LWS49":4,"-":7}},{"path":"src/main/java/seedu/address/logic/parser/InternshipAddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" * Parses input arguments and creates a new InternshipAddCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommandParser implements InternshipParser\u003cInternshipAddCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipAddCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" * and returns an InternshipAddCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" public InternshipAddCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_COMPANY, PREFIX_DESCRIPTION, PREFIX_STATUS, PREFIX_CONTACT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_ROLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_COMPANY, PREFIX_DESCRIPTION, PREFIX_STATUS, PREFIX_CONTACT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipAddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_COMPANY, PREFIX_DESCRIPTION, PREFIX_STATUS, PREFIX_CONTACT_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_ROLE);","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" CompanyName com \u003d InternshipParserUtil.parseCompanyName(argMultimap.getValue(PREFIX_COMPANY).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" ContactName poc \u003d InternshipParserUtil.parseContactName(argMultimap.getValue(PREFIX_CONTACT_NAME).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" ContactEmail email \u003d InternshipParserUtil.parseContactEmail(argMultimap.getValue(PREFIX_CONTACT_EMAIL).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" ContactNumber phone \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" InternshipParserUtil.parseContactNumber(argMultimap.getValue(PREFIX_CONTACT_NUMBER).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" Location loc \u003d InternshipParserUtil.parseOptionalLocation(argMultimap.getValue(PREFIX_LOCATION));","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" ApplicationStatus status \u003d InternshipParserUtil.parseStatus(argMultimap.getValue(PREFIX_STATUS).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":" Description desc \u003d InternshipParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" Role role \u003d InternshipParserUtil.parseOptionalRole(argMultimap.getValue(PREFIX_ROLE));","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" Remark remark \u003d new Remark(\"\"); // Add Command does not allow adding remarks immediately","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" TaskList taskList \u003d new TaskList(); // Add Command does not allow adding tasks immediately (for now)","lastModifiedDate":"2024-04-03"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" Internship internship \u003d new Internship(com, poc, email, phone, loc, status, desc, role, remark, taskList);","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" return new InternshipAddCommand(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"jieqiboh":11,"HM33-Stu":55,"LWS49":1,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/parser/InternshipAddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipAddTaskCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" * Parses input arguments and creates a new InternshipAddTaskCommand object","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"public class InternshipAddTaskCommandParser implements InternshipParser\u003cInternshipAddTaskCommand\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipAddTaskCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" * and returns an InternshipAddTaskCommand object for execution.","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" public InternshipAddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" Index index;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" Task task;","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getPreamble().isEmpty() || argMultimap.getValue(PREFIX_TASK).isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" index \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" task \u003d InternshipParserUtil.parseTask(argMultimap.getValue(PREFIX_TASK).get());","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand.MESSAGE_EMPTY_TASK), pe);","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TASK);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" return new InternshipAddTaskCommand(index, task);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":4,"LWS49":48}},{"path":"src/main/java/seedu/address/logic/parser/InternshipDataParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipAddTaskCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipClearCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipDeleteCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.InternshipDeleteTaskCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipEditCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipExitCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipFindCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipHelpCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipListCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipRemarkCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipSetDeadlineCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipSortCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" * Parses user input.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipDataParser {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(InternshipDataParser.class);","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" * @param userInput full user input string","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" * @return the command based on the user input","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipCommand parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" InternshipHelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" // log messages such as the one below.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" switch (commandWord) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipAddCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipAddCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipEditCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipEditCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipDeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipDeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipClearCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipClearCommand();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipFindCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipFindCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipListCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipListCommand();","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipExitCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipExitCommand();","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" case InternshipHelpCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipHelpCommand();","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" case InternshipRemarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" return new InternshipRemarkCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" case InternshipSortCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" return new InternshipSortCommandParser().parse(arguments);","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" case InternshipAddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" return new InternshipAddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" case InternshipSetDeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-03"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" return new InternshipSetDeadlineCommandParser().parse(arguments);","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" case InternshipDeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" return new InternshipDeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" default:","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jieqiboh":7,"LWS49":8,"theman-oj10":14,"CaptainKeqing":77}},{"path":"src/main/java/seedu/address/logic/parser/InternshipDeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipDeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" * Parses input arguments and creates a new InternshipDeleteCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipDeleteCommandParser implements InternshipParser\u003cInternshipDeleteCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipDeleteCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" * and returns a InternshipDeleteCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" public InternshipDeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" Index index;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" if (argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" index \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" return new InternshipDeleteCommand(index);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":41}},{"path":"src/main/java/seedu/address/logic/parser/InternshipDeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.InternshipDeleteTaskCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" * Parses input arguments and creates a new InternshipDeleteTaskCommand object","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"public class InternshipDeleteTaskCommandParser implements InternshipParser\u003cInternshipDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipDeleteTaskCommand","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * and returns an InternshipDeleteTaskCommand object for execution.","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public InternshipDeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_SELECT_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex;","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" if (argMultimap.getPreamble().isEmpty() || argMultimap.getValue(PREFIX_SELECT_TASK).isEmpty()) {","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" internshipIndex \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" taskIndex \u003d InternshipParserUtil.parseIndex(argMultimap.getValue(PREFIX_SELECT_TASK).get());","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_TASK_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_SELECT_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" return new InternshipDeleteTaskCommand(internshipIndex, taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"jieqiboh":51}},{"path":"src/main/java/seedu/address/logic/parser/InternshipEditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" * Parses input arguments and creates a new InternshipEditCommand object","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"public class InternshipEditCommandParser implements InternshipParser\u003cInternshipEditCommand\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipEditCommand","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" * and returns an InternshipEditCommand object for execution.","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" public InternshipEditCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_CONTACT_EMAIL,","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" Index index;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" if (!areAnyPrefixesPresent(argMultimap, PREFIX_COMPANY, PREFIX_DESCRIPTION, PREFIX_STATUS, PREFIX_CONTACT_NAME,","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_ROLE, PREFIX_REMARK)","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" index \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_CONTACT_EMAIL,","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" PREFIX_CONTACT_NUMBER, PREFIX_LOCATION, PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE, PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" EditInternshipDescriptor editInternshipDescriptor \u003d new EditInternshipDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_COMPANY).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setCompanyName(InternshipParserUtil.parseCompanyName(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_COMPANY).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_CONTACT_NAME).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setContactName(InternshipParserUtil.parseContactName(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_CONTACT_NAME).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_CONTACT_NUMBER).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setContactNumber(InternshipParserUtil.parseContactNumber(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_CONTACT_NUMBER).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_CONTACT_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setContactEmail(InternshipParserUtil.parseContactEmail(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_CONTACT_EMAIL).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_LOCATION).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":" editInternshipDescriptor.setLocation(InternshipParserUtil.parseOptionalLocation(argMultimap","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" .getValue(PREFIX_LOCATION)));","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_STATUS).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setApplicationStatus(InternshipParserUtil.parseStatus(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_STATUS).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setDescription(InternshipParserUtil.parseDescription(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" .getValue(PREFIX_DESCRIPTION).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getValue(PREFIX_ROLE).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" editInternshipDescriptor.setRole(InternshipParserUtil.parseOptionalRole(argMultimap","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":" .getValue(PREFIX_ROLE)));","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" editInternshipDescriptor.setRemark(InternshipParserUtil.parseRemark(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" .getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" if (!editInternshipDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" throw new ParseException(InternshipEditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" return new InternshipEditCommand(index, editInternshipDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" private static boolean areAnyPrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" return Stream.of(prefixes).anyMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":17,"HM33-Stu":4,"LWS49":86}},{"path":"src/main/java/seedu/address/logic/parser/InternshipFindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipFindCommand.MODE_WITHALL;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipFindCommand.MODE_WITHANY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipParserUtil.anyPrefixesPresent;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipParserUtil.prefixesPresentAreNotEmpty;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipFindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.InternshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * Parses input arguments and creates a new InternshipFindCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipFindCommandParser implements InternshipParser\u003cInternshipFindCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" private static final Prefix[] supportedPrefixes \u003d {PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_LOCATION,","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE, PREFIX_REMARK};","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" private static final Prefix[] unsupportedPrefixes \u003d {PREFIX_CONTACT_EMAIL,","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" PREFIX_CONTACT_NUMBER, PREFIX_SELECT_TASK, PREFIX_TASK, PREFIX_DEADLINE};","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipFindCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" * and returns a InternshipFindCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipFindCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" if (args.trim().isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipFindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentTokenizer.tokenize(args, InternshipFindCommandParser.supportedPrefixes);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap unsupportedArgMultimap \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentTokenizer.tokenize(args, InternshipFindCommandParser.unsupportedPrefixes);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" if (anyPrefixesPresent(unsupportedArgMultimap, InternshipFindCommandParser.unsupportedPrefixes)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] unsupportedPrefixesPresent \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" getPrefixesPresent(unsupportedArgMultimap, InternshipFindCommandParser.unsupportedPrefixes);","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(String.format(InternshipFindCommand.UNSUPPORTED_PREFIX_SPECIFIED,","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" Prefix.getPrefixesAsString(\", \", unsupportedPrefixesPresent)));","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" if (!anyPrefixesPresent(argMultimap, InternshipFindCommandParser.supportedPrefixes)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(InternshipFindCommand.NO_SEARCH_KEY_SPECIFIED);","lastModifiedDate":"2024-04-03"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" String mode \u003d argMultimap.getPreamble().trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" if (!mode.equals(MODE_WITHALL) \u0026\u0026 !mode.equals(MODE_WITHANY)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(InternshipFindCommand.INVALID_MODE_SPECIFIED);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" if (!prefixesPresentAreNotEmpty(argMultimap, InternshipFindCommandParser.supportedPrefixes)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" throw new ParseException(InternshipFindCommand.NO_KEYWORD_SPECIFIED);","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(InternshipFindCommandParser.supportedPrefixes);","lastModifiedDate":"2024-04-03"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" return new InternshipFindCommand(createPredicate(mode, argMultimap));","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" * @param argMultimap map of prefixes and their search keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" * @return a list of predicates that correspond to the prefixes present in the map","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" protected InternshipContainsKeywordsPredicate createPredicate(String mode, ArgumentMultimap argMultimap) {","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d new InternshipContainsKeywordsPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_COMPANY).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_CONTACT_NAME).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_LOCATION).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_STATUS).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_DESCRIPTION).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_ROLE).orElse(null),","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap.getValue(PREFIX_REMARK).orElse(null),","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" Objects.equals(mode, MODE_WITHALL));","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" return predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-03"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" * @return an array of the supported prefixes","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-03"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" public static Prefix[] getSupportedPrefixes() {","lastModifiedDate":"2024-04-03"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" return supportedPrefixes.clone();","lastModifiedDate":"2024-04-03"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" * @return an array of the prefixes from {@code prefixes} that are present in the given {@code ArgumentMultimap}","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" protected static Prefix[] getPrefixesPresent(ArgumentMultimap argMultimap, Prefix[] prefixes) {","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" return Arrays.stream(prefixes).filter(prefix -\u003e argMultimap.getValue(prefix).isPresent())","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"CaptainKeqing":113}},{"path":"src/main/java/seedu/address/logic/parser/InternshipParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a Parser that is able to parse user input into a {@code InternshipCommand} of type {@code T}.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"public interface InternshipParser\u003cT extends InternshipCommand\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":2,"-":13,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/logic/parser/InternshipParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipSortCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"public class InternshipParserUtil {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index has to be a positive number! (1,2,3...).\";","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" * trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String companyName} into a {@code CompanyName}.","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" public static CompanyName parseCompanyName(String companyName) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" requireNonNull(companyName);","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" String trimmedName \u003d companyName.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" if (!CompanyName.isValidCompanyName(trimmedName)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" throw new ParseException(CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" return new CompanyName(trimmedName);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String description} into a {@code Description}.","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code description} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" public static Description parseDescription(String description) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" if (!Description.isValidDescription(trimmedDescription)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" return new Description(trimmedDescription);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String contactName} into a {@code ContactName}.","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code contactName} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" public static ContactName parseContactName(String contactName) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" requireNonNull(contactName);","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" String trimmedContactName \u003d contactName.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" if (!ContactName.isValidContactName(trimmedContactName)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" throw new ParseException(ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" return new ContactName(trimmedContactName);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String contactNumber} into a {@code ContactNumber}.","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code contactNumber} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" public static ContactNumber parseContactNumber(String contactNumber) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" requireNonNull(contactNumber);","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" String trimmedContactNumber \u003d contactNumber.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" if (!ContactNumber.isValidContactNumber(trimmedContactNumber)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" throw new ParseException(ContactNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" return new ContactNumber(trimmedContactNumber);","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String contactEmail} into a {@code ContactEmail}.","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code contactEmail} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" public static ContactEmail parseContactEmail(String contactEmail) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" requireNonNull(contactEmail);","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" String trimmedContactEmail \u003d contactEmail.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" if (!ContactEmail.isValidContactEmail(trimmedContactEmail)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" throw new ParseException(ContactEmail.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" return new ContactEmail(trimmedContactEmail);","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String status} into a {@code ApplicationStatus}.","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code status} is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" public static ApplicationStatus parseStatus(String status) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" String trimmedStatus \u003d status.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" if (!ApplicationStatus.isValidApplicationStatus(trimmedStatus)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" throw new ParseException(ApplicationStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" return new ApplicationStatus(trimmedStatus);","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"HM33-Stu"},"content":" * Parses a {@code String role} into a {@code Role}.","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"HM33-Stu"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"HM33-Stu"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"HM33-Stu"},"content":" public static Role parseOptionalRole(Optional\u003cString\u003e role) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"HM33-Stu"},"content":" if (role.isEmpty()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"HM33-Stu"},"content":" return new Role(\"Unknown Role\");","lastModifiedDate":"2024-04-03"},{"lineNumber":144,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":145,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(role);","lastModifiedDate":"2024-04-03"},{"lineNumber":146,"author":{"gitId":"HM33-Stu"},"content":" String trimmedRole \u003d role.get().trim();","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"HM33-Stu"},"content":" if (!Role.isValidRole(trimmedRole)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":149,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"HM33-Stu"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" * Parses a {@code String remark} into a {@code Remark}.","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" * @throws ParseException if the given {@code remark} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" public static Remark parseRemark(String remark) {","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":" * Parses a {@code String order} into a {@code InternshipSortCommandParser.OrderEnum}.","lastModifiedDate":"2024-03-30"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-30"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" *","lastModifiedDate":"2024-03-30"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" * @throws ParseException if the given {@code order} is invalid.","lastModifiedDate":"2024-03-30"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" public static InternshipSortCommandParser.OrderEnum parseOrder(String order) throws ParseException {","lastModifiedDate":"2024-03-30"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-30"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" String trimmedOrder \u003d order.trim();","lastModifiedDate":"2024-03-30"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" if (!InternshipSortCommandParser.OrderEnum.isValidOrder(trimmedOrder)) {","lastModifiedDate":"2024-03-30"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_INVALID_ORDER);","lastModifiedDate":"2024-03-30"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum orderEnum \u003d InternshipSortCommandParser","lastModifiedDate":"2024-03-30"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" .OrderEnum.getOrderEnum(trimmedOrder);","lastModifiedDate":"2024-03-30"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" return orderEnum;","lastModifiedDate":"2024-03-30"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":183,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String task} into a {@code task}.","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code task} is invalid.","lastModifiedDate":"2024-03-26"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" public static Task parseTask(String task) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":" String trimmedTask \u003d task.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":" if (!Task.isValidTask(trimmedTask)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":" throw new ParseException(Task.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-27"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":" return new Task(trimmedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":198,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":" * Parses a {@code String deadline} into a {@code Deadline}.","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the given {@code deadline} is invalid.","lastModifiedDate":"2024-03-26"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":" public static Deadline parseDeadline(String deadline) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" String trimmedDeadline \u003d deadline.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":" if (!Deadline.isValidDeadline(trimmedDeadline)) {","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":" throw new ParseException(Deadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":" return new Deadline(trimmedDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":212,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"HM33-Stu"},"content":" * Parses a {@code String location} into a {@code Location}.","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"HM33-Stu"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"HM33-Stu"},"content":" *","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"HM33-Stu"},"content":" * @throws ParseException if the given {@code location} is invalid.","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"HM33-Stu"},"content":" public static Location parseOptionalLocation(Optional\u003cString\u003e location) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":220,"author":{"gitId":"HM33-Stu"},"content":" if (location.isEmpty()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":221,"author":{"gitId":"HM33-Stu"},"content":" return new Location(\"UNKNOWN\");","lastModifiedDate":"2024-04-03"},{"lineNumber":222,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-04-03"},{"lineNumber":223,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(location);","lastModifiedDate":"2024-04-03"},{"lineNumber":224,"author":{"gitId":"HM33-Stu"},"content":" String trimmedLocation \u003d location.get().trim();","lastModifiedDate":"2024-04-02"},{"lineNumber":225,"author":{"gitId":"HM33-Stu"},"content":" if (!Location.isValidLocation(trimmedLocation)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":226,"author":{"gitId":"HM33-Stu"},"content":" throw new ParseException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":227,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":228,"author":{"gitId":"HM33-Stu"},"content":" return new Location(trimmedLocation);","lastModifiedDate":"2024-04-02"},{"lineNumber":229,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":230,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":231,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":232,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":233,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true if any of the prefixes contains {@code Optional} values, which are possibly empty, in the given","lastModifiedDate":"2024-04-02"},{"lineNumber":234,"author":{"gitId":"CaptainKeqing"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-02"},{"lineNumber":235,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":236,"author":{"gitId":"CaptainKeqing"},"content":" public static boolean anyPrefixesPresent(ArgumentMultimap argMulMap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":237,"author":{"gitId":"CaptainKeqing"},"content":" return Stream.of(prefixes).anyMatch(prefix -\u003e argMulMap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-02"},{"lineNumber":238,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":239,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":240,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":241,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true if all prefixes present in the {@code ArgumentMultimap} are non-empty.","lastModifiedDate":"2024-04-02"},{"lineNumber":242,"author":{"gitId":"CaptainKeqing"},"content":" * Vacuously true if no prefixes are present.","lastModifiedDate":"2024-04-02"},{"lineNumber":243,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":244,"author":{"gitId":"CaptainKeqing"},"content":" public static boolean prefixesPresentAreNotEmpty(ArgumentMultimap argMulMap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":245,"author":{"gitId":"CaptainKeqing"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"CaptainKeqing"},"content":" argMulMap.getValue(prefix).isEmpty()","lastModifiedDate":"2024-04-02"},{"lineNumber":247,"author":{"gitId":"CaptainKeqing"},"content":" || (argMulMap.getValue(prefix).isPresent() \u0026\u0026 !argMulMap.getValue(prefix).get().isEmpty()));","lastModifiedDate":"2024-04-02"},{"lineNumber":248,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":249,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":250,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":251,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true if all the prefixes contains {@code Optional} values, which could be empty, in the given","lastModifiedDate":"2024-04-02"},{"lineNumber":252,"author":{"gitId":"CaptainKeqing"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-02"},{"lineNumber":253,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":254,"author":{"gitId":"CaptainKeqing"},"content":" public static boolean arePrefixesPresent(ArgumentMultimap argMulMap, Prefix... prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":255,"author":{"gitId":"CaptainKeqing"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argMulMap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-02"},{"lineNumber":256,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":257,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":258,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":13,"HM33-Stu":39,"LWS49":159,"theman-oj10":18,"CaptainKeqing":29}},{"path":"src/main/java/seedu/address/logic/parser/InternshipRemarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.InternshipRemarkCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" * Parses input arguments and creates a new InternshipRemarkCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"public class InternshipRemarkCommandParser {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipRemarkCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" * and returns an InternshipRemarkCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public InternshipRemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" // addremark 1 /remark remark here","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" Index index;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" Remark remark;","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" if (argMultimap.getPreamble().isEmpty() || argMultimap.getValue(PREFIX_REMARK).isEmpty()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" index \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" remark \u003d InternshipParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get());","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_REMARK);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" return new InternshipRemarkCommand(index, remark);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jieqiboh":47}},{"path":"src/main/java/seedu/address/logic/parser/InternshipSetDeadlineCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipSetDeadlineCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" * Parses input arguments and creates a new InternshipSetDeadlineCommand object","lastModifiedDate":"2024-04-03"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"public class InternshipSetDeadlineCommandParser implements InternshipParser\u003cInternshipSetDeadlineCommand\u003e {","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipSetDeadlineCommand","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" * and returns an InternshipSetDeadlineCommand object for execution.","lastModifiedDate":"2024-04-03"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" public InternshipSetDeadlineCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_SELECT_TASK, PREFIX_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" Index internshipIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" Index taskIndex;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" Deadline deadline;","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" if (argMultimap.getPreamble().isEmpty() || argMultimap.getValue(PREFIX_SELECT_TASK).isEmpty()","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" || argMultimap.getValue(PREFIX_DEADLINE).isEmpty()) {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" internshipIndex \u003d InternshipParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" taskIndex \u003d InternshipParserUtil.parseIndex(argMultimap.getValue(PREFIX_SELECT_TASK).get());","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" throw new ParseException(MESSAGE_INVALID_TASK_DISPLAYED_INDEX, pe);","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" deadline \u003d InternshipParserUtil.parseDeadline(argMultimap.getValue(PREFIX_DEADLINE).get());","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" Deadline.MESSAGE_CONSTRAINTS), pe);","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_SELECT_TASK, PREFIX_DEADLINE);","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" return new InternshipSetDeadlineCommand(internshipIndex, taskIndex, deadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":6,"LWS49":56}},{"path":"src/main/java/seedu/address/logic/parser/InternshipSortCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.commands.InternshipSortCommand.MESSAGE_EXTRA_ARGUMENTS;","lastModifiedDate":"2024-04-03"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.commands.InternshipSortCommand.ORDER_ASCENDING;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.commands.InternshipSortCommand.ORDER_DESCENDING;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipComparators;","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipSortCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" * Parses input arguments and creates a new InternshipSortCommand object","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSortCommandParser implements InternshipParser\u003cInternshipSortCommand\u003e {","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" public static final Prefix[] SUPPORTED_PREFIXES \u003d {","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_CONTACT_NUMBER, PREFIX_CONTACT_EMAIL,","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" PREFIX_LOCATION, PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE, PREFIX_REMARK","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" };","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(InternshipSortCommandParser.class);","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" /** Enum of fields to sort by */","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" public enum FieldEnum {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" COMPANY(PREFIX_COMPANY.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" CONTACT_NAME(PREFIX_CONTACT_NAME.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" CONTACT_NUMBER(PREFIX_CONTACT_NUMBER.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" CONTACT_EMAIL(PREFIX_CONTACT_EMAIL.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" DESCRIPTION(PREFIX_DESCRIPTION.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" STATUS(PREFIX_STATUS.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" LOCATION(PREFIX_LOCATION.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" ROLE(PREFIX_ROLE.getPrefix()),","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" REMARK(PREFIX_REMARK.getPrefix());","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" private final String value;","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" FieldEnum(String value) {","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" this.value \u003d value;","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" public String getValue() {","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" return value;","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" * Returns the {@code FieldEnum} based on the given prefix string.","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" * @param prefixString prefix string","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" * @return the {@code FieldEnum} based on the given prefix string","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" public static FieldEnum fromPrefixString(String prefixString) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" for (FieldEnum field : FieldEnum.values()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" if (field.getValue().equals(prefixString)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" return field;","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_NO_FIELD);","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" /** Enum of order to sort by */","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" public enum OrderEnum {","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" ASCENDING(ORDER_ASCENDING), DESCENDING(ORDER_DESCENDING);","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" private final String value;","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" OrderEnum(String order) {","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" this.value \u003d order;","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public String getValue() {","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" return value;","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" * Returns the {@code OrderEnum} based on the given order.","lastModifiedDate":"2024-03-30"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" * @param order order to sort by","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" * @return the {@code OrderEnum} based on the given order","lastModifiedDate":"2024-03-30"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" public static OrderEnum getOrderEnum(String order) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(order);","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" isValidOrder(order);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" if (order.equals(ORDER_ASCENDING)) {","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" return ASCENDING;","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" } else {","lastModifiedDate":"2024-03-30"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" return DESCENDING;","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" * Returns true if the given order is valid.","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" * @param trimmedOrder order to sort by","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" * @return true if the given order is valid","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" public static boolean isValidOrder(String trimmedOrder) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(trimmedOrder);","lastModifiedDate":"2024-03-30"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" if (trimmedOrder.equals(ORDER_ASCENDING) || trimmedOrder.equals(ORDER_DESCENDING)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" } else {","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_INVALID_ORDER);","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" * Parses the given {@code String} of arguments in the context of the InternshipSortCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" * and returns an InternshipSortCommand object for execution.","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" public InternshipSortCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-30"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" logger.info(\"Parsing internship sort command with args: \" + args);","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-30"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" String[] splitArgs \u003d trimmedArgs.split(\" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-30"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has no arguments\");","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-30"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipSortCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, SUPPORTED_PREFIXES);","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(SUPPORTED_PREFIXES);","lastModifiedDate":"2024-04-03"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" if (!anyPrefixesPresent(argMultimap, SUPPORTED_PREFIXES)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has no valid prefixes\");","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_INVALID_FIELD);","lastModifiedDate":"2024-03-30"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" if (splitArgs.length !\u003d 2) {","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" System.out.println(\"HIT\");","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has invalid number of arguments\");","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MESSAGE_EXTRA_ARGUMENTS));","lastModifiedDate":"2024-04-04"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" OrderEnum parsedOrder \u003d assignOrder(argMultimap);","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" FieldEnum field \u003d assignField(argMultimap);","lastModifiedDate":"2024-03-30"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" try {","lastModifiedDate":"2024-04-03"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" argMultimap.verifyNoExtraArguments(2);","lastModifiedDate":"2024-04-03"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-04-03"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(MESSAGE_EXTRA_ARGUMENTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" return new InternshipSortCommand(field, parsedOrder);","lastModifiedDate":"2024-03-30"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" * Assigns the field to sort by based on the prefixes present in the {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-30"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" * @param argMultimap map of prefixes and their search keywords","lastModifiedDate":"2024-03-30"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" * @return the field to sort by","lastModifiedDate":"2024-03-30"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" protected FieldEnum assignField(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" for (Prefix prefix : SUPPORTED_PREFIXES) {","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" if (argMultimap.getValue(prefix).isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" String prefixString \u003d prefix.getPrefix();","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" return FieldEnum.fromPrefixString(prefixString);","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has no field entered\");","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_INVALID_FIELD);","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" protected OrderEnum assignOrder(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" for (Prefix prefix : SUPPORTED_PREFIXES) {","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" if (argMultimap.getValue(prefix).isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" String order \u003d argMultimap.getValue(prefix).get();","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" return OrderEnum.getOrderEnum(order);","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" logger.warning(\"Internship sort command has no field entered\");","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" throw new ParseException(InternshipSortCommand.MESSAGE_NO_ORDER);","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"content":" * Returns true if any of the prefixes are present in the {@code ArgumentMultimap}.","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" * @param argumentMultimap map of prefixes and their search keywords","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" * @param prefixes prefixes to check for","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" * @return true if any of the prefixes are present in the {@code ArgumentMultimap}","lastModifiedDate":"2024-04-02"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":190,"author":{"gitId":"theman-oj10"},"content":" private static boolean anyPrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes)","lastModifiedDate":"2024-04-02"},{"lineNumber":191,"author":{"gitId":"theman-oj10"},"content":" throws ParseException {","lastModifiedDate":"2024-04-02"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":" for (Prefix prefix : prefixes) {","lastModifiedDate":"2024-04-02"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":" Optional\u003cString\u003e value \u003d argumentMultimap.getValue(prefix);","lastModifiedDate":"2024-04-02"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" if (value.isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":195,"author":{"gitId":"theman-oj10"},"content":" if (OrderEnum.isValidOrder(value.get())) {","lastModifiedDate":"2024-04-02"},{"lineNumber":196,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-04-02"},{"lineNumber":197,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":198,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":199,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":200,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-04-02"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":" public static Comparator\u003cInternship\u003e getComparator(InternshipSortCommandParser.FieldEnum field,","lastModifiedDate":"2024-04-02"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" boolean isAscending) {","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" switch (field) {","lastModifiedDate":"2024-04-02"},{"lineNumber":206,"author":{"gitId":"theman-oj10"},"content":" case COMPANY:","lastModifiedDate":"2024-04-02"},{"lineNumber":207,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byCompanyName(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":" case CONTACT_NAME:","lastModifiedDate":"2024-04-02"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byContactName(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":" case CONTACT_NUMBER:","lastModifiedDate":"2024-04-02"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byPhone(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":" case CONTACT_EMAIL:","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byContactEmail(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":214,"author":{"gitId":"theman-oj10"},"content":" case STATUS:","lastModifiedDate":"2024-04-02"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byApplicationStatus(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":216,"author":{"gitId":"theman-oj10"},"content":" case LOCATION:","lastModifiedDate":"2024-04-02"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byLocation(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":218,"author":{"gitId":"theman-oj10"},"content":" case ROLE:","lastModifiedDate":"2024-04-02"},{"lineNumber":219,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byRole(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":" case REMARK:","lastModifiedDate":"2024-04-02"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byRemark(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" case DESCRIPTION:","lastModifiedDate":"2024-04-02"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" return InternshipComparators.byDescription(isAscending);","lastModifiedDate":"2024-04-02"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" default:","lastModifiedDate":"2024-04-02"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":" throw new IllegalArgumentException(\"Invalid field for sorting: \" + field);","lastModifiedDate":"2024-04-02"},{"lineNumber":226,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":227,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"theman-oj10":228}},{"path":"src/main/java/seedu/address/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A prefix that marks the beginning of an argument in an arguments string.","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Prefix {","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private final String prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public Prefix(String prefix) {","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public String getPrefix() {","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return getPrefix();","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return prefix \u003d\u003d null ? 0 : prefix.hashCode();","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" public static String getPrefixesAsString(String delimiter, Prefix[] prefixes) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" .map(Prefix::toString)","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" .collect(Collectors.joining(delimiter));","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof Prefix)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Prefix otherPrefix \u003d (Prefix) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return prefix.equals(otherPrefix.prefix);","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-11"}],"authorContributionMap":{"-":41,"CaptainKeqing":9}},{"path":"src/main/java/seedu/address/model/InternshipData.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.UniqueInternshipList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" * Wraps all data at the internship-display level","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" * Duplicates are not allowed (by .isSameInternship comparison)","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"public class InternshipData implements ReadOnlyInternshipData {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" private final UniqueInternshipList internshipList;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" * among constructors.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" public InternshipData() {}","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" * Creates an InternshipData using the Internships in the {@code toBeCopied}","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" public InternshipData(ReadOnlyInternshipData toBeCopied) {","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" this();","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" //// list overwrite operations","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" * Replaces the contents of the internship list with {@code internships}.","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" * {@code internships} must not contain duplicate internships.","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" public void setInternships(List\u003cInternship\u003e internships) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" this.internshipList.setInternships(internships);","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" * Resets the existing data of this {@code InternshipData} with {@code newData}.","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" public void resetData(ReadOnlyInternshipData newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" setInternships(newData.getInternshipList());","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" //// internship-level operations","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" * Returns true if a internship with the same identity as {@code internship} exists in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" return internshipList.contains(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" * Adds a internship to the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" * The internship must not already exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" public void addInternship(Internship i) {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" internshipList.add(i);","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" * Replaces the given internship {@code target} in the list with {@code editedInternship}.","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" * {@code target} must exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" * The internship identity of {@code editedInternship} must not be the same as another existing internship in the","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" * internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public void setInternship(Internship target, Internship editedInternship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" internshipList.setInternship(target, editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" * Removes {@code key} from this {@code InternshipData}.","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" * {@code key} must exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" public void removeInternship(Internship key) {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" internshipList.remove(key);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" //// util methods","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" .add(\"Internship list\", internshipList)","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" public ObservableList\u003cInternship\u003e getInternshipList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" return internshipList.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof InternshipData)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" InternshipData otherInternshipData \u003d (InternshipData) other;","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" return internshipList.equals(otherInternshipData.internshipList);","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" return internshipList.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"LWS49":18,"theman-oj10":112}},{"path":"src/main/java/seedu/address/model/InternshipModel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":" * The API of the Model component.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"public interface InternshipModel {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" Predicate\u003cInternship\u003e PREDICATE_SHOW_ALL_INTERNSHIPS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" void setUserPrefs(ReadOnlyInternshipUserPrefs userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" * Returns the user prefs.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" ReadOnlyInternshipUserPrefs getUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" * Returns the user prefs\u0027 internship data file path.","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" * Sets the user prefs internshipData file path.","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" void setInternshipDataFilePath(Path internshipDataFilePath);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" * Replaces internship data with the data in {@code internshipData}.","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" void setInternshipData(ReadOnlyInternshipData internshipData);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" /** Returns the InternshipData */","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" ReadOnlyInternshipData getInternshipData();","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" * Returns true if an internship with the same identity as {@code internship} exists in the internship list.","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" boolean hasInternship(Internship internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" * Deletes the given internship.","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" * The internship must exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" void deleteInternship(Internship target);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" * Adds the given internship.","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" * {@code internship} must not already exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" void addInternship(Internship internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" * Replaces the given internship {@code target} with {@code editedInternship}.","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" * {@code target} must exist in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" * The internship identity of {@code editedInternship} must not be the same as another existing internship in the","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" * internship list.","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" void setInternship(Internship target, Internship editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" /** Returns an unmodifiable view of the filtered internship list */","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" ObservableList\u003cInternship\u003e getFilteredInternshipList();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" * Updates the filter of the filtered internship list to filter by the given {@code predicate}.","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" void updateFilteredInternshipList(Predicate\u003cInternship\u003e predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" * Sorts the filtered internship list according to the given {@code comparator}.","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" * @throws NullPointerException if {@code comparator} is null.","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" void sortFilteredInternshipList(Comparator\u003cInternship\u003e comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the selected {@code internship} in the model selected internship.","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" * This represents the internship that the user is currently viewing in the detailed internship window.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" void setSelectedInternship(Internship internship);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" * Gets the model\u0027s selected internship, which represents the internship that the user is currently viewing in the","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" * detailed internship window.","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" ObservableList\u003cInternship\u003e getSelectedInternship();","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"LWS49":18,"theman-oj10":77,"CaptainKeqing":11}},{"path":"src/main/java/seedu/address/model/InternshipModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" * Represents the in-memory model of the Internship data.","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"public class InternshipModelManager implements InternshipModel {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(InternshipModelManager.class);","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" private final InternshipData internshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" private final InternshipUserPrefs userPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" private FilteredList\u003cInternship\u003e filteredInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" private SortedList\u003cInternship\u003e sortedInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" // The internship that is currently selected. Even though it is a list, it should only ever show one internship.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" // It is set as a FilteredList, so it can work with the existing UI components.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" private FilteredList\u003cInternship\u003e selectedInternship;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" * Initializes a ModelManager with the given internshipData and userPrefs.","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" public InternshipModelManager(ReadOnlyInternshipData internshipData, ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" requireAllNonNull(internshipData, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" logger.fine(\"Initializing with internship data: \" + internshipData + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" this.internshipData \u003d new InternshipData(internshipData);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" this.userPrefs \u003d new InternshipUserPrefs(userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" filteredInternships \u003d new FilteredList\u003c\u003e(this.internshipData.getInternshipList());","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" sortedInternships \u003d new SortedList\u003c\u003e(filteredInternships);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" selectedInternship \u003d new FilteredList\u003c\u003e(this.internshipData.getInternshipList());","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" public InternshipModelManager() {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" this(new InternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" public void setUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" public ReadOnlyInternshipUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" return userPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" return userPrefs.getInternshipDataFilePath();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" public void setInternshipDataFilePath(Path internshipDataFilePath) {","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" requireNonNull(internshipDataFilePath);","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" userPrefs.setInternshipDataFilePath(internshipDataFilePath);","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d InternshipData \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipData(ReadOnlyInternshipData internshipData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" this.internshipData.resetData(internshipData);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" public ReadOnlyInternshipData getInternshipData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" return internshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" return internshipData.hasInternship(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" public void deleteInternship(Internship target) {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" internshipData.removeInternship(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" public void addInternship(Internship internship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" updateFilteredInternshipList(PREDICATE_SHOW_ALL_INTERNSHIPS);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" public void setInternship(Internship target, Internship editedInternship) {","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" requireAllNonNull(target, editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" internshipData.setInternship(target, editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Internship List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" * Returns an unmodifiable view of the list of {@code Internship} backed by the internal list of","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" * {@code versionedInternshipData}","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" public ObservableList\u003cInternship\u003e getFilteredInternshipList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" return sortedInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" * Returns an unmodifiable view of the list of {@code Internship} backed by the internal list of","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" * {@code InternshipData}","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" public void sortFilteredInternshipList(Comparator\u003cInternship\u003e comparator) {","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(comparator);","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" sortedInternships.setComparator(comparator);","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" public void setSelectedInternship(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" selectedInternship.setPredicate(internship::equals);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" public ObservableList\u003cInternship\u003e getSelectedInternship() {","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":" return selectedInternship;","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" public void updateFilteredInternshipList(Predicate\u003cInternship\u003e predicate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" filteredInternships.setPredicate(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof InternshipModelManager)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager otherModelManager \u003d (InternshipModelManager) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" return internshipData.equals(otherModelManager.internshipData)","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" \u0026\u0026 filteredInternships.equals(otherModelManager.filteredInternships);","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"LWS49":15,"theman-oj10":144,"CaptainKeqing":15}},{"path":"src/main/java/seedu/address/model/InternshipUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"public class InternshipUserPrefs implements ReadOnlyInternshipUserPrefs {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" private Path internshipDataFilePath \u003d Paths.get(\"data\" , \"internshipdata.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" public InternshipUserPrefs() {}","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" public InternshipUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" public void resetData(ReadOnlyInternshipUserPrefs newUserPrefs) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" setInternshipDataFilePath(newUserPrefs.getInternshipDataFilePath());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" return internshipDataFilePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipDataFilePath(Path internshipDataFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(internshipDataFilePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" this.internshipDataFilePath \u003d internshipDataFilePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof InternshipUserPrefs)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs otherUserPrefs \u003d (InternshipUserPrefs) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" \u0026\u0026 internshipDataFilePath.equals(otherUserPrefs.internshipDataFilePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" return Objects.hash(guiSettings, internshipDataFilePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" sb.append(\"\\nLocal data file location : \" + internshipDataFilePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"theman-oj10":16,"-":72}},{"path":"src/main/java/seedu/address/model/ReadOnlyInternshipData.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":" * Unmodifiable view of an InternshipData","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"public interface ReadOnlyInternshipData {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":" * Returns an unmodifiable view of the internships list.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" * This list will not contain any duplicate internships.","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" ObservableList\u003cInternship\u003e getInternshipList();","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"LWS49":1,"theman-oj10":16}},{"path":"src/main/java/seedu/address/model/ReadOnlyInternshipUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"public interface ReadOnlyInternshipUserPrefs {","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"theman-oj10":2,"-":14}},{"path":"src/main/java/seedu/address/model/internship/ApplicationStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship\u0027s application status in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ApplicationStatus {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Application statuses have to be either to_apply, pending, \"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" + \"rejected, accepted, or ongoing\";","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" public static final String VALIDATION_REGEX \u003d \"(?i)to_apply|pending|rejected|accepted|ongoing\";","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * Enum of statuses","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" public enum StatusEnum {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" TO_APPLY,","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" PENDING,","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" REJECTED,","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" ACCEPTED,","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" ONGOING","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" private final StatusEnum applicationStatus;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code ApplicationStatus}.","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" * @param applicationStatus A valid application status.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public ApplicationStatus(String applicationStatus) {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(applicationStatus);","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidApplicationStatus(applicationStatus), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" this.applicationStatus \u003d StatusEnum.valueOf(applicationStatus.toUpperCase());","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid ApplicationStatus.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidApplicationStatus(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" return applicationStatus.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof ApplicationStatus)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus otherApplicationStatus \u003d (ApplicationStatus) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" return applicationStatus.equals(otherApplicationStatus.applicationStatus);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" return applicationStatus.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" * Returns the status of the application.","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" public StatusEnum getStatus() {","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" return applicationStatus;","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":64,"theman-oj10":12,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/CompanyName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" * Represents a Company\u0027s name in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCompanyName(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"public class CompanyName {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" \"Company Name should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * Matches one or more alphanumeric characters","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public final String companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code CompanyName}.","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * @param companyName A valid companyName.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public CompanyName(String companyName) {","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(companyName);","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidCompanyName(companyName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid companyName.","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidCompanyName(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" return companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof CompanyName)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" CompanyName otherName \u003d (CompanyName) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" return companyName.equals(otherName.companyName);","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" return companyName.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":62,"LWS49":1,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/CompanyNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" * Tests that a {@code Internship}\u0027s {@code CompanyName} matches any of the keywords given.","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"public class CompanyNameContainsKeywordsPredicate implements Predicate\u003cInternship\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" public CompanyNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" public boolean test(Internship internship) {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(internship.getCompanyName().companyName,","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" keyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof CompanyNameContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" CompanyNameContainsKeywordsPredicate otherCompanyNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" (CompanyNameContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" return keywords.equals(otherCompanyNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":46}},{"path":"src/main/java/seedu/address/model/internship/ContactEmail.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship Contact\u0027s email in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ContactEmail {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * Constructs an {@code ContactEmail}.","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * @param contactEmail A valid contactEmail address.","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public ContactEmail(String contactEmail) {","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(contactEmail);","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidContactEmail(contactEmail), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" value \u003d contactEmail;","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" * Returns if a given string is a valid contactEmail.","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidContactEmail(String test) {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof ContactEmail)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" ContactEmail otherEmail \u003d (ContactEmail) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":12,"-":64,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/ContactName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" * Represents a Company Contact\u0027s name in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactName(String)}","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"public class ContactName {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public final String contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code ContactName}.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" * @param contactName A valid contactName.","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public ContactName(String contactName) {","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(contactName);","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidContactName(contactName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid contactName.","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidContactName(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" return contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof ContactName)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" ContactName otherName \u003d (ContactName) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" return contactName.equals(otherName.contactName);","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" return contactName.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":17,"LWS49":1,"-":48}},{"path":"src/main/java/seedu/address/model/internship/ContactNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship Contact\u0027s contactNumber in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactNumber(String)}","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"public class ContactNumber {","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" \"Contact Number should only contain numbers, and it should be at least 7 digits long\";","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{7,}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code ContactNumber}.","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * @param contactNumber A valid contactNumber.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public ContactNumber(String contactNumber) {","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(contactNumber);","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidContactNumber(contactNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" value \u003d contactNumber;","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid contactNumber.","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidContactNumber(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof seedu.address.model.internship.ContactNumber)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" seedu.address.model.internship.ContactNumber otherContactNumber \u003d","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" (seedu.address.model.internship.ContactNumber) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" return value.equals(otherContactNumber.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":58,"LWS49":2,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an internship\u0027s deadline in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"public class Deadline {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" \"Deadline must be in the form DD/MM/YYYY, and be a valid date.\";","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" * The date format of the deadline.","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" private static final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" public final String deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" * Constructs a {@code Deadline}.","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" * @param deadline A valid deadline.","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" public Deadline(String deadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" checkArgument(isValidDeadline(deadline), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" * Returns true if a given string is a valid role.","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public static boolean isValidDeadline(String test) {","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" LocalDate date \u003d LocalDate.parse(test, formatter);","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" * Returns the deadline string.","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" return deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" * Checks equality based on the deadline string.","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof Deadline)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" Deadline otherDeadline \u003d (Deadline) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" return deadline.equals(otherDeadline.deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" * Generates hash code based on the deadline string.","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" return deadline.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":79,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Description.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship\u0027s description in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Description {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" \"Descriptions should not be blank!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" * Matches any characters that are not only whitespace","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?!\\\\s*$).+\";","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" public final String description;","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code Description}.","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" public Description(String description) {","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid Description.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" return description;","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof Description)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" Description otherName \u003d (Description) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" return description.equals(otherName.description);","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" return description.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":62,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Internship.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"public class Internship {","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" // Identity fields","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" private final CompanyName companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" private final Location location;","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" private final Description description;","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private final Role role;","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" // Data fields","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" private final ContactName contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private final ContactEmail contactEmail;","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" private final ContactNumber contactNumber;","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private final ApplicationStatus applicationStatus;","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * Every field except for remark must be present and not null.","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public Internship(CompanyName companyName, ContactName contactName, ContactEmail contactEmail,","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" ContactNumber contactNumber, Location location, ApplicationStatus applicationStatus,","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" Description description, Role role, Remark remark, TaskList taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" requireAllNonNull(companyName, contactName, contactEmail, contactNumber, applicationStatus, description);","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" this.contactEmail \u003d contactEmail;","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" this.contactNumber \u003d contactNumber;","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" this.location \u003d location;","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" this.applicationStatus \u003d applicationStatus;","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public CompanyName getCompanyName() {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return companyName;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" public ContactName getContactName() {","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" return contactName;","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" public ContactEmail getContactEmail() {","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" return contactEmail;","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" public ContactNumber getContactNumber() {","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" return contactNumber;","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" public Location getLocation() {","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" return location;","lastModifiedDate":"2024-04-03"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" public ApplicationStatus getApplicationStatus() {","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" return applicationStatus;","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" public Description getDescription() {","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" return description;","lastModifiedDate":"2024-03-06"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" public Role getRole() {","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" return role;","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" return remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" return taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" public int getTaskListSize() {","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" return taskList.getTaskListSize();","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" taskList.deleteTask(index);","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":" * Returns true if both internships have the same compulsory fields.","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" * This defines the same notion of equality between two internships. (Identity fields)","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" public boolean isSameInternship(Internship otherInternship) {","lastModifiedDate":"2024-03-06"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" if (otherInternship \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" return otherInternship !\u003d null","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 companyName.equals(otherInternship.companyName)","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 contactName.equals(otherInternship.contactName)","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 contactEmail.equals(otherInternship.contactEmail)","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 contactNumber.equals(otherInternship.contactNumber)","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 applicationStatus.equals(otherInternship.applicationStatus)","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 description.equals(otherInternship.description);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" * Returns true if both internships have the same identity and data fields.","lastModifiedDate":"2024-03-06"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" * This defines a stronger notion of equality between two internships.","lastModifiedDate":"2024-03-06"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof Internship)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" Internship otherInternship \u003d (Internship) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" return companyName.equals(otherInternship.companyName)","lastModifiedDate":"2024-03-06"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 contactName.equals(otherInternship.contactName)","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 contactEmail.equals(otherInternship.contactEmail)","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 contactNumber.equals(otherInternship.contactNumber)","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 applicationStatus.equals(otherInternship.applicationStatus)","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 description.equals(otherInternship.description)","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 role.equals(otherInternship.role)","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" \u0026\u0026 location.equals(otherInternship.location);","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-06"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" return Objects.hash(companyName, location, role, description);","lastModifiedDate":"2024-03-06"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-06"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" .add(\"companyName\", companyName)","lastModifiedDate":"2024-03-06"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" .add(\"contactName\", contactName)","lastModifiedDate":"2024-03-06"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" .add(\"contactEmail\", contactEmail)","lastModifiedDate":"2024-03-06"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" .add(\"contactNumber\", contactNumber)","lastModifiedDate":"2024-03-06"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" .add(\"location\", location)","lastModifiedDate":"2024-03-06"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" .add(\"applicationStatus\", applicationStatus)","lastModifiedDate":"2024-03-06"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-03-06"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-06"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" .add(\"taskList\", taskList)","lastModifiedDate":"2024-03-26"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" .toString();","lastModifiedDate":"2024-03-06"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":129,"HM33-Stu":12,"LWS49":16,"CaptainKeqing":7}},{"path":"src/main/java/seedu/address/model/internship/InternshipContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" * Tests that a {@code Internship}\u0027s fields matches any of the keywords given.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipContainsKeywordsPredicate implements Predicate\u003cInternship\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" private final boolean isMatchAll;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e companyNameKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e contactNameKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e locationKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e statusKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e descriptionKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e roleKeywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private final Optional\u003cSet\u003cString\u003e\u003e remarkKeywords;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a predicate that checks if an internship\u0027s fields contain any of the keywords specified for that field.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" * Additionally, the isMatchAll parameter specifies if all fields and keywords must be matched.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" * @param companyNames A string of company names separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactNames A string of contact names separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * @param locations A string of locations separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * @param statuses A string of statuses separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" * @param descriptions A string of descriptions separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * @param roles A string of roles separated by whitespace","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" * @param isMatchAll A boolean to indicate if all keywords must be matched","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipContainsKeywordsPredicate(String companyNames, String contactNames, String locations,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" String statuses, String descriptions, String roles, String remarks,","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" boolean isMatchAll) {","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" this.companyNameKeywords \u003d getKeywords(companyNames);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" this.contactNameKeywords \u003d getKeywords(contactNames);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" this.locationKeywords \u003d getKeywords(locations);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" this.statusKeywords \u003d getKeywords(statuses);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" this.descriptionKeywords \u003d getKeywords(descriptions);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" this.roleKeywords \u003d getKeywords(roles);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" this.remarkKeywords \u003d getKeywords(remarks);","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" this.isMatchAll \u003d isMatchAll;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" * Tests if the given internship contains any of the keywords specified for all fields (when isMatchAll is true) or","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" * any of the keywords specified for any field (when isMatchAll is false).","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" public boolean test(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInCompanyName \u003d companyNameKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getCompanyName().companyName, keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInContactName \u003d contactNameKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getContactName().contactName, keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInLocation \u003d locationKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getLocation().toString(), keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInStatus \u003d statusKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getApplicationStatus().toString(), keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInDescription \u003d descriptionKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" StringUtil.containsWordIgnoreCase(internship.getDescription().description, keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInRole \u003d roleKeywords.stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" internship.getRole().role, keyword)))","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" boolean foundInRemark \u003d remarkKeywords.stream()","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" .map(set -\u003e set.stream().anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" internship.getRemark().value, keyword)))","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" .reduce((a, b) -\u003e a || b).orElse(isMatchAll);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" if (isMatchAll) {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" return foundInCompanyName \u0026\u0026 foundInContactName \u0026\u0026 foundInLocation","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 foundInStatus \u0026\u0026 foundInDescription \u0026\u0026 foundInRole \u0026\u0026 foundInRemark;","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" } else { // match any","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" return foundInCompanyName || foundInContactName || foundInLocation","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" || foundInStatus || foundInDescription || foundInRole || foundInRemark;","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" if (!(other instanceof InternshipContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate otherInternshipPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" (InternshipContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" return this.companyNameKeywords.equals(otherInternshipPredicate.companyNameKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.contactNameKeywords.equals(otherInternshipPredicate.contactNameKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.locationKeywords.equals(otherInternshipPredicate.locationKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.statusKeywords.equals(otherInternshipPredicate.statusKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.descriptionKeywords.equals(otherInternshipPredicate.descriptionKeywords)","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.roleKeywords.equals(otherInternshipPredicate.roleKeywords)","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.remarkKeywords.equals(otherInternshipPredicate.remarkKeywords)","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" \u0026\u0026 this.isMatchAll \u003d\u003d otherInternshipPredicate.isMatchAll;","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" companyNameKeywords\", companyNameKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" contactNameKeywords\", contactNameKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" locationKeywords\", locationKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" statusKeywords\", statusKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" descriptionKeywords\", descriptionKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" roleKeywords\", roleKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" remarkKeywords\", remarkKeywords.orElse(Collections.singleton(\"\")))","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" .add(\" isMatchAll\", isMatchAll).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" * @param keywords A string of keywords separated by whitespace","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" * @return An Optional containing a set of keywords if the input is not null or empty, else an empty Optional","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" protected Optional\u003cSet\u003cString\u003e\u003e getKeywords(String keywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" if (keywords \u003d\u003d null || keywords.isBlank()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" String[] keywordsArr \u003d keywords.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" return Optional.of(Set.of(keywordsArr));","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":139}},{"path":"src/main/java/seedu/address/model/internship/Location.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Internship\u0027s location in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Location {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Locations have to be either local, overseas, or remote\";","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALIDATION_REGEX \u003d \"(?i)local|remote|overseas|unknown\";","lastModifiedDate":"2024-04-03"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * Enum of locations","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" public enum LocationEnum {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" LOCAL,","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" OVERSEAS,","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" REMOTE,","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" UNKNOWN","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" private final LocationEnum location;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code ApplicationStatus}.","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * @param location A valid location.","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" public Location(String location) {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(location);","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidLocation(location), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" this.location \u003d Location.LocationEnum.valueOf(location.toUpperCase());","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid ApplicationStatus.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidLocation(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" return location.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof Location)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" Location otherLocation \u003d (Location) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" return location.equals(otherLocation.location);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" return location.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" * Returns the location of the internship.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" public LocationEnum getLocation() {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" return location;","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":61,"HM33-Stu":1,"theman-oj10":12,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * Represents an Internship\u0027s remarks in the internship data.","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Remark {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public final String value;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" * Constructs an {@code Remark}.","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * @param remark A valid remark.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" value \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" return value;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jieqiboh":38}},{"path":"src/main/java/seedu/address/model/internship/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an internship\u0027s role in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Role {","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" \"Roles should not be blank!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * Matches any characters that are not only whitespace","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?!\\\\s*$).+\";","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public final String role;","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code Role}.","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * @param role A valid role.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public Role(String role) {","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" checkArgument(isValidRole(role), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" * Returns true if a given string is a valid role.","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidRole(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" return role;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" Role otherName \u003d (Role) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" return role.equals(otherName.role);","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" return role.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":62,"HM33-Stu":1,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.internship.Deadline.isValidDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import java.util.Map;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an internship\u0027s Task in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"public class Task {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" \"Task should not be blank!\";","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" * Matches any characters that are not only whitespace","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?!\\\\s*$).+\";","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" public final String task;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" private Deadline deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" private boolean isDeadlineSet \u003d false;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" * Constructs a {@code Task}.","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" * @param task A valid task.","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" public Task(String task) {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" checkArgument(isValidTask(task), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" * Constructs a {@code Task}.","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" * @param task","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" * @param deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" public Task(String task, String deadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" checkArgument(isValidTask(task), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" checkArgument(isValidDeadline(deadline), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d new Deadline(deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" isDeadlineSet \u003d true;","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" * Constructs a {@code Task}.","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" * @param task","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" * @param deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" * @param isDeadlineSet","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" @JsonCreator","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" public Task(@JsonProperty(\"task\") String task,","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" @JsonProperty(\"deadline\") Map\u003cString, String\u003e deadlineMap,","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" @JsonProperty(\"isDeadlineSet\") boolean isDeadlineSet) {","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" checkArgument(isValidTask(task), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" if (isDeadlineSet \u0026\u0026 deadlineMap !\u003d null \u0026\u0026 deadlineMap.containsKey(\"deadline\")) {","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" String deadlineStr \u003d deadlineMap.get(\"deadline\");","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d new Deadline(deadlineStr);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" this.isDeadlineSet \u003d isDeadlineSet;","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":" * Returns true if a given string is a valid task.","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" public static boolean isValidTask(String test) {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" * Returns true if a given string is a valid task.","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" public String convertToJsonString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" return \"{\\\"task\\\": \\\"\" + task + \"\\\", \\\"deadline\\\": \\\"\" + deadline + \"\\\"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" * Replace deadline with {@code deadline}.","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" public void setDeadline(Deadline deadline) {","lastModifiedDate":"2024-04-03"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" isDeadlineSet \u003d true;","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" * Returns the task string.","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":" public String toString() {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" if (isDeadlineSet) {","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" return task + \" Deadline: \" + deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" return task;","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"HM33-Stu"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"HM33-Stu"},"content":" Task otherName \u003d (Task) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" return task.equals(otherName.task) \u0026\u0026 isDeadlineSet \u003d\u003d otherName.isDeadlineSet","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" \u0026\u0026 (isDeadlineSet ? deadline.equals(otherName.deadline) : true);","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"HM33-Stu"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"HM33-Stu"},"content":" return task.hashCode();","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"HM33-Stu":58,"LWS49":75,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a list of tasks in the internship data.","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"public class TaskList {","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" * Constructs a TaskList object.","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" public TaskList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" * Constructs a TaskList object from an existing list of tasks.","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" * Adds tasks from a comma-separated string into the task list. Only for testing purposes using TypicalInternships.","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" * @param tasksString the string containing comma-separated tasks","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" public TaskList(String tasksString) {","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" if (tasksString.equals(\"\") || tasksString.equals(\" \")) {","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" String[] tasksArray \u003d tasksString.split(\"; \");","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" for (String desc : tasksArray) {","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" // Check for a deadline pattern","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" if (desc.contains(\"(\") \u0026\u0026 desc.contains(\")\")) {","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" String description \u003d desc.substring(0, desc.indexOf(\"(\")).trim();","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" String deadlineStr \u003d desc.substring(desc.indexOf(\"(\") + 1, desc.indexOf(\")\")).trim();","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" taskList.add(new Task(description, deadlineStr));","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" } else {","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" taskList.add(new Task(desc.trim()));","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" * Returns the taskList with {@code ArrayList\u003cTask\u003e} type. Primarily for JSON purposes.","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" public ArrayList\u003cTask\u003e getArrayListTaskList() {","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" return taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" taskList.add(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" * Deletes a task from the task list based on the index.","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" taskList.remove(index);","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" return taskList.get(index);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" * Returns the size of the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" public int getTaskListSize() {","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" return taskList.size();","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" * Returns a copy of the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" public TaskList copy() {","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" ArrayList\u003cTask\u003e copiedTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" copiedTaskList.add(task);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" return new TaskList(copiedTaskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" int count \u003d 1;","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" builder.append(count++).append(\". \").append(task.toString()).append(\"\\n\");","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" return builder.toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" * Converts the task list to a JSON string.","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" * @return JSON string representation of the task list","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" public String convertToJsonString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" builder.append(\"[\");","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" builder.append(task.convertToJsonString()).append(\",\");","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" if (taskList.size() \u003e 0) {","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" builder.deleteCharAt(builder.length() - 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" builder.append(\"]\");","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" return builder.toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" if (!(other instanceof TaskList)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" TaskList otherTaskList \u003d (TaskList) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" if (this.taskList.size() !\u003d otherTaskList.taskList.size()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-03-26"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" if (!this.taskList.get(i).equals(otherTaskList.taskList.get(i))) {","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-26"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" return taskList.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":7,"LWS49":136,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/model/internship/UniqueInternshipList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.exceptions.DuplicateInternshipException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.exceptions.InternshipNotFoundException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" * A list of internships that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" * An internship is considered unique by comparing using {@code Internship#isSameInternship(Internship)}.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" * As such, adding and updating of internships uses Internship#isSameInternship(Internship) for equality","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" * to ensure that the internship being added or updated is unique in terms of identity in the","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" * UniqueInternshipList. However, the removal of a internship uses Internship#equals(Object),to","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" * ensure that the internship with exactly the same fields will be removed.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" * @see Internship#isSameInternship(Internship)","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"public class UniqueInternshipList implements Iterable\u003cInternship\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" private final ObservableList\u003cInternship\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" private final ObservableList\u003cInternship\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" * Returns true if the list contains an equivalent internship as the given argument.","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" * @param toCheck the internship to check for the equality of identity fields","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" public boolean contains(Internship toCheck) {","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" return internalList.stream().anyMatch(toCheck::isSameInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" * Adds a internship to the list.","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" * The internship must not already exist in the list.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" public void add(Internship toAdd) {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" throw new DuplicateInternshipException();","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" * Replaces the internship {@code target} in the list with {@code editedInternship}.","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" * The internship identity of {@code editedInternship} must not be the same as another","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" * existing internship in the list.","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" public void setInternship(Internship target, Internship editedInternship) {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" requireAllNonNull(target, editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" throw new InternshipNotFoundException();","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" if (!target.isSameInternship(editedInternship) \u0026\u0026 contains(editedInternship)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" throw new DuplicateInternshipException();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" internalList.set(index, editedInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" * Removes the equivalent internship from the list.","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" * The internship must exist in the list.","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" public void remove(Internship toRemove) {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" throw new InternshipNotFoundException();","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" public void setInternships(UniqueInternshipList replacement) {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" * Replaces the contents of this list with {@code internships}.","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" * {@code internships} must not contain duplicate internships.","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" public void setInternships(List\u003cInternship\u003e internships) {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" requireAllNonNull(internships);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" if (!internshipsAreUnique(internships)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" throw new DuplicateInternshipException();","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" internalList.setAll(internships);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" public ObservableList\u003cInternship\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" public Iterator\u003cInternship\u003e iterator() {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" if (!(other instanceof UniqueInternshipList)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList otherUniqueInternshipList \u003d (UniqueInternshipList) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" return internalList.equals(otherUniqueInternshipList.internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" * Returns true if {@code internships} contains only unique internships.","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" private boolean internshipsAreUnique(List\u003cInternship\u003e internships) {","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" for (int i \u003d 0; i \u003c internships.size() - 1; i++) {","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" for (int j \u003d i + 1; j \u003c internships.size(); j++) {","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":" if (internships.get(i).isSameInternship(internships.get(j))) {","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" * Returns true if the list is empty.","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" return internalList.isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"theman-oj10":158,"CaptainKeqing":2}},{"path":"src/main/java/seedu/address/model/internship/exceptions/DuplicateInternshipException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship.exceptions;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Signals that the operation will result in duplicate Internship (Internships are considered duplicates if they","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" * have the same identity).","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"public class DuplicateInternshipException extends RuntimeException {","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" public DuplicateInternshipException() {","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" super(\"Operation would result in duplicate internships\");","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":11}},{"path":"src/main/java/seedu/address/model/internship/exceptions/InternshipNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship.exceptions;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Signals that the operation is unable to find the specified internship.","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class InternshipNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jieqiboh":6}},{"path":"src/main/java/seedu/address/model/util/InternshipSampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" * Contains utility methods for populating {@code InternshipData} with sample data.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSampleDataUtil {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" public static final TaskList EMPTY_TASKLIST \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" public static Internship[] getSampleInternships() {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" return new Internship[]{","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" new Internship(new CompanyName(\"Google\"), new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"johndoe@example.com\"), new ContactNumber(\"12345678\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"), new ApplicationStatus(\"to_apply\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Engineering Internship\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" new Role(\"Software Engineer\"), EMPTY_REMARK, EMPTY_TASKLIST),","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" new Internship(new CompanyName(\"Facebook\"), new ContactName(\"Jane Smith\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"janesmith@example.com\"), new ContactNumber(\"98765432\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" new Location(\"local\"), new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Product Management Internship\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" new Role(\"Product Manager\"), EMPTY_REMARK, EMPTY_TASKLIST),","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" new Internship(new CompanyName(\"Amazon\"), new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"), new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"), new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" new Role(\"Business Development Associate\"), EMPTY_REMARK, EMPTY_TASKLIST),","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" };","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" public static ReadOnlyInternshipData getSampleInternshipData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" InternshipData sampleInternshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" for (Internship sampleInternship : getSampleInternships()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" sampleInternshipData.addInternship(sampleInternship);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" return sampleInternshipData;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":12,"LWS49":5,"theman-oj10":34}},{"path":"src/main/java/seedu/address/storage/InternshipDataStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * Represents a storage for {@link seedu.address.model.InternshipData}.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"public interface InternshipDataStorage {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * Returns InternshipData data as a {@link ReadOnlyInternshipData}.","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" Optional\u003cReadOnlyInternshipData\u003e readInternshipData() throws DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * @see #getInternshipDataFilePath()","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" Optional\u003cReadOnlyInternshipData\u003e readInternshipData(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" * Saves the given {@link ReadOnlyInternshipData} to the storage.","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * @param internshipData cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" void saveInternshipData(ReadOnlyInternshipData internshipData) throws IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * @see #saveInternshipData(ReadOnlyInternshipData)","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" void saveInternshipData(ReadOnlyInternshipData internshipData, Path filePath) throws IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":44}},{"path":"src/main/java/seedu/address/storage/InternshipStorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" * Manages storage of InternshipData in local storage.","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"public class InternshipStorageManager implements Storage {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(InternshipStorageManager.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" private InternshipDataStorage internshipDataStorage;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" private InternshipUserPrefsStorage userPrefsStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * Creates a {@code InternshipStorageManager} with the given","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" * {@code InternshipDataStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" public InternshipStorageManager(InternshipDataStorage internshipDataStorage,","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" InternshipUserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" this.internshipDataStorage \u003d internshipDataStorage;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public Optional\u003cInternshipUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public void saveUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" return internshipDataStorage.getInternshipDataFilePath();","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cReadOnlyInternshipData\u003e readInternshipData() throws DataLoadingException {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" return readInternshipData(internshipDataStorage.getInternshipDataFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cReadOnlyInternshipData\u003e readInternshipData(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" return internshipDataStorage.readInternshipData(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" saveInternshipData(internshipData, internshipDataStorage.getInternshipDataFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData, Path filePath) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" internshipDataStorage.saveInternshipData(internshipData, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jieqiboh":41,"LWS49":5,"-":28}},{"path":"src/main/java/seedu/address/storage/InternshipUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-09-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a storage for {@link seedu.address.model.UserPrefs}.","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"public interface InternshipUserPrefsStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the UserPrefs data file.","lastModifiedDate":"2017-02-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns UserPrefs data from storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the loading of data from preference file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" Optional\u003cInternshipUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * Saves the given {@link seedu.address.model.ReadOnlyInternshipUserPrefs} to the storage.","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param userPrefs cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" void saveUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"jieqiboh":1,"LWS49":4,"-":30,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedInternship.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Jackson-friendly version of {@link Internship}.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"public class JsonAdaptedInternship {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Internship\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private final String companyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" private final String contactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" private final String contactEmail;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" private final String contactNumber;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" private final String applicationStatus;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" private final String location;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private final String description;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" private final String role;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" private final String remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code JsonAdaptedInternship} with the given internship details.","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @JsonCreator","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public JsonAdaptedInternship(@JsonProperty(\"companyName\") String companyName,","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"contactName\") String contactName,","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"contactEmail\") String contactEmail,","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"contactNumber\") String contactNumber,","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"location\") String location,","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"status\") String applicationStatus,","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"description\") String description,","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" @JsonProperty(\"role\") String role,","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" @JsonProperty(\"taskList\") ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" this.contactEmail \u003d contactEmail;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" this.contactNumber \u003d contactNumber;","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" this.applicationStatus \u003d applicationStatus;","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" this.location \u003d location;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" * Converts a given {@code Internship} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" public JsonAdaptedInternship(Internship source) {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" // Mandatory fields","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" companyName \u003d source.getCompanyName().companyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" contactName \u003d source.getContactName().contactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" contactEmail \u003d source.getContactEmail().value;","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" contactNumber \u003d source.getContactNumber().value;","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" applicationStatus \u003d source.getApplicationStatus().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" description \u003d source.getDescription().description;","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":" // Handle optional fields","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" location \u003d source.getLocation().toString();","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" role \u003d source.getRole().role;","lastModifiedDate":"2024-04-03"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" // Remark field","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":" remark \u003d source.getRemark().toString();","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" taskList \u003d source.getTaskList().getArrayListTaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" * Converts this Jackson-friendly adapted internship object into the model\u0027s {@code Internship} object.","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted internship.","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" public Internship toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" if (companyName \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" CompanyName.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" if (!CompanyName.isValidCompanyName(companyName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" final CompanyName modelCompanyName \u003d new CompanyName(companyName);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" if (contactName \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" ContactName.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" if (!ContactName.isValidContactName(contactName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" final ContactName modelContactName \u003d new ContactName(contactName);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" if (contactEmail \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" ContactEmail.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" if (!ContactEmail.isValidContactEmail(contactEmail)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(ContactEmail.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" final ContactEmail modelContactEmail \u003d new ContactEmail(contactEmail);","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" if (contactNumber \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" ContactNumber.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" if (!ContactNumber.isValidContactNumber(contactNumber)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(ContactNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" final ContactNumber modelContactNumber \u003d new ContactNumber(contactNumber);","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" if (applicationStatus \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" if (!ApplicationStatus.isValidApplicationStatus(applicationStatus)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(ApplicationStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" final ApplicationStatus modelApplicationStatus \u003d new ApplicationStatus(applicationStatus);","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" Description.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" if (!Description.isValidDescription(description)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" final Description modelDescription \u003d new Description(description);","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" if (remark \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" if (taskList \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" TaskList.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" final TaskList modelTaskList \u003d new TaskList(taskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":161,"author":{"gitId":"HM33-Stu"},"content":" if (role \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":162,"author":{"gitId":"HM33-Stu"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName()));","lastModifiedDate":"2024-04-03"},{"lineNumber":163,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":164,"author":{"gitId":"HM33-Stu"},"content":" if (!Role.isValidRole(role)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":165,"author":{"gitId":"HM33-Stu"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"HM33-Stu"},"content":" final Role modelRole \u003d new Role(role);","lastModifiedDate":"2024-04-03"},{"lineNumber":168,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"HM33-Stu"},"content":" if (location \u003d\u003d null) {","lastModifiedDate":"2024-04-03"},{"lineNumber":170,"author":{"gitId":"HM33-Stu"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-03"},{"lineNumber":171,"author":{"gitId":"HM33-Stu"},"content":" Location.class.getSimpleName()));","lastModifiedDate":"2024-04-03"},{"lineNumber":172,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":173,"author":{"gitId":"HM33-Stu"},"content":" if (!Location.isValidLocation(location)) {","lastModifiedDate":"2024-04-03"},{"lineNumber":174,"author":{"gitId":"HM33-Stu"},"content":" throw new IllegalValueException(Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":" final Location modelLocation \u003d new Location(location);","lastModifiedDate":"2024-04-03"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":" return new Internship(modelCompanyName, modelContactName, modelContactEmail, modelContactNumber,","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"LWS49"},"content":" modelLocation, modelApplicationStatus, modelDescription, modelRole, modelRemark, modelTaskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":136,"HM33-Stu":30,"LWS49":17}},{"path":"src/main/java/seedu/address/storage/JsonInternshipDataStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * A class to access InternshipData data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"public class JsonInternshipDataStorage implements InternshipDataStorage {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonInternshipDataStorage.class);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private Path filePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public JsonInternshipDataStorage(Path filePath) {","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" return filePath;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cReadOnlyInternshipData\u003e readInternshipData() throws DataLoadingException {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" return readInternshipData(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" * Similar to {@link #readInternshipData()}.","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public Optional\u003cReadOnlyInternshipData\u003e readInternshipData(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" Optional\u003cJsonSerializableInternshipData\u003e jsonInternshipData \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" filePath, JsonSerializableInternshipData.class);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" if (!jsonInternshipData.isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" return Optional.of(jsonInternshipData.get().toModelType());","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" saveInternshipData(internshipData, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" * Similar to {@link #saveInternshipData(ReadOnlyInternshipData)}.","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData, Path filePath) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(internshipData);","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" JsonUtil.saveJsonFile(new JsonSerializableInternshipData(internshipData), filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":79}},{"path":"src/main/java/seedu/address/storage/JsonInternshipUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A class to access UserPrefs stored in the hard disk as a json file","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"public class JsonInternshipUserPrefsStorage implements InternshipUserPrefsStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public JsonInternshipUserPrefsStorage(Path filePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" return filePath;","lastModifiedDate":"2017-02-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" public Optional\u003cInternshipUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" return readUserPrefs(filePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Similar to {@link #readUserPrefs()}","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param prefsFilePath location of the data. Cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if the file format is not as expected.","lastModifiedDate":"2023-06-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public Optional\u003cInternshipUserPrefs\u003e readUserPrefs(Path prefsFilePath) throws DataLoadingException {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" return JsonUtil.readJsonFile(prefsFilePath, InternshipUserPrefs.class);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-07"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public void saveUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(userPrefs, filePath);","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"jieqiboh":2,"LWS49":6,"-":39}},{"path":"src/main/java/seedu/address/storage/JsonSerializableInternshipData.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * An Immutable InternshipData that is serializable to JSON format.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"@JsonRootName(value \u003d \"internshipdata\")","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"public class JsonSerializableInternshipData {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public static final String MESSAGE_DUPLICATE_INTERNSHIP \u003d \"Internships list contains duplicate internship(s).\";","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private final List\u003cJsonAdaptedInternship\u003e internships \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * Constructs a {@code JsonSerializableInternshipData} with the given internships.","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" @JsonCreator","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public JsonSerializableInternshipData(@JsonProperty(\"internships\") List\u003cJsonAdaptedInternship\u003e internships) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" this.internships.addAll(internships);","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * Converts a given {@code ReadOnlyInternshipData} into this class for Jackson use.","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableInternshipData}.","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" public JsonSerializableInternshipData(ReadOnlyInternshipData source) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" internships.addAll(source.getInternshipList().stream().map(JsonAdaptedInternship::new)","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" * Converts this internshipdata into the model\u0027s {@code InternshipData} object.","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public InternshipData toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" for (JsonAdaptedInternship jsonAdaptedInternship : internships) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" Internship internship \u003d jsonAdaptedInternship.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" if (internshipData.hasInternship(internship)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" return internshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":60}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"public interface Storage extends InternshipUserPrefsStorage, InternshipDataStorage {","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" Optional\u003cInternshipUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" void saveUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" Path getInternshipDataFilePath();","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" Optional\u003cReadOnlyInternshipData\u003e readInternshipData() throws DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" void saveInternshipData(ReadOnlyInternshipData internshipData) throws IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jieqiboh":4,"LWS49":5,"-":23}},{"path":"src/main/java/seedu/address/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-03-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-10-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.logic.InternshipLogic#execute(String)","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"-":84,"CaptainKeqing":1}},{"path":"src/main/java/seedu/address/ui/DetailedInternshipCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-04-01"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * A UI component that displays information of a {@code Internship}.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"DetailedInternshipCard.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" private static final String preferredFontSizeStyle \u003d \"-fx-font-size: 16px\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" private static final String titleFontSizeStyle \u003d \"-fx-font-size: 22px\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" protected HBox cardPane;","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" protected Label companyNameAndRole;","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" protected Label status;","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" protected Label description;","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" protected Label loc;","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" protected Label cName;","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" protected Label cEmail;","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" protected Label cNum;","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" protected Label remark;","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-04-01"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" protected Label tasks;","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code InternshipCard} with the given {@code Internship}.","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" public DetailedInternshipCard(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" setStyles(true, companyNameAndRole, status, description, loc,","lastModifiedDate":"2024-04-01"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" cName, cEmail, cNum, remark, tasks);","lastModifiedDate":"2024-04-01"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" setCompanyNameAndRoleLabel(internship.getCompanyName(), internship.getRole());","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" setStatusLabel(internship.getApplicationStatus());","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" setDescriptionLabel(internship.getDescription());","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" setLocationLabel(internship.getLocation());","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" setContactNameLabel(internship.getContactName());","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" setContactEmailLabel(internship.getContactEmail());","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" setContactNumberLabel(internship.getContactNumber());","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" setRemarkLabel(internship.getRemark());","lastModifiedDate":"2024-04-01"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" setTasksLabel(internship.getTaskList());","lastModifiedDate":"2024-04-01"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the company name and role label to the given company name and role.","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" * @param companyName name of the company under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" * @param role role of the internship under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" private void setCompanyNameAndRoleLabel(CompanyName companyName, Role role) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" String stringToSet \u003d companyName.toString() + \" -- \" + role.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" companyNameAndRole.setText(stringToSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the status label to the given application status.","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" * @param applicationStatus status of the application under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" private void setStatusLabel(ApplicationStatus applicationStatus) {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" status.setText(\" * \" + applicationStatus.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the description label to the given description.","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" * @param desc description of the internship","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" private void setDescriptionLabel(Description desc) {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" description.setText(\"Description:\\t\\t\" + desc.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the location label to the given location.","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" * @param loc location of the internship","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" private void setLocationLabel(Location loc) {","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" this.loc.setText(\"Location:\\t\\t\\t\" + loc.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the contact name label to the given contact name.","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactName name of the contact person under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":" private void setContactNameLabel(ContactName contactName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" cName.setText(\"Contact name:\\t\\t\" + contactName.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the contact email label to the given contact email.","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactEmail email of the contact person under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" private void setContactEmailLabel(ContactEmail contactEmail) {","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" cEmail.setText(\"Contact email:\\t\\t\" + contactEmail.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the contact number label to the given contact number.","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactNumber phone number of the contact person under the Internship entry","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" private void setContactNumberLabel(ContactNumber contactNumber) {","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" cNum.setText(\"Contact number:\\t\" + contactNumber.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the remark label to the given remark.","lastModifiedDate":"2024-04-01"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-04-01"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" * @param remark remark of the internship","lastModifiedDate":"2024-04-01"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":" private void setRemarkLabel(Remark remark) {","lastModifiedDate":"2024-04-01"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":" this.remark.setText(\"Remark:\\t\\t\\t\" + remark.toString());","lastModifiedDate":"2024-04-01"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the tasks label to the given tasks.","lastModifiedDate":"2024-04-01"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-04-01"},{"lineNumber":151,"author":{"gitId":"CaptainKeqing"},"content":" * @param tasks tasks of the internship","lastModifiedDate":"2024-04-01"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" private void setTasksLabel(TaskList tasks) {","lastModifiedDate":"2024-04-01"},{"lineNumber":154,"author":{"gitId":"CaptainKeqing"},"content":" this.tasks.setText(\"\\nTasks:\\n\" + tasks.toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":156,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":157,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"CaptainKeqing"},"content":" * Sets font size style for the given labels.","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"CaptainKeqing"},"content":" * @param labels labels to set the style for","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"CaptainKeqing"},"content":" private void setStyles(boolean isFirstTitle, Label... labels) {","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"CaptainKeqing"},"content":" for (Label label : labels) {","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"CaptainKeqing"},"content":" if (isFirstTitle) {","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"CaptainKeqing"},"content":" label.setStyle(titleFontSizeStyle);","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"CaptainKeqing"},"content":" isFirstTitle \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"CaptainKeqing"},"content":" label.setStyle(preferredFontSizeStyle);","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":172}},{"path":"src/main/java/seedu/address/ui/DetailedInternshipListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.SelectionModel;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Panel containing the list of internships.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"InternshipListPanel.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private final Logger logger \u003d LogsCenter.getLogger(DetailedInternshipListPanel.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private ListView\u003cInternship\u003e internshipListView;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" private final SelectionModel\u003cInternship\u003e selectionModel \u003d internshipListView.getSelectionModel();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code DetailedInternshipListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public DetailedInternshipListPanel(ObservableList\u003cInternship\u003e internshipList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" internshipListView.setItems(internshipList);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" internshipListView.setCellFactory(listView -\u003e new InternshipListViewCell());","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" protected ListView\u003cInternship\u003e getInternshipListView() {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" return internshipListView;","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Internship} using a {@code InternshipCard}.","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" class InternshipListViewCell extends ListCell\u003cInternship\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" protected void updateItem(Internship internship, boolean empty) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" super.updateItem(internship, empty);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" if (empty || internship \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" setText(null);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" setGraphic(new DetailedInternshipCard(internship).getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":53}},{"path":"src/main/java/seedu/address/ui/DetailedInternshipWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"DetailedInternshipWindow.fxml\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private Stage primaryStage;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipLogic logic;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" private DetailedInternshipListPanel selectedInternshipListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" private StackPane selectedInternshipListPanelPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" public DetailedInternshipWindow(Stage primaryStage, InternshipLogic logic) {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML, new Stage());","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" // Set dependencies","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" this.logic \u003d logic;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" // Configure the UI","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" fillInnerParts();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" * Fills up all the placeholders of this window except for the internship list panel.","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" void fillInnerParts() {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getInternshipDataFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" public void focus() {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" public void hide() {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" void show() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" getRoot().show();","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.logic.InternshipLogic#execute(String)","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" private CommandResult executeCommand(String commandText) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" String notImplementedMessage \u003d \"Commands are not implemented yet in detailed internship window\";","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" resultDisplay.setFeedbackToUser(notImplementedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" throw new CommandException(notImplementedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" * Populates the detailed internship window with the selected internship details.","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" public void populateInternshipDetails() {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" selectedInternshipListPanel \u003d new DetailedInternshipListPanel(logic.getSelectedInternship());","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" selectedInternshipListPanelPlaceholder.getChildren().add(selectedInternshipListPanel.getRoot());","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":108}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w11-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jieqiboh":1,"-":101}},{"path":"src/main/java/seedu/address/ui/InternshipCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ApplicationStatus.StatusEnum;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" * A UI component that displays information of a {@code Internship}.","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_RED \u003d \"-fx-text-fill: #ff0000;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_GREEN \u003d \"-fx-text-fill: #00ff00;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_YELLOW \u003d \"-fx-text-fill: #ffff00;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_CYAN \u003d \"-fx-text-fill: #00ffff;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String STYLE_WITH_FONT_COLOUR_LIGHTSEAGREEN \u003d \"-fx-text-fill: #20b2aa;\";","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"InternshipCard.fxml\";","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" public final Internship internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" private Label id;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" private Label companyNameAndRole;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" private Label status;","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" private Label description;","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" private Label loc;","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" private Label poc;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" private Label remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" @FXML","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" private Label tasks;","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code InternshipCard} with the given {@code Internship} and index to display.","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipCard(Internship internship, int displayedIndex) {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" this.internship \u003d internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" setCompanyNameAndRoleLabel(internship.getCompanyName(), internship.getRole());","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" setStatusLabel(internship.getApplicationStatus());","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" setDescriptionLabel(internship.getDescription());","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" setLocationLabel(internship.getLocation());","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" setPocLabel(internship.getContactName(), internship.getContactEmail(), internship.getContactNumber());","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" setRemarkLabel(internship.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" setTasksLabel(internship.getTaskList());","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the POC label to the given contact details.","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactName name of the contact person under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactEmail email of the contact person under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" * @param contactNumber phone number of the contact person under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" private void setPocLabel(ContactName contactName, ContactEmail contactEmail, ContactNumber contactNumber) {","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" String stringToSet \u003d \"POC: \" + contactName.toString() + \" | \"","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" + contactEmail.toString() + \" | \" + contactNumber.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" poc.setText(stringToSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the location label to the given location.","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" * @param loc location of the internship","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" private void setLocationLabel(Location loc) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" this.loc.setText(loc.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the description label to the given description.","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" * @param desc description of the internship","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" private void setDescriptionLabel(Description desc) {","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" description.setText(desc.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the company name and role label to the given company name and role.","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" * @param companyName name of the company under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" * @param role role of the internship under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":" private void setCompanyNameAndRoleLabel(CompanyName companyName, Role role) {","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" String stringToSet \u003d companyName.toString() + \" -- \" + role.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" companyNameAndRole.setText(stringToSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the status label to the given application status.","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" * @param applicationStatus status of the application under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" private void setStatusLabel(ApplicationStatus applicationStatus) {","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" status.setText(\" * \" + applicationStatus.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" setStatusLabelColour(applicationStatus.getStatus());","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the remark label to the given remark.","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" * @param remark remark of the internship","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" private void setRemarkLabel(Remark remark) {","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" this.remark.setText(\"Remark: \" + remark.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":" * Sets the colour of the status label based on the status of the application.","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" * @param statusEnum status of the application under the Internship entry","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" private void setStatusLabelColour(StatusEnum statusEnum) {","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" switch (statusEnum) {","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":" case TO_APPLY:","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_CYAN);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":" case PENDING:","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_YELLOW);","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"CaptainKeqing"},"content":" case REJECTED:","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_RED);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"CaptainKeqing"},"content":" case ACCEPTED:","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_GREEN);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"CaptainKeqing"},"content":" case ONGOING:","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"CaptainKeqing"},"content":" status.setStyle(STYLE_WITH_FONT_COLOUR_LIGHTSEAGREEN);","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"CaptainKeqing"},"content":" break;","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"CaptainKeqing"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"CaptainKeqing"},"content":" throw new IllegalArgumentException(\"Unexpected application status: \"","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"CaptainKeqing"},"content":" + statusEnum);","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" * Sets the task label to the given task list.","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"LWS49"},"content":" * @param tasks tasklist of the internship","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"LWS49"},"content":" private void setTasksLabel(TaskList tasks) {","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"LWS49"},"content":" this.tasks.setText(\"Tasks:\\n\" + tasks.toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":174,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getIdLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"CaptainKeqing"},"content":" return id;","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getCompanyNameAndRoleLabel() {","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"CaptainKeqing"},"content":" return companyNameAndRole;","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getStatusLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"CaptainKeqing"},"content":" return status;","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getDescriptionLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"CaptainKeqing"},"content":" return description;","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getLocationLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"CaptainKeqing"},"content":" return loc;","lastModifiedDate":"2024-03-14"},{"lineNumber":193,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getPocLabel() {","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"CaptainKeqing"},"content":" return poc;","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"CaptainKeqing"},"content":" protected Label getRemarkLabel() {","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"CaptainKeqing"},"content":" return remark;","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":5,"LWS49":14,"CaptainKeqing":183}},{"path":"src/main/java/seedu/address/ui/InternshipListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.input.MouseEvent;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Panel containing the list of internships.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private static Internship lastSelectedInternship;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private static final String FXML \u003d \"InternshipListPanel.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" private final Logger logger \u003d LogsCenter.getLogger(InternshipListPanel.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" private ListView\u003cInternship\u003e internshipListView;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code InternshipListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipListPanel(ObservableList\u003cInternship\u003e internshipList) {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" super(FXML);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" internshipListView.setItems(internshipList);","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" internshipListView.setCellFactory(listView -\u003e new InternshipListViewCell());","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" * Handles the event when the user clicks on an internship in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" * InternshipListViewCell updates the lastSelectedInternship whenever a cell is pressed. All we have to do","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * here is to return the lastSelectedInternship.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * @return selected index","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" public Internship handleMouseClick() {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" if (lastSelectedInternship !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" return lastSelectedInternship;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" return null;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Internship} using a {@code InternshipCard}.","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" class InternshipListViewCell extends ListCell\u003cInternship\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipListViewCell() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" setOnMousePressed((MouseEvent event) -\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" lastSelectedInternship \u003d getItem();","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" logger.info(\"User clicked on internship index: \" + getIndex() + 1 + \u0027\\n\u0027 + lastSelectedInternship);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" });","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" protected void updateItem(Internship internship, boolean empty) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" super.updateItem(internship, empty);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" if (empty || internship \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" setText(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" setGraphic(new InternshipCard(internship, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"CaptainKeqing":71}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import javafx.scene.input.MouseEvent;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" private InternshipLogic logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" private InternshipListPanel internshipListPanel;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" private DetailedInternshipWindow detailedInternshipWindow;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" private StackPane internshipListPanelPlaceholder;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code InternshipLogic}.","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" public MainWindow(Stage primaryStage, InternshipLogic logic) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow \u003d new DetailedInternshipWindow(primaryStage, logic);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" internshipListPanelPlaceholder.addEventFilter(MouseEvent.MOUSE_CLICKED, event -\u003e handleMouseClick());","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" * Handles the event when the user clicks on an internship in the list. Sets the selected internship in the logic","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" * and shows the detailed internship window. If the user clicks on an empty space, nothing happens.","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" public void handleMouseClick() {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" Internship selectedInternship \u003d internshipListPanel.handleMouseClick();","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" if (selectedInternship \u003d\u003d null) { // no internship selected, clicked on empty space","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" return;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" logic.setSelectedInternship(selectedInternship);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" showSelectedInternshipDetails();","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" logger.info(\"User clicked on internship: \" + selectedInternship);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" * Opens the detailed internship window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" private void showSelectedInternshipDetails() {","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow.populateInternshipDetails();","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" if (!detailedInternshipWindow.isShowing()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(\"showing\");","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow.show();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(\"focusing\");","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow.focus();","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" internshipListPanel \u003d new InternshipListPanel(logic.getFilteredInternshipList());","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" internshipListPanelPlaceholder.getChildren().add(internshipListPanel.getRoot());","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getInternshipDataFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":160,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":169,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":171,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":193,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":195,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":201,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipWindow.hide();","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":" public InternshipListPanel getInternshipListPanel() {","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" return internshipListPanel;","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"CaptainKeqing"},"content":" * Executes the internship command and returns the result.","lastModifiedDate":"2024-04-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"CaptainKeqing"},"content":" * @see seedu.address.logic.InternshipLogic#execute(String)","lastModifiedDate":"2024-04-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":231,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"LWS49":10,"-":183,"CaptainKeqing":41}},{"path":"src/main/java/seedu/address/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2016-09-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * A ui for the status bar that is displayed at the header of the application.","lastModifiedDate":"2016-09-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ResultDisplay extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"ResultDisplay.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private TextArea resultDisplay;","lastModifiedDate":"2016-10-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code ResultDisplay} and sets the wrap text property to true.","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public ResultDisplay() {","lastModifiedDate":"2017-06-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" resultDisplay.setWrapText(true);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" * @param feedbackToUser to be set to the result display","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":28,"CaptainKeqing":7}},{"path":"src/main/java/seedu/address/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.application.Platform;","lastModifiedDate":"2016-08-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2016-08-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Alert.AlertType;","lastModifiedDate":"2016-08-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2016-08-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The manager of the UI component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class UiManager implements Ui {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String ALERT_DIALOG_PANE_FIELD_ID \u003d \"alertDialogPane\";","lastModifiedDate":"2017-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(UiManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" private static final String ICON_APPLICATION \u003d \"/images/logo.png\";","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" private InternshipLogic logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a {@code UiManager} with the given {@code InternshipLogic}.","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" public UiManager(InternshipLogic logic) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.info(\"Starting UI...\");","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" //Set the application icon.","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" primaryStage.getIcons().add(getImage(ICON_APPLICATION));","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" alert.getDialogPane().getStylesheets().add(\"view/DarkTheme.css\");","lastModifiedDate":"2016-08-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"HM33-Stu":1,"LWS49":3,"-":83,"CaptainKeqing":1}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"LWS49"},"content":"#filterField, #internshipListPanel, #internshipWebpage {","lastModifiedDate":"2024-04-04"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"LWS49":1,"-":351}},{"path":"src/main/resources/view/DetailedInternshipCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"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-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\" \u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"companyNameAndRole\" text\u003d\"\\$companyNameAndRole\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"loc\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$location\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"cName\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$contactName\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"cEmail\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$contactEmail\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"cNum\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$contactNumber\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"tasks\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tasks\" /\u003e","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":33}},{"path":"src/main/resources/view/DetailedInternshipWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"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-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" title\u003d\"Detailed Internship View\" minWidth\u003d\"450\" minHeight\u003d\"600\" \u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" \u003cVBox fx:id\u003d\"selectedInternshipList\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" \u003cStackPane fx:id\u003d\"selectedInternshipListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" minWidth\u003d\"700\" prefWidth\u003d\"700\"/\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":34}},{"path":"src/main/resources/view/InternshipCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"companyNameAndRole\" text\u003d\"\\$companyNameAndRole\" styleClass\u003d\"cell_big_label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"loc\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$location\" /\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" \u003cLabel fx:id\u003d\"poc\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$contactInformation\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" \u003cLabel fx:id\u003d\"tasks\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tasks\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jieqiboh":1,"LWS49":1,"-":30,"CaptainKeqing":5}},{"path":"src/main/resources/view/InternshipListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" \u003cListView fx:id\u003d\"internshipListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":7,"CaptainKeqing":1}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" title\u003d\"CareerSync\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" \u003cImage url\u003d\"@/images/logo.png\" /\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" \u003cVBox fx:id\u003d\"internshipList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" \u003cStackPane fx:id\u003d\"internshipListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"HM33-Stu":1,"LWS49":2,"-":56,"CaptainKeqing":1}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" final Index fifthInternshipIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" assertTrue(fifthInternshipIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" assertTrue(fifthInternshipIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" assertTrue(fifthInternshipIndex.equals(fifthInternshipIndex));","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" assertFalse(fifthInternshipIndex.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" assertFalse(fifthInternshipIndex.equals(5.0f));","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" assertFalse(fifthInternshipIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"LWS49":7,"-":60}},{"path":"src/test/java/seedu/address/logic/InternshipLogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.InternshipStorageManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.storage.JsonInternshipDataStorage;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.storage.JsonInternshipUserPrefsStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipLogicManagerTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipModel model \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipLogic logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" JsonInternshipDataStorage internshipDataStorage \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" new JsonInternshipDataStorage(temporaryFolder.resolve(\"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" JsonInternshipUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" new JsonInternshipUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" InternshipStorageManager storage \u003d new InternshipStorageManager(internshipDataStorage, userPrefsStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" logic \u003d new InternshipLogicManager(model, storage);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" String listCommand \u003d InternshipListCommand.COMMAND_WORD;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(listCommand, InternshipListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" InternshipLogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" InternshipLogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" public void getFilteredInternshipList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredInternshipList().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandFailure(String, Class, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandFailure(String, Class, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandFailure(String, Class, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandFailure(String, Class, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(model.getInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" * @see #assertCommandSuccess(String, String, InternshipModel)","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage, InternshipModel expectedModel) {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" * Tests the InternshipLogic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" * @param expectedMessage the message expected inside exception thrown by the InternshipLogic component","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionInternshipUserPrefs.json\");","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" // Inject InternshipLogicManager with an InternshipDataStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" JsonInternshipDataStorage internshipDataStorage \u003d new JsonInternshipDataStorage(prefPath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"CaptainKeqing"},"content":" public void saveInternshipData(ReadOnlyInternshipData internshipData, Path filePath)","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" JsonInternshipUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" new JsonInternshipUserPrefsStorage(temporaryFolder.resolve(\"ExceptionInternshipUserPrefs.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" InternshipStorageManager storage \u003d new InternshipStorageManager(internshipDataStorage, userPrefsStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"CaptainKeqing"},"content":" logic \u003d new InternshipLogicManager(model, storage);","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" // Triggers the saveInternshipData method by executing an add command","lastModifiedDate":"2024-04-04"},{"lineNumber":168,"author":{"gitId":"CaptainKeqing"},"content":" String addCommand \u003d InternshipUtil.getAddCommand(new InternshipBuilder(AMY).build());","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"CaptainKeqing"},"content":" Internship expectedInternship \u003d new InternshipBuilder(AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModelManager expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.addInternship(expectedInternship);","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jieqiboh":8,"HM33-Stu":1,"LWS49":5,"-":117,"CaptainKeqing":43}},{"path":"src/test/java/seedu/address/logic/commands/InternshipAddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" * Contains integration tests (interaction with the InternshipModel) for {@code InternshipAddCommand}.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommandIntegrationTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" private InternshipModel model;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" public void setUp() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" public void execute_newInternship_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" Internship validInternship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(model.getInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" expectedModel.addInternship(validInternship);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" assertCommandSuccess(new InternshipAddCommand(validInternship), model,","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" String.format(InternshipAddCommand.MESSAGE_SUCCESS, InternshipMessages.format(validInternship)),","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" public void execute_duplicateInternship_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" Internship internshipInList \u003d model.getInternshipData().getInternshipList().get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" assertCommandFailure(new InternshipAddCommand(internshipInList), model,","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand.MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":45,"LWS49":4}},{"path":"src/test/java/seedu/address/logic/commands/InternshipAddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.HOON_APPLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.ReadOnlyInternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternshipAddCommand(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" public void execute_internshipAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" ModelStubAcceptingInternshipAdded modelStub \u003d new ModelStubAcceptingInternshipAdded();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" Internship validInternship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" CommandResult commandResult \u003d new InternshipAddCommand(validInternship).execute(modelStub);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(String.format(InternshipAddCommand.MESSAGE_SUCCESS, InternshipMessages.format(validInternship)),","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(Arrays.asList(validInternship), modelStub.internshipsAdded);","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" public void execute_duplicateInternship_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" Internship validInternship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand internshipAddCommand \u003d new InternshipAddCommand(validInternship);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" ModelStub modelStub \u003d new ModelStubWithInternship(validInternship);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(CommandException.class, internshipAddCommand.MESSAGE_DUPLICATE_INTERNSHIP, ()","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" -\u003e internshipAddCommand.execute(modelStub));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" Internship alice \u003d new InternshipBuilder().withCompanyName(\"Microsoft\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" Internship bob \u003d new InternshipBuilder().withCompanyName(\"Google\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand addAliceCommand \u003d new InternshipAddCommand(alice);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand addBobCommand \u003d new InternshipAddCommand(bob);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand addAliceCommandCopy \u003d new InternshipAddCommand(alice);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" // different Internship -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" InternshipAddCommand internshipAddCommand \u003d new InternshipAddCommand(HOON_APPLE);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" String expected \u003d InternshipAddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + HOON_APPLE + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(expected, internshipAddCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":" * A default model stub that have all methods failing.","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":" private class ModelStub implements InternshipModel {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" public void setUserPrefs(ReadOnlyInternshipUserPrefs userPrefs) {","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" public ReadOnlyInternshipUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" public Path getInternshipDataFilePath() {","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":" public void setInternshipDataFilePath(Path internshipDataFilePath) {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"HM33-Stu"},"content":" public void addInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"HM33-Stu"},"content":" public void setInternshipData(ReadOnlyInternshipData newData) {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"HM33-Stu"},"content":" public ReadOnlyInternshipData getInternshipData() {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"HM33-Stu"},"content":" public void deleteInternship(Internship target) {","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"HM33-Stu"},"content":" public void setInternship(Internship target, Internship editedInternship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"HM33-Stu"},"content":" public ObservableList\u003cInternship\u003e getFilteredInternshipList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"HM33-Stu"},"content":" public void updateFilteredInternshipList(Predicate\u003cInternship\u003e predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"HM33-Stu"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-27"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" public void sortFilteredInternshipList(Comparator\u003cInternship\u003e comparator) {","lastModifiedDate":"2024-03-27"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"CaptainKeqing"},"content":" public void setSelectedInternship(Internship internship) {","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"CaptainKeqing"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"CaptainKeqing"},"content":" public ObservableList\u003cInternship\u003e getSelectedInternship() {","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"HM33-Stu"},"content":" * A Model stub that contains a single internship entry.","lastModifiedDate":"2024-03-16"},{"lineNumber":179,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"HM33-Stu"},"content":" private class ModelStubWithInternship extends ModelStub {","lastModifiedDate":"2024-03-16"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":" private final Internship internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"HM33-Stu"},"content":" ModelStubWithInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"HM33-Stu"},"content":" this.internship \u003d internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":186,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":187,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":188,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":189,"author":{"gitId":"HM33-Stu"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":191,"author":{"gitId":"HM33-Stu"},"content":" return this.internship.isSameInternship(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":193,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":194,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":195,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":196,"author":{"gitId":"HM33-Stu"},"content":" * A Model stub that always accept the Internship being added.","lastModifiedDate":"2024-03-16"},{"lineNumber":197,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":198,"author":{"gitId":"HM33-Stu"},"content":" private class ModelStubAcceptingInternshipAdded extends ModelStub {","lastModifiedDate":"2024-03-16"},{"lineNumber":199,"author":{"gitId":"HM33-Stu"},"content":" final ArrayList\u003cInternship\u003e internshipsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":200,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":201,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":202,"author":{"gitId":"HM33-Stu"},"content":" public boolean hasInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":203,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":204,"author":{"gitId":"HM33-Stu"},"content":" return internshipsAdded.stream().anyMatch(internship::isSameInternship);","lastModifiedDate":"2024-03-16"},{"lineNumber":205,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":206,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":207,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":208,"author":{"gitId":"HM33-Stu"},"content":" public void addInternship(Internship internship) {","lastModifiedDate":"2024-03-16"},{"lineNumber":209,"author":{"gitId":"HM33-Stu"},"content":" requireNonNull(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":210,"author":{"gitId":"HM33-Stu"},"content":" internshipsAdded.add(internship);","lastModifiedDate":"2024-03-16"},{"lineNumber":211,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":212,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":213,"author":{"gitId":"HM33-Stu"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"HM33-Stu"},"content":" public ReadOnlyInternshipData getInternshipData() {","lastModifiedDate":"2024-03-16"},{"lineNumber":215,"author":{"gitId":"HM33-Stu"},"content":" return new InternshipData();","lastModifiedDate":"2024-03-16"},{"lineNumber":216,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":217,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":218,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":201,"LWS49":3,"theman-oj10":8,"CaptainKeqing":6}},{"path":"src/test/java/seedu/address/logic/commands/InternshipAddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipAddTaskCommand.","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"public class InternshipAddTaskCommandTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" private static final Task DEFAULT_TASK \u003d new Task(\"edit resume\");","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" private final InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" public void execute_internshipWithSpecifiedTask_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" Internship internshipWithAddedTask \u003d getTypicalInternships().get(0);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand addTaskCommand \u003d new InternshipAddTaskCommand(INDEX_FIRST_INTERNSHIP, DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipAddTaskCommand.MESSAGE_ADD_TASK_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), internshipWithAddedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(addTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand addTaskCommand \u003d new InternshipAddTaskCommand(outOfBoundIndex, DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(addTaskCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" final InternshipAddTaskCommand standardCommand \u003d new","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand(INDEX_FIRST_INTERNSHIP, DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand commandWithSameValues \u003d new InternshipAddTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipAddTaskCommand(INDEX_SECOND_INTERNSHIP, DEFAULT_TASK)));","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipAddTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" new Task(\"finalise resume\"))));","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand addTaskCommand \u003d new InternshipAddTaskCommand(index, DEFAULT_TASK);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" String expected \u003d InternshipAddTaskCommand.class.getCanonicalName() + \"{index\u003d\" + index","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" + \", task\u003d\" + DEFAULT_TASK + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" assertEquals(expected, addTaskCommand.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":90}},{"path":"src/test/java/seedu/address/logic/commands/InternshipClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipClearCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipClearCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_emptyInternshipData_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel model \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipClearCommand(), model,","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" InternshipClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_nonEmptyInternshipData_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.setInternshipData(new InternshipData());","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipClearCommand(), model,","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" InternshipClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_commandWordIsClear_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(InternshipClearCommand.COMMAND_WORD, \"clear\");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":4,"CaptainKeqing":39}},{"path":"src/test/java/seedu/address/logic/commands/InternshipCommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.CompanyNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"import seedu.address.testutil.EditInternshipDescriptorBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"public class InternshipCommandTestUtil {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_COMPANY_NAME_AMY \u003d \"Microsoft\";","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" public static final String VALID_COMPANY_NAME_BOB \u003d \"Facebook\";","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_LOCATION_AMY \u003d \"remote\";","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" public static final String VALID_LOCATION_BOB \u003d \"Overseas\";","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_DESCRIPTION_AMY \u003d \"Develop new microsoft web applications\";","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public static final String VALID_DESCRIPTION_BOB \u003d \"Product Management Intern\";","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_ROLE_AMY \u003d \"Application Engineer\";","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" public static final String VALID_ROLE_BOB \u003d \"Intern\";","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_NAME_AMY \u003d \"John Doe\";","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_NAME_BOB \u003d \"Jane Doe\";","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_EMAIL_AMY \u003d \"johndoe@gmail.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_EMAIL_BOB \u003d \"janedoe@gmail.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" public static final String VALID_CONTACT_NUMBER_AMY \u003d \"91001274\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" public static final String VALID_CONTACT_NUMBER_BOB \u003d \"12345678\";","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" public static final String VALID_APPLICATION_STATUS_AMY \u003d \"Pending\";","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" public static final String VALID_APPLICATION_STATUS_BOB \u003d \"Pending\";","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public static final String VALID_REMARK_AMY \u003d \"3 Leetcode questions\";","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public static final String VALID_REMARK_BOB \u003d \"Has a behavioural interview\";","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" public static final String VALID_TASK_AMY \u003d \"Sample task\";","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" public static final String VALID_DEADLINE_AMY \u003d \"24/02/2222\";","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" public static final String COMPANY_NAME_DESC_AMY \u003d \" \" + PREFIX_COMPANY + VALID_COMPANY_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" public static final String COMPANY_NAME_DESC_BOB \u003d \" \" + PREFIX_COMPANY + VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" public static final String LOCATION_DESC_AMY \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" public static final String LOCATION_DESC_BOB \u003d \" \" + PREFIX_LOCATION + VALID_LOCATION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" public static final String DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" public static final String DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" public static final String ROLE_DESC_AMY \u003d \" \" + PREFIX_ROLE + VALID_ROLE_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" public static final String ROLE_DESC_BOB \u003d \" \" + PREFIX_ROLE + VALID_ROLE_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_NAME_DESC_AMY \u003d \" \" + PREFIX_CONTACT_NAME + VALID_CONTACT_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_NAME_DESC_BOB \u003d \" \" + PREFIX_CONTACT_NAME + VALID_CONTACT_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_EMAIL_DESC_AMY \u003d \" \" + PREFIX_CONTACT_EMAIL + VALID_CONTACT_EMAIL_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_EMAIL_DESC_BOB \u003d \" \" + PREFIX_CONTACT_EMAIL + VALID_CONTACT_EMAIL_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_NUMBER_DESC_AMY \u003d \" \" + PREFIX_CONTACT_NUMBER + VALID_CONTACT_NUMBER_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" public static final String CONTACT_NUMBER_DESC_BOB \u003d \" \" + PREFIX_CONTACT_NUMBER + VALID_CONTACT_NUMBER_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" public static final String APPLICATION_STATUS_DESC_AMY \u003d \" \" + PREFIX_STATUS + VALID_APPLICATION_STATUS_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" public static final String APPLICATION_STATUS_DESC_BOB \u003d \" \" + PREFIX_STATUS + VALID_APPLICATION_STATUS_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" public static final String TASK_DESC_AMY \u003d \" \" + PREFIX_TASK + VALID_TASK_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" public static final String DEADLINE_DESC_AMY \u003d \" \" + PREFIX_DEADLINE + VALID_DEADLINE_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_COMPANY_NAME_DESC \u003d \" \" + PREFIX_COMPANY + \"Google\u0026\";","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_LOCATION_DESC \u003d \" \" + PREFIX_LOCATION + \"Mountain View\";","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" // Locations have to be either local, overseas, or remote","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_DESCRIPTION_DESC \u003d \" \" + PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" // empty string not allowed for descriptions","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \" \"; // empty string not allowed for roles","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_CONTACT_NAME_DESC \u003d \" \" + PREFIX_CONTACT_NAME + \"John\u0026\";","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_CONTACT_EMAIL_DESC \u003d \" \" + PREFIX_CONTACT_EMAIL + \"johndoe!gmail\";","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_CONTACT_NUMBER_DESC \u003d \" \" + PREFIX_CONTACT_NUMBER + \"98765432a\";","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" // \u0027a\u0027 not allowed in contact numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_APPLICATION_STATUS_DESC \u003d \" \" + PREFIX_STATUS + \"WAITING\";","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" // Application statuses have to be either to_apply, pending, rejected, accepted, or ongoing","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" public static final String INVALID_DEADLINE_DESC \u003d \" \" + PREFIX_DEADLINE + \"24/2/2222\";","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" // Date format has to be DD/MM/YYYY","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" public static final EditInternshipDescriptorBuilder DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public static final EditInternshipDescriptorBuilder DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" static {","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" DESC_AMY \u003d new EditInternshipDescriptorBuilder().withCompanyName(VALID_COMPANY_NAME_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" .withLocation(VALID_LOCATION_AMY).withDescription(VALID_DESCRIPTION_AMY).withRole(VALID_ROLE_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" .withContactName(VALID_CONTACT_NAME_AMY).withContactEmail(VALID_CONTACT_EMAIL_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_AMY).withApplicationStatus(VALID_APPLICATION_STATUS_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" DESC_BOB \u003d new EditInternshipDescriptorBuilder().withCompanyName(VALID_COMPANY_NAME_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" .withLocation(VALID_LOCATION_BOB).withDescription(VALID_DESCRIPTION_BOB).withRole(VALID_ROLE_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" .withContactName(VALID_CONTACT_NAME_BOB).withContactEmail(VALID_CONTACT_EMAIL_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_BOB).withApplicationStatus(VALID_APPLICATION_STATUS_BOB);","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" public static void assertCommandSuccess(InternshipCommand command, InternshipModel actualModel,","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" CommandResult expectedCommandResult, InternshipModel expectedModel) {","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(InternshipCommand, InternshipModel,","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" * CommandResult, InternshipModel)}","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" public static void assertCommandSuccess(InternshipCommand command, InternshipModel actualModel,","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" String expectedMessage, InternshipModel expectedModel) {","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" * - the internship data, filtered internship list and selected internship in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" public static void assertCommandFailure(InternshipCommand command, InternshipModel actualModel,","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" String expectedMessage) {","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" // only do so by copying its components.","lastModifiedDate":"2024-03-14"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" InternshipData expectedInternshipData \u003d new InternshipData(actualModel.getInternshipData());","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" List\u003cInternship\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredInternshipList());","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" assertEquals(expectedInternshipData, actualModel.getInternshipData());","lastModifiedDate":"2024-03-14"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredInternshipList());","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" * Updates {@code model}\u0027s filtered list to show only the internship at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" * {@code model}\u0027s internship data.","lastModifiedDate":"2024-03-15"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" public static void showInternshipAtIndex(InternshipModel model, Index targetIndex) {","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredInternshipList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" Internship internship \u003d model.getFilteredInternshipList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" final String[] splitName \u003d internship.getCompanyName().companyName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" model.updateFilteredInternshipList(new CompanyNameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" assertEquals(1, model.getFilteredInternshipList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":2,"HM33-Stu":5,"LWS49":157}},{"path":"src/test/java/seedu/address/logic/commands/InternshipComparatorsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"public class InternshipComparatorsTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" private InternshipBuilder internshipBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" @BeforeEach","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" public void setUp() {","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" public void byApplicationStatus_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byApplicationStatus(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withApplicationStatus(\"to_apply\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withApplicationStatus(\"rejected\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" public void byApplicationStatus_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byApplicationStatus(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withApplicationStatus(\"to_apply\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withApplicationStatus(\"rejected\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" public void byCompanyName_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byCompanyName(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withCompanyName(\"AAA\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withCompanyName(\"BBB\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" public void byCompanyName_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byCompanyName(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withCompanyName(\"AAA\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withCompanyName(\"BBB\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" public void byDescription_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byDescription(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withDescription(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withDescription(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" public void byDescription_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byDescription(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withDescription(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withDescription(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" public void byPhone_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byPhone(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactNumber(\"12345678\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactNumber(\"23456789\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" public void byPhone_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byPhone(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactNumber(\"12345678\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactNumber(\"23456789\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" public void byLocation_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byLocation(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withLocation(\"remote\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withLocation(\"overseas\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-3, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" public void byLocation_ascComparator_correctOrder() {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byLocation(true);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withLocation(\"remote\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withLocation(\"overseas\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" assertEquals(3, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" public void byRole_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byRole(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRole(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRole(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" public void byRole_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byRole(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRole(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRole(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" public void byContactName_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byContactName(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactName(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactName(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" public void byContactName_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byContactName(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactName(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactName(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" public void byContactEmail_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byContactEmail(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactEmail(\"email1@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactEmail(\"email2@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" public void byContactEmail_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byContactEmail(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactEmail(\"email1@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactEmail(\"email2@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" public void byRemark_ascComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byRemark(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRemark(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRemark(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" assertEquals(-1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" public void byRemark_descComparator_correctOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipComparators.byRemark(false);","lastModifiedDate":"2024-03-27"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRemark(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRemark(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" assertEquals(1, comparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"theman-oj10":164}},{"path":"src/test/java/seedu/address/logic/commands/InternshipDeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.showInternshipAtIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for {@code InternshipDeleteCommand}.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipDeleteCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" private InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" Internship internshipToDelete \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(InternshipDeleteCommand.MESSAGE_DELETE_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.format(internshipToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" InternshipModelManager expectedModel \u003d new InternshipModelManager(model.getInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" expectedModel.deleteInternship(internshipToDelete);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" assertCommandFailure(deleteCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" Internship internshipToDelete \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(InternshipDeleteCommand.MESSAGE_DELETE_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.format(internshipToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(model.getInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" expectedModel.deleteInternship(internshipToDelete);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" showNoInternship(expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" // ensures that outOfBoundIndex is still in bounds of internship data list","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getInternshipData().getInternshipList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" assertCommandFailure(deleteCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteFirstCommand \u003d new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteSecondCommand \u003d new InternshipDeleteCommand(INDEX_SECOND_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteFirstCommandCopy \u003d new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"HM33-Stu"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"HM33-Stu"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":" // different internship -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"HM33-Stu"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand deleteCommand \u003d new InternshipDeleteCommand(targetIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":" String expected \u003d InternshipDeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":" private void showNoInternship(InternshipModel model) {","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":" model.updateFilteredInternshipList(p -\u003e false);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(model.getFilteredInternshipList().isEmpty());","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":115,"LWS49":6}},{"path":"src/test/java/seedu/address/logic/commands/InternshipDeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternships;","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"public class InternshipDeleteTaskCommandTest {","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" private static final Index INDEX_FIRST_TASK \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" private static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private final InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" public void execute_internshipTask_success() {","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" Internship internshipWithDeletedTask \u003d getTypicalInternships().get(0);","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" internshipWithDeletedTask.deleteTask(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" Task taskToDelete \u003d internshipWithDeletedTask.getTaskList().getTask(INDEX_FIRST_TASK.getZeroBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand deleteTaskCommand \u003d new InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" INDEX_FIRST_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(InternshipDeleteTaskCommand.MESSAGE_DELETE_TASK_SUCCESS,","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" taskToDelete);","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), internshipWithDeletedTask);","lastModifiedDate":"2024-03-30"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand deleteTaskCommand \u003d new InternshipDeleteTaskCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" INDEX_FIRST_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" assertCommandFailure(deleteTaskCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public void execute_invalidTaskIndex_failure() {","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" Internship internshipWithTask \u003d getTypicalInternships().get(0);","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(internshipWithTask.getTaskListSize() + 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand deleteTaskCommand \u003d new InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" outOfBoundIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" assertCommandFailure(deleteTaskCommand, model, InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-30"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" final InternshipDeleteTaskCommand standardCommand \u003d new","lastModifiedDate":"2024-03-30"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP, INDEX_FIRST_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand commandWithSameValues \u003d new InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" INDEX_FIRST_TASK);","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-30"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-30"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-30"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-30"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" // different internship index -\u003e returns false","lastModifiedDate":"2024-03-30"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipDeleteTaskCommand(INDEX_SECOND_INTERNSHIP, INDEX_FIRST_TASK)));","lastModifiedDate":"2024-03-30"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" // different task index -\u003e returns false","lastModifiedDate":"2024-03-30"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipDeleteTaskCommand(INDEX_FIRST_INTERNSHIP, INDEX_SECOND_TASK)));","lastModifiedDate":"2024-03-30"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-30"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-30"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-30"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand deleteTaskCommand \u003d new InternshipDeleteTaskCommand(internshipIndex, taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" String expected \u003d InternshipDeleteTaskCommand.class.getCanonicalName() + \"{internshipIndex\u003d\" + internshipIndex","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" + \", taskIndex\u003d\" + taskIndex + \"}\";","lastModifiedDate":"2024-03-30"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2024-03-30"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"jieqiboh":107}},{"path":"src/test/java/seedu/address/logic/commands/InternshipEditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_EMAIL_BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.showInternshipAtIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"import seedu.address.testutil.EditInternshipDescriptorBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipEditCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"public class InternshipEditCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" private final InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder(editedInternship).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" //creating another model because the static model seems to be affected by modifications from tests in other","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" //files","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" InternshipModel otherModel \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(otherModel.getInternshipData()),","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(otherModel.getFilteredInternshipList().get(0), editedInternship);","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(editCommand, otherModel, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" Index indexLastInternship \u003d Index.fromOneBased(model.getFilteredInternshipList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" Internship lastInternship \u003d model.getFilteredInternshipList().get(indexLastInternship.getZeroBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" InternshipBuilder internshipInList \u003d new InternshipBuilder(lastInternship);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d internshipInList.withCompanyName(VALID_COMPANY_NAME_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" .withContactEmail(VALID_CONTACT_EMAIL_BOB).withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_BOB).withContactEmail(VALID_CONTACT_EMAIL_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" .withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(indexLastInternship, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(lastInternship, editedInternship);","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" new EditInternshipDescriptor());","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" InternshipData(model.getInternshipData()), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" Internship internshipInFilteredList \u003d model.getFilteredInternshipList().get(","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" Internship editedInternship \u003d new InternshipBuilder(internshipInFilteredList)","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" new EditInternshipDescriptorBuilder().withCompanyName(VALID_COMPANY_NAME_BOB).build());","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), editedInternship);","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" public void execute_duplicateInternshipUnfilteredList_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":" Internship firstInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder(firstInternship).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_SECOND_INTERNSHIP, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(editCommand, model, InternshipEditCommand.MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" public void execute_duplicateInternshipFilteredList_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" // edit internship in filtered list into a duplicate in internship data","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" Internship internshipInList \u003d model.getInternshipData().getInternshipList().get(INDEX_SECOND_INTERNSHIP","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":" .getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" new EditInternshipDescriptorBuilder(internshipInList).build());","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(editCommand, model, InternshipEditCommand.MESSAGE_DUPLICATE_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(editCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" * but smaller than size of internship data","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" public void execute_invalidInternshipIndexFilteredList_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" // ensures that outOfBoundIndex is still in bounds of internship data list","lastModifiedDate":"2024-04-04"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getInternshipData().getInternshipList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" new EditInternshipDescriptorBuilder().withCompanyName(VALID_COMPANY_NAME_BOB).build());","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(editCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_selectedInternshipBeingEdited_updatesSelectedInternship() {","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"CaptainKeqing"},"content":" Internship internshipInFilteredList \u003d model.getFilteredInternshipList()","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"CaptainKeqing"},"content":" .get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"CaptainKeqing"},"content":" model.setSelectedInternship(internshipInFilteredList); // set selected internship to the first internship","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"CaptainKeqing"},"content":" Internship editedInternship \u003d new InternshipBuilder(internshipInFilteredList)","lastModifiedDate":"2024-04-04"},{"lineNumber":177,"author":{"gitId":"CaptainKeqing"},"content":" .withCompanyName(\"Microhard\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":178,"author":{"gitId":"CaptainKeqing"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-04-04"},{"lineNumber":179,"author":{"gitId":"CaptainKeqing"},"content":" new EditInternshipDescriptorBuilder().withCompanyName(\"Microhard\").build());","lastModifiedDate":"2024-04-04"},{"lineNumber":180,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":182,"author":{"gitId":"CaptainKeqing"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-04-04"},{"lineNumber":183,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":184,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-04-04"},{"lineNumber":185,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":186,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":187,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":188,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":189,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(model.getSelectedInternship().get(0), editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_nonSelectedInternshipBeingEdited_noUpdateToSelectedInternship() {","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"CaptainKeqing"},"content":" Internship internshipInFilteredList \u003d model.getFilteredInternshipList()","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"CaptainKeqing"},"content":" .get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":198,"author":{"gitId":"CaptainKeqing"},"content":" // set selected internship to the second internship, which is not the same as the first","lastModifiedDate":"2024-04-04"},{"lineNumber":199,"author":{"gitId":"CaptainKeqing"},"content":" model.setSelectedInternship(model.getFilteredInternshipList().get(INDEX_SECOND_INTERNSHIP.getZeroBased()));","lastModifiedDate":"2024-04-04"},{"lineNumber":200,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":201,"author":{"gitId":"CaptainKeqing"},"content":" Internship editedInternship \u003d new InternshipBuilder(internshipInFilteredList)","lastModifiedDate":"2024-04-04"},{"lineNumber":202,"author":{"gitId":"CaptainKeqing"},"content":" .withCompanyName(\"Microhard\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":203,"author":{"gitId":"CaptainKeqing"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-04-04"},{"lineNumber":204,"author":{"gitId":"CaptainKeqing"},"content":" new EditInternshipDescriptorBuilder().withCompanyName(\"Microhard\").build());","lastModifiedDate":"2024-04-04"},{"lineNumber":205,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":206,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(InternshipEditCommand.MESSAGE_EDIT_INTERNSHIP_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"CaptainKeqing"},"content":" InternshipMessages.format(editedInternship));","lastModifiedDate":"2024-04-04"},{"lineNumber":208,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":209,"author":{"gitId":"CaptainKeqing"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-04-04"},{"lineNumber":210,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":211,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.setInternship(model.getFilteredInternshipList().get(0), editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":212,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":213,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":214,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":215,"author":{"gitId":"CaptainKeqing"},"content":" assertNotEquals(model.getSelectedInternship().get(0), editedInternship);","lastModifiedDate":"2024-04-04"},{"lineNumber":216,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(model.getSelectedInternship().get(0), model.getFilteredInternshipList().get(1));","lastModifiedDate":"2024-04-04"},{"lineNumber":217,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":218,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":" final InternshipEditCommand standardCommand \u003d new","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand(INDEX_FIRST_INTERNSHIP, DESC_AMY.build());","lastModifiedDate":"2024-03-15"},{"lineNumber":223,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor copyDescriptor \u003d new EditInternshipDescriptor(DESC_AMY.build());","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand commandWithSameValues \u003d new InternshipEditCommand(INDEX_FIRST_INTERNSHIP, copyDescriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-14"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipEditCommand(INDEX_SECOND_INTERNSHIP, DESC_AMY.build())));","lastModifiedDate":"2024-03-15"},{"lineNumber":240,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":241,"author":{"gitId":"LWS49"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":242,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipEditCommand(INDEX_FIRST_INTERNSHIP, DESC_BOB.build())));","lastModifiedDate":"2024-03-15"},{"lineNumber":243,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":244,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":245,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":246,"author":{"gitId":"LWS49"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":247,"author":{"gitId":"LWS49"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-14"},{"lineNumber":248,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor editInternshipDescriptor \u003d new EditInternshipDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":249,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand editCommand \u003d new InternshipEditCommand(index, editInternshipDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":250,"author":{"gitId":"LWS49"},"content":" String expected \u003d InternshipEditCommand.class.getCanonicalName() + \"{index\u003d\" + index","lastModifiedDate":"2024-03-15"},{"lineNumber":251,"author":{"gitId":"LWS49"},"content":" + \", editInternshipDescriptor\u003d\" + editInternshipDescriptor + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":252,"author":{"gitId":"LWS49"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":253,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":254,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":255,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":204,"CaptainKeqing":51}},{"path":"src/test/java/seedu/address/logic/commands/InternshipExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipExitCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipExitCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel model \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_exit_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_commandWordIsExit_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(InternshipExitCommand.COMMAND_WORD, \"exit\");","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"CaptainKeqing":29}},{"path":"src/test/java/seedu/address/logic/commands/InternshipFindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INTERNSHIPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.CARL_OPENAI;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.HOON_APPLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.IDA_NETFLIX;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.InternshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) for {@code InternshipFindCommand}.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipFindCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel model;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel expectedModel;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" public InternshipFindCommandTest() {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" model.addInternship(HOON_APPLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" model.addInternship(IDA_NETFLIX);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.addInternship(HOON_APPLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.addInternship(IDA_NETFLIX);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"first\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"second\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand findFirstCommand \u003d new InternshipFindCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand findSecondCommand \u003d new InternshipFindCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand findFirstCommandCopy \u003d new InternshipFindCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" // different internship -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" public void execute_zeroKeywords_noInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"Tiktok\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(Collections.emptyList(), model.getFilteredInternshipList());","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" public void execute_multipleKeywords_multipleInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"Microsoft OpenAI\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(Arrays.asList(ALICE_MICROSOFT, CARL_OPENAI), model.getFilteredInternshipList());","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public void execute_oneFieldIsMatchAll_multipleInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" // Predicate only role contains \"Engineer\"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicateRole \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(null, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" null, null, \"Engineer\", null, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicateRole);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicateRole);","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(model.getFilteredInternshipList().contains(HOON_APPLE));","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" public void execute_twoFieldsIsMatchAll_lessInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" // Predicate with role contains \"Engineer\" and status contains \"ongoing\"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicateRoleStatus \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(null, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" \"ongoing\", null, \"Engineer\", null, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicateRoleStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicateRoleStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(model.getFilteredInternshipList().contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(model.getFilteredInternshipList().contains(IDA_NETFLIX));","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" public void execute_twoFieldsIsMatchAny_moreInternshipsFound() {","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" // Predicate with role contains \"Engineer\" or status contains \"pending\"","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" String expectedMessage \u003d String.format(MESSAGE_INTERNSHIPS_LISTED_OVERVIEW, 5);","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicateRoleStatus \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(null, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" \"pending\", null, \"Engineer\", null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand command \u003d new InternshipFindCommand(predicateRoleStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" expectedModel.updateFilteredInternshipList(predicateRoleStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"Tiktok\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand findCommand \u003d new InternshipFindCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" String expected \u003d InternshipFindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"LWS49":6,"CaptainKeqing":133}},{"path":"src/test/java/seedu/address/logic/commands/InternshipHelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipHelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipHelpCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipHelpCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel model \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_help_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipHelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_commandWordIsHelp_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(InternshipHelpCommand.COMMAND_WORD, \"help\");","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"CaptainKeqing":29}},{"path":"src/test/java/seedu/address/logic/commands/InternshipListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.showInternshipAtIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipListCommand.","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipListCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel model;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel expectedModel;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeEach","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" public void setUp() {","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" expectedModel \u003d new InternshipModelManager(model.getInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipListCommand(), model, InternshipListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" assertCommandSuccess(new InternshipListCommand(), model, InternshipListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" public void execute_commandWordIsList_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(InternshipListCommand.COMMAND_WORD, \"list\");","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" // Add tests for list if its sorted in the future","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":3,"CaptainKeqing":43}},{"path":"src/test/java/seedu/address/logic/commands/InternshipRemarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.showInternshipAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"public class InternshipRemarkCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" private static final String REMARK_STUB \u003d \"A remark\";","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public void execute_addRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" Internship firstInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" Internship editedInternship \u003d new InternshipBuilder(firstInternship).withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" new Remark(editedInternship.getRemark().value));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(InternshipRemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" expectedModel.setInternship(firstInternship, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" public void execute_deleteRemarkUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" Internship firstInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" Internship editedInternship \u003d new InternshipBuilder(firstInternship).withRemark(\"\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" new Remark(editedInternship.getRemark().toString()));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(InternshipRemarkCommand.MESSAGE_DELETE_REMARK_SUCCESS, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" expectedModel.setInternship(firstInternship, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" Internship firstInternship \u003d model.getFilteredInternshipList().get(INDEX_FIRST_INTERNSHIP.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" Internship editedInternship \u003d new InternshipBuilder(model.getFilteredInternshipList()","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" .get(INDEX_FIRST_INTERNSHIP.getZeroBased()))","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" .withRemark(REMARK_STUB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" new Remark(editedInternship.getRemark().value));","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(InternshipRemarkCommand.MESSAGE_ADD_REMARK_SUCCESS, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(model.getInternshipData()),","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" expectedModel.setInternship(firstInternship, editedInternship);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" assertCommandFailure(remarkCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" * but smaller than size of internship data","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" public void execute_invalidInternshipIndexFilteredList_failure() {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" showInternshipAtIndex(model, INDEX_FIRST_INTERNSHIP);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" // ensures that outOfBoundIndex is still in bounds of internship data list","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getInternshipData().getInternshipList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand remarkCommand \u003d new InternshipRemarkCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" assertCommandFailure(remarkCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" final InternshipRemarkCommand standardCommand \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_AMY));","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" InternshipRemarkCommand commandWithSameValues \u003d new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_AMY));","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipRemarkCommand(INDEX_SECOND_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_AMY))));","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" assertFalse(standardCommand.equals(new InternshipRemarkCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" new Remark(VALID_REMARK_BOB))));","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jieqiboh":138}},{"path":"src/test/java/seedu/address/logic/commands/InternshipSetDeadlineCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternships;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" * Contains integration tests (interaction with the InternshipModel) and unit tests for InternshipSetDeadlineCommand.","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"public class InternshipSetDeadlineCommandTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" private static final Index INDEX_FIRST_TASK \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" private static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" private static final Deadline DEFAULT_DEADLINE \u003d new Deadline(\"20/04/2024\");","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" private final InternshipModel model \u003d new InternshipModelManager(getTypicalInternshipData(),","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" public void execute_internshipWithSpecifiedTaskAndDeadline_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" //this is BENSON_GOOGLE","lastModifiedDate":"2024-04-03"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" Internship internshipWithAddedDeadline \u003d getTypicalInternshipData().getInternshipList().get(1);","lastModifiedDate":"2024-04-03"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" internshipWithAddedDeadline.getTaskList().getTask(0).setDeadline(DEFAULT_DEADLINE);","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand setDeadlineCommand \u003d new InternshipSetDeadlineCommand(INDEX_SECOND_INTERNSHIP,","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" INDEX_FIRST_TASK, DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" String expectedMessage \u003d String.format(InternshipSetDeadlineCommand.MESSAGE_ADD_DEADLINE_SUCCESS,","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" DEFAULT_DEADLINE);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager(new InternshipData(getTypicalInternshipData()),","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" new InternshipUserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" expectedModel.setInternship(expectedModel.getFilteredInternshipList().get(1), internshipWithAddedDeadline);","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" assertCommandSuccess(setDeadlineCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" public void execute_invalidInternshipIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredInternshipList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand setDeadlineCommand \u003d new InternshipSetDeadlineCommand(outOfBoundIndex,","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" INDEX_FIRST_TASK, DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(setDeadlineCommand, model, InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" public void execute_invalidTaskIndex_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" Internship internshipWithTask \u003d getTypicalInternships().get(0);","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(internshipWithTask.getTaskListSize() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand setDeadlineCommand \u003d new InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-04-03"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" outOfBoundIndex, DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" assertCommandFailure(setDeadlineCommand, model, InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-03"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" final InternshipSetDeadlineCommand standardCommand \u003d new","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP, INDEX_FIRST_TASK, DEFAULT_DEADLINE);","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand commandWithSameValues \u003d new InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP,","lastModifiedDate":"2024-04-03"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" INDEX_FIRST_TASK, DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipClearCommand()));","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" // different internship index -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipSetDeadlineCommand(INDEX_SECOND_INTERNSHIP, INDEX_FIRST_TASK,","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" DEFAULT_DEADLINE)));","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" // different task index -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP, INDEX_SECOND_TASK,","lastModifiedDate":"2024-04-03"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" DEFAULT_DEADLINE)));","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" assertFalse(standardCommand.equals(new InternshipSetDeadlineCommand(INDEX_FIRST_INTERNSHIP, INDEX_FIRST_TASK,","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" new Deadline(\"22/02/2022\"))));","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" Index internshipIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" Index taskIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand setDeadlineCommand \u003d new InternshipSetDeadlineCommand(internshipIndex, taskIndex,","lastModifiedDate":"2024-04-03"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":" DEFAULT_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" String expected \u003d InternshipSetDeadlineCommand.class.getCanonicalName() + \"{internshipIndex\u003d\" + internshipIndex","lastModifiedDate":"2024-04-03"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" + \", taskIndex\u003d\" + taskIndex + \", deadline\u003d\" + DEFAULT_DEADLINE + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" assertEquals(expected, setDeadlineCommand.toString());","lastModifiedDate":"2024-04-03"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"LWS49":115}},{"path":"src/test/java/seedu/address/logic/commands/InternshipSortCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertSame;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.InternshipSortCommandParser;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSortCommandTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" private InternshipModel model;","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.FieldEnum fieldCompany;","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.FieldEnum fieldLocation;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.FieldEnum fieldContactNumber;","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.OrderEnum ascending;","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" private InternshipSortCommandParser.OrderEnum descending;","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" private InternshipBuilder internshipBuilder;","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" @BeforeEach","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" public void setUp() {","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" fieldCompany \u003d InternshipSortCommandParser.FieldEnum.COMPANY;","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" fieldLocation \u003d InternshipSortCommandParser.FieldEnum.LOCATION;","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" fieldContactNumber \u003d InternshipSortCommandParser.FieldEnum.CONTACT_NUMBER;","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" ascending \u003d InternshipSortCommandParser.OrderEnum.ASCENDING;","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" descending \u003d InternshipSortCommandParser.OrderEnum.DESCENDING;","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" model \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullField_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternshipSortCommand(null, ascending));","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullOrder_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternshipSortCommand(fieldCompany, null));","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" public void constructor_validFieldAndOrder_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortNameCommand \u003d new InternshipSortCommand(fieldCompany, ascending);","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortLocationCommand \u003d new InternshipSortCommand(fieldLocation, descending);","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" assertSame(fieldCompany, sortNameCommand.getField());","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" assertSame(ascending, sortNameCommand.getOrder());","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" assertSame(fieldLocation, sortLocationCommand.getField());","lastModifiedDate":"2024-03-27"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" assertSame(descending, sortLocationCommand.getOrder());","lastModifiedDate":"2024-03-27"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortCompanyNameCommand \u003d new InternshipSortCommand(fieldCompany, ascending);","lastModifiedDate":"2024-03-27"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortLocationCommand \u003d new InternshipSortCommand(fieldLocation, descending);","lastModifiedDate":"2024-03-27"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" assertTrue(sortCompanyNameCommand.equals(sortCompanyNameCommand));","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortNameCommandCopy \u003d new InternshipSortCommand(fieldCompany, ascending);","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" assertTrue(sortCompanyNameCommand.equals(sortNameCommandCopy));","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" assertFalse(sortCompanyNameCommand.equals(1));","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" assertFalse(sortCompanyNameCommand.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" // different field -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" assertFalse(sortCompanyNameCommand.equals(sortLocationCommand));","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortCompanyName_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withCompanyName(\"AAA\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(fieldCompany, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"AAA\", model.getFilteredInternshipList().get(0).getCompanyName().toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortContactNumber_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactNumber(\"11111111\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(fieldContactNumber, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"11111111\", model.getFilteredInternshipList().get(0).getContactNumber().toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortContactEmail_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactEmail(\"aaa@gmail.com\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_EMAIL, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"aaa@gmail.com\", model.getFilteredInternshipList().get(0).getContactEmail().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortStatus_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-27"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withApplicationStatus(\"to_apply\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.STATUS, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"TO_APPLY\", model.getFilteredInternshipList().get(0).getApplicationStatus().toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortLocation_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withLocation(\"local\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(fieldLocation, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"LOCAL\", model.getFilteredInternshipList().get(0).getLocation().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortDescription_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withDescription(\"ZZZ\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.DESCRIPTION, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"ZZZ\", model.getFilteredInternshipList().get(0).getDescription().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortRemark_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRemark(\"111\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.REMARK, true);","lastModifiedDate":"2024-04-02"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"111\", model.getFilteredInternshipList().get(0).getRemark().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" public void execute_sortRole_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" InternshipModel expectedModel \u003d new InternshipModelManager();","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRole(\"ZZZ\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" model.addInternship(internship1);","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e comparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.ROLE, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" model.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" expectedModel.sortFilteredInternshipList(comparator);","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"ZZZ\", model.getFilteredInternshipList().get(0).getRole().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" public void toString_validFieldAndOrder_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":183,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand sortNameCommand \u003d new InternshipSortCommand(fieldCompany, ascending);","lastModifiedDate":"2024-03-27"},{"lineNumber":184,"author":{"gitId":"theman-oj10"},"content":" String expected \u003d InternshipSortCommand.class.getCanonicalName() + \"{field\u003d\"","lastModifiedDate":"2024-03-27"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"content":" + fieldCompany.toString() + \", order\u003d\" + ascending.toString() + \"}\";","lastModifiedDate":"2024-03-27"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expected, sortNameCommand.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"theman-oj10":188}},{"path":"src/test/java/seedu/address/logic/parser/InternshipAddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.APPLICATION_STATUS_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.APPLICATION_STATUS_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.COMPANY_NAME_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.COMPANY_NAME_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NAME_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NAME_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESCRIPTION_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_APPLICATION_STATUS_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_COMPANY_NAME_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_EMAIL_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_NAME_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_NUMBER_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.LOCATION_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.LOCATION_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.ROLE_DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.ROLE_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_APPLICATION_STATUS_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.TypicalInternships.BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipAddCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" private InternshipAddCommandParser parser \u003d new InternshipAddCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" Internship expectedInternship \u003d new InternshipBuilder(BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_EMAIL_DESC_BOB + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB + ROLE_DESC_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" new InternshipAddCommand(expectedInternship));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" String validExpectedInternshipString \u003d COMPANY_NAME_DESC_BOB + INVALID_CONTACT_NAME_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_EMAIL_DESC_BOB + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":" + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB + ROLE_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":" // multiple company names","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_COMPANY));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" // multiple contact names","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, CONTACT_NAME_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NAME));","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":" // multiple contact emails","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, CONTACT_EMAIL_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":" // multiple contact numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, CONTACT_NUMBER_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"HM33-Stu"},"content":" // multiple locations","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, LOCATION_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"HM33-Stu"},"content":" // multiple application statuses","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, APPLICATION_STATUS_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_STATUS));","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":" // multiple descriptions","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, DESCRIPTION_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"HM33-Stu"},"content":" // multiple roles","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, ROLE_DESC_AMY + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" validExpectedInternshipString + COMPANY_NAME_DESC_BOB + INVALID_CONTACT_NAME_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_EMAIL_DESC_BOB + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":" + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":" + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_CONTACT_EMAIL, PREFIX_CONTACT_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" PREFIX_LOCATION, PREFIX_STATUS, PREFIX_DESCRIPTION, PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"HM33-Stu"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"HM33-Stu"},"content":" // invalid company name","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_COMPANY_NAME_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_COMPANY));","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact name","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_CONTACT_NAME_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NAME));","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact email","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_CONTACT_EMAIL_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact number","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_CONTACT_NUMBER_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" // invalid location","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_LOCATION_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"HM33-Stu"},"content":" // invalid application status","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_APPLICATION_STATUS_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_STATUS));","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"HM33-Stu"},"content":" // invalid description","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_DESCRIPTION_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"HM33-Stu"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_ROLE_DESC + validExpectedInternshipString,","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"HM33-Stu"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"HM33-Stu"},"content":" // invalid company name","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_COMPANY_NAME_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_COMPANY));","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact name","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_CONTACT_NAME_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NAME));","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact email","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_CONTACT_EMAIL_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-16"},{"lineNumber":170,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact number","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_CONTACT_NUMBER_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":" // invalid location","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_LOCATION_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_LOCATION));","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":179,"author":{"gitId":"HM33-Stu"},"content":" // invalid application status","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_APPLICATION_STATUS_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_STATUS));","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"HM33-Stu"},"content":" // invalid description","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_DESCRIPTION_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_DESCRIPTION));","lastModifiedDate":"2024-03-16"},{"lineNumber":186,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":187,"author":{"gitId":"HM33-Stu"},"content":" // invalid role","lastModifiedDate":"2024-03-16"},{"lineNumber":188,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, validExpectedInternshipString + INVALID_ROLE_DESC,","lastModifiedDate":"2024-03-16"},{"lineNumber":189,"author":{"gitId":"HM33-Stu"},"content":" InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-16"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":191,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":193,"author":{"gitId":"HM33-Stu"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":194,"author":{"gitId":"HM33-Stu"},"content":" // No optional fields filled in","lastModifiedDate":"2024-03-16"},{"lineNumber":195,"author":{"gitId":"HM33-Stu"},"content":" Internship expectedInternship \u003d new InternshipBuilder(AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":196,"author":{"gitId":"HM33-Stu"},"content":" assertParseSuccess(parser, COMPANY_NAME_DESC_AMY + CONTACT_NAME_DESC_AMY + CONTACT_EMAIL_DESC_AMY","lastModifiedDate":"2024-03-16"},{"lineNumber":197,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_AMY + LOCATION_DESC_AMY + APPLICATION_STATUS_DESC_AMY + DESCRIPTION_DESC_AMY","lastModifiedDate":"2024-03-16"},{"lineNumber":198,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_AMY, new InternshipAddCommand(expectedInternship));","lastModifiedDate":"2024-03-16"},{"lineNumber":199,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":200,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":201,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":202,"author":{"gitId":"HM33-Stu"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":203,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipAddCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":204,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":205,"author":{"gitId":"HM33-Stu"},"content":" // missing company name prefix","lastModifiedDate":"2024-03-16"},{"lineNumber":206,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, VALID_COMPANY_NAME_BOB + DESCRIPTION_DESC_BOB + APPLICATION_STATUS_DESC_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":207,"author":{"gitId":"HM33-Stu"},"content":" expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":208,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":209,"author":{"gitId":"HM33-Stu"},"content":" // missing description prefix","lastModifiedDate":"2024-03-16"},{"lineNumber":210,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + VALID_DESCRIPTION_BOB + APPLICATION_STATUS_DESC_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":211,"author":{"gitId":"HM33-Stu"},"content":" expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":212,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":213,"author":{"gitId":"HM33-Stu"},"content":" // missing status prefix","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + DESCRIPTION_DESC_BOB + VALID_APPLICATION_STATUS_BOB,","lastModifiedDate":"2024-03-16"},{"lineNumber":215,"author":{"gitId":"HM33-Stu"},"content":" expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":216,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":217,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":218,"author":{"gitId":"HM33-Stu"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-16"},{"lineNumber":219,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, VALID_COMPANY_NAME_BOB + VALID_DESCRIPTION_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":220,"author":{"gitId":"HM33-Stu"},"content":" + VALID_APPLICATION_STATUS_BOB, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":221,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":222,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":223,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":224,"author":{"gitId":"HM33-Stu"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":225,"author":{"gitId":"HM33-Stu"},"content":" // invalid company name","lastModifiedDate":"2024-03-16"},{"lineNumber":226,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, INVALID_COMPANY_NAME_DESC + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":227,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":228,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":229,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":230,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact name","lastModifiedDate":"2024-03-16"},{"lineNumber":231,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + INVALID_CONTACT_NAME_DESC + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":232,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":233,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":234,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":235,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact email","lastModifiedDate":"2024-03-16"},{"lineNumber":236,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + INVALID_CONTACT_EMAIL_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":237,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":238,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, ContactEmail.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":239,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":240,"author":{"gitId":"HM33-Stu"},"content":" // invalid contact number","lastModifiedDate":"2024-03-16"},{"lineNumber":241,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":242,"author":{"gitId":"HM33-Stu"},"content":" + INVALID_CONTACT_NUMBER_DESC + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":243,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, ContactNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":244,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":245,"author":{"gitId":"HM33-Stu"},"content":" // invalid location","lastModifiedDate":"2024-03-16"},{"lineNumber":246,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":247,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + INVALID_LOCATION_DESC + APPLICATION_STATUS_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":248,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":249,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":250,"author":{"gitId":"HM33-Stu"},"content":" // invalid application status","lastModifiedDate":"2024-03-16"},{"lineNumber":251,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":252,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + INVALID_APPLICATION_STATUS_DESC + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":253,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, ApplicationStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":254,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":255,"author":{"gitId":"HM33-Stu"},"content":" // invalid description","lastModifiedDate":"2024-03-16"},{"lineNumber":256,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + CONTACT_NAME_DESC_BOB + CONTACT_EMAIL_DESC_BOB","lastModifiedDate":"2024-03-16"},{"lineNumber":257,"author":{"gitId":"HM33-Stu"},"content":" + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB + INVALID_DESCRIPTION_DESC","lastModifiedDate":"2024-03-16"},{"lineNumber":258,"author":{"gitId":"HM33-Stu"},"content":" + ROLE_DESC_BOB, Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":259,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":260,"author":{"gitId":"HM33-Stu"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-16"},{"lineNumber":261,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, COMPANY_NAME_DESC_BOB + INVALID_CONTACT_NAME_DESC","lastModifiedDate":"2024-04-03"},{"lineNumber":262,"author":{"gitId":"HM33-Stu"},"content":" + INVALID_CONTACT_EMAIL_DESC + CONTACT_NUMBER_DESC_BOB + LOCATION_DESC_BOB + APPLICATION_STATUS_DESC_BOB","lastModifiedDate":"2024-04-03"},{"lineNumber":263,"author":{"gitId":"HM33-Stu"},"content":" + DESCRIPTION_DESC_BOB + ROLE_DESC_BOB, ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-03"},{"lineNumber":264,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":265,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":265}},{"path":"src/test/java/seedu/address/logic/parser/InternshipAddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.TASK_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_TASK_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipAddTaskCommand;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"public class InternshipAddTaskCommandParserTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" private static final String SAMPLE_TASK \u003d \"Sample task\";","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipAddTaskCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" private InternshipAddTaskCommandParser parser \u003d new InternshipAddTaskCommandParser();","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" String userInputWithoutIndex \u003d PREFIX_TASK + SAMPLE_TASK;","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" String userInputWithoutTask \u003d \"1 \" + PREFIX_TASK;","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" String userInputWithoutPrefixTask \u003d \"1 \" + SAMPLE_TASK;","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" // no index specified","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutIndex, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" // no task specified","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutTask, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand.MESSAGE_EMPTY_TASK));","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" // no prefix task","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutPrefixTask, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" // negative index","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, \"-5 \" + PREFIX_TASK + SAMPLE_TASK, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" // zero index","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, \"0 \" + PREFIX_TASK + SAMPLE_TASK, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + TASK_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" InternshipAddTaskCommand expectedCommand \u003d new InternshipAddTaskCommand(targetIndex, new Task(VALID_TASK_AMY));","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":3,"LWS49":65}},{"path":"src/test/java/seedu/address/logic/parser/InternshipCommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"public class InternshipCommandParserTestUtil {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" public static void assertParseSuccess(InternshipParser\u003c? extends InternshipCommand\u003e parser, String userInput,","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" InternshipCommand expectedCommand) {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" InternshipCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" public static void assertParseFailure(InternshipParser\u003c? extends InternshipCommand\u003e parser, String userInput,","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" String expectedMessage) {","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":7,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/InternshipDataParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipClearCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipDeleteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipEditCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipExitCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipFindCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipHelpCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.EditInternshipDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipDataParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" private final InternshipDataParser parser \u003d new InternshipDataParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" Internship internship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" InternshipAddCommand command \u003d (InternshipAddCommand) parser.parseCommand(","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" InternshipUtil.getAddCommand(internship));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" assertEquals(new InternshipAddCommand(internship), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipClearCommand.COMMAND_WORD) instanceof InternshipClearCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipClearCommand.COMMAND_WORD + \" 3\") instanceof InternshipClearCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" InternshipDeleteCommand command \u003d (InternshipDeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" InternshipDeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_INTERNSHIP.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" Internship internship \u003d new InternshipBuilder().build();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder(internship).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" InternshipEditCommand command \u003d (InternshipEditCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" InternshipEditCommand.COMMAND_WORD + \" \" + INDEX_FIRST_INTERNSHIP.getOneBased()","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" + \" \" + InternshipUtil.getEditInternshipDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new InternshipEditCommand(INDEX_FIRST_INTERNSHIP, descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipExitCommand.COMMAND_WORD) instanceof InternshipExitCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipExitCommand.COMMAND_WORD + \" 3\") instanceof InternshipExitCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand.COMMAND_WORD + \" \" + InternshipFindCommand.MODE_WITHALL","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" + \" \" + PREFIX_COMPANY + \" Microsoft Google \") instanceof InternshipFindCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand.COMMAND_WORD + \" \" + InternshipFindCommand.MODE_WITHANY","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" + \" \" + PREFIX_LOCATION + \" remote local \" + PREFIX_CONTACT_NAME + \" tom dick harry \")","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" instanceof InternshipFindCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipHelpCommand.COMMAND_WORD) instanceof InternshipHelpCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipHelpCommand.COMMAND_WORD + \" 3\") instanceof InternshipHelpCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipListCommand.COMMAND_WORD) instanceof InternshipListCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(parser.parseCommand(InternshipListCommand.COMMAND_WORD + \" 3\") instanceof InternshipListCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" InternshipHelpCommand.MESSAGE_USAGE), () -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"HM33-Stu":3,"LWS49":6,"CaptainKeqing":96}},{"path":"src/test/java/seedu/address/logic/parser/InternshipDeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.commands.InternshipDeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" * outside the InternshipDeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" * same path through the InternshipDeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"public class InternshipDeleteCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" private final InternshipDeleteCommandParser parser \u003d new InternshipDeleteCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" public void parse_validArgs_returnsInternshipDeleteCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" assertParseSuccess(parser, \"1\", new InternshipDeleteCommand(INDEX_FIRST_INTERNSHIP));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, \"a\", MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" public void parse_emptyArgs_throwsParseException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" InternshipDeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"HM33-Stu":41}},{"path":"src/test/java/seedu/address/logic/parser/InternshipDeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DEADLINE_DESC_AMY;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.logic.commands.InternshipDeleteTaskCommand;","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"public class InternshipDeleteTaskCommandParserTest {","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" // deletetask INDEX /selecttask TASKINDEX","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" private static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipDeleteTaskCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" private InternshipDeleteTaskCommandParser parser \u003d new InternshipDeleteTaskCommandParser();","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" String userInputWithoutIndex \u003d String.format(\"%s %d\", PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" String userInputWithoutPrefixSelectTask \u003d String.format(\"%d %d\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" String userInputWithoutTaskIndex \u003d String.format(\"%d %s %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" PREFIX_SELECT_TASK, DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" // no internship index specified","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputWithoutIndex, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" // no prefix select task","lastModifiedDate":"2024-03-30"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputWithoutPrefixSelectTask, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-30"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // no task index specified","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputWithoutTaskIndex, InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" String userInputNegativeInternshipIndex \u003d String.format(\"%d %s %d\", -5, PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" String userInputZeroInternshipIndex \u003d String.format(\"%d %s %d\", 0, PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" String userInputNegativeTaskIndex \u003d String.format(\"%d %s %d\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-30"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" PREFIX_SELECT_TASK, -5);","lastModifiedDate":"2024-03-30"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" String userInputZeroTaskIndex \u003d String.format(\"%d %s %d\", internshipIndex.getOneBased(), PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" 0);","lastModifiedDate":"2024-03-30"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" // negative index","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputNegativeInternshipIndex, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" // zero index","lastModifiedDate":"2024-03-30"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputZeroInternshipIndex, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" // negative index","lastModifiedDate":"2024-03-30"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputNegativeTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" // zero index","lastModifiedDate":"2024-03-30"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputZeroTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-30"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-30"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-30"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" String userInput \u003d String.format(\"%d %s %d\", internshipIndex.getOneBased(), PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-30"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" taskIndex.getOneBased());","lastModifiedDate":"2024-03-30"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" InternshipDeleteTaskCommand expectedCommand \u003d new InternshipDeleteTaskCommand(internshipIndex, taskIndex);","lastModifiedDate":"2024-03-30"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-30"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"jieqiboh":89}},{"path":"src/test/java/seedu/address/logic/parser/InternshipEditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.APPLICATION_STATUS_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.COMPANY_NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.COMPANY_NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.CONTACT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_APPLICATION_STATUS_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_COMPANY_NAME_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_EMAIL_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_NAME_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_CONTACT_NUMBER_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_LOCATION_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.LOCATION_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.ROLE_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_APPLICATION_STATUS_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_EMAIL_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NAME_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NUMBER_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NUMBER_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_LOCATION_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_ROLE_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_THIRD_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.InternshipMessages;","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":"import seedu.address.testutil.EditInternshipDescriptorBuilder;","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":"public class InternshipEditCommandParserTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipEditCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" private InternshipEditCommandParser parser \u003d new InternshipEditCommandParser();","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" // no index specified","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, VALID_COMPANY_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" // no field specified","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" // negative index","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"-5\" + COMPANY_NAME_DESC_AMY, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" // zero index","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"0\" + COMPANY_NAME_DESC_AMY, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_COMPANY_NAME_DESC, CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" // invalid name","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_LOCATION_DESC, Location.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" //invalid location","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_DESCRIPTION_DESC, Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" //invalid description","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_CONTACT_NAME_DESC, ContactName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" //invalid contact name","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_CONTACT_EMAIL_DESC, ContactEmail.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" //invalid contact email","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_CONTACT_NUMBER_DESC, ContactNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":" //invalid contact number","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_APPLICATION_STATUS_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" ApplicationStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" //invalid application status","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"LWS49"},"content":" // invalid company name followed by valid email","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_COMPANY_NAME_DESC + CONTACT_EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"LWS49"},"content":" CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, \"1\" + INVALID_COMPANY_NAME_DESC + INVALID_CONTACT_EMAIL_DESC","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"LWS49"},"content":" + VALID_CONTACT_NUMBER_AMY + VALID_COMPANY_NAME_AMY, CompanyName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"LWS49"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + COMPANY_NAME_DESC_AMY + LOCATION_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" + DESCRIPTION_DESC_AMY + ROLE_DESC_AMY + CONTACT_NAME_DESC_AMY + CONTACT_EMAIL_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"LWS49"},"content":" + CONTACT_NUMBER_DESC_AMY + APPLICATION_STATUS_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_AMY).withLocation(VALID_LOCATION_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"LWS49"},"content":" .withDescription(VALID_DESCRIPTION_AMY).withRole(VALID_ROLE_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"LWS49"},"content":" .withContactName(VALID_CONTACT_NAME_AMY).withContactEmail(VALID_CONTACT_EMAIL_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"LWS49"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_AMY).withApplicationStatus(VALID_APPLICATION_STATUS_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"LWS49"},"content":" .build();","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"LWS49"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + CONTACT_NUMBER_DESC_BOB + CONTACT_EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" .withContactEmail(VALID_CONTACT_EMAIL_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" // name","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_THIRD_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":156,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + COMPANY_NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":157,"author":{"gitId":"LWS49"},"content":" EditInternshipDescriptor descriptor \u003d new EditInternshipDescriptorBuilder()","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" .withCompanyName(VALID_COMPANY_NAME_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" InternshipEditCommand expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"LWS49"},"content":" // location","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + LOCATION_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withLocation(VALID_LOCATION_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"LWS49"},"content":" // description","lastModifiedDate":"2024-03-15"},{"lineNumber":169,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withDescription(VALID_DESCRIPTION_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":171,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":172,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":173,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":174,"author":{"gitId":"LWS49"},"content":" // role","lastModifiedDate":"2024-03-15"},{"lineNumber":175,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + ROLE_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withRole(VALID_ROLE_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":177,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":178,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":179,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":180,"author":{"gitId":"LWS49"},"content":" // contact name","lastModifiedDate":"2024-03-15"},{"lineNumber":181,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + CONTACT_NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":182,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withContactName(VALID_CONTACT_NAME_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":183,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":186,"author":{"gitId":"LWS49"},"content":" // contact email","lastModifiedDate":"2024-03-15"},{"lineNumber":187,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + CONTACT_EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":188,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withContactEmail(VALID_CONTACT_EMAIL_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":189,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":190,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":191,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":192,"author":{"gitId":"LWS49"},"content":" // contact number","lastModifiedDate":"2024-03-15"},{"lineNumber":193,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + CONTACT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":194,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withContactNumber(VALID_CONTACT_NUMBER_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":195,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":198,"author":{"gitId":"LWS49"},"content":" // application status","lastModifiedDate":"2024-03-15"},{"lineNumber":199,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + APPLICATION_STATUS_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":200,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptorBuilder().withApplicationStatus(VALID_APPLICATION_STATUS_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":201,"author":{"gitId":"LWS49"},"content":" expectedCommand \u003d new InternshipEditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":202,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":203,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":204,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":205,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":206,"author":{"gitId":"LWS49"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-15"},{"lineNumber":207,"author":{"gitId":"LWS49"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-15"},{"lineNumber":208,"author":{"gitId":"LWS49"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-15"},{"lineNumber":209,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":210,"author":{"gitId":"LWS49"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-15"},{"lineNumber":211,"author":{"gitId":"LWS49"},"content":" Index targetIndex \u003d INDEX_FIRST_INTERNSHIP;","lastModifiedDate":"2024-03-15"},{"lineNumber":212,"author":{"gitId":"LWS49"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_CONTACT_NUMBER_DESC + CONTACT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":213,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":214,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInput, InternshipMessages","lastModifiedDate":"2024-03-15"},{"lineNumber":215,"author":{"gitId":"LWS49"},"content":" .getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-15"},{"lineNumber":216,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":217,"author":{"gitId":"LWS49"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + CONTACT_NUMBER_DESC_BOB + INVALID_CONTACT_NUMBER_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":219,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":220,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInput, InternshipMessages","lastModifiedDate":"2024-03-15"},{"lineNumber":221,"author":{"gitId":"LWS49"},"content":" .getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER));","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":223,"author":{"gitId":"LWS49"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-15"},{"lineNumber":224,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + COMPANY_NAME_DESC_AMY + CONTACT_NUMBER_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":225,"author":{"gitId":"LWS49"},"content":" + CONTACT_NUMBER_DESC_BOB + COMPANY_NAME_DESC_BOB + CONTACT_EMAIL_DESC_AMY + CONTACT_NUMBER_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"LWS49"},"content":" + CONTACT_EMAIL_DESC_AMY + CONTACT_NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInput, InternshipMessages.getErrorMessageForDuplicatePrefixes(PREFIX_COMPANY,","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"LWS49"},"content":" PREFIX_CONTACT_NUMBER, PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-15"},{"lineNumber":230,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"LWS49"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"LWS49"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_CONTACT_NUMBER_DESC + INVALID_ROLE_DESC","lastModifiedDate":"2024-03-15"},{"lineNumber":233,"author":{"gitId":"LWS49"},"content":" + INVALID_CONTACT_EMAIL_DESC + INVALID_CONTACT_NUMBER_DESC + INVALID_ROLE_DESC","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"LWS49"},"content":" + INVALID_CONTACT_EMAIL_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInput, InternshipMessages","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"LWS49"},"content":" .getErrorMessageForDuplicatePrefixes(PREFIX_CONTACT_NUMBER, PREFIX_ROLE, PREFIX_CONTACT_EMAIL));","lastModifiedDate":"2024-03-15"},{"lineNumber":238,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":239,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":239}},{"path":"src/test/java/seedu/address/logic/parser/InternshipFindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipFindCommand.MODE_WITHALL;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipFindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.InternshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipFindCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipFindCommandParser parser \u003d new InternshipFindCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipFindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_invalidMode_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, \"withsome /com Microsoft Google\",","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.INVALID_MODE_SPECIFIED));","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_prefixPresentButNoKey_throwsParseException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /com\",","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand.NO_KEYWORD_SPECIFIED);","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_invalidPrefix_throwsParseException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /invalidPrefix Microsoft Google\",","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.NO_SEARCH_KEY_SPECIFIED));","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_noMode_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, \" /com Microsoft Google\",","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.INVALID_MODE_SPECIFIED));","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_noSearchKey_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL,","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.NO_SEARCH_KEY_SPECIFIED));","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" InternshipFindCommand expectedFindCommand \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipFindCommand(new InternshipContainsKeywordsPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" \"Microsoft Google\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, true));","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" assertParseSuccess(parser, MODE_WITHALL + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" + PREFIX_COMPANY + \" Microsoft Google \", expectedFindCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" assertParseSuccess(parser, MODE_WITHALL + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" + PREFIX_COMPANY + \" \\n Microsoft \\n \\t Google \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public void parse_unsupportedPrefix_throwsParseException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Single unsupported prefix","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /phone 99999999\",","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.UNSUPPORTED_PREFIX_SPECIFIED, \"/phone\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Multiple unsupported prefixes","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /phone 99999999 /email helloworld@gmail.com\",","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.UNSUPPORTED_PREFIX_SPECIFIED, \"/email, /phone\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Multiple unsupported prefixes with supported prefix","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" assertParseFailure(parser, MODE_WITHALL + \" /selecttask 2 /phone 99999999 /com Microsoft Google\",","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" String.format(InternshipFindCommand.UNSUPPORTED_PREFIX_SPECIFIED, \"/phone, /selecttask\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" public void getPrefixesPresent() {","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Prefixes present","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(\"withall /com Microsoft Google\", PREFIX_COMPANY);","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixesPresent \u003d InternshipFindCommandParser","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" .getPrefixesPresent(argMultimap, new Prefix[]{PREFIX_COMPANY});","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(1, prefixesPresent.length);","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(PREFIX_COMPANY, prefixesPresent[0]);","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Prefixes not present","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(\"withall /com Microsoft Google\", PREFIX_COMPANY);","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" prefixesPresent \u003d InternshipFindCommandParser","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" .getPrefixesPresent(argMultimap, new Prefix[]{PREFIX_CONTACT_EMAIL});","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(0, prefixesPresent.length);","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"CaptainKeqing":100}},{"path":"src/test/java/seedu/address/logic/parser/InternshipParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-03"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-04-03"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-04-03"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"class InternshipParserUtilTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" void parseRemark_null_throwsNullPointerException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(NullPointerException.class, () -\u003e InternshipParserUtil.parseRemark(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" void parseRemarks_validValue_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" // whitespace only","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new Remark(\"\"), InternshipParserUtil.parseRemark(\" \"));","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" // removes leading and trailing whitespaces","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new Remark(\"This is a remark\"), InternshipParserUtil.parseRemark(\" This is a remark \"));","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" // multiple words","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(new Remark(\"This is a remark\"), InternshipParserUtil.parseRemark(\"This is a remark\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" public void parseOptionalRole_emptyOptional_returnsUnknown() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(new Role(\"Unknown Role\"), InternshipParserUtil.parseOptionalRole(Optional.empty()));","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" public void parseOptionalRole_presentOptionalBlank_returnsUnknown() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(new Role(\"Unknown Role\"), InternshipParserUtil.parseOptionalRole(Optional.empty()));","lastModifiedDate":"2024-04-03"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" public void parseOptionalLocation_emptyOptional_returnsUnknown() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(new Location(\"UNKNOWN\"), InternshipParserUtil.parseOptionalLocation(Optional.empty()));","lastModifiedDate":"2024-04-03"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" public void parseOptionalLocation_presentOptionalBlank_returnsUnknown() throws ParseException {","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" assertEquals(new Location(\"UNKNOWN\"), InternshipParserUtil.parseOptionalLocation(Optional.empty()));","lastModifiedDate":"2024-04-03"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" void anyPrefixesPresent_noPrefixesPresent_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \"No prefixes here, just a regular string\";","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.anyPrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" void anyPrefixesPresent_onePrefixPresentWithValue_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google random string random string Software Engineer\";","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.anyPrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" void anyPrefixesPresent_onePrefixPresentWithoutValue_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY;","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.anyPrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_noPrefixesPresent_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \"No prefixes here, just a regular string\";","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_onePrefixPresentWithValue_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google random string random string Software Engineer\";","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_onePrefixPresentWithNoValue_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY;","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_onePrefixPresentWithEmptyValue_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" void prefixesPresentAreNotEmpty_onePrefixPresentWithValueOnePrefixPresentWithEmptyValue_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google \" + PREFIX_ROLE + \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.prefixesPresentAreNotEmpty(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" void arePrefixesPresent_noPrefixesPresent_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \"No prefixes here, just a regular string\";","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.arePrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" void arePrefixesPresent_somePrefixesPresent_false() {","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google\";","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(InternshipParserUtil.arePrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":140,"author":{"gitId":"CaptainKeqing"},"content":" void arePrefixesPresent_allPrefixesPresent_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" Google \" + PREFIX_ROLE + \" Software Engineer\";","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.arePrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":" void arePrefixesPresent_prefixesPresentButEmpty_true() {","lastModifiedDate":"2024-04-02"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] prefixes \u003d {PREFIX_COMPANY, PREFIX_ROLE};","lastModifiedDate":"2024-04-02"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":" String argString \u003d \" \" + PREFIX_COMPANY + \" \" + PREFIX_ROLE + \" \";","lastModifiedDate":"2024-04-02"},{"lineNumber":151,"author":{"gitId":"CaptainKeqing"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argString, prefixes);","lastModifiedDate":"2024-04-02"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(InternshipParserUtil.arePrefixesPresent(argMultimap, prefixes));","lastModifiedDate":"2024-04-02"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"HM33-Stu":26,"CaptainKeqing":128}},{"path":"src/test/java/seedu/address/logic/parser/InternshipSetDeadlineCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.logic.InternshipMessages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.DEADLINE_DESC_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.INVALID_DEADLINE_DESC;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DEADLINE_AMY;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SELECT_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.InternshipCommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import static seedu.address.testutil.InternshipTypicalIndexes.INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipSetDeadlineCommand;","lastModifiedDate":"2024-04-03"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"public class InternshipSetDeadlineCommandParserTest {","lastModifiedDate":"2024-04-03"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" private static final Index INDEX_SECOND_TASK \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, InternshipSetDeadlineCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-04-03"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" private InternshipSetDeadlineCommandParser parser \u003d new InternshipSetDeadlineCommandParser();","lastModifiedDate":"2024-04-03"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" String userInputWithoutIndex \u003d String.format(\"%s %d %s\", PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" String userInputWithoutPrefixSelectTask \u003d String.format(\"%d %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" String userInputWithoutTaskIndex \u003d String.format(\"%d %s %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" String userInputWithoutPrefixDeadline \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, taskIndex.getOneBased(), VALID_DEADLINE_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" String userInputWithoutDeadlineText \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, taskIndex.getOneBased(), PREFIX_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" // no index specified","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutIndex, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" // no prefix select task","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutPrefixSelectTask, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" // no task index specified","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputWithoutTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" // no prefix deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutPrefixDeadline, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" // no deadline text","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithoutDeadlineText, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" Deadline.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" String userInputNegativeInternshipIndex \u003d String.format(\"%d %s %d %s\", -5, PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" String userInputZeroInternshipIndex \u003d String.format(\"%d %s %d %s\", 0, PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" String userInputNegativeTaskIndex \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, -5, DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" String userInputZeroTaskIndex \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(), PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" 0, DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" String userInputWithInvalidDeadline \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(),","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" PREFIX_SELECT_TASK, 1, INVALID_DEADLINE_DESC);","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" // negative index","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputNegativeInternshipIndex, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" // zero index","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputZeroInternshipIndex, MESSAGE_INVALID_INTERNSHIP_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":" // negative index","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputNegativeTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" // zero index","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" assertParseFailure(parser, userInputZeroTaskIndex, MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" // invalid deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" assertParseFailure(parser, userInputWithInvalidDeadline, String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" Deadline.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" Index internshipIndex \u003d INDEX_SECOND_INTERNSHIP;","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" Index taskIndex \u003d INDEX_SECOND_TASK;","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":" String userInput \u003d String.format(\"%d %s %d %s\", internshipIndex.getOneBased(), PREFIX_SELECT_TASK,","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" taskIndex.getOneBased(), DEADLINE_DESC_AMY);","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" InternshipSetDeadlineCommand expectedCommand \u003d new InternshipSetDeadlineCommand(internshipIndex, taskIndex,","lastModifiedDate":"2024-04-03"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" new Deadline(VALID_DEADLINE_AMY));","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":7,"LWS49":98}},{"path":"src/test/java/seedu/address/logic/parser/InternshipSortCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipSortCommand;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSortCommandParserTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" private final InternshipSortCommandParser parser \u003d new InternshipSortCommandParser();","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" public void parseValidInput() throws ParseException {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand expectedCommand \u003d new InternshipSortCommand(InternshipSortCommandParser.FieldEnum.COMPANY,","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum.ASCENDING);","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand actualCommand \u003d parser.parse(\" \" + PREFIX_COMPANY.getPrefix() + \" asc\");","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expectedCommand, actualCommand);","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" // Valid input: \"email desc\"","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" expectedCommand \u003d new InternshipSortCommand(InternshipSortCommandParser.FieldEnum.CONTACT_EMAIL,","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum.DESCENDING);","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" actualCommand \u003d parser.parse(\" \" + PREFIX_CONTACT_EMAIL.getPrefix() + \" desc\");","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expectedCommand, actualCommand);","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" public void parseEmptyField() {","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: empty field","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" asc\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" public void parseEmptyOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: empty order","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix()));","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" public void parseEmptyFieldAndOrder() {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: empty field and order","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" public void parseEmptyInput() {","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: empty input","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" public void parseExtraArguments() {","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: extra arguments","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix() + \" asc extra\"));","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" public void parseMultiplePrefix() {","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: multiple prefixes","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix() + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" + PREFIX_CONTACT_EMAIL.getPrefix() + \" asc\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" public void parseInvalidField() {","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: invalid field","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" invalid_field asc\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" public void parseInvalidOrder() {","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: invalid order","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix() + \" invalid_order\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" public void parseInvalidFieldAndOrder() {","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: invalid field and order","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" invalid_field invalid_order\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" public void parseMultipleFields() {","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" // Invalid input: multiple fields","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + PREFIX_COMPANY.getPrefix()","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" + \" asc \" + PREFIX_CONTACT_EMAIL + \" asc\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" public void parseValidInput_contactNameAsc() throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand expectedCommand \u003d new InternshipSortCommand(","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_NAME,","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.OrderEnum.ASCENDING","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommand actualCommand \u003d parser.parse(\" \" + PREFIX_CONTACT_NAME.getPrefix() + \" asc\");","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expectedCommand, actualCommand);","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" public void getValue() {","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" assertEquals(PREFIX_COMPANY.getPrefix(), InternshipSortCommandParser.FieldEnum.COMPANY.getValue());","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" public void fromPrefixString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" assertThrows(ParseException.class, () -\u003e InternshipSortCommandParser.FieldEnum.fromPrefixString(\"c\"));","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"theman-oj10":111}},{"path":"src/test/java/seedu/address/logic/parser/PrefixTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"class PrefixTest {","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" void getPrefixesAsString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Empty Prefix[]","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] emptyPrefixes \u003d new Prefix[]{};","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(\"\", Prefix.getPrefixesAsString(\", \", emptyPrefixes));","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Single Prefix","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] singlePrefixes \u003d new Prefix[]{PREFIX_COMPANY};","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(\"/com\", Prefix.getPrefixesAsString(\", \", singlePrefixes));","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" // EP: Multiple Prefixes","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" Prefix[] multiplePrefixes \u003d new Prefix[]{PREFIX_COMPANY, PREFIX_CONTACT_NAME, PREFIX_LOCATION};","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(\"/com, /poc, /loc\", Prefix.getPrefixesAsString(\", \", multiplePrefixes));","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"CaptainKeqing":25}},{"path":"src/test/java/seedu/address/model/InternshipDataTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.model.util.InternshipSampleDataUtil.EMPTY_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.util.InternshipSampleDataUtil.EMPTY_TASKLIST;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":"public class InternshipDataTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" private final InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" public void testAddInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Amazon\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Business Development Associate\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipData.hasInternship(internship));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" public void testRemoveInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Google\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"johndoe@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"12345678\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Software Engineer\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" data.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" data.removeInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" assertFalse(data.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" public void testSetInternships() {","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Facebook\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Alice Smith\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"alicesmith@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"98765432\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"accepted\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Marketing Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Marketing Intern\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Microsoft\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Bob Brown\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"bobbrown@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"87654321\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Software Developer\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" List\u003cInternship\u003e internships \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" internships.add(internship1);","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" internships.add(internship2);","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" data.setInternships(internships);","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(internship1));","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(internship2));","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" public void testResetData() {","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Apple\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Eve Green\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"evegreen@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"13579246\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Product Management Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Product Manager\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" data.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" InternshipData newData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" Internship newInternship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Tesla\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Elon Musk\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"elonmusk@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"98765432\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"accepted\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Engineering Intern\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" newData.addInternship(newInternship);","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" data.resetData(newData);","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" assertFalse(data.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(newInternship));","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" public void testHasInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"SpaceX\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Elon Musk\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"elonmusk@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"98765432\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"accepted\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Engineering Intern\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" data.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" public void testSetInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Amazon\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Business Development Associate\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Google\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"johndoe@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"12345678\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Software Engineer\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" EMPTY_REMARK,","lastModifiedDate":"2024-03-26"},{"lineNumber":197,"author":{"gitId":"LWS49"},"content":" EMPTY_TASKLIST","lastModifiedDate":"2024-03-26"},{"lineNumber":198,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"theman-oj10"},"content":" data.addInternship(internship1);","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":" data.setInternship(internship1, internship2);","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" assertFalse(data.hasInternship(internship1));","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" assertTrue(data.hasInternship(internship2));","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":" public void testEquals() {","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":" InternshipData data1 \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" InternshipData data2 \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" assertEquals(data1, data2);","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":" public void testGetInternshipList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"theman-oj10"},"content":" InternshipData data \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":219,"author":{"gitId":"theman-oj10"},"content":" ObservableList\u003cInternship\u003e internshipList \u003d data.getInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":" assertNotNull(internshipList);","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipList.isEmpty());","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":" public void constructor() {","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"theman-oj10"},"content":" assertEquals(Collections.emptyList(), internshipData.getInternshipList());","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":230,"author":{"gitId":"theman-oj10"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e internshipData.resetData(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"theman-oj10"},"content":" public void resetData_withValidReadOnlyInternshipData_replacesData() {","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"theman-oj10"},"content":" InternshipData newData \u003d getTypicalInternshipData();","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"theman-oj10"},"content":" internshipData.resetData(newData);","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"theman-oj10"},"content":" assertEquals(newData, internshipData);","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e internshipData.hasInternship(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship_internshipNotInInternshipData_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"theman-oj10"},"content":" assertFalse(internshipData.hasInternship(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship_internshipInInternshipData() {","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipData.hasInternship(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship_internshipWithSameIdentityFieldsInInternshipData() {","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"theman-oj10"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withCompanyName(\"Google\")","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"theman-oj10"},"content":" .withContactName(\"John Doe\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"theman-oj10"},"content":" assertFalse(internshipData.hasInternship(editedAlice));","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"theman-oj10"},"content":" public void getInternshipList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"theman-oj10"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e internshipData.getInternshipList().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"theman-oj10"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"theman-oj10"},"content":" String expected \u003d InternshipData.class.getCanonicalName() + \"{Internship list\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"theman-oj10"},"content":" + internshipData.getInternshipList() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":273,"author":{"gitId":"theman-oj10"},"content":" assertEquals(expected, internshipData.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":274,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":275,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":276,"author":{"gitId":"theman-oj10"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":277,"author":{"gitId":"theman-oj10"},"content":" * A stub ReadOnlyInternshipData whose internships list can violate interface constraints.","lastModifiedDate":"2024-03-17"},{"lineNumber":278,"author":{"gitId":"theman-oj10"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":279,"author":{"gitId":"theman-oj10"},"content":" private static class InternshipDataStub implements ReadOnlyInternshipData {","lastModifiedDate":"2024-03-17"},{"lineNumber":280,"author":{"gitId":"theman-oj10"},"content":" private final ObservableList\u003cInternship\u003e internships \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-17"},{"lineNumber":281,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":282,"author":{"gitId":"theman-oj10"},"content":" InternshipDataStub(Collection\u003cInternship\u003e internships) {","lastModifiedDate":"2024-03-17"},{"lineNumber":283,"author":{"gitId":"theman-oj10"},"content":" this.internships.setAll(internships);","lastModifiedDate":"2024-03-17"},{"lineNumber":284,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":285,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":286,"author":{"gitId":"theman-oj10"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":287,"author":{"gitId":"theman-oj10"},"content":" public ObservableList\u003cInternship\u003e getInternshipList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":288,"author":{"gitId":"theman-oj10"},"content":" return internships;","lastModifiedDate":"2024-03-17"},{"lineNumber":289,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":290,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":291,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":292,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":293,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jieqiboh":11,"LWS49":19,"theman-oj10":263}},{"path":"src/test/java/seedu/address/model/InternshipModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.commands.InternshipComparators;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.logic.parser.InternshipSortCommandParser;","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":"public class InternshipModelManagerTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" private final InternshipModelManager internshipModelManager \u003d new InternshipModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" private final Internship internship \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Amazon\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Business Development Associate\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" new Remark(\"\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" new TaskList()","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":" public void constructor() {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" ReadOnlyInternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" ReadOnlyInternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager modelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipData, modelManager.getInternshipData());","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" assertEquals(Paths.get(\"data\", \"internshipdata.json\"), modelManager.getInternshipDataFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" public void addInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipModelManager.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipDataFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" Path path \u003d Paths.get(\"test.json\");","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.setInternshipDataFilePath(path);","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" assertEquals(path, internshipModelManager.getInternshipDataFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" public void getFilteredInternshipList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.getFilteredInternshipList().remove(0));","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" public void updateFilteredInternshipList_nullPredicate_throwsNullPointerException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e internshipModelManager.updateFilteredInternshipList(null));","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" public void sortInternshipList_nullComparator_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e internshipModelManager.sortFilteredInternshipList(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" public void sortInternshipList_validComparator_success() {","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship);","lastModifiedDate":"2024-03-27"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.sortFilteredInternshipList(InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.COMPANY, true));","lastModifiedDate":"2024-03-27"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internship, internshipModelManager.getFilteredInternshipList().get(0));","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" public void equals() {","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager modelManagerCopy \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipModelManager, modelManagerCopy);","lastModifiedDate":"2024-03-30"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipModelManager, internshipModelManager);","lastModifiedDate":"2024-03-30"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" public void hasInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipModelManager.hasInternship(internship));","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" public void deleteInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.deleteInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" assertFalse(internshipModelManager.hasInternship(internship));","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" public void setInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Amazon\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"Mark Johnson\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"markjohnson@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"45678901\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"rejected\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Business Development Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Business Development Associate\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"LWS49"},"content":" new Remark(\"\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" new TaskList()","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" );","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d new Internship(","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" new CompanyName(\"Google\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":" new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" new ContactEmail(\"johndoe@example.com\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" new ContactNumber(\"12345678\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" new Location(\"remote\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" new ApplicationStatus(\"pending\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" new Description(\"Software Engineering Internship\"),","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" new Role(\"Software Engineer\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"LWS49"},"content":" new Remark(\"\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" new TaskList()","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" );","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.addInternship(internship1);","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.setInternship(internship1, internship2);","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" assertFalse(internshipModelManager.hasInternship(internship1));","lastModifiedDate":"2024-03-30"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" assertTrue(internshipModelManager.hasInternship(internship2));","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" public void getInternshipData() {","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipData, internshipModelManager.getInternshipData());","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"LWS49"},"content":" public void getInternshipUserPrefs() {","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" assertEquals(userPrefs, internshipModelManager.getUserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" public void getGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" assertEquals(new GuiSettings(), internshipModelManager.getGuiSettings());","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" public void setGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1000, 1000, 100, 100);","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" assertEquals(guiSettings, internshipModelManager.getGuiSettings());","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipData() {","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" InternshipData internshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"theman-oj10"},"content":" internshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"theman-oj10"},"content":" InternshipModelManager internshipModelManager \u003d new InternshipModelManager(internshipData, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"theman-oj10"},"content":" InternshipData newInternshipData \u003d new InternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"theman-oj10"},"content":" newInternshipData.addInternship(internship);","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.setInternshipData(newInternshipData);","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":" assertEquals(newInternshipData, internshipModelManager.getInternshipData());","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" public void getCompanyNameComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":206,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":207,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withCompanyName(\"AAA\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withCompanyName(\"BBB\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.COMPANY, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byCompanyName(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":214,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":216,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":" public void getDescriptionComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":218,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":219,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withDescription(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withDescription(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.DESCRIPTION, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byDescription(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":226,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":227,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":229,"author":{"gitId":"theman-oj10"},"content":" public void getRoleComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":230,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":231,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRole(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRole(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":233,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":234,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.ROLE, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":235,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byRole(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":236,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":237,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":238,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":239,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":240,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":241,"author":{"gitId":"theman-oj10"},"content":" public void getContactNameComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":242,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":243,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactName(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":244,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactName(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":246,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_NAME, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":247,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byContactName(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":248,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":249,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":250,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":251,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":252,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":253,"author":{"gitId":"theman-oj10"},"content":" public void getContactNumberComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":254,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":255,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactNumber(\"12345678\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":256,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactNumber(\"23456789\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":257,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":258,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_NUMBER, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":259,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byPhone(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":260,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":261,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":262,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":263,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":264,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":265,"author":{"gitId":"theman-oj10"},"content":" public void getLocationComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":266,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":267,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withLocation(\"remote\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":268,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withLocation(\"overseas\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":269,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":270,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.LOCATION, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":271,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byLocation(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":272,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":273,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":274,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":275,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":276,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":277,"author":{"gitId":"theman-oj10"},"content":" public void getRemarkComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":278,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":279,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withRemark(\"aaa\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":280,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withRemark(\"bbb\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":281,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":282,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.REMARK, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":283,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byRemark(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":284,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":285,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":286,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":287,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":288,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":289,"author":{"gitId":"theman-oj10"},"content":" public void getStatusComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":290,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":291,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withApplicationStatus(\"to_apply\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":292,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withApplicationStatus(\"rejected\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":293,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":294,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.STATUS, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":295,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byApplicationStatus(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":296,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":297,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":298,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":299,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":300,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":301,"author":{"gitId":"theman-oj10"},"content":" public void getContactEmailComparator() {","lastModifiedDate":"2024-03-27"},{"lineNumber":302,"author":{"gitId":"theman-oj10"},"content":" InternshipBuilder internshipBuilder \u003d new InternshipBuilder();","lastModifiedDate":"2024-03-27"},{"lineNumber":303,"author":{"gitId":"theman-oj10"},"content":" Internship internship1 \u003d internshipBuilder.withContactEmail(\"email1@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":304,"author":{"gitId":"theman-oj10"},"content":" Internship internship2 \u003d internshipBuilder.withContactEmail(\"email2@gmail.com\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":305,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e testComparator \u003d InternshipSortCommandParser.getComparator(","lastModifiedDate":"2024-04-02"},{"lineNumber":306,"author":{"gitId":"theman-oj10"},"content":" InternshipSortCommandParser.FieldEnum.CONTACT_EMAIL, true);","lastModifiedDate":"2024-03-27"},{"lineNumber":307,"author":{"gitId":"theman-oj10"},"content":" Comparator\u003cInternship\u003e expectedComparator \u003d InternshipComparators.byContactEmail(true);","lastModifiedDate":"2024-03-27"},{"lineNumber":308,"author":{"gitId":"theman-oj10"},"content":" assertEquals(testComparator.compare(internship1, internship2),","lastModifiedDate":"2024-03-27"},{"lineNumber":309,"author":{"gitId":"theman-oj10"},"content":" expectedComparator.compare(internship1, internship2));","lastModifiedDate":"2024-03-27"},{"lineNumber":310,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":311,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":312,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":313,"author":{"gitId":"theman-oj10"},"content":" public void getFilteredInternshipList() {","lastModifiedDate":"2024-03-27"},{"lineNumber":314,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipModelManager.getFilteredInternshipList(),","lastModifiedDate":"2024-03-27"},{"lineNumber":315,"author":{"gitId":"theman-oj10"},"content":" internshipModelManager.getFilteredInternshipList());","lastModifiedDate":"2024-03-27"},{"lineNumber":316,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":317,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jieqiboh":14,"LWS49":16,"theman-oj10":287}},{"path":"src/test/java/seedu/address/model/InternshipUserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"public class InternshipUserPrefsTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullInternshipUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternshipUserPrefs(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullInternshipUserPrefsAndNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nonNullInternshipUserPrefsAndNonNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":" ReadOnlyInternshipUserPrefs emptyUserPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs(emptyUserPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"theman-oj10"},"content":" assertEquals(emptyUserPrefs, userPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nullInternshipUserPrefsAndNonNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"theman-oj10"},"content":" GuiSettings guiSettings \u003d userPrefs.getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"theman-oj10"},"content":" userPrefs \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs finalUserPrefs \u003d userPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e finalUserPrefs.setGuiSettings(guiSettings));","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"theman-oj10"},"content":" public void constructor_nonNullInternshipUserPrefsAndNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"theman-oj10"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPref \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipDataFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setInternshipDataFilePath(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"theman-oj10"},"content":" public void resetData_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.resetData(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"theman-oj10"},"content":" public void resetData_nullUserPrefsAndNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"theman-oj10"},"content":" public void resetData_nullUserPrefsAndNonNullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"theman-oj10"},"content":" GuiSettings guiSettings \u003d userPrefs.getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"theman-oj10"},"content":" userPrefs \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs finalUserPrefs \u003d userPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e finalUserPrefs.setGuiSettings(guiSettings));","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"theman-oj10"},"content":" public void resetData_nonNullUserPrefsAndNonNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"theman-oj10"},"content":" GuiSettings guiSettings \u003d userPrefs.getGuiSettings();","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(guiSettings);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"theman-oj10"},"content":" userPrefs.resetData(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"theman-oj10"},"content":" assert(userPrefs.equals(userPrefs2));","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"theman-oj10"},"content":" public void getInternshipDataFilePath_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"theman-oj10"},"content":" Path intershipDataPath \u003d userPrefs.getInternshipDataFilePath();","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"theman-oj10"},"content":" assert(intershipDataPath !\u003d null);","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"theman-oj10"},"content":" public void setInternshipDataFilePath_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"theman-oj10"},"content":" assertEquals(Paths.get(\"data\", \"internshipdata2.json\"), userPrefs.getInternshipDataFilePath());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"theman-oj10"},"content":" public void hashCode_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"theman-oj10"},"content":" userPrefs.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"theman-oj10"},"content":" public void equals_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"theman-oj10"},"content":" assertFalse(userPrefs.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameInternshipDataFilePathAndGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePathAndGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePathAndSameGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameInternshipDataFilePathAndDifferentGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePathAndNullGuiSettings_nullPointer() {","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"theman-oj10"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs2.setGuiSettings(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullInternshipDataFilePathAndDifferentGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullInternshipDataFilePathAndNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameInternshipDataFilePathAndNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullInternshipDataFilePathAndSameGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentInternshipDataFilePathAndSameGuiSettingsAndNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"theman-oj10"},"content":" public void toString_nonNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"theman-oj10"},"content":" public void toString_nullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"theman-oj10"},"content":" public void toString_nonNullInternshipDataFilePathAndGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"theman-oj10"},"content":" public void toString_nullInternshipDataFilePathAndGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"theman-oj10"},"content":" public void toString_nonNullInternshipDataFilePathAndNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"theman-oj10"},"content":" public void toString_nullInternshipDataFilePathAndNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":273,"author":{"gitId":"theman-oj10"},"content":" userPrefs.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":274,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":275,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":276,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":277,"author":{"gitId":"theman-oj10"},"content":" public void hashCode_nonNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":278,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":279,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":280,"author":{"gitId":"theman-oj10"},"content":" userPrefs.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":281,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":282,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":283,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":284,"author":{"gitId":"theman-oj10"},"content":" public void equals_nonNullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":285,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":286,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":287,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":288,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":289,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":290,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":291,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":292,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":293,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs);","lastModifiedDate":"2024-03-17"},{"lineNumber":294,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":295,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":296,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":297,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":298,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":299,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":300,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":301,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":302,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":303,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":304,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":305,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":306,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameGuiSettings_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":307,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":308,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":309,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":310,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":311,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":312,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":313,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":314,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":315,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullGuiSettingsAndDifferentInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":316,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":317,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":318,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":319,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":320,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":321,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":322,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":323,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullGuiSettingsAndNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":324,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":325,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":326,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":327,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":328,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":329,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":330,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameGuiSettingsAndNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":331,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":332,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":333,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":334,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":335,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":336,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":337,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":338,"author":{"gitId":"theman-oj10"},"content":" public void equals_nullGuiSettingsAndSameInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":339,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":340,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":341,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":342,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":343,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":344,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":345,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":346,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentGuiSettingsAndNullInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":347,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":348,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":349,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":350,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":351,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":352,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":353,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":354,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":355,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameGuiSettingsAndDifferentInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":356,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":357,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":358,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":359,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":360,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":361,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":362,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":363,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":364,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":365,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentGuiSettingsAndSameInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":366,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":367,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":368,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":369,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":370,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":371,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":372,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":373,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":374,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":375,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":376,"author":{"gitId":"theman-oj10"},"content":" public void equals_sameGuiSettingsAndSameInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":377,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":378,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":379,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":380,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":381,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":382,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":383,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":384,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":385,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":386,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":387,"author":{"gitId":"theman-oj10"},"content":" public void equals_differentGuiSettingsAndDifferentInternshipDataFilePath_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":388,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":389,"author":{"gitId":"theman-oj10"},"content":" InternshipUserPrefs userPrefs2 \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-17"},{"lineNumber":390,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":391,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setInternshipDataFilePath(Paths.get(\"data\", \"internshipdata2.json\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":392,"author":{"gitId":"theman-oj10"},"content":" userPrefs.setGuiSettings(userPrefs.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":393,"author":{"gitId":"theman-oj10"},"content":" userPrefs2.setGuiSettings(userPrefs2.getGuiSettings());","lastModifiedDate":"2024-03-17"},{"lineNumber":394,"author":{"gitId":"theman-oj10"},"content":" userPrefs.equals(userPrefs2);","lastModifiedDate":"2024-03-17"},{"lineNumber":395,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":396,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":397,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":398,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"theman-oj10":398}},{"path":"src/test/java/seedu/address/model/internship/ApplicationStatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ApplicationStatusTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new ApplicationStatus(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidApplicationStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" String invalidApplicationStatus \u003d \"\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ApplicationStatus(invalidApplicationStatus));","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public void isValidApplicationStatus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" // null applicationStatuses","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e ApplicationStatus.isValidApplicationStatus(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" // invalid applicationStatuses","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ApplicationStatus.isValidApplicationStatus(\"\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ApplicationStatus.isValidApplicationStatus(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" // valid applicationStatuses","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"to_apply\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"pending\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"rejected\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"accepted\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"ongoing\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"TO_APPLY\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"PENDING\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"REJECTED\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"ACCEPTED\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ApplicationStatus.isValidApplicationStatus(\"ONGOING\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" ;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus applicationStatus \u003d new ApplicationStatus(\"to_apply\");","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" assertTrue(applicationStatus.equals(new ApplicationStatus(\"to_apply\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" assertTrue(applicationStatus.equals(applicationStatus));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" assertFalse(applicationStatus.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" assertFalse(applicationStatus.equals(5.0f));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertFalse(applicationStatus.equals(new ApplicationStatus(\"pending\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public void string() {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus toApply \u003d new ApplicationStatus(\"to_apply\");","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus pending \u003d new ApplicationStatus(\"pending\");","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus rejected \u003d new ApplicationStatus(\"rejected\");","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus accepted \u003d new ApplicationStatus(\"accepted\");","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" ApplicationStatus ongoing \u003d new ApplicationStatus(\"ongoing\");","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" //test for equality","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" assertTrue(toApply.toString().equals(\"TO_APPLY\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" assertTrue(pending.toString().equals(\"PENDING\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" assertTrue(rejected.toString().equals(\"REJECTED\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" assertTrue(accepted.toString().equals(\"ACCEPTED\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ongoing.toString().equals(\"ONGOING\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" assertFalse(toApply.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" assertFalse(pending.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" assertFalse(rejected.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertFalse(accepted.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ongoing.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" // Test for case sensitivity","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assertFalse(toApply.toString().equals(\"to_apply\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" assertFalse(pending.toString().equals(\"pending\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" assertFalse(rejected.toString().equals(\"rejected\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" assertFalse(accepted.toString().equals(\"accepted\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ongoing.toString().equals(\"ongoing\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":93}},{"path":"src/test/java/seedu/address/model/internship/CompanyNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class CompanyNameTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new CompanyName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidCompanyName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" String invalidCompanyName \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new CompanyName(invalidCompanyName));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public void isValidCompanyName() {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" // null companyNames","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e CompanyName.isValidCompanyName(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" // invalid companyNames","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertFalse(CompanyName.isValidCompanyName(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(CompanyName.isValidCompanyName(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(CompanyName.isValidCompanyName(\"^\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(CompanyName.isValidCompanyName(\"Facebook*\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(CompanyName.isValidCompanyName(\" Microsoft\")); // leading space","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" // valid companyNames","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" assertTrue(CompanyName.isValidCompanyName(\"Microsoft\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(CompanyName.isValidCompanyName(\"Hewlett Packard\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(CompanyName.isValidCompanyName(\"Kentucky Fried Chicken\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" CompanyName companyName \u003d new CompanyName(\"Google\");","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" assertTrue(companyName.equals(new CompanyName(\"Google\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" assertTrue(companyName.equals(companyName));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" assertFalse(companyName.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" assertFalse(companyName.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" assertFalse(companyName.equals(new CompanyName(\"Microsoft\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":53,"CaptainKeqing":6}},{"path":"src/test/java/seedu/address/model/internship/ContactEmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ContactEmailTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactEmail(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidContactEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" String invalidContactEmail \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactEmail(invalidContactEmail));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public void isValidContactEmail() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // null contactEmail","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactEmail.isValidContactEmail(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" // blank contactEmail","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" // missing parts","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" // invalid parts","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peter..jack@example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@.example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@-example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactEmail.isValidContactEmail(\"peterjack@example.c\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" // valid contactEmail","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"a@bc\")); // minimal","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"a1+be.d@example1.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"peter_jack@very-very-very-long-example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"if.you.dream.it_you.can.do.it@example.com\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactEmail.isValidContactEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" ContactEmail contactEmail \u003d new ContactEmail(\"valid@email\");","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" assertTrue(contactEmail.equals(new ContactEmail(\"valid@email\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" assertTrue(contactEmail.equals(contactEmail));","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactEmail.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactEmail.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactEmail.equals(new ContactEmail(\"other.valid@email\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":88}},{"path":"src/test/java/seedu/address/model/internship/ContactNumberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class ContactNumberTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactNumber(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidContactNumber_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" String invalidContactNumber \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactNumber(invalidContactNumber));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public void isValidContactNumber() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // null contactNumber number","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactNumber.isValidContactNumber(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" // invalid contactNumber numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"contactNumber\")); // non-numeric","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertFalse(ContactNumber.isValidContactNumber(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" // valid contactNumber numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" assertTrue(ContactNumber.isValidContactNumber(\"9114433\")); // exactly 7 numbers","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactNumber.isValidContactNumber(\"93121534\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertTrue(ContactNumber.isValidContactNumber(\"124293842033123\")); // long contactNumber numbers","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" ContactNumber contactNumber \u003d new ContactNumber(\"9999999\");","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" assertTrue(contactNumber.equals(new ContactNumber(\"9999999\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" assertTrue(contactNumber.equals(contactNumber));","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactNumber.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" assertFalse(contactNumber.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" assertFalse(contactNumber.equals(new ContactNumber(\"9999995\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":56,"LWS49":4}},{"path":"src/test/java/seedu/address/model/internship/DeadlineTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e new Deadline(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_invalidDeadline_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" String invalidDeadline \u003d \"\";","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Deadline(invalidDeadline));","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" public void isValidDeadline() {","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" // null deadline","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e Deadline.isValidDeadline(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" // invalid deadlines","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\"\")); // Empty string","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\" \")); // Just whitespace","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\"23-03-2024\")); // Invalid format, should contain slashes","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\"23/Mar/2024\")); // Example of a invalid deadline using month name","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Deadline.isValidDeadline(\"23/March/2024\")); // Example of a invalid deadline using month name","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" // valid deadlines","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(Deadline.isValidDeadline(\"23/03/2024\")); // Example of a valid deadline format (YYYY/MM/DD)","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" Deadline deadline \u003d new Deadline(\"23/03/2024\");","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(deadline.equals(new Deadline(\"23/03/2024\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(deadline.equals(deadline));","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deadline.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deadline.equals(5.0f));","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(deadline.equals(new Deadline(\"25/04/2025\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"HM33-Stu":57}},{"path":"src/test/java/seedu/address/model/internship/DescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class DescriptionTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Description(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public void constructor_invalidDescription_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" String invalidDescription \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Description(invalidDescription));","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public void isValidDescription() {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" // null descriptions","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e Description.isValidDescription(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" // invalid descriptions","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Description.isValidDescription(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Description.isValidDescription(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" // valid descriptions","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Description.isValidDescription(\"Make UI Figma Mockups\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" Description description \u003d new Description(\"Make UI Figma Mockups\");","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertTrue(description.equals(new Description(\"Make UI Figma Mockups\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertFalse(description.equals(new Description(\"Write REST API endpoints\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":52}},{"path":"src/test/java/seedu/address/model/internship/InternshipContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" String firstPredicateKeywords \u003d \"first\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" String secondPredicateKeywords \u003d \"first second\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(firstPredicateKeywords, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(secondPredicateKeywords, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(firstPredicateKeywords, null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" // different internship -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" public void test_companyNameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" // One keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" new InternshipContainsKeywordsPredicate(\"Google\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(predicate.test(new InternshipBuilder().withCompanyName(\"Google\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" predicate \u003d new InternshipContainsKeywordsPredicate(\"Hewlett Packard\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(predicate.test(new InternshipBuilder().withCompanyName(\"Hewlett Packard\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" predicate \u003d new InternshipContainsKeywordsPredicate(\"Microsoft Google\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(predicate.test(new InternshipBuilder().withCompanyName(\"Microsoft Facebook\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" predicate \u003d new InternshipContainsKeywordsPredicate(\"MicrOSoFt GOOgle\", null, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" null, null, null, null, false);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(predicate.test(new InternshipBuilder().withCompanyName(\"Microsoft Google\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" String companyNameKeywords \u003d \"Google\";","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" String contactNameKeywords \u003d \"John\";","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" String locationKeywords \u003d \"Singapore\";","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" String statusKeywords \u003d \"accepted\";","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" String descriptionKeywords \u003d \"AI\";","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" String roleKeywords \u003d \"developer\";","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" String remarkKeywords \u003d \"good\";","lastModifiedDate":"2024-04-02"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" boolean isMatchAll \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" InternshipContainsKeywordsPredicate predicate \u003d new InternshipContainsKeywordsPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" companyNameKeywords, contactNameKeywords, locationKeywords,","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" statusKeywords, descriptionKeywords, roleKeywords, remarkKeywords, isMatchAll);","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" String expected \u003d InternshipContainsKeywordsPredicate.class.getCanonicalName() + \"{\"","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" + \" companyNameKeywords\u003d[\" + companyNameKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" + \" contactNameKeywords\u003d[\" + contactNameKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" + \" locationKeywords\u003d[\" + locationKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" + \" statusKeywords\u003d[\" + statusKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" + \" descriptionKeywords\u003d[\" + descriptionKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" + \" roleKeywords\u003d[\" + roleKeywords + \"], \"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" + \" remarkKeywords\u003d[\" + remarkKeywords + \"], \"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" + \" isMatchAll\u003d\" + isMatchAll + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"LWS49":1,"CaptainKeqing":91}},{"path":"src/test/java/seedu/address/model/internship/InternshipTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.model.util.InternshipSampleDataUtil.EMPTY_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import static seedu.address.model.util.InternshipSampleDataUtil.EMPTY_TASKLIST;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"public class InternshipTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public void constructor_allNull_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(NullPointerException.class, () -\u003e new Internship(null, null, null,","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" null, null, null, null, null, null, null));","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" public void constructor_nullCompanyName_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" assertThrows(NullPointerException.class, () -\u003e new Internship(null, new ContactName(\"John Doe\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" new ContactEmail(\"johnDoe@gmail.com\"), new ContactNumber(\"91234567\"), new Location(\"local\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" new ApplicationStatus(\"to_apply\"), new Description(\"Software Engineer Intern\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" new Role(\"Software Engineer\"), EMPTY_REMARK, EMPTY_TASKLIST));","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" public void isSameInternship() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(ALICE_MICROSOFT.isSameInternship(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":" // same mandatory fields but all other attributes different -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withLocation(\"local\")","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" .withRole(\"Backend Engineer\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" // different company name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withCompanyName(VALID_COMPANY_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":" // different contact name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactName(\"Alicia Paulina\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" // different contact number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactNumber(\"85462364\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" // different contact email, all other attributes same -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactEmail(\"alicer@exampler.com\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" // different application status, all other attributes same -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withApplicationStatus(\"rejected\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" // different description, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withDescription(\"Data Analyst Intern\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.isSameInternship(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" // company name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" Internship editedBob \u003d new InternshipBuilder(BOB).withCompanyName(VALID_COMPANY_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(BOB.isSameInternship(editedBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" Internship aliceCopy \u003d new InternshipBuilder(ALICE_MICROSOFT).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(ALICE_MICROSOFT.equals(aliceCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" assertTrue(ALICE_MICROSOFT.equals(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(5));","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" // different internship -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(BOB));","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" // different company name -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withCompanyName(VALID_COMPANY_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" // different contact name -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactName(\"John Doe\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" // different contact email -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withContactEmail(\"johnDoe@gmail.com\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" assertFalse(ALICE_MICROSOFT.equals(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":5,"HM33-Stu":15,"LWS49":3,"CaptainKeqing":80}},{"path":"src/test/java/seedu/address/model/internship/LocationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class LocationTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Location(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public void isValidLocation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" // null locations","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e Location.isValidLocation(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" // invalid locations","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Location.isValidLocation(\"\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Location.isValidLocation(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // valid locations","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"LOCAL\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"OVERSEAS\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"REMOTE\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"local\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"overseas\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Location.isValidLocation(\"remote\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" Location location \u003d new Location(\"local\");","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" assertTrue(location.equals(new Location(\"LOCAL\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" assertTrue(location.equals(location));","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" assertFalse(location.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertFalse(location.equals(5.0f));","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertFalse(location.equals(new Location(\"OVERSEAS\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" public void string() {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" Location local \u003d new Location(\"local\");","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" Location remote \u003d new Location(\"remote\");","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" Location overseas \u003d new Location(\"overseas\");","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" // Test for equality","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" assertTrue(local.toString().equals(\"LOCAL\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertTrue(remote.toString().equals(\"REMOTE\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" assertTrue(overseas.toString().equals(\"OVERSEAS\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" assertFalse(local.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remote.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" assertFalse(overseas.toString().equals(\"invalid\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" // Test for case sensitivity","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" assertFalse(local.toString().equals(\"local\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remote.toString().equals(\"remote\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" assertFalse(overseas.toString().equals(\"overseas\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jieqiboh":73}},{"path":"src/test/java/seedu/address/model/internship/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class RemarkTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" Remark remark \u003d new Remark(\"Has a behavioural interview!\");","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" assertTrue(remark.equals(new Remark(\"Has a behavioural interview!\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remark.equals(5.0f));","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertFalse(remark.equals(new Remark(\"Write REST API endpoints\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"jieqiboh":33}},{"path":"src/test/java/seedu/address/model/internship/RoleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class RoleTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Role(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public void isValidRole() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" // null roles","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e Role.isValidRole(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" // invalid roles","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Role.isValidRole(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" assertFalse(Role.isValidRole(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" // valid roles","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" assertTrue(Role.isValidRole(\"UI Designer\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" Role role \u003d new Role(\"UI Designer\");","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertTrue(role.equals(new Role(\"UI Designer\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" assertTrue(role.equals(role));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" assertFalse(role.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" assertFalse(role.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" assertFalse(role.equals(new Role(\"Backend Engineer\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":46,"HM33-Stu":1}},{"path":"src/test/java/seedu/address/model/internship/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"public class TaskListTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.toString(), \"1. Submit Supporting Documents\\n2. Finish Resume\\n\");","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":" public void addTaskTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.getTaskListSize(), 2);","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public void deleteTaskTest() {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" Task task \u003d new Task(\"Submit Supporting Documents\");","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" Task task2 \u003d new Task(\"Finish Resume\");","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" taskList.addTask(task2);","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" taskList.deleteTask(0);","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" assertEquals(taskList.getTaskListSize(), 1);","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" taskList.deleteTask(0);","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" assertEquals(taskList.getTaskListSize(), 0);","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" public void getTaskTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.getTask(0), new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.getTask(1), new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" public void getTaskListSizeTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" assertEquals(taskList.getTaskListSize(), 2);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" taskList.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" TaskList taskList2 \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" taskList2.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" taskList2.addTask(new Task(\"Finish Resume\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":" assertTrue(taskList2.equals(taskList));","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" assertTrue(taskList.equals(taskList));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" assertFalse(taskList.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" assertFalse(taskList.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" TaskList taskList3 \u003d new TaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" taskList3.addTask(new Task(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" assertFalse(taskList.equals(taskList3));","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"jieqiboh":13,"LWS49":68}},{"path":"src/test/java/seedu/address/model/internship/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"public class TaskTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e new Task(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" public void constructor_invalidTask_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" String invalidTask \u003d \"\";","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Task(invalidTask));","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" public void isValidTask() {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" // null tasks","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(NullPointerException.class, () -\u003e Task.isValidTask(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" // invalid tasks","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Task.isValidTask(\"\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(Task.isValidTask(\" \"));","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":" // valid tasks","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(Task.isValidTask(\"Submit Supporting Documents\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" Task task \u003d new Task(\"Submit Supporting Documents\");","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(task.equals(new Task(\"Submit Supporting Documents\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" assertTrue(task.equals(task));","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(task.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(task.equals(5.0f));","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" assertFalse(task.equals(new Task(\"Complete Behavioural Assessment Form\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"HM33-Stu":52}},{"path":"src/test/java/seedu/address/model/internship/UniqueInternshipListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model.internship;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.BENSON_GOOGLE;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.exceptions.DuplicateInternshipException;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.exceptions.InternshipNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"public class UniqueInternshipListTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private final UniqueInternshipList uniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" public void contains_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.contains(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public void contains_internshipNotInList_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertFalse(uniqueInternshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public void contains_internshipInList_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" assertTrue(uniqueInternshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public void contains_internshipWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withLocation(\"local\")","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" .withRole(\"Artificial Intelligence Engineer\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" assertTrue(uniqueInternshipList.contains(editedAlice));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public void add_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.add(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" public void add_duplicateInternship_throwsDuplicateInternshipException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DuplicateInternshipException.class, () -\u003e uniqueInternshipList.add(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_nullTargetInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.setInternship(null, ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_nullEditedInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.setInternship(ALICE_MICROSOFT, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_targetInternshipNotInList_throwsInternshipNotFoundException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" assertThrows(InternshipNotFoundException.class, () -\u003e uniqueInternshipList.setInternship(ALICE_MICROSOFT,","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_editedInternshipIsSameInternship_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternship(ALICE_MICROSOFT, ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_editedInternshipHasSameIdentity_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" Internship editedAlice \u003d new InternshipBuilder(ALICE_MICROSOFT).withApplicationStatus(\"rejected\")","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" .withContactName(\"Not Alice\").withContactEmail(\"notalice@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" .withContactNumber(\"98765432\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternship(ALICE_MICROSOFT, editedAlice);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(editedAlice);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_editedInternshipHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternship(ALICE_MICROSOFT, BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" public void setInternship_editedInternshipHasNonUniqueIdentity_throwsDuplicateInternshipException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DuplicateInternshipException.class, () -\u003e uniqueInternshipList.setInternship(ALICE_MICROSOFT,","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" BENSON_GOOGLE));","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" public void remove_nullInternship_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.remove(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" public void remove_internshipDoesNotExist_throwsInternshipNotFoundException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" assertThrows(InternshipNotFoundException.class, () -\u003e uniqueInternshipList.remove(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" public void remove_existingInternship_removesInternship() {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.remove(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_nullUniqueInternshipList_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternships((UniqueInternshipList) null));","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_uniqueInternshipList_replacesOwnListWithProvidedUniqueInternshipList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternships(expectedUniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueInternshipList.setInternships((List\u003cInternship\u003e) null));","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" List\u003cInternship\u003e internshipList \u003d Collections.singletonList(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternships(internshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" UniqueInternshipList expectedUniqueInternshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" expectedUniqueInternshipList.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" assertEquals(expectedUniqueInternshipList, uniqueInternshipList);","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" public void setInternships_listWithDuplicateInternships_throwsDuplicateInternshipException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" List\u003cInternship\u003e listWithDuplicateInternships \u003d Arrays.asList(ALICE_MICROSOFT, ALICE_MICROSOFT);","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DuplicateInternshipException.class, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":" uniqueInternshipList.setInternships(listWithDuplicateInternships));","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":" -\u003e uniqueInternshipList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"jieqiboh"},"content":" assertEquals(uniqueInternshipList.asUnmodifiableObservableList().toString(), uniqueInternshipList.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"theman-oj10"},"content":" public void testContains() {","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"jieqiboh"},"content":" assertTrue(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"theman-oj10"},"content":" public void testAddInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"jieqiboh"},"content":" assertTrue(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"theman-oj10"},"content":" public void testSetInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"jieqiboh"},"content":" internshipList.setInternship(ALICE_MICROSOFT, BENSON_GOOGLE);","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"jieqiboh"},"content":" assertFalse(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jieqiboh"},"content":" assertTrue(internshipList.contains(BENSON_GOOGLE));","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"theman-oj10"},"content":" public void testRemoveInternship() {","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"jieqiboh"},"content":" internshipList.remove(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"jieqiboh"},"content":" assertFalse(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"theman-oj10"},"content":" public void testSetInternships() {","lastModifiedDate":"2024-03-13"},{"lineNumber":213,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList replacement \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"jieqiboh"},"content":" replacement.add(BENSON_GOOGLE);","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"theman-oj10"},"content":" internshipList.setInternships(replacement);","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"jieqiboh"},"content":" assertFalse(internshipList.contains(ALICE_MICROSOFT));","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"jieqiboh"},"content":" assertTrue(internshipList.contains(BENSON_GOOGLE));","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"theman-oj10"},"content":" public void testEquals() {","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList1 \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList2 \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"jieqiboh"},"content":" internshipList1.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"jieqiboh"},"content":" internshipList2.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipList1, internshipList2);","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":230,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":231,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":232,"author":{"gitId":"theman-oj10"},"content":" public void asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":233,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":234,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipList.asUnmodifiableObservableList().size(), 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":236,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":237,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":238,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":239,"author":{"gitId":"theman-oj10"},"content":" public void testHashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":240,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":241,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"theman-oj10"},"content":" assertEquals(internshipList.hashCode(), internshipList.asUnmodifiableObservableList().hashCode());","lastModifiedDate":"2024-03-13"},{"lineNumber":243,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":244,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":245,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"theman-oj10"},"content":" public void testToString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":247,"author":{"gitId":"theman-oj10"},"content":" UniqueInternshipList internshipList \u003d new UniqueInternshipList();","lastModifiedDate":"2024-03-13"},{"lineNumber":248,"author":{"gitId":"jieqiboh"},"content":" internshipList.add(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"jieqiboh"},"content":" assertEquals(internshipList.toString(), internshipList.asUnmodifiableObservableList().toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":250,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":251,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jieqiboh":188,"HM33-Stu":2,"theman-oj10":61}},{"path":"src/test/java/seedu/address/model/util/InternshipSampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"theman-oj10"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"theman-oj10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"theman-oj10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"theman-oj10"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"theman-oj10"},"content":"public class InternshipSampleDataUtilTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"theman-oj10"},"content":" public void getSampleInternships() {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"theman-oj10"},"content":" Internship[] sampleInternships \u003d InternshipSampleDataUtil.getSampleInternships();","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"theman-oj10"},"content":" assertEquals(3, sampleInternships.length);","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Google\", sampleInternships[0].getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Facebook\", sampleInternships[1].getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Amazon\", sampleInternships[2].getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"theman-oj10"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"theman-oj10"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"theman-oj10"},"content":" public void getSampleInternshipData() {","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"theman-oj10"},"content":" InternshipData sampleInternshipData \u003d (InternshipData) InternshipSampleDataUtil.getSampleInternshipData();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"theman-oj10"},"content":" assertEquals(3, sampleInternshipData.getInternshipList().size());","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Google\", sampleInternshipData.getInternshipList().get(0).getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Facebook\", sampleInternshipData.getInternshipList().get(1).getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"theman-oj10"},"content":" assertEquals(\"Amazon\", sampleInternshipData.getInternshipList().get(2).getCompanyName().toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"theman-oj10"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"theman-oj10"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"theman-oj10":29}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedInternshipTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.storage.JsonAdaptedInternship.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-04-03"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"public class JsonAdaptedInternshipTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_COMPANY_NAME \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_CONTACT_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_CONTACT_EMAIL \u003d \"example!com\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_CONTACT_NUMBER \u003d \"+651234\";","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_LOCATION \u003d \"invalid location\";","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_APPLICATION_STATUS \u003d \"invalid status\";","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" private static final String INVALID_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_COMPANY_NAME \u003d ALICE_MICROSOFT.getCompanyName().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_CONTACT_NAME \u003d ALICE_MICROSOFT.getContactName().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_CONTACT_EMAIL \u003d ALICE_MICROSOFT.getContactEmail().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_CONTACT_NUMBER \u003d ALICE_MICROSOFT.getContactNumber().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_LOCATION \u003d ALICE_MICROSOFT.getLocation().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_APPLICATION_STATUS \u003d ALICE_MICROSOFT.getApplicationStatus().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_DESCRIPTION \u003d ALICE_MICROSOFT.getDescription().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_ROLE \u003d ALICE_MICROSOFT.getRole().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" private static final String VALID_REMARK \u003d ALICE_MICROSOFT.getRemark().toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":" private static final ArrayList\u003cTask\u003e VALID_TASKLIST \u003d ALICE_MICROSOFT.getTaskList().getArrayListTaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_validInternshipDetails_returnsInternship() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d new JsonAdaptedInternship(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" assertEquals(ALICE_MICROSOFT, internship.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidCompanyName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(INVALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d CompanyName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullCompanyName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(null, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, CompanyName.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidContactName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, INVALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d seedu.address.model.internship.ContactName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullContactName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, null, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, ContactName.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidContactEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, INVALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d ContactEmail.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullContactEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, ContactEmail.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidContactNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" INVALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS,","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"LWS49"},"content":" VALID_DESCRIPTION, VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d ContactNumber.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullContactNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" null, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, ContactNumber.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidApplicationStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, INVALID_APPLICATION_STATUS, VALID_DESCRIPTION,","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"LWS49"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d ApplicationStatus.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullApplicationStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"LWS49"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, null, VALID_DESCRIPTION, VALID_ROLE,","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"LWS49"},"content":" VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, ApplicationStatus.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, INVALID_DESCRIPTION,","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"LWS49"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d Description.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"LWS49"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Description.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"HM33-Stu"},"content":" public void toModelType_invalidLocation_throwsIllegalValueException() {","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"HM33-Stu"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-04-02"},{"lineNumber":170,"author":{"gitId":"HM33-Stu"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-04-02"},{"lineNumber":171,"author":{"gitId":"HM33-Stu"},"content":" VALID_CONTACT_NUMBER, INVALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION,","lastModifiedDate":"2024-04-02"},{"lineNumber":172,"author":{"gitId":"HM33-Stu"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d Location.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":178,"author":{"gitId":"HM33-Stu"},"content":" public void toModelType_nullLocation_throwsIllegalValueException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":179,"author":{"gitId":"HM33-Stu"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":180,"author":{"gitId":"HM33-Stu"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-04-03"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":" VALID_CONTACT_NUMBER, null, VALID_APPLICATION_STATUS, VALID_DESCRIPTION,","lastModifiedDate":"2024-04-03"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":" VALID_ROLE, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-04-03"},{"lineNumber":183,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Location.class.getSimpleName());","lastModifiedDate":"2024-04-03"},{"lineNumber":184,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-04-03"},{"lineNumber":185,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":186,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":187,"author":{"gitId":"HM33-Stu"},"content":" @Test","lastModifiedDate":"2024-04-03"},{"lineNumber":188,"author":{"gitId":"HM33-Stu"},"content":" public void toModelType_nullRole_throwsIllegalValueException() {","lastModifiedDate":"2024-04-03"},{"lineNumber":189,"author":{"gitId":"HM33-Stu"},"content":" JsonAdaptedInternship internship \u003d","lastModifiedDate":"2024-04-03"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":" new JsonAdaptedInternship(VALID_COMPANY_NAME, VALID_CONTACT_NAME, VALID_CONTACT_EMAIL,","lastModifiedDate":"2024-04-03"},{"lineNumber":191,"author":{"gitId":"HM33-Stu"},"content":" VALID_CONTACT_NUMBER, VALID_LOCATION, VALID_APPLICATION_STATUS, VALID_DESCRIPTION,","lastModifiedDate":"2024-04-03"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":" null, VALID_REMARK, VALID_TASKLIST);","lastModifiedDate":"2024-04-03"},{"lineNumber":193,"author":{"gitId":"HM33-Stu"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName());","lastModifiedDate":"2024-04-03"},{"lineNumber":194,"author":{"gitId":"HM33-Stu"},"content":" assertThrows(IllegalValueException.class, expectedMessage, internship::toModelType);","lastModifiedDate":"2024-04-03"},{"lineNumber":195,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-04-03"},{"lineNumber":196,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":197,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":148,"HM33-Stu":31,"LWS49":18}},{"path":"src/test/java/seedu/address/storage/JsonInternshipDataStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.ALICE_MICROSOFT;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.HOON_APPLE;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.IDA_NETFLIX;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.ReadOnlyInternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"public class JsonInternshipDataStorageTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonInternshipDataStorageTest\");","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" @TempDir","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public void readInternshipData_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e readInternshipData(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private java.util.Optional\u003cReadOnlyInternshipData\u003e readInternshipData(String filePath) throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" return new JsonInternshipDataStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" .readInternshipData(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" : null;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertFalse(readInternshipData(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DataLoadingException.class, () -\u003e readInternshipData(\"notJsonFormatInternshipData.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" public void readInternshipData_invalidInternshipInternshipData_throwDataLoadingException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DataLoadingException.class, () -\u003e readInternshipData(\"invalidInternshipInternshipData.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public void readInternshipData_invalidAndValidInternshipInternshipData_throwDataLoadingException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" assertThrows(DataLoadingException.class, () -\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" readInternshipData(\"invalidAndValidInternshipInternshipData.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" public void readAndSaveInternshipData_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" Path filePath \u003d testFolder.resolve(\"TempInternshipData.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" InternshipData original \u003d getTypicalInternshipData();","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" JsonInternshipDataStorage jsonInternshipDataStorage \u003d new JsonInternshipDataStorage(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" jsonInternshipDataStorage.saveInternshipData(original, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" ReadOnlyInternshipData readBack \u003d jsonInternshipDataStorage.readInternshipData(filePath).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" assertEquals(original, new InternshipData(readBack));","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" original.addInternship(HOON_APPLE);","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" original.removeInternship(ALICE_MICROSOFT);","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" jsonInternshipDataStorage.saveInternshipData(original, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" readBack \u003d jsonInternshipDataStorage.readInternshipData(filePath).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertEquals(original, new InternshipData(readBack));","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" original.addInternship(IDA_NETFLIX);","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" jsonInternshipDataStorage.saveInternshipData(original); // file path not specified","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" readBack \u003d jsonInternshipDataStorage.readInternshipData().get(); // file path not specified","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" assertEquals(original, new InternshipData(readBack));","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData_nullInternshipData_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e saveInternshipData(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" * Saves {@code internshipData} at the specified {@code filePath}.","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" private void saveInternshipData(ReadOnlyInternshipData internshipData, String filePath) {","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" new JsonInternshipDataStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" .saveInternshipData(internshipData, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" public void saveInternshipData_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" assertThrows(NullPointerException.class, () -\u003e saveInternshipData(new InternshipData(), null));","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":113}},{"path":"src/test/java/seedu/address/storage/JsonSerializableInternshipDataTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.testutil.TypicalInternships;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"public class JsonSerializableInternshipDataTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" .get(\"src\", \"test\", \"data\", \"JsonSerializableInternshipDataTest\");","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" private static final Path TYPICAL_INTERNSHIPS_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" .resolve(\"typicalInternshipsInternshipData.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private static final Path INVALID_INTERNSHIP_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" .resolve(\"invalidInternshipInternshipData.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private static final Path DUPLICATE_INTERNSHIP_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" .resolve(\"duplicateInternshipInternshipData.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_typicalInternshipsFile_success() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_INTERNSHIPS_FILE,","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData.class).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" InternshipData internshipDataFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" InternshipData typicalInternshipsInternshipData \u003d TypicalInternships.getTypicalInternshipData();","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" assertEquals(internshipDataFromFile, typicalInternshipsInternshipData);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_invalidInternshipFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData dataFromFile \u003d JsonUtil.readJsonFile(INVALID_INTERNSHIP_FILE,","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData.class).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" public void toModelType_duplicateInternships_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_INTERNSHIP_FILE,","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" JsonSerializableInternshipData.class).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertThrows(IllegalValueException.class, JsonSerializableInternshipData.MESSAGE_DUPLICATE_INTERNSHIP,","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jieqiboh":48,"LWS49":2}},{"path":"src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonUserPrefsStorageTest {","lastModifiedDate":"2016-10-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" \"JsonUserPrefsStorageTest\");","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void readUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" private Optional\u003cInternshipUserPrefs\u003e readUserPrefs(String userPrefsFileInTestDataFolder)","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" throws DataLoadingException {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d addToTestDataPathIfNotNull(userPrefsFileInTestDataFolder);","lastModifiedDate":"2018-04-21"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" return new JsonInternshipUserPrefsStorage(prefsFilePath).readUserPrefs(prefsFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void readUserPrefs_missingFile_emptyResult() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(readUserPrefs(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2016-09-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void readUserPrefs_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readUserPrefs(\"NotJsonFormatUserPrefs.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String userPrefsFileInTestDataFolder) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return userPrefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2016-09-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(userPrefsFileInTestDataFolder)","lastModifiedDate":"2018-04-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void readUserPrefs_fileInOrder_successfullyRead() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs actual \u003d readUserPrefs(\"TypicalUserPref.json\").get();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void readUserPrefs_valuesMissingFromFile_defaultValuesUsed() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs actual \u003d readUserPrefs(\"EmptyUserPrefs.json\").get();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" assertEquals(new InternshipUserPrefs(), actual);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void readUserPrefs_extraValuesInFile_extraValuesIgnored() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs expected \u003d getTypicalUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs actual \u003d readUserPrefs(\"ExtraValuesUserPref.json\").get();","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" private InternshipUserPrefs getTypicalUserPrefs() {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs userPrefs \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1000, 500, 300, 100));","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" userPrefs.setInternshipDataFilePath(Paths.get(\"data\\\\internshipdata.json\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2017-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void savePrefs_nullPrefs_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void saveUserPrefs_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":" assertThrows(NullPointerException.class, () -\u003e saveUserPrefs(new InternshipUserPrefs(), null));","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Saves {@code userPrefs} at the specified {@code prefsFileInTestDataFolder} filepath.","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" private void saveUserPrefs(InternshipUserPrefs userPrefs, String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" new JsonInternshipUserPrefsStorage(addToTestDataPathIfNotNull(prefsFileInTestDataFolder))","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file\", ioe);","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void saveUserPrefs_allInOrder_success() throws DataLoadingException, IOException {","lastModifiedDate":"2023-06-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs original \u003d new InternshipUserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(1200, 200, 0, 2));","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Path pefsFilePath \u003d testFolder.resolve(\"TempPrefs.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" JsonInternshipUserPrefsStorage jsonUserPrefsStorage \u003d new JsonInternshipUserPrefsStorage(pefsFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" //Try writing when the file doesn\u0027t exist","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":115,"author":{"gitId":"LWS49"},"content":" InternshipUserPrefs readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" //Try saving when the file exists","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(5, 5, 5, 5));","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" jsonUserPrefsStorage.saveUserPrefs(original);","lastModifiedDate":"2016-10-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":" readBack \u003d jsonUserPrefsStorage.readUserPrefs().get();","lastModifiedDate":"2016-10-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2016-09-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"jieqiboh":3,"LWS49":18,"-":104}},{"path":"src/test/java/seedu/address/testutil/EditInternshipDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"LWS49"},"content":" * A utility class to help with building EditInternshipDescriptor objects.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"LWS49"},"content":"public class EditInternshipDescriptorBuilder {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"LWS49"},"content":" private EditInternshipDescriptor descriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder() {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"LWS49"},"content":" * Returns an {@code EditInternshipDescriptor} with fields containing {@code internship}\u0027s details","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder(Internship internship) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" descriptor \u003d new EditInternshipDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"LWS49"},"content":" descriptor.setCompanyName(internship.getCompanyName());","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"LWS49"},"content":" descriptor.setLocation(internship.getLocation());","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"LWS49"},"content":" descriptor.setDescription(internship.getDescription());","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"LWS49"},"content":" descriptor.setRole(internship.getRole());","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"LWS49"},"content":" descriptor.setContactName(internship.getContactName());","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"LWS49"},"content":" descriptor.setContactEmail(internship.getContactEmail());","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" descriptor.setContactNumber(internship.getContactNumber());","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" descriptor.setApplicationStatus(internship.getApplicationStatus());","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" descriptor.setRemark(internship.getRemark());","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" descriptor.setTaskList(internship.getTaskList());","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" * Sets the {@code companyName} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withCompanyName(String companyName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" descriptor.setCompanyName(new CompanyName(companyName));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"LWS49"},"content":" * Sets the {@code location} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withLocation(String location) {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" descriptor.setLocation(new Location(location));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"LWS49"},"content":" * Sets the {@code description} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withDescription(String description) {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"LWS49"},"content":" descriptor.setDescription(new Description(description));","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" * Sets the {@code role} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withRole(String role) {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" descriptor.setRole(new Role(role));","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"LWS49"},"content":" * Sets the {@code contactName} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withContactName(String contactName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"LWS49"},"content":" descriptor.setContactName(new ContactName(contactName));","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"LWS49"},"content":" * Sets the {@code contactEmail} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withContactEmail(String contactEmail) {","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"LWS49"},"content":" descriptor.setContactEmail(new ContactEmail(contactEmail));","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"LWS49"},"content":" * Sets the {@code contactNumber} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withContactNumber(String contactNumber) {","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"LWS49"},"content":" descriptor.setContactNumber(new ContactNumber(contactNumber));","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"LWS49"},"content":" * Sets the {@code applicationStatus} of the {@code EditInternshipDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptorBuilder withApplicationStatus(String applicationStatus) {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"LWS49"},"content":" descriptor.setApplicationStatus(new ApplicationStatus(applicationStatus));","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"LWS49"},"content":" public EditInternshipDescriptor build() {","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"LWS49"},"content":" return descriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"LWS49":109}},{"path":"src/test/java/seedu/address/testutil/InternshipBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ApplicationStatus;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.CompanyName;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactEmail;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactName;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.ContactNumber;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Description;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Location;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Role;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * A utility class to help with building Internship objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"public class InternshipBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" public static final String DEFAULT_COMPANY_NAME \u003d \"Microsoft\";","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_CONTACT_NAME \u003d \"Amy Pauline\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_CONTACT_EMAIL \u003d \"amy@example.com\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_CONTACT_NUMBER \u003d \"91001274\";","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public static final String DEFAULT_LOCATION \u003d \"remote\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_APPLICATION_STATUS \u003d \"pending\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"Develop new microsoft web applications\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" public static final String DEFAULT_ROLE \u003d \"Application Engineer\";","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"LWS49"},"content":" public static final String DEFAULT_REMARK \u003d \"Has a behavioural interview!\";","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"LWS49"},"content":" public static final String DEFAULT_TASKLIST \u003d \"Submit Documents (11/01/2011); Submit Resume\";","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" private CompanyName companyName;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" private ContactName contactName;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" private ContactEmail contactEmail;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" private ContactNumber contactNumber;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" private Location location;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" private ApplicationStatus applicationStatus;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" private Description description;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" private Role role;","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"LWS49"},"content":" private TaskList taskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" * Creates an {@code InternshipBuilder} with the default details.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" companyName \u003d new CompanyName(DEFAULT_COMPANY_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" contactName \u003d new ContactName(DEFAULT_CONTACT_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" contactEmail \u003d new ContactEmail(DEFAULT_CONTACT_EMAIL);","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" contactNumber \u003d new ContactNumber(DEFAULT_CONTACT_NUMBER);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" location \u003d new Location(DEFAULT_LOCATION);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" applicationStatus \u003d new ApplicationStatus(DEFAULT_APPLICATION_STATUS);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" description \u003d new Description(DEFAULT_DESCRIPTION);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" role \u003d new Role(DEFAULT_ROLE);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"LWS49"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"LWS49"},"content":" taskList \u003d new TaskList(DEFAULT_TASKLIST);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" * Initializes the InternshipBuilder with the data of {@code internshipToCopy}.","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder(Internship internshipToCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" companyName \u003d internshipToCopy.getCompanyName();","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" contactName \u003d internshipToCopy.getContactName();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" contactEmail \u003d internshipToCopy.getContactEmail();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" contactNumber \u003d internshipToCopy.getContactNumber();","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" location \u003d internshipToCopy.getLocation();","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" applicationStatus \u003d internshipToCopy.getApplicationStatus();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" description \u003d internshipToCopy.getDescription();","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" role \u003d internshipToCopy.getRole();","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"LWS49"},"content":" remark \u003d internshipToCopy.getRemark();","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"LWS49"},"content":" taskList \u003d internshipToCopy.getTaskList();","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code CompanyName} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withCompanyName(String companyName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" this.companyName \u003d new CompanyName(companyName);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code ContactName} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withContactName(String contactName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" this.contactName \u003d new ContactName(contactName);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code ContactEmail} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withContactEmail(String contactEmail) {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" this.contactEmail \u003d new ContactEmail(contactEmail);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code ContactNumber} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withContactNumber(String contactNumber) {","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" this.contactNumber \u003d new ContactNumber(contactNumber);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code Location} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withLocation(String location) {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" this.location \u003d new Location(location);","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code ApplicationStatus} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withApplicationStatus(String applicationStatus) {","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" this.applicationStatus \u003d new ApplicationStatus(applicationStatus);","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code Description} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withDescription(String description) {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d new Description(description);","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code Role} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withRole(String role) {","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" this.role \u003d new Role(role);","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" * Sets the {@code Remark} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" public InternshipBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"LWS49"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"LWS49"},"content":" * Sets the {@code taskList} of the {@code Internship} that we are building.","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":149,"author":{"gitId":"LWS49"},"content":" public InternshipBuilder withTaskList(String taskList) {","lastModifiedDate":"2024-03-26"},{"lineNumber":150,"author":{"gitId":"LWS49"},"content":" this.taskList \u003d new TaskList(taskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"LWS49"},"content":" return this;","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"LWS49"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" * Builds the Internship object.","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" public Internship build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" return new Internship(companyName, contactName, contactEmail, contactNumber, location, applicationStatus,","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"LWS49"},"content":" description, role, remark, taskList);","lastModifiedDate":"2024-03-26"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":139,"HM33-Stu":6,"LWS49":17}},{"path":"src/test/java/seedu/address/testutil/InternshipTypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LWS49"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"LWS49"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"LWS49"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"LWS49"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"LWS49"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"LWS49"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"LWS49"},"content":"public class InternshipTypicalIndexes {","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":" public static final Index INDEX_FIRST_INTERNSHIP \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":" public static final Index INDEX_SECOND_INTERNSHIP \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"LWS49"},"content":" public static final Index INDEX_THIRD_INTERNSHIP \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"LWS49"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LWS49":12}},{"path":"src/test/java/seedu/address/testutil/InternshipUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONTACT_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipAddCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.commands.InternshipEditCommand.EditInternshipDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" * A utility class for Internship.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"public class InternshipUtil {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * Returns an add command string for adding the {@code Internship}.","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" public static String getAddCommand(Internship internship) {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" return InternshipAddCommand.COMMAND_WORD + \" \" + getInternshipDetails(internship);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" * Returns the part of command string for the given {@code Internship}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" public static String getInternshipDetails(Internship internship) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_COMPANY + \" \" + internship.getCompanyName().companyName + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_CONTACT_NAME + \" \" + internship.getContactName().contactName + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_CONTACT_EMAIL + \" \" + internship.getContactEmail().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_CONTACT_NUMBER + \" \" + internship.getContactNumber().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_STATUS + \" \" + internship.getApplicationStatus().toString() + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(PREFIX_DESCRIPTION + \" \" + internship.getDescription().description + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" sb.append(PREFIX_LOCATION + \" \" + internship.getLocation().toString() + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" sb.append(PREFIX_ROLE + \" \" + internship.getRole().role + \" \");","lastModifiedDate":"2024-04-03"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the part of command string for the given {@code EditInternshipDescriptor}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" public static String getEditInternshipDescriptorDetails(EditInternshipDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getCompanyName().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" companyName -\u003e sb.append(PREFIX_COMPANY).append(\" \").append(companyName.companyName).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getContactName().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" contactName -\u003e sb.append(PREFIX_CONTACT_NAME).append(\" \").append(contactName.contactName).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getContactEmail().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" contactEmail -\u003e sb.append(PREFIX_CONTACT_EMAIL).append(\" \").append(contactEmail.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getContactNumber().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" contactNumber -\u003e sb.append(PREFIX_CONTACT_NUMBER).append(\" \").append(contactNumber.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getLocation().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" location -\u003e sb.append(PREFIX_LOCATION).append(\" \").append(location).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getApplicationStatus().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" applicationStatus -\u003e sb.append(PREFIX_STATUS).append(\" \").append(applicationStatus).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getDescription().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" description -\u003e sb.append(PREFIX_DESCRIPTION).append(\" \").append(description.description).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" descriptor.getRole().ifPresent(","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" role -\u003e sb.append(PREFIX_ROLE).append(\" \").append(role.role).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"LWS49"},"content":" descriptor.getRemark().ifPresent(","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"LWS49"},"content":" remark -\u003e sb.append(PREFIX_REMARK).append(\" \").append(remark.value).append(\" \"));","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" // TaskList is not included in the EditInternshipDescriptor because we can\u0027t add tasks through the edit command","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"HM33-Stu":3,"LWS49":3,"CaptainKeqing":65}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LWS49"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" * Returns the middle index of the internship in the {@code model}\u0027s internship list.","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"LWS49"},"content":" public static Index getMidIndex(InternshipModel model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"LWS49"},"content":" return Index.fromOneBased(model.getFilteredInternshipList().size() / 2);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" * Returns the last index of the internship in the {@code model}\u0027s internship list.","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":45,"author":{"gitId":"LWS49"},"content":" public static Index getLastIndex(InternshipModel model) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"LWS49"},"content":" return Index.fromOneBased(model.getFilteredInternshipList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30"},{"lineNumber":50,"author":{"gitId":"LWS49"},"content":" * Returns the internship in the {@code model}\u0027s internship list at {@code index}.","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"LWS49"},"content":" public static Internship getInternship(InternshipModel model, Index index) {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" return model.getFilteredInternshipList().get(index.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"LWS49":11,"-":44}},{"path":"src/test/java/seedu/address/testutil/TypicalInternships.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_APPLICATION_STATUS_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_APPLICATION_STATUS_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_COMPANY_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_EMAIL_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_EMAIL_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NAME_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NUMBER_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_CONTACT_NUMBER_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_LOCATION_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_LOCATION_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_ROLE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":"import static seedu.address.logic.commands.InternshipCommandTestUtil.VALID_ROLE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.InternshipData;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" * A utility class containing a list of {@code Internship} objects to be used in tests.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"public class TypicalInternships {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" public static final Internship ALICE_MICROSOFT \u003d new InternshipBuilder().withCompanyName(\"Microsoft\")","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" .withContactName(\"Alice Pauline\").withContactEmail(\"alice@example.com\").withContactNumber(\"94351253\")","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" .withApplicationStatus(\"ongoing\").withLocation(\"remote\")","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" .withDescription(\"Use Figma to design User-friendly web interfaces\").withRole(\"Frontend Engineer\")","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"LWS49"},"content":" .withRemark(\"Has a behavioural interview!\")","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"LWS49"},"content":" .withTaskList(\"Submit Documents (11/01/2011); Submit Resume\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" public static final Internship BENSON_GOOGLE \u003d new InternshipBuilder().withCompanyName(\"Google\")","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" .withContactName(\"Benson Meier\").withContactEmail(\"benson@example.com\").withContactNumber(\"98765432\")","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" .withLocation(\"local\").withApplicationStatus(\"pending\").withDescription(\"Write REST APIs for services\")","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"LWS49"},"content":" .withRole(\"Backend Engineer\").withRemark(\"3 Leetcode Hards\")","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"LWS49"},"content":" .withTaskList(\"Submit documents\").build();","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" public static final Internship CARL_OPENAI \u003d new InternshipBuilder().withCompanyName(\"OpenAI\")","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" .withContactName(\"Carl Kurz\").withContactEmail(\"carl@google.com\").withContactNumber(\"95352563\")","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" .withLocation(\"overseas\").withApplicationStatus(\"rejected\").withDescription(\"Enter prompts into ChatGPT\")","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"LWS49"},"content":" .withRole(\"Prompt Engineer\").withRemark(\"System design questions asked\")","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"LWS49"},"content":" .withTaskList(\"Submit Resume (13/03/2033)\").build();","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // Manually added","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" public static final Internship HOON_APPLE \u003d new InternshipBuilder().withCompanyName(\"Apple\")","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"LWS49"},"content":" .withContactName(\"Hoon Meier\").withContactEmail(\"hoon@gmail.com\").withContactNumber(\"84824242\")","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" .withLocation(\"local\").withApplicationStatus(\"pending\").withDescription(\"Develop iOS applications\")","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" .withRole(\"iOS Developer\").withRemark(\"OA due tomorrow!\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" public static final Internship IDA_NETFLIX \u003d new InternshipBuilder().withCompanyName(\"Netflix\")","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"LWS49"},"content":" .withContactName(\"Ida Mueller\").withContactEmail(\"ida@example.com\").withContactNumber(\"84821312\")","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" .withLocation(\"remote\").withApplicationStatus(\"ongoing\").withDescription(\"Write REST APIs for netflix\")","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" .withRole(\"Backend Engineer\").withRemark(\"Has a behavioural interview\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" // Manually added - Internship details found in {@code InternshipCommandTestUtil}","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" public static final Internship AMY \u003d new InternshipBuilder().withCompanyName(VALID_COMPANY_NAME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" .withContactName(VALID_CONTACT_NAME_AMY).withContactEmail(VALID_CONTACT_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_AMY).withLocation(VALID_LOCATION_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" .withApplicationStatus(VALID_APPLICATION_STATUS_AMY).withDescription(VALID_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" .withRole(VALID_ROLE_AMY).withRemark(\"Likes to swim\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":" public static final Internship BOB \u003d new InternshipBuilder().withCompanyName(VALID_COMPANY_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" .withContactName(VALID_CONTACT_NAME_BOB).withContactEmail(VALID_CONTACT_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" .withContactNumber(VALID_CONTACT_NUMBER_BOB).withLocation(VALID_LOCATION_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" .withApplicationStatus(VALID_APPLICATION_STATUS_BOB).withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" .withRole(VALID_ROLE_BOB).withRemark(\"Likes bread\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" private TypicalInternships() {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" } // prevents instantiation","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" * Returns an {@code InternshipData} with all the typical internships.","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" public static InternshipData getTypicalInternshipData() {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" InternshipData id \u003d new InternshipData();","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" for (Internship internship : getTypicalInternships()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" id.addInternship(internship);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" return id;","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" public static List\u003cInternship\u003e getTypicalInternships() {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE_MICROSOFT, BENSON_GOOGLE, CARL_OPENAI));","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jieqiboh":55,"HM33-Stu":28,"LWS49":8}},{"path":"src/test/java/seedu/address/ui/DetailedInternshipCardTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.testfx.assertions.api.Assertions.assertThat;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.extension.ExtendWith;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import org.testfx.framework.junit5.ApplicationExtension;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.TypicalInternships;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"@ExtendWith(ApplicationExtension.class)","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipCardTest extends UiTestBase {","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private DetailedInternshipCard detailedInternshipCard;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private Internship testInternship \u003d TypicalInternships.AMY;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeEach","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void initInternshipCard() {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipCard \u003d new DetailedInternshipCard(testInternship);","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" void getLabels() {","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" // Test the company name and role label","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.companyNameAndRole)","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(testInternship.getCompanyName().companyName + \" -- \" + testInternship.getRole().role);","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" // Test the status label","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.status)","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\" * \" + testInternship.getApplicationStatus().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" // Test the description label","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.description)","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Description:\\t\\t\" + testInternship.getDescription().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" // Test the location label","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.loc)","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Location:\\t\\t\\t\" + testInternship.getLocation().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" // Test the POC name label","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.cName)","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Contact name:\\t\\t\" + testInternship.getContactName().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" // Test the POC email label","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.cEmail)","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Contact email:\\t\\t\" + testInternship.getContactEmail().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" // Test the POC number label","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.cNum)","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Contact number:\\t\" + testInternship.getContactNumber().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" // Test the remark label","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.remark)","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Remark:\\t\\t\\t\" + testInternship.getRemark().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" // Test the tasks label","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.detailedInternshipCard.tasks)","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"\\nTasks:\\n\" + testInternship.getTaskList().toString());","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"CaptainKeqing":61}},{"path":"src/test/java/seedu/address/ui/DetailedInternshipListPanelTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static seedu.address.testutil.TypicalInternships.getTypicalInternshipData;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.extension.ExtendWith;","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import org.testfx.framework.junit5.ApplicationExtension;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.InternshipLogic;","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.logic.InternshipLogicManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModel;","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipModelManager;","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.InternshipUserPrefs;","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"@ExtendWith(ApplicationExtension.class)","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"public class DetailedInternshipListPanelTest extends UiTestBase {","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" private DetailedInternshipListPanel detailedInternshipListPanel;","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipLogic testLogic;","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipModel testModel;","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeEach","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" public void setUp() {","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" testModel \u003d new InternshipModelManager(getTypicalInternshipData(), new InternshipUserPrefs());","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" testLogic \u003d new InternshipLogicManager(testModel, null);","lastModifiedDate":"2024-03-27"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipListPanel \u003d new DetailedInternshipListPanel(testLogic.getFilteredInternshipList());","lastModifiedDate":"2024-03-27"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" public void selectInternship_index0_updatesLogicSelectedInternship() {","lastModifiedDate":"2024-03-27"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" detailedInternshipListPanel.getInternshipListView().getSelectionModel().select(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" Internship actualInternship \u003d testLogic.getFilteredInternshipList().get(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" Internship selectedInternship \u003d testLogic.getSelectedInternship().get(1);","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" assertEquals(actualInternship, selectedInternship);","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"CaptainKeqing":40}},{"path":"src/test/java/seedu/address/ui/InternshipCardTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import static org.testfx.assertions.api.Assertions.assertThat;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.extension.ExtendWith;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import org.testfx.framework.junit5.ApplicationExtension;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.model.internship.Internship;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.InternshipBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import seedu.address.testutil.TypicalInternships;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"@ExtendWith(ApplicationExtension.class)","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"class InternshipCardTest extends UiTestBase {","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private InternshipCard internshipCard;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private Internship testInternship \u003d TypicalInternships.AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeEach","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void initInternshipCard() {","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" void getLabels() {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" // Test the id label","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getIdLabel()).hasText(\"1. \");","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" // Test the company name and role label","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getCompanyNameAndRoleLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(testInternship.getCompanyName().companyName + \" -- \" + testInternship.getRole().role);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" // Test the status label","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\" * \" + testInternship.getApplicationStatus().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" // Test the description label","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getDescriptionLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(testInternship.getDescription().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" // Test the location label","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getLocationLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(testInternship.getLocation().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" // Test the POC label","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getPocLabel())","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"POC: \" + testInternship.getContactName().toString() + \" | \"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" + testInternship.getContactEmail().toString() + \" | \"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" + testInternship.getContactNumber().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" // Test the remark label","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getRemarkLabel())","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" .hasText(\"Remark: \" + testInternship.getRemark().toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" void checkStatusColours() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" // TO_APPLY status -\u003e Style should be font colour cyan","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"TO_APPLY\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_CYAN);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" // PENDING status -\u003e Style should be font colour yellow","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_YELLOW);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" // REJECTED status -\u003e Style should be font colour red","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"REJECTED\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_RED);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" // ACCEPTED status -\u003e Style should be font colour green","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"ACCEPTED\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_GREEN);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" // ONGOING status -\u003e Style should be font colour lightseagreen","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" testInternship \u003d new InternshipBuilder(TypicalInternships.AMY).withApplicationStatus(\"ONGOING\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" internshipCard \u003d new InternshipCard(testInternship, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" assertThat(this.internshipCard.getStatusLabel().getStyle())","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" .contains(InternshipCard.STYLE_WITH_FONT_COLOUR_LIGHTSEAGREEN);","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"CaptainKeqing":87}},{"path":"src/test/java/seedu/address/ui/UiTestBase.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import org.junit.jupiter.api.BeforeAll;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import org.testfx.framework.junit5.ApplicationTest;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * An abstract GUI Test class. Contains common setup code for GUI tests.","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public abstract class UiTestBase extends ApplicationTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" @BeforeAll","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" public static void setupHeadlessMode() {","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" // Ensure that tests run in headless mode (i.e., without displaying the GUI).","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" if (Boolean.getBoolean(\"headless\")) { // headless mode is enabled","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(\"Headless mode enabled! Running tests without displaying the GUI.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"testfx.robot\", \"glass\");","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"testfx.headless\", \"true\");","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"prism.order\", \"sw\");","lastModifiedDate":"2024-03-27"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"prism.text\", \"t2k\");","lastModifiedDate":"2024-03-27"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" System.setProperty(\"java.awt.headless\", \"true\");","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-03-27"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(\"Headful testing enabled! GUI will be shown.\");","lastModifiedDate":"2024-03-27"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"CaptainKeqing":24}}] diff --git a/AY2324S2-CS2103T-W11-1_tp_master/commits.json b/AY2324S2-CS2103T-W11-1_tp_master/commits.json index fff9b042..747518a0 100644 --- a/AY2324S2-CS2103T-W11-1_tp_master/commits.json +++ b/AY2324S2-CS2103T-W11-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jieqiboh":[{"date":"2024-02-29","commitResults":[{"hash":"147f8bd94f4e6e739f4d5fb4394bee05a53c8f4d","isMergeCommit":false,"messageTitle":"Update AboutUs for Boh Jie Qi","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":11}}}]},{"date":"2024-03-02","commitResults":[{"hash":"e6b5d1cca4ef66a56753ec05069bd970e195e6aa","isMergeCommit":false,"messageTitle":"Revert \"Add some non-functional requirements to the developers guide\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":5}}},{"hash":"51ad45e27eca66e8e736ae715427b60e4ee96956","isMergeCommit":false,"messageTitle":"Revert \"Add Donovan\u0027s information to AboutUs.md page\"","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":170},"docs":{"insertions":193,"deletions":320}}},{"hash":"334acec660182075322fd74bf721537e94a51c46","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AY2324S2-CS2103T-W11-1/revert-45-AddNFRToDG","messageBody":"Revert \"Add some non-functional requirements to the developers guide\"","fileTypesAndContributionMap":{}},{"hash":"6af83905a10571194c63ea3b601be1ca442b1fbf","isMergeCommit":false,"messageTitle":"Revert \"Add detailed view feature to user guide\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":9}}},{"hash":"c1d151799c80160da3b96471a7601d735ac426c8","isMergeCommit":true,"messageTitle":"Merge pull request #53 from AY2324S2-CS2103T-W11-1/revert-46-AddDetailedViewFeatureToUG","messageBody":"Revert \"Add detailed view feature to user guide\"","fileTypesAndContributionMap":{}},{"hash":"3faa8d9776cc7bdddb35241d09dbc8a57320a97e","isMergeCommit":true,"messageTitle":"Merge pull request #54 from AY2324S2-CS2103T-W11-1/revert-47-AddInfoToAboutUs","messageBody":"Revert \"Add Donovan\u0027s information to AboutUs.md page\"","fileTypesAndContributionMap":{}},{"hash":"3a8dd5382f82a8ba7f66094be07b8605356e89a0","isMergeCommit":true,"messageTitle":"Merge pull request #57 from CaptainKeqing/AddDetailedViewFeatureToUG","messageBody":"Add detailed view feature to User Guide","fileTypesAndContributionMap":{}},{"hash":"b7305c678f7ec67d836e6c7fa5c979e0bbe9187c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-AboutUs-JieQi","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"f7b88491ee82544cfd8bc626202197214a5022c9","isMergeCommit":true,"messageTitle":"Merge pull request #71 from LWS49/update-glossary-in-DG","messageBody":"added Glossary for DG","fileTypesAndContributionMap":{}},{"hash":"3da1ec69aa41b3295271e4cc9d8f9f13fbfc9e6f","isMergeCommit":false,"messageTitle":"Add CI Badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3bdb00d39a7bee1de00a0b48dd8d5f970aa484a8","isMergeCommit":false,"messageTitle":"Fix CI Badge Typo in README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"e5c5c35dc6434c7e5fb0e5eb1da1aeee21b7982f","isMergeCommit":false,"messageTitle":"Add Internship class and its basic fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":592,"deletions":0}}},{"hash":"7e07c732d0d10b6f2175dc50eda4846f5e9c8f0f","isMergeCommit":false,"messageTitle":"Add Javadocs and fixed styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":29}}}]},{"date":"2024-03-08","commitResults":[{"hash":"3ba8b5e7eba6359de02db9b8c1bf3f84f7ad1106","isMergeCommit":false,"messageTitle":"Add newline to EOF for formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-09","commitResults":[{"hash":"38fcbd5a4ae8149cfa8924b908f55fe5bef19164","isMergeCommit":true,"messageTitle":"Merge pull request #68 from LWS49/updateReadMe","messageBody":"update ReadMe","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"5e67685eae99f706c9e4ad7b33e580140cc3f06a","isMergeCommit":false,"messageTitle":"Added validation regex for ApplicationStatus and Location classes, as well as their tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":63,"deletions":4},"test-code":{"insertions":152,"deletions":0}}},{"hash":"a0514315ce0357bef5fdb9d1ebee70a55b3a9173","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}}]},{"date":"2024-03-12","commitResults":[{"hash":"444754d6bcf0b6f50f5b7b7040e209afa92dce58","isMergeCommit":false,"messageTitle":"Update toString method for ApplicationStatus and Location, add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":26},"test-code":{"insertions":50,"deletions":0}}},{"hash":"a314f3867f5088efafb61c5645d8ace85ec1e94c","isMergeCommit":false,"messageTitle":"Update enum for AppnStatus and Location to public","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"452904a0cb75427a1b6d72ab54a90e8141c58ae7","isMergeCommit":false,"messageTitle":"Amended typo in test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"1249f74f2bcf8204b0dd29d1b5417709ab355639","isMergeCommit":false,"messageTitle":"Replace person reference to internship, amend typo in CompanyName\u0027s isValid method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"8c5e2040e5fd1d270dcabd9dbda3024ee5545142","isMergeCommit":false,"messageTitle":"Add missing validators to ensure Description and Role are not blank","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":2},"test-code":{"insertions":147,"deletions":5}}},{"hash":"2ef0a91270d7e5de47268a922a633369c090b8e6","isMergeCommit":false,"messageTitle":"Add JsonAdaptedInternship and tests","messageBody":"Also add InternshipBuilder and TypicalInternships, which support\nInternship creation for testing purposes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":0},"test-code":{"insertions":337,"deletions":0}}},{"hash":"6284a6277737c111c5dd9f9f5b5ad8f1a9ef0b0c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into Json-Adapted-Internship","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea84daade0d6abbee8bc0b8fd9cd2d1e89001958","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":53,"deletions":32}}}]},{"date":"2024-03-14","commitResults":[{"hash":"dc9d659b2adb5737df1951d56875fc188ae58bcc","isMergeCommit":false,"messageTitle":"Add JsonSerializableInternshipData and Tests","messageBody":"Update Storage.java and StorageManager.java to include methods for\nInternshipData\nAdd JsonSerializableInternshipData and tests for it\nMove placeholder data files to a separate folder in\n/test/data/JsonSerializableInternshipDataTest\n","fileTypesAndContributionMap":{"functional-code":{"insertions":149,"deletions":1},"test-code":{"insertions":62,"deletions":0}}},{"hash":"988d097b6492081ab41c16ae1387afbdd39961a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-JsonSerializableInternshipData","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9dd910fc51e6ff1f3de8aee4a466621da068437d","isMergeCommit":false,"messageTitle":"Add JsonInternshipDataStorage and Tests","messageBody":"Also modify StorageManager to add methods for JsonInternshipDataStorage\nAdd tests for StorageManager and JsonInternshipDataStorage\n","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":2},"test-code":{"insertions":163,"deletions":8}}},{"hash":"8b7b2fe74879402ce975c4cdcf1d1a60cbe7f6d3","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"592473ce27db1e1fe5c837603de4782d02f82e30","isMergeCommit":false,"messageTitle":"Add tests, change isSamePerson and refactor isValidContactEmail","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4},"test-code":{"insertions":140,"deletions":4}}},{"hash":"06fdb7b3a6c60ba0e785159b3637d64ddf45b2a3","isMergeCommit":false,"messageTitle":"resolved checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":13}}}]},{"date":"2024-03-18","commitResults":[{"hash":"8a8cd1c3d7d12dc402e8a22bc3d46c5b8779116a","isMergeCommit":false,"messageTitle":"Update UniqueInternshipListTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":172,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"3ee74156dfe46b22f9f902b9a482a79831507722","isMergeCommit":true,"messageTitle":"Merge pull request #119 from CaptainKeqing/fixUIBugs","messageBody":"Set result display to wrap text, make colour styling functional for different statuses","fileTypesAndContributionMap":{}},{"hash":"290bce02ed034b8a3fc3024e23d16f9be584bf18","isMergeCommit":false,"messageTitle":"Add basic Remark files and modify Internship to support remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":2}}},{"hash":"e8475d0966b2079658734d98230f4a1cdb77e81c","isMergeCommit":false,"messageTitle":"Add RemarkCommandParser and modify parser files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":30}}},{"hash":"55fa3e7a7c00524526471a068eee523e0251b741","isMergeCommit":false,"messageTitle":"Update UI components to support remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"8803992d5e5c4381f1bfd1bcd7d6d935f787f5ce","isMergeCommit":false,"messageTitle":"Update storage files for remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":24}}},{"hash":"2fb9660490838fdbbe385274a30b6042954d65f3","isMergeCommit":false,"messageTitle":"Add tests for remark and update placeholder data","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":225,"deletions":186}}},{"hash":"89cae2b8a4effe2cf74b317ea33701cf927af8a0","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":8},"test-code":{"insertions":37,"deletions":11}}},{"hash":"94b66488484fefa1e6135960c6725b3166f297de","isMergeCommit":false,"messageTitle":"Add support for modifying remarks via EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":17}}},{"hash":"f9720ed689bb3c2a266032b2dd48be048bd1dc0f","isMergeCommit":false,"messageTitle":"Fixed typos and replaced references to ab and person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13},"test-code":{"insertions":2,"deletions":2}}},{"hash":"de25a986901702fa1f6a038f6d05b3ddcf4d6147","isMergeCommit":false,"messageTitle":"Updated Quickstart and Save section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":23}}},{"hash":"e651cdba65320fca55320083704dc4cfaf1b0839","isMergeCommit":false,"messageTitle":"Updated Command Summary table with links, added AddRemark section to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":34}}},{"hash":"ff0c4d86df172923b2e7f5cf9e97ced54931e368","isMergeCommit":false,"messageTitle":"Add newline to EOF for formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"2971855c2c34f09bdb82b12016d4206f2c4e9e57","isMergeCommit":false,"messageTitle":"Refactor storage filenames, update Storage diagram in DG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"other":{"insertions":10,"deletions":10},"docs":{"insertions":45,"deletions":4},"test-code":{"insertions":19,"deletions":19}}},{"hash":"acfbe229640249c7bfc3b877253f15fabe3ae46f","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5},"test-code":{"insertions":2,"deletions":1}}},{"hash":"f8ec75f138cb0a216cdd69864c6a005b834d7280","isMergeCommit":false,"messageTitle":"Fixed typo in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"c5fa756a91a5dba7b67d1f737df54b820e3e4883","isMergeCommit":false,"messageTitle":"Update cmd helper message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"57d05423ca6e9cdf673eb28bdfe23ced12847a41","isMergeCommit":true,"messageTitle":"Merge pull request #135 from theman-oj10/master","messageBody":"Update Model Section of Developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"13505c6973211992b7c7f4f5e5c6eb231276bc9f","isMergeCommit":true,"messageTitle":"Merge pull request #137 from HM33-Stu/ug-general-edits","messageBody":"User Guide - Formatting and updating/removal of certain sections","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"550aaaeb7e3c63979314e10725a360b011c15658","isMergeCommit":true,"messageTitle":"Merge pull request #142 from LWS49/add-UG","messageBody":"Add target audience to user guide","fileTypesAndContributionMap":{}},{"hash":"c48d1c7f0942aed14f71ca80160636e038a534a1","isMergeCommit":true,"messageTitle":"Merge pull request #138 from HM33-Stu/dg-logic-puml","messageBody":"Update Logic Section of Developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"b75b3f23b29a008a4937692c5a9f375e8efcb00c","isMergeCommit":true,"messageTitle":"Merge pull request #144 from theman-oj10/branch-developer-guide","messageBody":"Fix Developer Guide Image","fileTypesAndContributionMap":{}},{"hash":"43eacdf2d922507e9ffe2b9ceff400078dcf4d4f","isMergeCommit":true,"messageTitle":"Merge pull request #146 from CaptainKeqing/updateDG","messageBody":"Update developer guide for Architecture Diagram, Architecture Sequence Diagram and UI parts. Also fixes broken links","fileTypesAndContributionMap":{}},{"hash":"735919497d8fe12748d2895d3557b4d0e7044e9c","isMergeCommit":false,"messageTitle":"Update Quickstart, AddRemark and shift Cmd Summary","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":44,"deletions":12}}}]},{"date":"2024-03-27","commitResults":[{"hash":"b52ffad54ec862eaea2392b95132cd2d66e94a61","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ug-quickstart","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1837264c0e78574dfd4965936877df4ba2174a3","isMergeCommit":false,"messageTitle":"Resolved grammar errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"15b5caaa754da51ed4a4515188d75242c4fe9361","isMergeCommit":false,"messageTitle":"Add remark tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":0}}},{"hash":"52c92b30d6de31cf043c2ac3904b29560f4ff80a","isMergeCommit":false,"messageTitle":"Update UG addremark to explain remark deletion","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"b1e86273ba003f0061c22fbd498a87c05e49b7e3","isMergeCommit":true,"messageTitle":"Merge pull request #156 from LWS49/improve-UG","messageBody":"Correct formatting issues + have full TOC with all major sections in UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-28","commitResults":[{"hash":"4cb26ea2be0a16c13c773b07ad0be2645d4a2774","isMergeCommit":false,"messageTitle":"Add legend to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":8}}},{"hash":"11fb5a829ae345c44c3c34e316402cb30adf8620","isMergeCommit":true,"messageTitle":"Merge pull request #151 from HM33-Stu/hm33stumd-edits","messageBody":"Amended HM33-Stu Md File Format","fileTypesAndContributionMap":{}},{"hash":"494c3083e3c240ef4d69581dba8139fdd2a27d04","isMergeCommit":true,"messageTitle":"Merge pull request #157 from theman-oj10/branch-UserGuide","messageBody":"Update UG to include Sort","fileTypesAndContributionMap":{}},{"hash":"252077a9db1f59d989675053ef6c69fadb62f8d5","isMergeCommit":true,"messageTitle":"Merge pull request #159 from theman-oj10/branch-UserGuide","messageBody":"Fix formatting errors on UG Field Summary","fileTypesAndContributionMap":{}},{"hash":"ed766bfe3d6d50425b590e6762f1b0790c7cd14e","isMergeCommit":false,"messageTitle":"Update intro to make it more succinct","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":56}}},{"hash":"b5a2bb05888835d195ec83d76d171d213b073ea6","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-ug-intro","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"da262c47ddbc87e733539ee56d4dd5b9e8817567","isMergeCommit":true,"messageTitle":"Merge pull request #160 from HM33-Stu/ug-edits-add-delete","messageBody":"Amendments To Add And Delete Sections In UG ","fileTypesAndContributionMap":{}},{"hash":"7151f2a8efc4d1c4be827d4fd7442a30b4bf79de","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-ug-intro","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"c7c624eca2ac61723e8767097a6088853b2d4e45","isMergeCommit":false,"messageTitle":"Standardise headings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":36}}}]},{"date":"2024-03-30","commitResults":[{"hash":"7323e42da59e5f02d2822880ba20b3970b12975d","isMergeCommit":false,"messageTitle":"Add deletetask command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":158,"deletions":2},"test-code":{"insertions":206,"deletions":0}}},{"hash":"12dba3ab2fab69b0318e6a8c65536f14eaebf8e8","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-04-01","commitResults":[{"hash":"b488de9398d2f569a10aa9805ec665d95baf465e","isMergeCommit":false,"messageTitle":"Update UserGuide to include deletetask","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":2}}}]},{"date":"2024-04-02","commitResults":[{"hash":"b2e83ea0f92a30f90b49d094d6b2fb77ab1c17e4","isMergeCommit":true,"messageTitle":"Merge pull request #126 from CaptainKeqing/addClickableInternship","messageBody":"Add clickable internship, Tests for UI","fileTypesAndContributionMap":{}},{"hash":"048f5ae2fdd9d45053e4ce8396cac81cd91fc775","isMergeCommit":false,"messageTitle":"Update delete-task error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"45f7d7c91694a758179e5a6ad5f479110aeb0a72","isMergeCommit":false,"messageTitle":"Refactor internship and task index error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5},"test-code":{"insertions":18,"deletions":15}}},{"hash":"57cf3b6a71217dda467927ddaa7894bc5dc626d7","isMergeCommit":false,"messageTitle":"Edit invalid task index message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"28e2fdfeb496397556571092495c5059eae0b6dc","isMergeCommit":false,"messageTitle":"Update RemarkCommandParser to handle invalid /remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":9}}},{"hash":"c773a5275339ebf90055fdd36c3adc993a6c1a53","isMergeCommit":true,"messageTitle":"Merge pull request #178 from LWS49/fix-editTestCases","messageBody":"Fix Edit Test Case (and some minor edits)","fileTypesAndContributionMap":{}},{"hash":"37c703071a46f26032b6fc87cbbb83d69f886d5d","isMergeCommit":true,"messageTitle":"Merge pull request #175 from LWS49/fix-error-messages","messageBody":"Fix Error Messages","fileTypesAndContributionMap":{}},{"hash":"7254ad0631ea7e5279e692c6a5a64c28371d4df1","isMergeCommit":false,"messageTitle":"Fix duplicate prefixes being accepted for some cmds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"580b5d2c613733aff23698eb15bb8fa899278271","isMergeCommit":false,"messageTitle":"Fix bug regarding tasklist not refreshing after task deletion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"31deb36fcddde997971c5378b2ca30c135f166ba","isMergeCommit":false,"messageTitle":"Revert change to findcommand duplicate prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"06a2d84cb5c02c9c9d36e5f864a04a611e8d3b5f","isMergeCommit":true,"messageTitle":"Merge pull request #188 from HM33-Stu/ug-edits-add-delete","messageBody":"User Guide - Add \u0026 Delete With Some Minor Edits","fileTypesAndContributionMap":{}},{"hash":"91537b6c482254c1dfa00367d7ea9e8caa4ad604","isMergeCommit":true,"messageTitle":"Merge pull request #154 from theman-oj10/sort-feature","messageBody":"Implement Sort feature","fileTypesAndContributionMap":{}},{"hash":"a7d9bc862e73f60c017e417835f7f6dc2a4c4455","isMergeCommit":true,"messageTitle":"Merge pull request #191 from LWS49/changeAddDeadlineToSetDeadline","messageBody":"Replace all instances of adddeadline to setdeadline","fileTypesAndContributionMap":{}},{"hash":"1a7749593109cb0d620ea20d06157d85c89c0012","isMergeCommit":true,"messageTitle":"Merge pull request #192 from LWS49/update-DG-for-edit","messageBody":"Update dg for edit","fileTypesAndContributionMap":{}},{"hash":"2e4f6dee878fe59192b4cb977de9c440a5273f06","isMergeCommit":false,"messageTitle":"Update addremark to contain tip","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-04-04","commitResults":[{"hash":"3f24f84efbb5cf0ea63abb3e8eb47c528547b04b","isMergeCommit":true,"messageTitle":"Merge pull request #185 from HM33-Stu/add-optional-feature-updated","messageBody":"Updated Optional Feature","fileTypesAndContributionMap":{}},{"hash":"1f44e0c984e9032c05c3acc95e7b118baddf35e7","isMergeCommit":true,"messageTitle":"Merge pull request #198 from HM33-Stu/minor-patch","messageBody":"Minor Edits","fileTypesAndContributionMap":{}},{"hash":"e0663142535a39809d578d4f08688e27044e3b43","isMergeCommit":true,"messageTitle":"Merge pull request #201 from LWS49/update-UG","messageBody":"Update commands in UG to correct format","fileTypesAndContributionMap":{}},{"hash":"244cb8411a77fcf398d8b54f53ba944cee587378","isMergeCommit":true,"messageTitle":"Merge pull request #203 from LWS49/updatePhoneNumberToMin8Digits","messageBody":"Update ContactNumber minimum digits to 7","fileTypesAndContributionMap":{}}]}],"HM33-Stu":[{"date":"2024-03-01","commitResults":[{"hash":"1dfe5a875eb1ac16d6d2c461b007f2ed451c44bf","isMergeCommit":true,"messageTitle":"Merge pull request #47 from CaptainKeqing/AddInfoToAboutUs","messageBody":"Add Donovan\u0027s information to AboutUs.md page","fileTypesAndContributionMap":{}},{"hash":"3b565d7a0f0592919a5122f24e6cbf9ed09252f7","isMergeCommit":true,"messageTitle":"Merge pull request #46 from CaptainKeqing/AddDetailedViewFeatureToUG","messageBody":"Add detailed view feature to user guide","fileTypesAndContributionMap":{}},{"hash":"70f2e06a5844712b7d18176f35e33db0446773ff","isMergeCommit":true,"messageTitle":"Merge pull request #45 from CaptainKeqing/AddNFRToDG","messageBody":"Add some non-functional requirements to the developers guide","fileTypesAndContributionMap":{}},{"hash":"8c1ebc21de5a22752fae34eee06ab6e126ace2b9","isMergeCommit":false,"messageTitle":"Update Hari\u0027s info, photo and contribution document to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":11}}},{"hash":"91ab84fa37bb1ce6548b74479787946aeab6852a","isMergeCommit":false,"messageTitle":"Update AboutUs to resolve image issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7543b354f93176e03aab7b4fc357e598cbe24514","isMergeCommit":false,"messageTitle":"Amend Add and Delete details in the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":17}}}]},{"date":"2024-03-02","commitResults":[{"hash":"feb7e06ef2ba9df639d5d058f7afcf6b0212090d","isMergeCommit":false,"messageTitle":"Add Use Cases and Stories To DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":173,"deletions":24}}},{"hash":"e01435f5aa3cea71f1ec37a3715532d252c894e4","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d73b262cdc9338a7cb39691299951d342ada901e","isMergeCommit":false,"messageTitle":"Rename HM33-Stu.md to hm33-stu.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6c3d376a11470265999c222ea627b2611fc8b9bb","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"396abd9e49cccded4afd5f9491e0a739702aef30","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into AddUseCasesToDG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7651a1dee8d79b9abcd0a217f0cfc48a46218e04","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AmendAddAndDeleteFeatureInUG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8dc9d50af0c97b931b0ccf93e80ec626bf286a65","isMergeCommit":true,"messageTitle":"Merge pull request #62 from jieqiboh/Update-AboutUs-JieQi","messageBody":"Add JieQi\u0027s Information to AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"975c26c5efca96aa21b30e146df97b5b48386d52","isMergeCommit":false,"messageTitle":"Rename LWS49.md to lws49.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"a240f75c84684efc22ad959998e8b38e94e4e349","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fcc59b85a88ead1d76237ac00498bfff5ffa10d3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ca3d52201a95aa7f0359e6731f5ea5fdae20a610","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"9ff0bd19fc3acad17a1504d2c16f0bc25d7badf9","isMergeCommit":true,"messageTitle":"Merge pull request #64 from LWS49/addWeiShengtoAboutUs","messageBody":"add Wei Sheng in AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"783415f4998ca374a626a792cf7ba11c1d8bbaf1","isMergeCommit":true,"messageTitle":"Merge pull request #77 from jieqiboh/Add-Test-Data","messageBody":"Add placeholder test data","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"39f01f67f8716a35658f0c1d134fcd7887754c79","isMergeCommit":true,"messageTitle":"Merge pull request #80 from jieqiboh/AppnStatus-Location-Tests","messageBody":"Added validation regex for ApplicationStatus and Location classes","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"3aebddfb2a25ad8b1d6c2a55ebe4f9e90e8db70b","isMergeCommit":true,"messageTitle":"Merge pull request #82 from CaptainKeqing/viewInternships","messageBody":"Create InternshipCard and InternshipListPanel","fileTypesAndContributionMap":{}},{"hash":"347944ec17a9025051ab6febdcb97fe7ac2c9e2e","isMergeCommit":false,"messageTitle":"Updated CliSyntax For Commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0a78f53eaa2a8acdfcd8205379f1eb19aa87c83a","isMergeCommit":false,"messageTitle":"update-add-command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":0},"test-code":{"insertions":448,"deletions":0}}},{"hash":"3191d672d982ef93d96eba7a78cae0fed22e0fba","isMergeCommit":false,"messageTitle":"update-delete-command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":98,"deletions":0},"test-code":{"insertions":154,"deletions":0}}},{"hash":"a64b67814ec52c77a43ef714346fba82dbe905e4","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1ceccb0b30d8d6de6aa1fccc4e36846cceada2ca","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"a31827b32fb27517e008d090004236f9000c1b5c","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"3f2e2ba9ebfb74c4d7ff82e6238dbda83e412de3","isMergeCommit":false,"messageTitle":"Update JavaDoc and Variable Naming","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"4b765ed18d06befa4e3ffb62199fd39f1fbc5d32","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"[Resolved]\r\nerror: type argument InternshipAddCommand is not within bounds of type-variable T","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2dcaded3b362d06e81c72d7d7142917894e4c756","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"Typo error","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"6491a22cacd061d5f2e0b4fb3f1a61ef163632b1","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Resolving checkstyle errors","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":5}}},{"hash":"ab6fbb9a62a3d7b943a9954c0f5380d57d54f3ab","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Trailing whitespace","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"5cae09c023ac8c12f1f545e677561c81acb8f241","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Checkstyle errors","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"dc2adfb8a55dcb919646254c13695ba8a02a8272","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Had to rename \"phone\" to \"phon\" to pass checks","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"a808d1ce3366ad017ab7bc75029f6e1722a126c7","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Rectified based on working local gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"d062b8fcefb1c359292521488ad7bf68c51561a9","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2b0c4e5416311fa7a5a7c2d892d1550d6513ee79","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandTest.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"66468785a840a6f4fc6768ff14be210d433f81b0","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommand.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"885300cb3cbf8e32f2868130e22ab2b437f97085","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParser.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"3ce0e0089b173a9e2f155d5e7af186aba73b36e2","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandTest.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"92cd58cd08e5e5643ce17ac8886407872893975a","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"81175cf42ca57a566055b4ff50bf683ea2d638ac","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommand.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"306720f91b0b45a53e0e1fb9d1f309615d375d5e","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandTest.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1797f41509b7039fe460748793958de7fae54c55","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParserTest.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":6}}},{"hash":"dc7f3a4131f4cc695cd5d68b0de84bfc078da049","isMergeCommit":false,"messageTitle":"update-delete-command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":6,"deletions":6}}},{"hash":"3fc5164eb734fd6e8f0681ec9b1a4aa65705915a","isMergeCommit":true,"messageTitle":"Merge pull request #103 from CaptainKeqing/clearExitHelpList","messageBody":"Add Clear, Exit, Help, List commands using internship","fileTypesAndContributionMap":{}},{"hash":"a857035ad999a7873ab41c8c711810ac32bdb89f","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"11fec1f8cece2916c75d719817cccb3ed6f8c80e","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandIntegrationTest.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1121093ab34a81436bf12f263f00dae03d466156","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandTest.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"b38d71a70e9b518abc8ea341121cd4711b9058c7","isMergeCommit":false,"messageTitle":"Update InternshipCommandTestUtil.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"c20b08b5b5da8f3d4c32cc389917c3766bafbd3d","isMergeCommit":false,"messageTitle":"Update TypicalInternships.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"17ceafb8c88cf5f42e3590f0af2f4ebcb782f415","isMergeCommit":false,"messageTitle":"Update InternshipBuilder.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"b7149b9d0217d345595d29921e85957cbbef0780","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into update-add-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"76d57ea66bcc4aed31428000d79b154984f199c4","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":216,"deletions":134}}},{"hash":"4eee4789a62fb332c9fce8b2c9757f981147fe7e","isMergeCommit":false,"messageTitle":"Update TypicalInternships.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"0037feaac52f7114e8d868a8725738fdf841bbc4","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}},{"hash":"2e62f699662c7f3ec67d7a6fa26fabd3159e9379","isMergeCommit":false,"messageTitle":"update-delete-command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":2,"deletions":2}}},{"hash":"f832e0882f17f7b50d3c60cbf288251021057e11","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into update-delete-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d7b13afa2c0404abf7448cf7fd7ece4d9527d2eb","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"dd9825bae036757d41bc970591c465e63a3e6eca","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"bdd41e2ec360e4f1b162d62ba8f0035880502c5d","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"22b83bae49736927b8eb27c0dca4c8ca461d4942","isMergeCommit":false,"messageTitle":"Update InternshipUtil.java","messageBody":"Changed Javadoc person -\u003e internship","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"53ba8575e9324bca58f8b2d66afd59542abdfeca","isMergeCommit":false,"messageTitle":"Update InternshipUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"6938fe96f683c1114be952ee2f3e0860bba5ae68","isMergeCommit":true,"messageTitle":"Merge pull request #110 from CaptainKeqing/branch-addTestUtilInternshipUtil","messageBody":"Add InternshipUtil under test utils","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"d84bf24d7dc925c407ffc4ffea855d3b586dc0d7","isMergeCommit":true,"messageTitle":"Merge pull request #114 from jieqiboh/uniqueinternshiplisttest","messageBody":"Update UniqueInternshipListTest","fileTypesAndContributionMap":{}},{"hash":"9b92bc8382fa1f7400bc4038ac8026837686e677","isMergeCommit":false,"messageTitle":"Addresses UI bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22}}}]},{"date":"2024-03-19","commitResults":[{"hash":"102579b7121a13b7a60fff6f6f9238bdf803528c","isMergeCommit":true,"messageTitle":"Merge pull request #118 from CaptainKeqing/fixInternshipEquals","messageBody":"Fix internship .equals() to check equality for all data fields, UniquePersonList to check for identity not equality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"34148830cc2022eebdeea51cce790de2a13e196c","isMergeCommit":true,"messageTitle":"Merge pull request #124 from jieqiboh/ug-quickstart-save-remark","messageBody":"Update CommandSummary, Save and AddRemark section in UG","fileTypesAndContributionMap":{}},{"hash":"043ab76e924689841da3412f219052e4ea53c783","isMergeCommit":false,"messageTitle":"Update Add and Delete command sections in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"d1f2871d843140670a4763ae828340fcd862ac2f","isMergeCommit":false,"messageTitle":"Spacing change","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"3ee0f60d17f6776dab3f6f4d29ad2bfdbc735668","isMergeCommit":false,"messageTitle":"Update UG formatting and certain sections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":32}}},{"hash":"aa4fa0d836ff6f18f605aa9826080b98cee1e31c","isMergeCommit":false,"messageTitle":"Update Logic Section of Developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":3}}},{"hash":"0ab97b238e4f06ed2336519068dce575ed93a7a4","isMergeCommit":true,"messageTitle":"Merge pull request #139 from CaptainKeqing/updateUGFind","messageBody":"Update User Guide for Find Command","fileTypesAndContributionMap":{}},{"hash":"3ce4698022138a2cec2247929a24e9e0192421ec","isMergeCommit":false,"messageTitle":"Resolved typo errors flagged in PR review","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":24}}},{"hash":"6597daf2eb94c05a2d0e65b3f632a8f7e1bacff4","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into dg-logic-puml","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"8e514c87d6f95695983804546a482e836b2798ab","isMergeCommit":false,"messageTitle":"Add Task Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":63,"deletions":0}}},{"hash":"776fb2b4e590045acbc71d95fc4335487b23d403","isMergeCommit":false,"messageTitle":"Add Deadline Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":63,"deletions":0}}},{"hash":"9d6143a11400b3fdfcbd16a44daf5dd32ea8e97d","isMergeCommit":false,"messageTitle":"Addition of Task Class Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":52,"deletions":0}}},{"hash":"ceb4093b6bcf4ca86b9330a1b0cd6ebe79b6bc17","isMergeCommit":false,"messageTitle":"Modified Deadline and added Deadline Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3},"test-code":{"insertions":57,"deletions":0}}},{"hash":"7d1b87786d5b895650e47dd95f2cd40ad52dc301","isMergeCommit":false,"messageTitle":"Introduced Format To Deadline and Testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-26","commitResults":[{"hash":"5e163ca7240880d250c71285cc01e4e13c7dd893","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into dg-logic-puml","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"1a77cc1fdf9aacc675aca5773fbc99fbe2370c49","isMergeCommit":false,"messageTitle":"Amended to correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"43b748c64ff34eab81cfca9dfc836c1049d9b32f","isMergeCommit":true,"messageTitle":"Merge pull request #153 from jieqiboh/addremark-tests","messageBody":"Add RemarkTests","fileTypesAndContributionMap":{}},{"hash":"7f1bd2748e6d178dcf3fe743045b6d8ab5d5ed5b","isMergeCommit":true,"messageTitle":"Merge pull request #150 from theman-oj10/branch-UserGuide","messageBody":"Update User guide","fileTypesAndContributionMap":{}},{"hash":"df22a2a4fc5d0ef3f4b189768cbc48782d790ba0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into improve-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3888d750fb81c6c977506cfcf1d9ccae601a1df2","isMergeCommit":true,"messageTitle":"Merge pull request #149 from LWS49/improve-UG","messageBody":"update introduction and edit command in UG","fileTypesAndContributionMap":{}},{"hash":"62d5b36ca166c29bb99dac2b36453e1b525b57ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ug-quickstart","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0081e2149b586f5ee551ce163d5438fe27fd4535","isMergeCommit":true,"messageTitle":"Merge pull request #147 from jieqiboh/update-ug-quickstart","messageBody":"Update Quickstart, AddRemark and Shift Cmd Summary","fileTypesAndContributionMap":{}},{"hash":"7bd5540045ec40f034abca567877e231aa1a8069","isMergeCommit":false,"messageTitle":"Amendments for Add and Delete sections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":20}}},{"hash":"8b954f0cfcabd4db57c214d06bdbd2f47f398482","isMergeCommit":false,"messageTitle":"Command Summary Amendment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":15}}},{"hash":"1138835d328b67005ec4cb24a1d6ce226c918d94","isMergeCommit":false,"messageTitle":"Fixed small errors carried over from other merged PRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-28","commitResults":[{"hash":"99c7051be0204f211f301deb4d7198b20b1447e5","isMergeCommit":false,"messageTitle":"Edits Based on Consultation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":17}}},{"hash":"54862fc117b50e6cd23efe06f7d880c63cb6ec14","isMergeCommit":true,"messageTitle":"Merge branch \u0027ug-edits-add-delete\u0027 of https://github.com/HM33-Stu/tp into ug-edits-add-delete","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"90d715ba687f51770095889575d4b278d7645a4a","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":12}}},{"hash":"74a22f908fa1fe0088bfaca0383fbf6bbcf9b4e0","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"7fab4fe626f2fe3f0cb8486263c07acd5d9029fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into ug-edits-add-delete","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ee4f59afe0f32eaefc997c527fcd98096beedb8b","isMergeCommit":false,"messageTitle":"Edits to Add and Delete","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":1}}},{"hash":"6de9890f9bec8f0f19b6fa2b2afd84bddbaca712","isMergeCommit":false,"messageTitle":"Improving language use","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"1a8748b7475c95700484d854dd01dfd629443fe4","isMergeCommit":false,"messageTitle":"Rectified spacing errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"8233be1df083eb92ec42aebdfd81b0d246bf6fee","isMergeCommit":true,"messageTitle":"Merge pull request #161 from jieqiboh/update-ug-intro","messageBody":"Update intro to make it more succinct","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"4aa4e88e5389e7bef8d0a2f3e9d0b3db0aaa0112","isMergeCommit":false,"messageTitle":"Enable Assertions In Team Repo","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}}]},{"date":"2024-04-02","commitResults":[{"hash":"f588c405d1ee730f5f09e6ccff33de1a63584dbd","isMergeCommit":true,"messageTitle":"Merge pull request #167 from jieqiboh/delete-task","messageBody":"Add Delete Task Command","fileTypesAndContributionMap":{}},{"hash":"eecded3a6f816364bc89957ca58749618e61d86f","isMergeCommit":false,"messageTitle":"Changed App Logo to CareerSync","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"8242d30318d0ba0f5cd3fcaa03bc3f1ffe3d8fd1","isMergeCommit":false,"messageTitle":"Rectified Spacing In Error Messages (Add Command)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"60679f4fb02296480b6e5f0fdf6ef6d47db1fe1e","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"98e6c9c0c31cfdef5bcf6be2e334cb1f33cdede0","isMergeCommit":false,"messageTitle":"Adding Optional Feature (Updated)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":67},"test-code":{"insertions":8,"deletions":19}}},{"hash":"644075429abac416257a3f92fa13e224390fa6d6","isMergeCommit":false,"messageTitle":"Ui Issue Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"24dab6def59719f38d0bf9da1950f8605f8e1656","isMergeCommit":false,"messageTitle":"Ui Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":19}}},{"hash":"aa5b3f051ff300c7ea836e1195c29347cb9cced6","isMergeCommit":false,"messageTitle":"Resolved Ui Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":23}}},{"hash":"287cbba70a8f167fe22c02425fdffc48fa059578","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"dc5ecadb25ca1fa65e2df297b58b035b115c10c3","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"36de811bfb15c7faa318bb4c90d83d7a5ee1cb9f","isMergeCommit":false,"messageTitle":"Bug Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":9},"test-code":{"insertions":19,"deletions":21}}},{"hash":"370e130ec7a59cc3dd82a897c42d158a131a2269","isMergeCommit":false,"messageTitle":"Bug Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":13},"test-code":{"insertions":0,"deletions":1}}},{"hash":"72dbe932a48e6ee8778e32a9dcd96a44c233c638","isMergeCommit":false,"messageTitle":"More fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"6ad9a9b54eca2846798b2e04c7ffab65c5b70c54","isMergeCommit":false,"messageTitle":"Test Case Error Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":26}}},{"hash":"22d42027a2d05d0b941539607a08132460face51","isMergeCommit":true,"messageTitle":"Merge pull request #183 from LWS49/addCapsToArguments","messageBody":"Change MESSAGE_USAGE arguments to capital letters ","fileTypesAndContributionMap":{}},{"hash":"4dd8707a1ea0239e25c8e251791e020cf99a31e2","isMergeCommit":true,"messageTitle":"Merge pull request #177 from CaptainKeqing/improveFindUsage","messageBody":"Improve Find error messages, add support for remark, add tests for InternshipParserUtil","fileTypesAndContributionMap":{}},{"hash":"d5a56050cd44f6ec4d565330249ee8325a0e769a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-optional-feature-updated","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"759a4a5647c4b2f2a98476d5a638f64c0ef9f3c7","isMergeCommit":false,"messageTitle":"General Minor Fixes \u0026 Edits To Add \u0026 Delete Command Sections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":7}}},{"hash":"978706a0a5539fdc2f8be8ae95f9c10999b7d889","isMergeCommit":false,"messageTitle":"Spacing Issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"b32a269e4053024e0fed0fd537f9ee01d8815a90","isMergeCommit":false,"messageTitle":"Resolved Remaining Test Case Errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":12,"deletions":19}}},{"hash":"fdc4d91bfb6e8472db9733e80765e894fc02ffd7","isMergeCommit":false,"messageTitle":"Internship Card Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"6e422111586923c5e158f756e530afaf84902b16","isMergeCommit":false,"messageTitle":"Remove Internship Card Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":11}}},{"hash":"5572258d62ee3d4101999b1f12f018f50921b56c","isMergeCommit":false,"messageTitle":"Success Test Cases - Location Null","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"e878040b93a4600a094488066ac5b1749f2c6026","isMergeCommit":false,"messageTitle":"Test Cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":28,"deletions":11}}},{"hash":"4ce679d273124132df4247efbb35e81a84d8f859","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"8e03c8271c54c52ff9f8abd000b7dea30cfd5a26","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into add-optional-feature-updated","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6125256a6c35f8301aed0425ad1670cfac220fde","isMergeCommit":false,"messageTitle":"Medium Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":17},"test-code":{"insertions":2,"deletions":2}}},{"hash":"6955f966108c066eb6c76c9467c75d2bb27d46be","isMergeCommit":true,"messageTitle":"Merge pull request #194 from jieqiboh/addremark-tip","messageBody":"Update addremark to contain tip","fileTypesAndContributionMap":{}},{"hash":"2cb1857666675ebe09247199be9ec0dd09cda437","isMergeCommit":false,"messageTitle":"Change use of NULL for location to UNKNOWN","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":4,"deletions":4}}},{"hash":"6ed940acd4a32f818d415c1d0468b26893e9133a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into add-optional-feature-updated","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"409ae5dfed3dc41c84c43f7d491cd1435d7610b3","isMergeCommit":false,"messageTitle":"Bug Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":25},"test-code":{"insertions":6,"deletions":18}}},{"hash":"2fca313aaaa662455ceb17d7220cd7c7aac7edb0","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a7d7ba81c31677b28e9452746b7177c2fa17efde","isMergeCommit":false,"messageTitle":"Additional Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"bb28c2138df57fc96d551f248f982aca54f92317","isMergeCommit":false,"messageTitle":"Reverted changes due to use of default values for location and role","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":36},"test-code":{"insertions":12,"deletions":12}}},{"hash":"2280283e7838eacd5909f0355b5a3f40bc1ce7f4","isMergeCommit":false,"messageTitle":"Reverse more changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":18}}},{"hash":"0b71b982b7930406ccf01deb1a5c3809f4811016","isMergeCommit":false,"messageTitle":"Reverted several other changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":14},"test-code":{"insertions":0,"deletions":15}}},{"hash":"a01d0a961287fec2c546ae5b077c4dc1723d60bc","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"40935f9e8439b8cf6befa3d78e8edb1b08daadc7","isMergeCommit":false,"messageTitle":"Changed isSame and equals fields (will add remark and tasklist later on) First round of Test Cases Amendments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":5},"test-code":{"insertions":17,"deletions":11}}},{"hash":"fffc222d5c5070e83558b2452b1f58180912916f","isMergeCommit":false,"messageTitle":"Minor Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"ba2401235a679012ab4e868a4970b0f3500036fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into add-optional-feature-updated","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"80a42fc65f62b65282878761b3ff45a867734124","isMergeCommit":false,"messageTitle":"Minor edits","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"372794ca7e412f56c39a9593b7367b79b3d367ac","isMergeCommit":false,"messageTitle":"Spacing error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"13b2eeb0e095c57baef0dc3013db13ae904db2a8","isMergeCommit":true,"messageTitle":"Merge pull request #195 from CaptainKeqing/improveConsistencyUGCommands","messageBody":"Improve consistency of UG commands","fileTypesAndContributionMap":{}},{"hash":"b3e307cb2c36a535ef1098a17a6b414ce4de0e33","isMergeCommit":true,"messageTitle":"Merge pull request #204 from LWS49/update-UG","messageBody":"Remove reminder for glossary in UG","fileTypesAndContributionMap":{}},{"hash":"f552f8d182c0a12b5963898a285798e5fa19be05","isMergeCommit":false,"messageTitle":"Fix incorrect error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":10}}},{"hash":"f7f5249cd0a4118fcb463f5aadb751d8cc43ae0f","isMergeCommit":false,"messageTitle":"Additional Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0},"test-code":{"insertions":2,"deletions":3}}},{"hash":"57b456e7b2ccea48cc085a907e4e36b90b686426","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"0c0222e0f2b3881ec77d3c7a44b2e5ee5a2c0577","isMergeCommit":false,"messageTitle":"Changed App Ver number and jar file name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-04-05","commitResults":[{"hash":"a2cb90048df88bed2263a82e65fe2b4eb6fae62e","isMergeCommit":false,"messageTitle":"Update ContactNumber.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"71e3b6d2624583d3b5df5c4b614c0dd7711a9ddf","isMergeCommit":true,"messageTitle":"Merge pull request #208 from LWS49/update-UG","messageBody":"Change pictures to include latest GUI + correct errors","fileTypesAndContributionMap":{}},{"hash":"da67205d6e154564406be4b1ab4328bdeb5e4c2f","isMergeCommit":true,"messageTitle":"Merge pull request #200 from theman-oj10/sort-feature","messageBody":"Fix error message bug for Sort Command","fileTypesAndContributionMap":{}}]}],"LWS49":[{"date":"2024-03-02","commitResults":[{"hash":"e0dfe098e701efd2384527a36839a5448ae0dda2","isMergeCommit":true,"messageTitle":"Merge pull request #56 from CaptainKeqing/AddDonovanToAboutUs","messageBody":"Add Donovan\u0027s info to AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"f7a40d4ab96fccfad99be89c49321ec4eda371de","isMergeCommit":false,"messageTitle":"add Wei Sheng in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":5}}},{"hash":"247c7c1ee1f0adbb035c9347d2ecf644c51ae31e","isMergeCommit":false,"messageTitle":"add edit to User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":8}}},{"hash":"7d66ac9b88950c33811f77e347be14e08cc86543","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addEditToDG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7da06ed18aae86d2e01a18fd6d2935e9e7d7bed0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addWeiShengtoAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"13a69643cb1112fd47c1cf97ec8093a93154c9e1","isMergeCommit":false,"messageTitle":"switch lws49 to lower case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"c9b9b85ddea33ae388ca6127cf9d4bf478f005f9","isMergeCommit":true,"messageTitle":"resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b41d1cab66e54928d275e8b9f347ff2643c10488","isMergeCommit":false,"messageTitle":"update ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":11}}},{"hash":"1ba6dd3fbb58e6f2410f56859a383a9dd218619a","isMergeCommit":true,"messageTitle":"Merge pull request #67 from theman-oj10/master","messageBody":"Update About me and UserGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"28d9446a8ffb79ed473b2853517690357e5dfec2","isMergeCommit":false,"messageTitle":"added Glossary for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"1c66844f034551a05e6fbde0fc8aa5717b90dbce","isMergeCommit":false,"messageTitle":"added Glossary for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1a24a7fa3472cfcd3ca91ca18433b650f80fe663","isMergeCommit":false,"messageTitle":"update site links for README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":4}}}]},{"date":"2024-03-09","commitResults":[{"hash":"c1649bdaebd49d7ee137bc1474500cffdddbf70a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into updateReadMe","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"4e71037ad9cfea48e1546e0ea7125ca153347247","isMergeCommit":true,"messageTitle":"Merge pull request #95 from HM33-Stu/master","messageBody":"Updated CliSyntax For Commands","fileTypesAndContributionMap":{}},{"hash":"e4eed7af4e5434be510ff0a142df6ae5881a95cf","isMergeCommit":false,"messageTitle":"add InternshipMessages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0}}},{"hash":"33031d2758a4497f19b85d4326c3843129af50c0","isMergeCommit":false,"messageTitle":"add InternshipCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":0}}},{"hash":"f8be0d6f1c2f59b9ddff31b9c9dbe39cb0ab9ed5","isMergeCommit":false,"messageTitle":"add InternshipEditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":243,"deletions":0}}},{"hash":"1715ca6e90278e73079d47b67caa74ceecd704a2","isMergeCommit":false,"messageTitle":"add InternshipParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0}}},{"hash":"5f6d7bfb690badcb88149e4af519efddbbe64e79","isMergeCommit":false,"messageTitle":"add InternshipEditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"05b5aa49ca86fde63ae5a9acc1b2163dece8a9f6","isMergeCommit":true,"messageTitle":"Merge pull request #93 from jieqiboh/Add-JsonSerializableInternshipData","messageBody":"Finish adding support for Storage of Internships","fileTypesAndContributionMap":{}},{"hash":"57f6dc7b96a7eb4f620b8f060a1b92f60850d032","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ad96cb3e5b160b7942b6e148ad5e57a5ef9f05eb","isMergeCommit":false,"messageTitle":"add CompanyNameContainsKeywordsPredicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":0}}},{"hash":"3e060b185bd916ad5b3893ad31c1b9d5d411c93f","isMergeCommit":false,"messageTitle":"add EditInternshipDescriptorBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":111,"deletions":0}}},{"hash":"1fe4d904bdaeb9f5f96e834e37fb347203a5790e","isMergeCommit":false,"messageTitle":"add InternshipCommandTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":157,"deletions":0}}},{"hash":"8a9e188f96c4ef82c033cc2a4becdf9a40a26b70","isMergeCommit":false,"messageTitle":"add InternshipEditCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":101,"deletions":0}}},{"hash":"f50e973d8c0cb1ac0e52be57e17969634c36cb82","isMergeCommit":false,"messageTitle":"add InternshipEditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":186,"deletions":0}}},{"hash":"c30d0575edec07767a60906f0bb607814e94d0ff","isMergeCommit":false,"messageTitle":"add InternshipParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-03-15","commitResults":[{"hash":"89c6bee52b169807d87067f2b13d3c42e675f0be","isMergeCommit":false,"messageTitle":"add EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1ce7c9ed15b5c87f1a2f71415b1c31e08515fdaa","isMergeCommit":false,"messageTitle":"change location to valid location for AMY and BOB","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":3}}},{"hash":"e36387bbec1a5bb7ff085793128f97c6b3071e22","isMergeCommit":false,"messageTitle":"update CommandTestUtil functions and Model to use internship class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":68,"deletions":57}}},{"hash":"a5f57cccddbce2c25831a13664d301f40e4a1166","isMergeCommit":false,"messageTitle":"add InternshipTypicalIndexes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"4a4ea4fb74256075fb4a8c13b3572df5292d7f16","isMergeCommit":false,"messageTitle":"change to pass checkStyleTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":37},"test-code":{"insertions":5,"deletions":4}}},{"hash":"5b307bf659238fd0dbd13cc93b5f21155dd4b64f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"99f08b42075ff944ab873b793206e3654d67e4ec","isMergeCommit":false,"messageTitle":"change isValidEmail to isValidContactEmail","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"6314d1a3da58956d75889235ce7bd5ecc195196a","isMergeCommit":false,"messageTitle":"update invalid fields based on message constraints","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"eaae4fe8796619c7745e6773b2f949290969f7bd","isMergeCommit":false,"messageTitle":"add InternshipEditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":242,"deletions":0}}},{"hash":"016c469a105264586120d0a406d017456b747784","isMergeCommit":false,"messageTitle":"add InternshipCommandParserTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":0}}},{"hash":"6ff3ea669c9b0b0b1bf058705d8dcab6b4fa4058","isMergeCommit":false,"messageTitle":"replace Messages with InternshipMessages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":28}}},{"hash":"99d1368296c04a996aba05fb6471c5be6ba8e400","isMergeCommit":false,"messageTitle":"remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"f2693f2c7fdbcc5daca4e08be7b6f4eda8a399ee","isMergeCommit":false,"messageTitle":"update imports for checkstyleTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"ca64a320beebe551124e8a2c23c07118eed4f90d","isMergeCommit":false,"messageTitle":"remove parseTagsForEdit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"32ceee64edd56a89b6a2d555702c5624d99a9aa7","isMergeCommit":false,"messageTitle":"update javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"test-code":{"insertions":3,"deletions":3}}},{"hash":"e06bf3acdb690b8ec09ff465a5009e422fffe79b","isMergeCommit":false,"messageTitle":"remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ad9780e104496e8a4f501c37ff3263c77443515a","isMergeCommit":true,"messageTitle":"Merge pull request #111 from CaptainKeqing/logicManagerAndInternshipDataParser","messageBody":"Logic manager and internship data parser","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"fd19a7511c95b70640ccc1713dd19313ab34b4b8","isMergeCommit":true,"messageTitle":"Merge pull request #107 from theman-oj10/master","messageBody":"Implement InternshipUserPrefs","fileTypesAndContributionMap":{}},{"hash":"d46115556a317571a7fac0f683c64a742b369534","isMergeCommit":false,"messageTitle":"replace ReadOnlyUserPrefs with ReadOnlyInternshipUserPrefs in InternshipAddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"bdb5251dab4f98d5dcf1daedc03365d898be8bb1","isMergeCommit":false,"messageTitle":"add InternshipMainWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":0}}},{"hash":"3d704d88f5cb341af0973f012f50e0c43ed82d9b","isMergeCommit":false,"messageTitle":"replace ReadOnlyUserPrefs with ReadOnlyInternshipUserPrefs in InternshipModel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5fb4b2ce0e241d4fd5202c02a72335c59a156479","isMergeCommit":false,"messageTitle":"replace ReadOnlyUserPrefs with ReadOnlyInternshipUserPrefs in InternshipModel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8}}},{"hash":"49f181da6f4a9d7feedb34d0edab655e9875b2ee","isMergeCommit":false,"messageTitle":"add InternshipUiManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":0}}},{"hash":"035f5d29372ad59d82f0875635effb4d08a5e72b","isMergeCommit":false,"messageTitle":"replace userPrefs with InternshipUserPrefs in JsonUserPrefsStorage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"aff693871657672bd0e808e6f891e287f3548a7c","isMergeCommit":false,"messageTitle":"replace userPrefs with InternshipUserPrefs in JsonUserPrefsStorageTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":13}}},{"hash":"6047249c5dc3da11dbbffbaef9dff192d35c6e83","isMergeCommit":false,"messageTitle":"replace personListPanelPlaceholder with internshipListPanelPlaceholder in MainWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"33e50d751bc7c0b5abe36c2766db3040974877d1","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in Storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"a2bb13e81e4a670aaa760e2d47d60b4e28f5d544","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in Storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"3d7dfae15acaf3a5602c19a9786f6fc3b85a953b","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in UserPrefsStorage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"8c9be76751c860a14f6d5dcd6c39702fb907346b","isMergeCommit":false,"messageTitle":"update MainApp to use Internship files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":39}}},{"hash":"e1817dfba6dcf984a0e41b9531c8d673859cbff9","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in StorageManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":6}}},{"hash":"fd3b52ee5d3dbf59b4ce46358185163021befba6","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":35}}},{"hash":"f881a5569485ccd6ef480b7568c1e75b74089346","isMergeCommit":false,"messageTitle":"remove AddCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":145},"test-code":{"insertions":0,"deletions":448}}},{"hash":"e6fee6d9da8010ff908ffdcac2e8192ef1e1ec18","isMergeCommit":false,"messageTitle":"remove ClearCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":23},"test-code":{"insertions":0,"deletions":32}}},{"hash":"c3e6b3d99642f797e97d7a8089cb7d895aa293a7","isMergeCommit":false,"messageTitle":"remove DeleteCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":98},"test-code":{"insertions":0,"deletions":152}}},{"hash":"1a03d422cf4c5ce3e1f03c65ae4e75e4716f0909","isMergeCommit":false,"messageTitle":"remove FindCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":91},"test-code":{"insertions":0,"deletions":125}}},{"hash":"fffafa46f29b34abb2aaf5a8bf36ab7102fe4356","isMergeCommit":false,"messageTitle":"remove ListCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":24},"test-code":{"insertions":0,"deletions":39}}},{"hash":"a81f00f757992107a3a4ad2d116d42be16438c2c","isMergeCommit":false,"messageTitle":"remove LogicManager and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":88},"test-code":{"insertions":0,"deletions":175}}},{"hash":"61c838f542d1fe27d87939c565318e51e0177852","isMergeCommit":false,"messageTitle":"remove HelpCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":21},"test-code":{"insertions":0,"deletions":20}}},{"hash":"25776e531d0230f09484a575604d9e40d860409a","isMergeCommit":false,"messageTitle":"replace ClearCommand with InternshipClearCommand in InternshipEditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"af5b8c12183686d402e932767e9d860cdf1fee63","isMergeCommit":false,"messageTitle":"remove ExitCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":19},"test-code":{"insertions":0,"deletions":20}}},{"hash":"729dd702c71e6789c4aba760e91c3c2c9a3284eb","isMergeCommit":false,"messageTitle":"remove AddressBookParser and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":86},"test-code":{"insertions":0,"deletions":101}}},{"hash":"1be2ce4f42ebf3c6e2913812a5e50762a38a519a","isMergeCommit":false,"messageTitle":"remove EditPersonDescriptorTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":71}}},{"hash":"479b600255201f21df294f5a8bb3744bba4f890a","isMergeCommit":false,"messageTitle":"remove PersonUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":62}}},{"hash":"d61b61175f3c42d177840ddef2b7f3adaf17d5c4","isMergeCommit":false,"messageTitle":"replace ClearCommand with InternshipClearCommand in EditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"42c866f192eeb42571ff5dbf635917fbee454d0f","isMergeCommit":false,"messageTitle":"replace filepath in InternshipModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"8ab42b9a6e3dec49b76dc3f51c9b6495c97122bc","isMergeCommit":false,"messageTitle":"replace filepath and update UserPref in JsonUserPrefsStorageTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"c6897d6616b42165ca6158ce9f9548665818d00d","isMergeCommit":false,"messageTitle":"update import order for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f85356ab966824a1c059a45cafbe8cbc0733fe27","isMergeCommit":false,"messageTitle":"update getTypicalUserPrefs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"80ecc77b96b74d740899d732cf985a7c9e94f609","isMergeCommit":false,"messageTitle":"replace InternshipMainWindow and InternshipUiManager with MainWindow and UiManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":299}}},{"hash":"33310b3d166907663e342960edeeb62f133c40ee","isMergeCommit":false,"messageTitle":"checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7e3256c939ae898f17656db9b7c64c276bee2dd5","isMergeCommit":false,"messageTitle":"replace address book with internship data in comments and variable names","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"780fa171a1ebf0713eeffeedfbec55cc3bf4c7d7","isMergeCommit":false,"messageTitle":"fix InternshipMessages to output in correct format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"c2575cacba2cd2abb8ef4cc6675ab7ec65d19bf2","isMergeCommit":true,"messageTitle":"Merge pull request #113 from LWS49/activate-base-app","messageBody":"Activate base app","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3e75aea5dcba655a383b860dc1149fdd8d680a50","isMergeCommit":true,"messageTitle":"Merge pull request #131 from CaptainKeqing/addInternshipFindCommand","messageBody":"Add internship find command","fileTypesAndContributionMap":{}},{"hash":"75281a82333331ad0d66e93e4571004521aadc2c","isMergeCommit":true,"messageTitle":"Merge pull request #123 from jieqiboh/add-remark-cmd","messageBody":"Add support for adding remarks to Internships","fileTypesAndContributionMap":{}},{"hash":"0daf45acb08afa97c854d61e9016443fe3a914e7","isMergeCommit":true,"messageTitle":"Merge pull request #132 from CaptainKeqing/addInternshipFindCommand","messageBody":"Fix main window title typo, Improve error message","fileTypesAndContributionMap":{}},{"hash":"e5adcb2cc89243fc5ae5207d89a9c010c0aec7fa","isMergeCommit":true,"messageTitle":"Merge pull request #127 from jieqiboh/storage-dg-puml","messageBody":"Refactor storage filenames, update Storage diagram in DG","fileTypesAndContributionMap":{}},{"hash":"bbf9e1c8290876b5ff904b185d2b9badb299c30c","isMergeCommit":true,"messageTitle":"Merge pull request #128 from HM33-Stu/ug-add-delete-edits","messageBody":"Update Add and Delete section in UG","fileTypesAndContributionMap":{}},{"hash":"c14f24dd308ad079378d9a5b2a8db9b5c2eb8948","isMergeCommit":true,"messageTitle":"Merge pull request #133 from CaptainKeqing/addInternshipFindCommand","messageBody":"Add user guide for internship find command","fileTypesAndContributionMap":{}},{"hash":"79e37e870bb6dcb8901c5e76d9a20fc7a14e6d3d","isMergeCommit":true,"messageTitle":"Merge pull request #134 from CaptainKeqing/addInternshipFindCommand","messageBody":"Fix typo","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"c23da0cbcbe904dcb52bb88c71a03f17de8811aa","isMergeCommit":true,"messageTitle":"Merge pull request #140 from HM33-Stu/AddTaskClass","messageBody":"Add Task Class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"521edf13a218ed75a354989fef4a3e03047df765","isMergeCommit":true,"messageTitle":"Merge pull request #141 from HM33-Stu/AddDeadlineClass","messageBody":"Add Deadline Class","fileTypesAndContributionMap":{}},{"hash":"9916a9e10f7a1e5d6763fe56e0ff98e121fea467","isMergeCommit":false,"messageTitle":"Add target audience to user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":1}}}]},{"date":"2024-03-26","commitResults":[{"hash":"2de8f422545599147eaa0c79b693b4df61d13473","isMergeCommit":false,"messageTitle":"Add InternshipAddTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":0}}},{"hash":"3496fd2fe6dcc219a1f5d9da04815fc38737269c","isMergeCommit":false,"messageTitle":"Add prefixes to CliSyntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"790bc02c697f060d661db841766346b5f0766682","isMergeCommit":false,"messageTitle":"Add InternshipAddTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":0}}},{"hash":"a227c77dab5d99ee346ae428d8d618711ed3ad54","isMergeCommit":false,"messageTitle":"Add InternshipAddTaskCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":91,"deletions":0}}},{"hash":"60dec34051963130055a66a0f7697bb17f6c7269","isMergeCommit":false,"messageTitle":"Update InternshipBuilder to include TaskList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"5da84a7dfd37a66039e5fee4dcebf998877006b6","isMergeCommit":false,"messageTitle":"Update InternshipEditCommand to include TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"026991f692753b02b4cbe0befbc09c38c1148f34","isMergeCommit":false,"messageTitle":"Update InternshipRemarkCommand to include TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d42914fa785a7534e5571c01a1e7807ad8ecc83f","isMergeCommit":false,"messageTitle":"Update files to include TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6},"test-code":{"insertions":47,"deletions":30}}},{"hash":"54408eed60c8c66bfdee54fdb4a1aaaf99aa3222","isMergeCommit":false,"messageTitle":"Update file to include TaskList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"8e0b728462a29bf2d222d6ffea17bb69bb740fed","isMergeCommit":false,"messageTitle":"Update InternshipParserUtil to parse Task and Deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":0}}},{"hash":"54052749356da06836c66bb7189d964f6cf0d0e9","isMergeCommit":false,"messageTitle":"Update InternshipParserUtil to include message for invalid task index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a774195be2ce5336911e549adf839b6330c9e85a","isMergeCommit":false,"messageTitle":"Update InternshipDataParser to include InternshipAddDeadlineCommand and InternshipAddTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"b4b9d5dd6cf9a93e5ed4c3400cf57ba66fdcc8af","isMergeCommit":false,"messageTitle":"Add InternshipAddDeadlineCommand, its parser and test file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":160,"deletions":0},"test-code":{"insertions":113,"deletions":0}}},{"hash":"795643e5fef71346c96e625f00f0cf50a98bd08e","isMergeCommit":false,"messageTitle":"Update Task to include Deadline and isDeadlineSet field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":1}}},{"hash":"cda7961c21f301c6d4c53d00260109981674c6e2","isMergeCommit":false,"messageTitle":"Add TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":0}}},{"hash":"e98fff2c5b43e03ddf874c2a8f26847342e4ac6a","isMergeCommit":false,"messageTitle":"Update Internship to include TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":1}}},{"hash":"76f27b576f10a2ddc7768b7c4920a268065efd7b","isMergeCommit":false,"messageTitle":"Update Deadline and DeadlineTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":0},"test-code":{"insertions":57,"deletions":0}}},{"hash":"9b23ea49aa5d2d2eda4dc0737385db341830982c","isMergeCommit":false,"messageTitle":"Add TaskListTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":6},"test-code":{"insertions":73,"deletions":0}}},{"hash":"95cc49f927045161fec71dfd47538404a20fc130","isMergeCommit":false,"messageTitle":"Add puml files of DG diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":155,"deletions":0}}},{"hash":"8f18e89a2564c7911c6785bc36d9abe86b0c77b8","isMergeCommit":false,"messageTitle":"Fix Json conversion of TaskList and Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":11},"test-code":{"insertions":5,"deletions":2}}},{"hash":"f13bc6956dc8efe0dc07d0326361cfe68465b108","isMergeCommit":false,"messageTitle":"Change implementation to fix bug where task is added to all internships","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":2}}},{"hash":"d954f67e0a89bdc4f5503805ce8a03d2b85e4ba2","isMergeCommit":false,"messageTitle":"Change implementation to fix bug where deadline cannot be converted from json to internship object","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":9}}},{"hash":"327d4c9f7aa6adeb088616f983acec42c3df5552","isMergeCommit":false,"messageTitle":"Add InternshipAddTaskCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4},"test-code":{"insertions":63,"deletions":0}}},{"hash":"ce4e7c63f344f2b73bd1206f24dd1a1462c682d9","isMergeCommit":false,"messageTitle":"Add InternshipAddDeadlineCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":113,"deletions":2}}},{"hash":"57d5169ff34d26741ba961750e385bc99d8d8346","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":55},"test-code":{"insertions":51,"deletions":45}}},{"hash":"d81207f68b493fce711f815c8ddd45321154dacc","isMergeCommit":true,"messageTitle":"merge from master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1c979bc0539194a04e42a26a89629353666668cd","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":7}}},{"hash":"b3b83b3b3160615dbaecb317d01e332da77412c1","isMergeCommit":false,"messageTitle":"Fix checkStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"044afc3ccd20769a7f265eaffd9d115899a4569d","isMergeCommit":false,"messageTitle":"Comment out execute_allFieldsSpecifiedUnfilteredList_success under InternshipEditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"fde59e9912d3a0e6a7e6dd4f5c4f6d29a8b21fe6","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"4a5b395e1fa250233007630e622cf1270f6cf08e","isMergeCommit":false,"messageTitle":"Remove imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-27","commitResults":[{"hash":"e8caf3e68d706088847345cf032350b1e67dd075","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"08e56e9e1e63ca360fb7c33e73a1da383089c634","isMergeCommit":false,"messageTitle":"Update InternshipAddDeadlineCommand MESSAGE_USAGE","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"e2be561d4805dfaa965cf757885f48aac75f225c","isMergeCommit":true,"messageTitle":"Merge pull request #148 from CaptainKeqing/donImproveUG","messageBody":"Improve Commands section for Find, List, Clear. Also improves Known Issues explanation.","fileTypesAndContributionMap":{}},{"hash":"16b00012c977e6edccdb6a07059b11f5a9f1a1fb","isMergeCommit":false,"messageTitle":"update introduction and edit command in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":220,"deletions":55}}},{"hash":"e72aaded8e7a3d2292ae424f1daa659239607f92","isMergeCommit":false,"messageTitle":"Update validation and MESSAGE_USAGE in Deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5}}},{"hash":"24daef78094ec83ed197a37274361607ac2a0a91","isMergeCommit":false,"messageTitle":"Add TaskList, Tasks and Deadlines to ALICE, BENSON and CARL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"e89c5a7073e8f01ddc9e0db8006ee3e9069b07b9","isMergeCommit":false,"messageTitle":"Change string constructor to enable constructions of TaskList where tasks with deadlines are present","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4}}},{"hash":"4d91941e4e3d4889ffebb91561d3bc9284e6b360","isMergeCommit":false,"messageTitle":"Change parseRemark, parseTask and parseDeadline to now throw exception + Use correct Javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"52ff5a45370887c297cf8785b4e7045bdce2bd76","isMergeCommit":false,"messageTitle":"Change ParserUtil to InternshipParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9a7b56ec0bcc706a3b270d2c3fb844fdaeb370ee","isMergeCommit":false,"messageTitle":"Change ParserUtil to InternshipParserUtil and update message thrown for InternshipAddTaskCommandParser and InternshipAddTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":30}}},{"hash":"23e23dc082c100d82da45aed4b819c02d2bd782b","isMergeCommit":false,"messageTitle":"Update to getOneBased for InternshipAddTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"d8a7229d4824a23b23c288cd3c77833a64351899","isMergeCommit":false,"messageTitle":"Change \u003e\u003d to \u003e, remove getting all internships and update MESSAGE_USAGE for InternshipAddDeadlineCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7}}},{"hash":"3f839dca18c361aa8b517454076d719564a35485","isMergeCommit":false,"messageTitle":"Update tests to reflect correct error messages shown for both parser tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":15}}},{"hash":"0a22741ad6c68c87a51951a50e3cf4f2cb64db21","isMergeCommit":false,"messageTitle":"Change Javadoc for InternshipBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"856d6dd6029231580782005ea89ffab9fcf3a99e","isMergeCommit":false,"messageTitle":"Change VALID_DEADLINE_AMY to actually valid deadline for InternshipCommandTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"fd4793c6b564ca9b3b706e8a56e501bbcbaec1ab","isMergeCommit":false,"messageTitle":"Remove import for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"d9086f7b4c2478b0d98af6739b90f7373c942ded","isMergeCommit":false,"messageTitle":"Correct formatting issues in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":60}}},{"hash":"49ec54c238d0460ce72af7b095f8c4a167763830","isMergeCommit":false,"messageTitle":"Update TOC in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"c4cd1566e2413b3d2adc21924d8c94ed72ade6fb","isMergeCommit":true,"messageTitle":"Merge pull request #155 from HM33-Stu/ug-edits-add-delete","messageBody":"Amendments For UG Add and Delete Sections","fileTypesAndContributionMap":{}},{"hash":"b09615c92d5268d7830703e088115a1e64730119","isMergeCommit":true,"messageTitle":"Merge with upstream changes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2bd95eda47f0814ac6add69a3234c8ef2eb98c1f","isMergeCommit":false,"messageTitle":"Fix field summary and Glossary in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]},{"date":"2024-03-29","commitResults":[{"hash":"b5f4350668ba3dd97bd42e29ff18bb469cbd3589","isMergeCommit":true,"messageTitle":"Merge pull request #163 from jieqiboh/standardise-ug-headings","messageBody":"Standardise headings","fileTypesAndContributionMap":{}},{"hash":"46c915d5474c6609039a44c680e15a2631c31500","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into add-addTask-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"50fc4dcfeb7969bdc40bc23110bb0ac45c97432f","isMergeCommit":false,"messageTitle":"Add tasks to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"3ad654697bf68cfdd5d749aaa84f9aaa2cf9348b","isMergeCommit":false,"messageTitle":"Add PREDICATE_SHOW_ALL_INTERNSHIPS to InternshipAddTaskCommand and InternshipAddDeadlineCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"19cf3eca89eb1f8cb956797e6533a1a0804528f8","isMergeCommit":false,"messageTitle":"Add Tasks to InternshipCard.fxml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"3e76fa91bae1fd183b5d7ecdf3086af5b5308d04","isMergeCommit":true,"messageTitle":"Merge pull request #165 from theman-oj10/small-changes-branch","messageBody":"Update Version Number","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"13db508dc090256c57d92d88a37bdadc38f725d5","isMergeCommit":true,"messageTitle":"Merge pull request #171 from jieqiboh/refactor-invalididx-message","messageBody":"Refactor invalididx message","fileTypesAndContributionMap":{}},{"hash":"aed9bae645e20c32c70e8be8ce2abdc8ee0f77ff","isMergeCommit":false,"messageTitle":"fix InternshipEditCommand and InternshipEditCommandParser error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":14},"test-code":{"insertions":4,"deletions":3}}},{"hash":"0253e15cc3dd4dcb38259c0b7bbaafd5f73f3811","isMergeCommit":true,"messageTitle":"Merge pull request #172 from HM33-Stu/app-logo","messageBody":"App Logo Change","fileTypesAndContributionMap":{}},{"hash":"bf1f81c0a71d3dd4376b14b727d28d225d2f6739","isMergeCommit":false,"messageTitle":"fix InternshipAddTaskCommand and InternshipAddTaskCommandParser error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"70a5b60185f92628d4ff86981dac2fbf7f6a442a","isMergeCommit":false,"messageTitle":"fix InternshipAddDeadlineCommand and InternshipAddDeadlineCommandParser error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":9},"test-code":{"insertions":1,"deletions":1}}},{"hash":"612694994bb4bc90531ff35ebdc97d00eb421446","isMergeCommit":false,"messageTitle":"update InternshipEditCommand success message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b4a4e18aab6586a3f8380415a08b3a666ccada65","isMergeCommit":false,"messageTitle":"edit internship.toString() for each field to be in a new line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":10}}},{"hash":"555750fc2c982dbb866521f1e0871766edf089f3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"cf99898e50a82d99270b5464a8a7946c14371c2e","isMergeCommit":true,"messageTitle":"Merge pull request #174 from HM33-Stu/update-add-command","messageBody":"Rectified Spacing In Error Messages ","fileTypesAndContributionMap":{}},{"hash":"abf6ad07bfbe4523bb5937953fffd0677edf4110","isMergeCommit":true,"messageTitle":"Merge pull request #173 from jieqiboh/update-addremark-errors","messageBody":"Update RemarkCommandParser to handle invalid /remark","fileTypesAndContributionMap":{}},{"hash":"0a30a2e8e92cae67c4499714886b472fc6f51c55","isMergeCommit":false,"messageTitle":"Remove unnecessary messages (minor)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"800a1779ca66b5929030ebf14a249e56d6949fb1","isMergeCommit":false,"messageTitle":"Remove System.println(date) in Deadline (minor)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"92c5155424964b84b217d4130ec445eb71c6db19","isMergeCommit":false,"messageTitle":"Restore commented out test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":6}}},{"hash":"dbec4c7b78e0aa9d4671227ea0b6af9d1805fea0","isMergeCommit":false,"messageTitle":"Update EditInternshipDescriptorBuilder and InternshipUtil to include Remark and TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0},"test-code":{"insertions":7,"deletions":1}}},{"hash":"483da53290c2cff379fd994c686140087496fa25","isMergeCommit":false,"messageTitle":"Update createdEditedInternship in InternshipEditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"0edf1b732c3b138b60f00fc6e4ddfd6750ba50d5","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"c1fc30da64d35ffe1396a4398cc88457239afbc4","isMergeCommit":false,"messageTitle":"Remove unused constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}},{"hash":"348401d1384cee0afc7a28ae1043a4c115e39390","isMergeCommit":false,"messageTitle":"Improve navigation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":123,"deletions":49}}},{"hash":"a9bdf9f8139c78650bcadf43c35530c1579a1b19","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"32f16f1ffd0bbf9b530c3b6627c613ec18e5cf6b","isMergeCommit":false,"messageTitle":"added pictures","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":73,"deletions":2}}},{"hash":"c2a28378da5e0451e270ceb2485668d1d8f35a19","isMergeCommit":true,"messageTitle":"Merge with upstream/master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2b6c06f0348054efb291bec20b4c718bd2272625","isMergeCommit":false,"messageTitle":"add addtask and setdeadline to commands in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":24}}},{"hash":"755768195b32bbd1d01ff6b785e9f50470099fc9","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92b3f4a7ed0de15161e6508b9fe9b305322817b0","isMergeCommit":false,"messageTitle":"Remove hash for public urls","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"1736debd90ae984a1ec4e75d489bd61eeee6d7e7","isMergeCommit":false,"messageTitle":"Change MESSAGE_USAGE arguemnts to capital letters for InternshipAddTaskCommand and InternshipEditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}}]},{"date":"2024-04-03","commitResults":[{"hash":"449b75897bf4521fd5fff8007ef9dc7b51d94ac0","isMergeCommit":false,"messageTitle":"Change tutorial headers","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":23}}},{"hash":"8069e4f3da50f941867112e0819773162b9a0b26","isMergeCommit":true,"messageTitle":"Merge with upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7df0e762814940c29b2ebd9c6255bd4c0dddf630","isMergeCommit":false,"messageTitle":"Revert \"Change tutorial headers\"","messageBody":"This reverts commit 449b75897bf4521fd5fff8007ef9dc7b51d94ac0.\n\nRevert commit\n","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":22}}},{"hash":"e450e7df6794ca3b5ee58cf7f208d002fe110bca","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ef2a6196c61ae454f6dbd10f140ffcb7b47d2b94","isMergeCommit":false,"messageTitle":"Change tutorial headers","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"0d4180ccc66a9c6ab5a2a3068976b0cc9a4337f1","isMergeCommit":false,"messageTitle":"Replace all instances of adddeadline to setdeadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":33,"deletions":33}}},{"hash":"7d60887510452b564f8dba25ec3be31de88a1865","isMergeCommit":false,"messageTitle":"Fix import + fix InternshipAddTaskCommand description","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"e4ee5cb49acad017192ab9b7c218e74c99ba6415","isMergeCommit":false,"messageTitle":"Fix test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}},{"hash":"3cce67db6d290edb2434ca27e7415cb0142fc0e4","isMergeCommit":false,"messageTitle":"Replace all instance of addDeadline to setDeadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":9,"deletions":9}}},{"hash":"48f76a1cd207c847327bd07e5d448c959b42fd07","isMergeCommit":true,"messageTitle":"Merge from upstream/master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17cf64190b4c966dfe8eb7a4df0f5495b6072663","isMergeCommit":false,"messageTitle":"Restore changes made by @CaptainKeqing","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":16}}}]},{"date":"2024-04-04","commitResults":[{"hash":"a1dc6a459586e60cd544dd695f86ed994d5167a7","isMergeCommit":true,"messageTitle":"Merge pull request #197 from CaptainKeqing/addUGClickable","messageBody":"Improve functionality of detailed view window, add user guide ","fileTypesAndContributionMap":{}},{"hash":"a350acef67ae470c26d239b070980d13e9b8578a","isMergeCommit":false,"messageTitle":"Update addtask command to correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}},{"hash":"a17599478930fd591e6512814e6b735be42580dc","isMergeCommit":false,"messageTitle":"Remove all instances of person from src","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":2383},"test-code":{"insertions":36,"deletions":2373}}},{"hash":"3de44cc84af2f86487fd9f3250e4eab77f5dd34c","isMergeCommit":false,"messageTitle":"Remove all instances of addressbook from src","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5},"test-code":{"insertions":4,"deletions":3}}},{"hash":"0efe2321ec65bf907c6860b2d0d2414bd61d93b9","isMergeCommit":false,"messageTitle":"Update edit format to include remark + add reminder to add things to glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"226f272482fa029c16a49bc3a5b2c89c3928d092","isMergeCommit":false,"messageTitle":"Update ContactNumber minimum digits to 7","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":6,"deletions":6}}},{"hash":"44d5d648eeb2151754515fd39e76250b5a0f151c","isMergeCommit":false,"messageTitle":"Remove all instances of addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":41},"test-code":{"insertions":3,"deletions":3}}},{"hash":"815bbae69ab6e539e1f20d7486de0d4b20f2d613","isMergeCommit":false,"messageTitle":"Remove reminder for glossary in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"67b98cb7cb2bef409388f7b9aaaf5164a36734e6","isMergeCommit":true,"messageTitle":"Merge pull request #206 from HM33-Stu/delete-error-msg-fix","messageBody":"Fix Incorrect Delete Command Error Messages","fileTypesAndContributionMap":{}},{"hash":"5318750a85082f3821872783e5e99cd042935697","isMergeCommit":true,"messageTitle":"Merge pull request #205 from HM33-Stu/ug-edit-images","messageBody":"Removed Window From Images","tags":["v1.3"],"fileTypesAndContributionMap":{}},{"hash":"e0df756410a8cb443d21285824e7fcaec4094a12","isMergeCommit":true,"messageTitle":"Merge pull request #1 from CaptainKeqing/removePersons","messageBody":"Remove even more person relics","fileTypesAndContributionMap":{}},{"hash":"f373e591f0490a17f3cb1649d73752515ac01c3d","isMergeCommit":false,"messageTitle":"Change pictures to include latest GUI + correct errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":35}}},{"hash":"53421a023c0e4e0a6211b15250e2834fa79179f2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-UG","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"aae800dc2f64e976ba5a97ec2194521aaa0403c8","isMergeCommit":true,"messageTitle":"Merge from upstream/master","messageBody":"","fileTypesAndContributionMap":{}}]}],"theman-oj10":[{"date":"2024-03-02","commitResults":[{"hash":"0ab40778b566594cb320c101e9f7d2e2ada8e013","isMergeCommit":true,"messageTitle":"Merge pull request #58 from CaptainKeqing/AddNFRToDG","messageBody":"Add some non-functional requirements to Developer\u0027s Guide","fileTypesAndContributionMap":{}},{"hash":"9cbbf16385fe3aa3cb81551f69d4724feeea4431","isMergeCommit":false,"messageTitle":"Update About me and UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":16}}}]},{"date":"2024-03-07","commitResults":[{"hash":"36c3bf8f3799b18bcdcc35c36fe9a0ad6f92f559","isMergeCommit":true,"messageTitle":"Merge pull request #74 from jieqiboh/Add-Skeletal-Internship","messageBody":"Add skeletal internship","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"618716d7278fd614cb3a125fc7687df9bfee7ad6","isMergeCommit":false,"messageTitle":"Refactor AddressBook as Internship Data, UniqueInternshipList and SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":430,"deletions":94}}},{"hash":"5bdc53e3d5c2f192502c06df96ba648ecda66f0f","isMergeCommit":false,"messageTitle":"Update Location enum to be private","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"791e089892c7044af912495496c4379e7259c337","isMergeCommit":true,"messageTitle":"Merge pull request #85 from jieqiboh/AppnStatus-Location-Tests","messageBody":"Update toString method for ApplicationStatus and Location","fileTypesAndContributionMap":{}},{"hash":"0a6cf27e8494c589239d355282aad40a66f3b59c","isMergeCommit":true,"messageTitle":"Resolve Merge Conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b5fa82f73267025a400a6b688f497fb4fef99aaf","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"863ee6de8c01581e84871b9754de6c647cde6058","isMergeCommit":false,"messageTitle":"Fix CI checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":374,"deletions":81},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-13","commitResults":[{"hash":"1a0df6e8f2705b4b76fe7eb18529dca37bca0f39","isMergeCommit":false,"messageTitle":"Implement Tests and IntenrshipNotFound Exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7},"test-code":{"insertions":387,"deletions":0}}},{"hash":"fe23cc3e6f156f57e24bd0ac7d30e4aadd0b9f21","isMergeCommit":false,"messageTitle":"Implement InternshipModelManagerTest and fix CheckStyle Errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3},"test-code":{"insertions":110,"deletions":27}}},{"hash":"d34347bbe8e16cbb81fdce4611acf55dc3e609e5","isMergeCommit":false,"messageTitle":"Implement InternshipSampleDataUtilTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":35,"deletions":0}}},{"hash":"ca6c680f246886cc78c9b21fec2503cb208ac17e","isMergeCommit":false,"messageTitle":"Add more test cases to improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":14}}},{"hash":"392a63ada09904e41002318cd8ea2e5a715c3cdb","isMergeCommit":false,"messageTitle":"Fix access modifier of Enums","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"129758b88669dd7b7f047d1cd1e8e338acb47c0e","isMergeCommit":false,"messageTitle":"Add getters for Location and ApplicationStatus","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}}]},{"date":"2024-03-14","commitResults":[{"hash":"9cdd668821568bf6b5996640ad0620c4c6309f9f","isMergeCommit":false,"messageTitle":"Update JavaDocs and Implement InternshipUserPrefs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":24}}},{"hash":"78dc51730ffdce9bdb655bca9681350d1127d741","isMergeCommit":true,"messageTitle":"Fixed Merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"58b42ee4dcafba7661fc132246121ec7e465863e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027Main/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"9c63fad33592aae8376cc517ec66c6cc1bafc4f1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027Main/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9984035d4ffc659ba8dfe0ee033e96e86e8cf083","isMergeCommit":false,"messageTitle":"Refactor Tests for InternshipData","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":11},"test-code":{"insertions":124,"deletions":1}}},{"hash":"b991bb68474f1c4aeca2ebea00f84e1bb26be036","isMergeCommit":true,"messageTitle":"Merge pull request #109 from CaptainKeqing/branch-addSimpleFindCommands","messageBody":"Add simple find commands","fileTypesAndContributionMap":{}},{"hash":"d1eadb562cb20b6a0cec53b9cd5d6410406af3d9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027Main/master\u0027 ZZZZ","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e6b5b87dc19d7e57b4b4de584a13888159db1ec4","isMergeCommit":false,"messageTitle":"Update InternshipDataTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":72,"deletions":100}}},{"hash":"7534a2fe209a27e7f8eeab4fda9c88c0316c7138","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027Main/master\u0027 Resolving merge Conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"020b11a1982b48ea1a495396a343ecaf98f37c29","isMergeCommit":false,"messageTitle":"Update InternshipData Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":25}}},{"hash":"32bdd76da6a094b3c4be7834e4a050f4343e93c2","isMergeCommit":false,"messageTitle":"Fix Checkstyle for Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":8}}},{"hash":"9d64c39b8f802f9433d96d82cbe16a462b57cfc4","isMergeCommit":false,"messageTitle":"Add more tests for InternshipUserPref","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":129,"deletions":3}}},{"hash":"c3790bc7883443a56fa3ca94e4c2ca7f330192a4","isMergeCommit":false,"messageTitle":"Add even more test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":199,"deletions":0}}},{"hash":"1c940287385e1b63712b4258b251bc6241c5485d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"598848584456ac79341f94b4ef6d12194cf31bca","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":1}}},{"hash":"a95fd79f42bddf13409b29eeb80689257a3b5e7d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"c89ce4d519cd722b67d54dc07dfb7ffa89807ad8","isMergeCommit":false,"messageTitle":"Update Model in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":46}}},{"hash":"9cc242a2bb2a87f2d035d11b91e61cb1d61257c6","isMergeCommit":false,"messageTitle":"Further changes to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"d015773a9d02d68b72d0799e6bed82a8b74cb7cf","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a71ee3ce5d7ef50c45a858a6069b0922eb9f641d","isMergeCommit":false,"messageTitle":"Update Model Diagram in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-26","commitResults":[{"hash":"3103462c986d36c4f64982dbe2da933813373a56","isMergeCommit":false,"messageTitle":"Update About Me pictures","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f3b2fbc69a4834dd2a384f9326b5e2e2f264ad7c","isMergeCommit":false,"messageTitle":"Fix issue with Image in About Me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1e755436d4d8c15fd1e951d5d438738854022a0d","isMergeCommit":false,"messageTitle":"Add sort functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":254,"deletions":6}}},{"hash":"080fd14ec2013513786a2f6bc7fa716d2b17edd1","isMergeCommit":false,"messageTitle":"Add sort command to Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":10}}},{"hash":"aaeb15a65f826abfa9e8d7ba74110ea07ced13f6","isMergeCommit":false,"messageTitle":"Fix issues with Sort functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":21}}},{"hash":"3e24173dfbeec32390b5fd4b585936374d839886","isMergeCommit":false,"messageTitle":"Fix Checkstyle for Main code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":125,"deletions":47},"test-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-27","commitResults":[{"hash":"fa150f79e118e5a0da118837d0976299d13db1ed","isMergeCommit":false,"messageTitle":"Fix Application Status Comparator","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":21},"test-code":{"insertions":120,"deletions":1}}},{"hash":"b4f5e77da2d0388f9a3e637be3df548ab44da18d","isMergeCommit":false,"messageTitle":"Add Field Summary and fix command summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":12}}},{"hash":"7d6e202f4a5dcf8bbbba544e4cefaa72992b6396","isMergeCommit":false,"messageTitle":"Add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":3}}},{"hash":"aca6aac157622bad720e54ce74b18851073ebbbe","isMergeCommit":false,"messageTitle":"Update Transfer information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":8}}},{"hash":"6e4a09884fafddec1736d19d8e0ce384e3ef85bf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cf5e2d75ac8af5ecad1d8214c4d3d8fc1cef11f0","isMergeCommit":false,"messageTitle":"Fix Checkstyle for Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":90,"deletions":7}}},{"hash":"373d9d776a8b335c4dbe5d0f73d0ccbd6d592565","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"7900cbb19777841ba5e4714ef8cc439ea2e37ad0","isMergeCommit":false,"messageTitle":"Fix bug with testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"3ede7f8d039d89964f9ce59316ba82a767093b0c","isMergeCommit":false,"messageTitle":"Implement Tests for InternshipComparators","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":69,"deletions":0}}},{"hash":"cbec136e949db5a7dd2d9248714a5b5bae936c15","isMergeCommit":false,"messageTitle":"Add more test cases for InternshipComparators","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":87,"deletions":0}}},{"hash":"e793c854422ed7dd08f6adeab478b8c02bca2fd2","isMergeCommit":false,"messageTitle":"Improve code coverage for InternshipModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":0}}},{"hash":"314425ff99139a4c002c2f2a56bf3ac568b05bb3","isMergeCommit":false,"messageTitle":"Add toString test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":10,"deletions":0}}},{"hash":"8162780e6de11b16ea61b5a789052a7aa32ddd7e","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":21}}},{"hash":"8010e5be797912f7c1ad8ecb4020a3f9f9d270bd","isMergeCommit":false,"messageTitle":"Add sort command to UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":57,"deletions":38}}},{"hash":"6b39572911284291456d23752dd9cafd79c2d145","isMergeCommit":false,"messageTitle":"Update sort feauture in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"7ef9f98df0cf81ea178a7c5a25ea64f9e8f6dbc5","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"af7be5f6f2660f8b8e0ddfe7f1520acd6ddcec7c","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c57a25c9e87a1add568b69fa3620968475d90414","isMergeCommit":false,"messageTitle":"Fix formatting issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"09ff73d1c05735c797ff9427508d92dc7f9aecce","isMergeCommit":false,"messageTitle":"Add CLI hyperlinks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0c0f1eb0eeab54de1edeb0b63908ff54a56c43ba","isMergeCommit":false,"messageTitle":"Updare field summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"e34e4e746f6c3fdbdcb4637f919e45c1f67743f4","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"052a990b43376ef4833e5fc355fb73215e2ab4ec","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"ad1d4e00b7f90c14bbe41a84111b91aa93e75397","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-28","commitResults":[{"hash":"89a24408256ea0d388aec446c33c0b01825b7784","isMergeCommit":true,"messageTitle":"Merge pull request #158 from jieqiboh/add-legend","messageBody":"Add legend to UG","fileTypesAndContributionMap":{}},{"hash":"d1fe8de375117d8fcb851dd023e1e840f8d164bc","isMergeCommit":false,"messageTitle":"Fix formatting errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":21}}}]},{"date":"2024-03-29","commitResults":[{"hash":"9fd1cedd69e8bb0d0c64bebacc8f313b3a77c496","isMergeCommit":false,"messageTitle":"Update Version Number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"f307f64f25435332e45a1fb2db90395ad5c51df0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into sort-feature","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"8c78cf007f49d8bb70f24a0a6a63907e63090717","isMergeCommit":false,"messageTitle":"Change Implementation of Sort Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":41}}},{"hash":"fbd69ff216bc39b8334b9e067eb495bdd1fff0a8","isMergeCommit":false,"messageTitle":"Implement sort feature with ArgMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":33}}},{"hash":"7f8635f78b5ca39dd1a29a8db5291ccc2bab7d5c","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a51a4c9ddc148c52bacbfc2aab9bd09a3a98c33","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}}]},{"date":"2024-04-02","commitResults":[{"hash":"82f31eae3a4b0f634ed36772aa2219ad84a5a1f4","isMergeCommit":false,"messageTitle":"Fix Error Messages and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":67},"test-code":{"insertions":10,"deletions":7}}},{"hash":"787dee75331feedfe16dd8c5a1f33d73210e35c2","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10adc9e2c864145d2060af49979cc6a059d1ebf9","isMergeCommit":false,"messageTitle":"Update model stub","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":3}}},{"hash":"8a6f72d540179dd20ed7d60b3238db97c262ea17","isMergeCommit":false,"messageTitle":"Resolve comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":33},"test-code":{"insertions":81,"deletions":13}}},{"hash":"b7b90edcebb4bbcad688c49397ad61d155ed4411","isMergeCommit":false,"messageTitle":"Fix error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"f3a1c68872f9aa7a16d1dffbd559692ed4ee5d7a","isMergeCommit":false,"messageTitle":"Update sort in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":17}}}]},{"date":"2024-04-03","commitResults":[{"hash":"60e4a10390a559e3d65b0df01bf2af0e179e689b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"181ed435477d573285052bff65460cb99ea33d80","isMergeCommit":true,"messageTitle":"Merge pull request #186 from CaptainKeqing/updateUGFind","messageBody":"Update UG for Find command","fileTypesAndContributionMap":{}},{"hash":"b476223652d1ee48d792f3648b9f16ad814420a5","isMergeCommit":false,"messageTitle":"Fix duplicate prefix error for Sort","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"daf088cf6a43251a08d4d257bc0af5ef81f798cf","isMergeCommit":false,"messageTitle":"Fix multiple different prefix bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":0}}},{"hash":"4559146495c2c7a8363d151ae96b3103c51e81e0","isMergeCommit":false,"messageTitle":"Fix illegal arguments error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}}]},{"date":"2024-04-04","commitResults":[{"hash":"9e7c9cae1c0f0ac0536bac35efc71a66dbfd1b19","isMergeCommit":false,"messageTitle":"Fix error message bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"b727148572efa7f01dddb3d27a770df3bc9e3f80","isMergeCommit":false,"messageTitle":"Change error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":11}}},{"hash":"b5f48c94daa393e69bbac9774fe2ecf1f22ae71b","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":14}}},{"hash":"5e3c4fb79cbcad7ea33ffb4c50c3fb32a6c1d962","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a6a88e7aa9a9e81ca33d826de7d564eae447745b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"0d906c5aa61598379f6bf3be2f2360bfc9377861","isMergeCommit":false,"messageTitle":"Improve Code Coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-04-05","commitResults":[{"hash":"7ad74f450caa23b7228760ca7707299f4e002fc9","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":23,"deletions":4}}},{"hash":"8feb59e451cd0ae111aa81421ce2dfb7024c0704","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}}]}],"CaptainKeqing":[{"date":"2024-03-01","commitResults":[{"hash":"311bc16eb0a8c0e86385091721332ae0d7809c78","isMergeCommit":true,"messageTitle":"Sync with team repo master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"eba4f964e44e36219ce3fcb4f1aa215b2b71b957","isMergeCommit":false,"messageTitle":"Update Donovan\u0027s info on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":9}}},{"hash":"179c60565bff15d95db6710f2f72b0beea49816c","isMergeCommit":false,"messageTitle":"Add detailed view feature to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}},{"hash":"ee33402e78b725faa8e9f346b15b64bfa52e2aef","isMergeCommit":false,"messageTitle":"Add some non-functional requirements to Developer\u0027s Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}}]},{"date":"2024-03-02","commitResults":[{"hash":"68a002e78ec8e8fdb711a19b5a8e87a67a43da7e","isMergeCommit":false,"messageTitle":"Add Donovan\u0027s info to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":5}}},{"hash":"5729b68e59333c39188f5ef6c01e5931d0e9dc9c","isMergeCommit":false,"messageTitle":"Add detailed view feature to User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":29}}},{"hash":"6726574612d1e3fa7b0d4781a736639de31936e7","isMergeCommit":false,"messageTitle":"Add newline to EOF for UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2c5806b8efd469e82d947041264a74d61e60f131","isMergeCommit":false,"messageTitle":"Add newline to EOF for captainkeqing.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a55599566ec7aa7bb3f2e1f96b9d2a03893bf2ff","isMergeCommit":false,"messageTitle":"Add some non-functional requirements to Developer\u0027s Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":86,"deletions":68}}},{"hash":"c1fb6a50ec79d8e493c0b0dda524a7c70c623d2c","isMergeCommit":false,"messageTitle":"Fix old version of md not matching Jekyll","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":65}}},{"hash":"a8b4bc6fbe760c34572c4ce7c8d512da678a2129","isMergeCommit":false,"messageTitle":"Fix old version of md not matching Jekyll","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":29}}},{"hash":"0a6a1f9472751e7d0817f6ce1a7a03604ee066dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AddInfoToAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9fa42afc6dea7311b048d860ed099d1be5c175f7","isMergeCommit":true,"messageTitle":"Merge pull request #49 from HM33-Stu/AddInfoToAboutUs","messageBody":"Add Hari\u0027s information to AboutUs.md page","fileTypesAndContributionMap":{}},{"hash":"9dfd12d07af38016792fad0ab1788e1b85635776","isMergeCommit":true,"messageTitle":"Merge pull request #51 from HM33-Stu/AddUseCasesToDG","messageBody":"Add Use Cases (and Stories) To DG","fileTypesAndContributionMap":{}},{"hash":"2dba60f6e1198052f2a74b3391b9e2adcd41ff2a","isMergeCommit":true,"messageTitle":"Merge pull request #50 from HM33-Stu/AmendAddAndDeleteFeatureInUG","messageBody":"Amend Add and Delete details in the User Guide","fileTypesAndContributionMap":{}},{"hash":"9ed484d58160592c5d6a01b746ff2ca6dd92648b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from LWS49/addEditToDG","messageBody":"add edit to User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"c66db0f78c429309794e4e509dd8c06ab7812e59","isMergeCommit":false,"messageTitle":"Rename fxml files and add labels for internship fields","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":5,"deletions":5}}},{"hash":"339432f31f3815f1d9dcdd18ad256c9ec43e8002","isMergeCommit":false,"messageTitle":"Delete PersonCard and PersonListPanel files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":108}}},{"hash":"05ed9d16987a39383bbdc3c06f60f443ff7e0e4f","isMergeCommit":false,"messageTitle":"Implement InternshipCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":0}}},{"hash":"2492bb2a87015b29b5c1077fab88332ff56e632e","isMergeCommit":false,"messageTitle":"Implement InternshipListPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":0}}},{"hash":"4bb1518658ed58795002e6f78ebd84e59df268f2","isMergeCommit":false,"messageTitle":"Remove unused import and tweak poc label name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-13","commitResults":[{"hash":"704616e988443a31801d7a1c48f4440f8f68ab70","isMergeCommit":false,"messageTitle":"Update Internship.java","messageBody":"Remove stray getName function","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"05d111d4d7fbd723f936908a4f1e47d1e28f917f","isMergeCommit":true,"messageTitle":"Merge pull request #89 from theman-oj10/master","messageBody":"Refactor AddressBook as InternshipData","fileTypesAndContributionMap":{}},{"hash":"4826f3e93e597efeb1e86b43fefa3965ef5bc1b2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into viewInternships","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1e6a473525383ed1538ce8084ff5160dce58e609","isMergeCommit":false,"messageTitle":"Add javadocs and change access of applicationStatus to use getter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":2}}},{"hash":"2d61d527a73978b34245abf8e8931592bc3ba6ad","isMergeCommit":true,"messageTitle":"Merge pull request #88 from jieqiboh/Json-Adapted-Internship","messageBody":"Add JsonAdaptedInternship And Update Description and Role isValid methods","fileTypesAndContributionMap":{}},{"hash":"8aeb581d3898b807343d96c776178e8754e7b08d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into viewInternships","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d8c5bc3a9f1e3255a8d36a8955fa3eff738e62bf","isMergeCommit":false,"messageTitle":"Rename fxml id location to loc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":1},"other":{"insertions":2,"deletions":2}}},{"hash":"ef33b32719270bb6b46142433a6e1758d0dd539c","isMergeCommit":false,"messageTitle":"Add back Person files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":0}}},{"hash":"0de93fb96f11140e6d29788e6c0602f5c593f1da","isMergeCommit":false,"messageTitle":"Add newline to EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-14","commitResults":[{"hash":"96ca80574e395887aaa787211426e54df1c1c92e","isMergeCommit":false,"messageTitle":"Re-add person fxml files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":0}}},{"hash":"ae6faa25eca8f9b221faf6ea095332db2b525121","isMergeCommit":false,"messageTitle":"Fix FXML string typo, rename variable to loc to match fxml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"ad90777ce6be4bc4c919ff24b6b6619002b1c579","isMergeCommit":false,"messageTitle":"Fix typo in InternshipListPanel javadocs and fxml fx:id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"f118890629ad0e5a38692510334e07eb3b465f6e","isMergeCommit":false,"messageTitle":"Add newline to EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"620a9997b69493264ec04dffc4375d2db177276f","isMergeCommit":true,"messageTitle":"Merge pull request #99 from jieqiboh/test-email-number-internship","messageBody":"Add tests, change isSamePerson and refactor isValidContactEmail","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"242efdd07d7dea0446cb06cdc58eaa22a526c8f6","isMergeCommit":true,"messageTitle":"Merge pull request #98 from LWS49/update-edit-command","messageBody":"add InternshipEditCommand","fileTypesAndContributionMap":{}},{"hash":"d4202fe886c9b968e32c699bf38a08d90c529a32","isMergeCommit":false,"messageTitle":"Create internship versions for Clear, Exit, Help, List commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":0}}},{"hash":"3c4c4c6cfbcd0bfb76774ceab476a401affe87cb","isMergeCommit":false,"messageTitle":"Add tests for Clear, Exit and Help","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":0}}},{"hash":"7462472b9d7b216579098051a539d91509156f48","isMergeCommit":false,"messageTitle":"Add tests for List","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"cbb4c261fecea918e2858a2f83735f1d3d69beef","isMergeCommit":false,"messageTitle":"Fix long line","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"9cad1f0080971370694fdd288fdacf9b70a5f6b7","isMergeCommit":true,"messageTitle":"Merge pull request #104 from HM33-Stu/update-add-command","messageBody":"add InternshipAddCommand","fileTypesAndContributionMap":{}},{"hash":"1055c848a2aabf5579e8f2ae608f074786aca219","isMergeCommit":true,"messageTitle":"Merge pull request #106 from HM33-Stu/update-delete-command","messageBody":"add InternshipDeleteCommand","fileTypesAndContributionMap":{}},{"hash":"6c231589776f13a2ff439f7e966f01cd83e250a4","isMergeCommit":false,"messageTitle":"Create new InternshipDataParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":0}}},{"hash":"29072803452a1b32960430953d4da2bda32cb1f7","isMergeCommit":false,"messageTitle":"Add simple find command for internship company name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":0}}},{"hash":"26d6bfb3c6391bf14f35032196a2039828fe8e22","isMergeCommit":false,"messageTitle":"Add parser for find command for internships","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0}}},{"hash":"40159856b57e5a61eee2fdbad38eddd1d3c1a205","isMergeCommit":false,"messageTitle":"Add test for find command for internships","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":91,"deletions":0}}},{"hash":"23992ebd40afa381d5c291185c2b421ded1a87f4","isMergeCommit":false,"messageTitle":"Remove data parser, not relevant to this branch","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":86}}},{"hash":"99980b7e3699bbecc1f05c8e97b41925ebaa13bc","isMergeCommit":false,"messageTitle":"Add test for find command parser for internships","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}}]},{"date":"2024-03-17","commitResults":[{"hash":"5dc5853275a2b097d0104789c47e87f0e76025a5","isMergeCommit":false,"messageTitle":"Add internship logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":0}}},{"hash":"5dcdd88430a1e6fb6d669f422da7076f3c64514c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into logicManagerAndInternshipDataParser","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf2a799016b885a0d46fa3fd95625b66f65cdfae","isMergeCommit":false,"messageTitle":"Create internship data parser","messageBody":"This parser helps to parse all Internship related commands, by\neither calling their parser if more parsing is necessary, or\ndirectly creating the InternshipCommand object.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":0}}},{"hash":"4fdfae5e463bdaf0ba41bc5a0b962b796bc10a89","isMergeCommit":false,"messageTitle":"Create internship logic manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":0}}},{"hash":"87e50c5d7230664e4e5ea4f5069aa2f06f0a5579","isMergeCommit":false,"messageTitle":"Create InternshipUtil","messageBody":"This is a utility class for testing Internships. This allows us\nto get the user command necessary for creating an Internship.\n","fileTypesAndContributionMap":{"test-code":{"insertions":62,"deletions":0}}},{"hash":"be8ef0676e2a61563f7e0bd8f0d669db51758190","isMergeCommit":false,"messageTitle":"Fix asterisk import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":1}}},{"hash":"2554b337777491afa0901f567617db984d7b3a87","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into logicManagerAndInternshipDataParser","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1fd87726871fae07b294c06d0e5bb9d48d621cae","isMergeCommit":false,"messageTitle":"Add tests for internship data command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":102,"deletions":0}}},{"hash":"0a89364af2122cfdff2448923f134b24e4d3e481","isMergeCommit":false,"messageTitle":"Add test for internship logic manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":170,"deletions":0}}},{"hash":"760d71379ab775618cedbc29fbd1e609771c79bc","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9b37745dac94191883a8831fa6118ce3eab48cb2","isMergeCommit":false,"messageTitle":"Fix no whitespace between prefix and argument, cosmetic change","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":16}}},{"hash":"c6c18b50dd0b8d1ef04db2573c743892b987091b","isMergeCommit":false,"messageTitle":"Fix long line checkstyle violation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"ccccd080040470e86b8195f9496bd6379f21d07e","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"fix typo","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"257e3b54b07adfb3af96a989663c2b31c6c9c06f","isMergeCommit":true,"messageTitle":"Merge pull request #117 from HM33-Stu/update-add-command","messageBody":"Resolve Add Command UI-related Bugs","fileTypesAndContributionMap":{}},{"hash":"586802e8d7cbd1732615dd52b0bd66bc8293ec4f","isMergeCommit":false,"messageTitle":"Fix internship .equals() to check equality for all data fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"4c5e82e2946cc9762184443862a3fbed95ff58d0","isMergeCommit":false,"messageTitle":"Fix .contains() method bug","messageBody":"The contains method for UniqueInternshipList is used to check\nfor unique internships. Internship has some identity fields,\nnamely companyName, location, role and description.\n\nCurrently, the .contains() method actually uses the stronger\ndefinition of equality defined in Internship, which checks for\nthe equality of all data fields.\n\nLet\u0027s change .contains() to use .isSameInternship() in Internship\nthat only checks for equality for the identity fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"4c2407df9e5b76550741e25f830e2b0073b38ecf","isMergeCommit":false,"messageTitle":"Specify identify fields in javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"086c15fd8671a7a46be02d6a24da6ce28f0128d3","isMergeCommit":false,"messageTitle":"Add tests for Internship","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":1}}},{"hash":"a1e902efd6ecb2d72d4dfdc7cc696d44b763ce06","isMergeCommit":false,"messageTitle":"Add test for equals() method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":0}}},{"hash":"2fad1b85c83d91f155ea02f3016029640f103278","isMergeCommit":false,"messageTitle":"Set result display box to wrap result text","messageBody":"Currently the text overflows and expands the text area, so\nthe user is unable to see the full error/result message\nunless he scrolls to the right with a mouse.\n\nIn light of efficiency purposes, it is better to have the text\nwrap around the text area so it will not extend horizontally\npast the border.\n\nLet\u0027s set the wrap text property to true for better user QOL.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"9ce0f66967cd930d44c01fe027e27f7cf6b45a77","isMergeCommit":false,"messageTitle":"Fix label colour styling to work","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5}}},{"hash":"73430c58a0b34c4c024b1d105effde4d8153f480","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"205f8e4db4302cf0b7536e2bdc5e92caa072f27c","isMergeCommit":false,"messageTitle":"Set potentially long labels to wrap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-20","commitResults":[{"hash":"8c64eba60fa7a91ec3a14bf27704d50ae9e0ab29","isMergeCommit":false,"messageTitle":"Create ui part for displaying detailed internship info","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":0}}},{"hash":"bf56620572e017bf2f04f35d95be3f5d7f73a3e8","isMergeCommit":false,"messageTitle":"Add ui part that stores the detailed internship","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":0}}},{"hash":"d73071b5b08a4ec2f220e6d64ea48b7817cc0c99","isMergeCommit":false,"messageTitle":"Add ui part for the separate detailed view window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":215,"deletions":0}}},{"hash":"798b4e59dbc8286193717177423bb70af90d3e75","isMergeCommit":false,"messageTitle":"Add click to view details functionality to InternshipListPanel","messageBody":"Currently, clicking only highlights the InternshipCard element, and\nhas no other effects. We want InternshipListPanel to return the\nInternship that was clicked on.\n\nLet\u0027s add handlers to return the Internship that was clicked.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":1}}},{"hash":"aa4c5e24a5864cfee200198f83030e1efdfafab1","isMergeCommit":false,"messageTitle":"Add new selectedInternship field in model, with getters and setters","messageBody":"This addition is to support the feature for viewing a selected\ninternship in MainWindow.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":0}}},{"hash":"5879c12c4d56f9985aab25e064eb447063e490c1","isMergeCommit":false,"messageTitle":"Add getter and setter for selected internship","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}},{"hash":"923551f8ce33ffa7aa024bf4d6b486b65fd69a95","isMergeCommit":false,"messageTitle":"Add new window to display detailed internship view","messageBody":"MainWindow is the main UI of the application. It holds references to\nthe helpWindow, resultDisplay, InternshipListPanel and more.\nCurrently, it does not support a separate window for a more\ndetailed view of an internship.\n\nTo support this new feature, we need to show a new window that we\nwill populate with our selected internship for the detailed view.\n\nLet\u0027s\n* Add mouse click handlers to update the selected internship in Logic\n* Add a new DetailedInternshipWindow that we can show/hide\n","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"1fa645c9b0ab8aa7c0b81205ad45ef95b4e655a1","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"26967c5eb8a3d1edffdf4764c50f973a7382e7af","isMergeCommit":false,"messageTitle":"Include TestFX dependencies for testing UI","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":16,"deletions":0}}},{"hash":"78804ce9cd13c9da5b30e283a7b3a40531e77369","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addClickableInternship","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2fe7e1d284e51bc1f8436450514e6e25153f6f78","isMergeCommit":false,"messageTitle":"Fix deprecated gradle dependency method","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":5,"deletions":4}}},{"hash":"233525c5020320adaaca39a943556b78f9e4267d","isMergeCommit":false,"messageTitle":"Update model stub to include new selected internship get/set","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"57655667f6b50d426f405694df9cd3c9c3f33028","isMergeCommit":false,"messageTitle":"Add tests for InternshipCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":9},"test-code":{"insertions":83,"deletions":0}}},{"hash":"ee808f3ee59eecf958ff11c3d83d4272e39a64f4","isMergeCommit":false,"messageTitle":"Fix import checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"9c993e85838a4cc4b12fdcc73146212a390f0a60","isMergeCommit":false,"messageTitle":"Add monocle support for headless testing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0}}},{"hash":"2723290fec2043fea2e5512ca895e96d6083376f","isMergeCommit":false,"messageTitle":"Create predicate to test internship for keywords","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":125,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"75c47c730c7c5c5457cc36dab801fc2548d8f9fd","isMergeCommit":false,"messageTitle":"Update InternshipFindCommand to use all fields predicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":50}}},{"hash":"6ffb6872f70a8a576f9cf9afca9b49d2bd244a5e","isMergeCommit":false,"messageTitle":"Add parser for find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":7}}},{"hash":"82e6f2de1c6e7bbf8e5ee69da07cefe7a5b87485","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2}}},{"hash":"11e4c43675639735498a1d695465b68fe8779fd3","isMergeCommit":false,"messageTitle":"Fix stream processing bug for fields with \u003e1 words","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"3e443cae2fba9f3f39648790f2c93b415eb833df","isMergeCommit":false,"messageTitle":"Add find command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":21}}},{"hash":"647e82c716281ece389a637b940e7e8ada946144","isMergeCommit":false,"messageTitle":"Modify data parser test for new find command syntax","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":8}}},{"hash":"042ade9065c1f2bbcace577425f992968d860c40","isMergeCommit":false,"messageTitle":"Add test for internship find command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":7}}},{"hash":"d63d7da17a7192ac97022b401815baccf9961df3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"cc488efeb758d37a16f8b5993a72e38089534e9f","isMergeCommit":false,"messageTitle":"Fix bug where validCompanyName rejects 2+ word names","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":89,"deletions":0}}},{"hash":"abf8e32834f61372fc911864996f50d2b31634bb","isMergeCommit":false,"messageTitle":"Add isMatchAll field to equals and toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":7}}},{"hash":"4c6d9ff3ab7cdc116634763baca25a4e648c996d","isMergeCommit":false,"messageTitle":"Fix typo in test case setting isMatchAll wrongly","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"3ceb4a97b24ea5b0616f876391b257a261f6c2da","isMergeCommit":false,"messageTitle":"Add tests for intership predicate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":39}}},{"hash":"1d59c9f3736afa4a1dcddb76a2dde51fd26c8e4a","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":9}}},{"hash":"9e3110136d325716c63a5d75630902cc8d30c92f","isMergeCommit":false,"messageTitle":"Improve error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5}}},{"hash":"4ff5f7fecc9a945eb9f1832b5b1929dd89cbb03f","isMergeCommit":false,"messageTitle":"Fix test case string input","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"45a33e55917d8b278e7388e49a1ea31f18f5be66","isMergeCommit":false,"messageTitle":"Change main window to show CareerSync","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"fe23adf660c8415251ad0b4b52a9b11ea7bf34fd","isMergeCommit":false,"messageTitle":"Add user guide for find","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":12}}},{"hash":"9512d0789d5c55d9349dd98bca583f5874e8188b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addInternshipFindCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e1de58cee6b6c929862c5174b604155b0e920b2","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"a94fe241df81b5eb47e9cac38f166e074c2471fc","isMergeCommit":false,"messageTitle":"Fix find command header link, remove whitespace at EOLs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":22}}},{"hash":"8929e3cef5ddec5b24698c176a4901a759c01df4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into updateUGFind","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ef84efabf56b852d84bc042a384c3f909303174","isMergeCommit":false,"messageTitle":"Resolve all merge conflicts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":18}}}]},{"date":"2024-03-26","commitResults":[{"hash":"1acb0490192b377610e0272e044a289b96870305","isMergeCommit":false,"messageTitle":"Update diagrams, fix internal links in Architecture section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":27}}},{"hash":"c8b8527ab9d71a330860d4051f5b83b4bef4a1cb","isMergeCommit":false,"messageTitle":"Update broken links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}},{"hash":"58793f1c38338b3c20a69dccc7c4e1ed0de01c55","isMergeCommit":false,"messageTitle":"Rectify typo in notes about command format section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"251536e6ff83d5ac8b458c6d03943bfd47621fbe","isMergeCommit":false,"messageTitle":"Make Known Issues multiple screen issue more readable","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"6da1e6169257e14d102797941e68f582d9bb7314","isMergeCommit":false,"messageTitle":"Improve section for list command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":2}}},{"hash":"696667338ddd3091677cd566ad65550c56b0a883","isMergeCommit":false,"messageTitle":"Improve section for clear command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":1}}}]},{"date":"2024-03-27","commitResults":[{"hash":"b857714725ef61967a4d1f73100e584e4397f465","isMergeCommit":false,"messageTitle":"Improve section for find command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":5}}},{"hash":"96995a21fc7e001e381ed94fb392f52c416c2ba4","isMergeCommit":false,"messageTitle":"Add bold format for list","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"744a065e81fc54d7fb6d1025e931cef67175f86c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addClickableInternship","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9cfc5ac2bc876682c3a7e4fb13e2e12bef9373cb","isMergeCommit":false,"messageTitle":"Change to correct monocle version for headless testing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":3}}},{"hash":"cc51b2ec27d0cd0dbcca819d5d8ffc475464d829","isMergeCommit":false,"messageTitle":"Fix bug where remark field not copied from other","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"0c389c3f445e7d9e157066caf1c19e0240d90530","isMergeCommit":false,"messageTitle":"Add support for remark field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":9}}},{"hash":"006686cefb93c7198f64ee2857c27eab318e8da9","isMergeCommit":false,"messageTitle":"Add new abstract Ui test class, support headless testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"7246e7a58a16d15696e7e97cbbe3f4ec902abf11","isMergeCommit":false,"messageTitle":"Update test to include remark label","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"1bc91c86e15830c0926097d575190a93124ea538","isMergeCommit":false,"messageTitle":"Add tests for click, add support for remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":45,"deletions":2}}},{"hash":"ec00e839b65c773d3ae38aeb70d5118302d3f0a6","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":4}}}]},{"date":"2024-03-29","commitResults":[{"hash":"61b58a05aa32e2c3cf4db384f30dd67772041b91","isMergeCommit":true,"messageTitle":"Merge pull request #143 from LWS49/add-addTask-command","messageBody":"Add TaskList, AddTask, AddDeadline command and add JSON conversion for both Task and Deadline\r\n\r\nThanks for the speedy fixes ","fileTypesAndContributionMap":{}},{"hash":"8a7764d1bb387e2ea6db6efdd0c93903a0c812d1","isMergeCommit":true,"messageTitle":"Merge pull request #164 from HM33-Stu/enable-assertions","messageBody":"Enable Assertions In Team Repo","tags":["v1.3.trial"],"fileTypesAndContributionMap":{}},{"hash":"5576954bb58f87a8961a3e75a8c97cc6218331a7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addClickableInternship","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-01","commitResults":[{"hash":"3d2c3ed95fc91008adb3424ff7239bd184103899","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addClickableInternship","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3a7437ced350c49d75f09b0e3687cd5fe5b97c00","isMergeCommit":false,"messageTitle":"Fix bug where deadline added does not reflect on UI","messageBody":"The current addDeadline command does not call\nmodel.setInternship(). However, this is required to\nbasically trigger a UI refresh (via ObservableList\nlistener).\n\nLet\u0027s add a line to set the internship that we added\nthe deadline to, to replace itself (no change to\ninternal internship list). This triggers the UI to\nupdate which displays the added deadline.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"1803e05585fd578eb4ba40692497180120f47d26","isMergeCommit":false,"messageTitle":"Add support for remarks and tasks in detailed view","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6}}}]},{"date":"2024-04-02","commitResults":[{"hash":"f476a00ef5dae5a8081ca7349f5774eef0119d53","isMergeCommit":false,"messageTitle":"Remove command box and result display from detailed window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":37}}},{"hash":"6b7da0d6c7344aa5a468dfa876df58bc961344c0","isMergeCommit":false,"messageTitle":"Add tests, remove unused functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":80},"test-code":{"insertions":61,"deletions":0}}},{"hash":"caad3177f9fb2accddcfefb5172869d682e2d14f","isMergeCommit":false,"messageTitle":"Implement headless testing for this test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"700bcfba49ed8218e8068857ea470f903636662f","isMergeCommit":false,"messageTitle":"Improve error message for Find","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":14}}},{"hash":"8b65dbea96dc4624ac0c849c319bdb15015afec2","isMergeCommit":false,"messageTitle":"Add support for find by remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4},"test-code":{"insertions":19,"deletions":17}}},{"hash":"f14cfeac401d3f4a25336c37d107246cfaed2ce7","isMergeCommit":false,"messageTitle":"Improve error message for prefix present but no key","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":4}}},{"hash":"3e70abfb78f674a89c8ec4c2974d408d1919449a","isMergeCommit":false,"messageTitle":"Move prefix checking functions to InternshipParserUtil","messageBody":"Currently, there are 3 flavours of prefix checking.\n1) anyPrefixesPresent\n2) allPrefixesPresent\n3) prefixesPresentAreNotEmpty\nThese are split among the parser functions as individual stand\nalone private functions.\n\nThis makes it difficult to test them (private, so can\u0027t test.\nImplemented separately so changes have to be done multiple times).\n\nLet\u0027s\n* Shift them to a centralised location in InternshipParserUtil.\n* Implement tests for these functions\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":30}}},{"hash":"9795dfdddc10f0459a86eb62e20de4dbd92bfa5e","isMergeCommit":false,"messageTitle":"Add test for InternshipParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":124,"deletions":0}}},{"hash":"ceceb890b9ce5ec675abd9db4b582366aec242aa","isMergeCommit":true,"messageTitle":"Merge pull request #176 from theman-oj10/branch-UserGuide","messageBody":"Update Sort in UG","fileTypesAndContributionMap":{}},{"hash":"2cd65192e8524c6ccc72b36a9af5a18cb25fe7ed","isMergeCommit":false,"messageTitle":"Fix checkstyle, add test for no keyword","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":5}}},{"hash":"1feca1d90b7c8158544a5a652f8bf8234d2123b0","isMergeCommit":false,"messageTitle":"Update InternshipDeleteTaskCommand.java","messageBody":"fix typo in comment","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0cb395201592456c692655d47cd228356a7220b0","isMergeCommit":true,"messageTitle":"Merge pull request #181 from jieqiboh/dup-addremark-bugfix","messageBody":"BugFix for duplicate prefixes","fileTypesAndContributionMap":{}},{"hash":"040d13dd1e635aabaad0a750c11eff5e6e601e03","isMergeCommit":false,"messageTitle":"Improve tip for adddeadline section","messageBody":"This commit also fixes typo in deadline format, and adds a hyperlink to the Try It Out section to add task","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":8}}},{"hash":"f5c19023cb8bee488e367c7c93c0c694af75a07b","isMergeCommit":false,"messageTitle":"Fix deadline format typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-04-03","commitResults":[{"hash":"1f3201e956b48437212f1d1d3dc45cf5f017b14b","isMergeCommit":false,"messageTitle":"Improve error msg to show supported prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":13},"test-code":{"insertions":5,"deletions":0}}},{"hash":"22e7cf82185ee603adece47d10c24d4f03ade23f","isMergeCommit":false,"messageTitle":"Fix duplicate prefix bug for Find","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"881d1b07c18d97737b2b8d7f66cdbdd539b05b13","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4}}},{"hash":"8dc57fb1fcdb7c2e421bfe443eb9599a695f624d","isMergeCommit":true,"messageTitle":"Merge pull request #179 from LWS49/update-UG","messageBody":"Improve navigation","fileTypesAndContributionMap":{}},{"hash":"97756da55d17e52a7301f821164bb6a87e920487","isMergeCommit":false,"messageTitle":"Improve grammer in error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"20a57ddf4b3651321364e9afb0fd41c245d98ca8","isMergeCommit":false,"messageTitle":"Update command section for Find, amend typos in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":27}}},{"hash":"aca7304ff6d1949c78a04de6601ab5d960ddf540","isMergeCommit":false,"messageTitle":"Remove stray words","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":5}}},{"hash":"3f17abe7d0c428df783f9ec598dff358950154ce","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Fix typo buy in command summary link","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c8e107b032c10b121c92a4cf0b29fa9ca7c79577","isMergeCommit":true,"messageTitle":"Merge pull request #190 from LWS49/update-UG","messageBody":"Change Tutorial Headers, Looks good to me! thanks for the quick changes","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"36c7a592b97f718e7fef418f285c9840360a2b5f","isMergeCommit":false,"messageTitle":"Rewrite add and delete commands for User Guide","messageBody":"The biggest change here is the the removal of the screenshots for\nsuccessful output and error as this screenshots do not provide\nmuch value at the moment without further context.\n\nInstead, the users are now directed to the Tutorial section which\nhas a more contextualised use case for both Add and Delete.\n","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":47}}},{"hash":"06698a6eb7910cd66e92ea7249a1be9536491785","isMergeCommit":false,"messageTitle":"Increase specificity of tutorial links for add, delete","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"fc33ff55f0ef6859c47a93673d61d17e6d3cf638","isMergeCommit":false,"messageTitle":"Use you language for edit, addremark and update screenshots","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":12}}},{"hash":"2645459977c15705a0174248ae0ee3d9874aaf6e","isMergeCommit":false,"messageTitle":"Use you language for sort, improve description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":24}}},{"hash":"3d843fc8a09e49a4723a3d90489e03cbdad26ecb","isMergeCommit":false,"messageTitle":"Improve description for setdeadline, deletetask, clear, exit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"bc643349602c45095ee5be30fab3337ce0bb6617","isMergeCommit":false,"messageTitle":"Update UG section for detailed view feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":3}}},{"hash":"28c566c9ab0ac3ee7a841293b2f1ee4b6f7da7e1","isMergeCommit":false,"messageTitle":"Add dev comment to explain abscence of tasks in detail string","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"bea31adffc7313b358a71adcfb8c173bda73cb30","isMergeCommit":false,"messageTitle":"Fix bug with detailed view window and edit","messageBody":"Currently, when an internship is being edited, if it is being\ndisplayed on the detailed view window, it would dissapear on occasion.\nThis is discovered to be because the identity fields of Internship\nare being used to check for equality (aka isSameInternship()).\n\nIt would be useful for users if the internship that is being viewed\ndoes not dissapear upon any field update.\n\nThis is made possible with a simple change to edit command. By\nchecking if the internship to be edited is the model\u0027s current\nselected internship (which is the one displayed in the GUI), the\npost-edit internship can be set to the new selected internship\nin model. (A non selected internship post-edit will NOT appear\nin the detailed view window).\n\nThis is corroborated by 2 additional test cases in\nInternshipEditCommandTest which checks that a selected internship\npost edit will still be the selected internship, and a non-selected\ninternship will not become the selected internship.\n\nLet\u0027s implement these changes within edit command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0},"test-code":{"insertions":51,"deletions":0}}},{"hash":"e7ccc8dca3319f9fde7e299c3adc7dee1383325a","isMergeCommit":false,"messageTitle":"Fix reference to deprecated Command (for persons)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"646af807a79702f2d6f118e8f441e0a9de3b4021","isMergeCommit":false,"messageTitle":"Update javadocs to use Internship","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":20}}}]},{"date":"2024-04-05","commitResults":[{"hash":"c6e6a659d6284cbf07c2a1f40c34cc789a7de237","isMergeCommit":false,"messageTitle":"Add new static utility method, converts prefixes to String","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1},"test-code":{"insertions":25,"deletions":0}}},{"hash":"c1b7f43903b4d39462655bc49913e4898c82555a","isMergeCommit":false,"messageTitle":"Add check for unsupported prefixes","messageBody":"Currently, find command only shows the supported prefixes\nrecognised by CareerSync. However, it does not explicitly\nhighlight to the users which of the prefixes (that are recognised\nby our ArgumentMultiMap) are unsupported etc. /email, /phone.\n\nLet\u0027s\n* Make explicit the unsupported fields keyed in by the user.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":6},"test-code":{"insertions":33,"deletions":1}}},{"hash":"b120446878c7e49d0680ef42f90c9dd8da487b5d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"dc09891b39c7eb31b61ebdbb79ac7c047ac61702","isMergeCommit":false,"messageTitle":"Update UG for find to include unsupported fields","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"65518da1674e5c77a7603b9e4cb0dab80a3824bc","isMergeCommit":true,"messageTitle":"Merge pull request #207 from HM33-Stu/rectified-build-details","messageBody":"Changed App Ver Number And Jar File Name","fileTypesAndContributionMap":{}},{"hash":"7533bd3f9495566de9ca12b9a93d920eb61eee52","isMergeCommit":true,"messageTitle":"Merge pull request #202 from LWS49/removeAllPersons","messageBody":"Remove all instances of person from src","fileTypesAndContributionMap":{}},{"hash":"2885133c296299804f1ecb04cd1fe1440fdf4116","isMergeCommit":true,"messageTitle":"Merge pull request #209 from CaptainKeqing/updateSupportedPrefixesFind","messageBody":"Update supported prefixes find","tags":["v1.3.1"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jieqiboh":{"docs":261,"functional-code":1356,"test-code":1585,"other":679},"HM33-Stu":{"docs":282,"functional-code":413,"test-code":897,"other":3},"LWS49":{"docs":466,"functional-code":1451,"test-code":1328},"theman-oj10":{"docs":113,"functional-code":1139,"test-code":1509},"CaptainKeqing":{"docs":211,"functional-code":1346,"test-code":1176,"other":21}},"authorContributionVariance":{"jieqiboh":64999.668,"HM33-Stu":54902.145,"LWS49":804479.0,"theman-oj10":64478.016,"CaptainKeqing":41842.547},"authorDisplayNameMap":{"jieqiboh":"CS2103T-W11-1 BOH ..E QI","HM33-Stu":"CS2103T-W11-1 HARI..OHAN","LWS49":"CS2103T-W11-1 LOW ..HENG","theman-oj10":"CS2103T-W11-1 RAJE..NDER","CaptainKeqing":"CS2103T-W11-1 LOH ..OVAN"}} +{"authorDailyContributionsMap":{"jieqiboh":[{"date":"2024-02-29","commitResults":[{"hash":"147f8bd94f4e6e739f4d5fb4394bee05a53c8f4d","isMergeCommit":false,"messageTitle":"Update AboutUs for Boh Jie Qi","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":11}}}]},{"date":"2024-03-02","commitResults":[{"hash":"e6b5d1cca4ef66a56753ec05069bd970e195e6aa","isMergeCommit":false,"messageTitle":"Revert \"Add some non-functional requirements to the developers guide\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":5}}},{"hash":"51ad45e27eca66e8e736ae715427b60e4ee96956","isMergeCommit":false,"messageTitle":"Revert \"Add Donovan\u0027s information to AboutUs.md page\"","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":170},"docs":{"insertions":193,"deletions":320}}},{"hash":"334acec660182075322fd74bf721537e94a51c46","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AY2324S2-CS2103T-W11-1/revert-45-AddNFRToDG","messageBody":"Revert \"Add some non-functional requirements to the developers guide\"","fileTypesAndContributionMap":{}},{"hash":"6af83905a10571194c63ea3b601be1ca442b1fbf","isMergeCommit":false,"messageTitle":"Revert \"Add detailed view feature to user guide\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":9}}},{"hash":"c1d151799c80160da3b96471a7601d735ac426c8","isMergeCommit":true,"messageTitle":"Merge pull request #53 from AY2324S2-CS2103T-W11-1/revert-46-AddDetailedViewFeatureToUG","messageBody":"Revert \"Add detailed view feature to user guide\"","fileTypesAndContributionMap":{}},{"hash":"3faa8d9776cc7bdddb35241d09dbc8a57320a97e","isMergeCommit":true,"messageTitle":"Merge pull request #54 from AY2324S2-CS2103T-W11-1/revert-47-AddInfoToAboutUs","messageBody":"Revert \"Add Donovan\u0027s information to AboutUs.md page\"","fileTypesAndContributionMap":{}},{"hash":"3a8dd5382f82a8ba7f66094be07b8605356e89a0","isMergeCommit":true,"messageTitle":"Merge pull request #57 from CaptainKeqing/AddDetailedViewFeatureToUG","messageBody":"Add detailed view feature to User Guide","fileTypesAndContributionMap":{}},{"hash":"b7305c678f7ec67d836e6c7fa5c979e0bbe9187c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-AboutUs-JieQi","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"f7b88491ee82544cfd8bc626202197214a5022c9","isMergeCommit":true,"messageTitle":"Merge pull request #71 from LWS49/update-glossary-in-DG","messageBody":"added Glossary for DG","fileTypesAndContributionMap":{}},{"hash":"3da1ec69aa41b3295271e4cc9d8f9f13fbfc9e6f","isMergeCommit":false,"messageTitle":"Add CI Badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3bdb00d39a7bee1de00a0b48dd8d5f970aa484a8","isMergeCommit":false,"messageTitle":"Fix CI Badge Typo in README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"e5c5c35dc6434c7e5fb0e5eb1da1aeee21b7982f","isMergeCommit":false,"messageTitle":"Add Internship class and its basic fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":592,"deletions":0}}},{"hash":"7e07c732d0d10b6f2175dc50eda4846f5e9c8f0f","isMergeCommit":false,"messageTitle":"Add Javadocs and fixed styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":29}}}]},{"date":"2024-03-08","commitResults":[{"hash":"3ba8b5e7eba6359de02db9b8c1bf3f84f7ad1106","isMergeCommit":false,"messageTitle":"Add newline to EOF for formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-09","commitResults":[{"hash":"38fcbd5a4ae8149cfa8924b908f55fe5bef19164","isMergeCommit":true,"messageTitle":"Merge pull request #68 from LWS49/updateReadMe","messageBody":"update ReadMe","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"5e67685eae99f706c9e4ad7b33e580140cc3f06a","isMergeCommit":false,"messageTitle":"Added validation regex for ApplicationStatus and Location classes, as well as their tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":63,"deletions":4},"test-code":{"insertions":152,"deletions":0}}},{"hash":"a0514315ce0357bef5fdb9d1ebee70a55b3a9173","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":6}}}]},{"date":"2024-03-12","commitResults":[{"hash":"444754d6bcf0b6f50f5b7b7040e209afa92dce58","isMergeCommit":false,"messageTitle":"Update toString method for ApplicationStatus and Location, add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":26},"test-code":{"insertions":50,"deletions":0}}},{"hash":"a314f3867f5088efafb61c5645d8ace85ec1e94c","isMergeCommit":false,"messageTitle":"Update enum for AppnStatus and Location to public","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"452904a0cb75427a1b6d72ab54a90e8141c58ae7","isMergeCommit":false,"messageTitle":"Amended typo in test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"1249f74f2bcf8204b0dd29d1b5417709ab355639","isMergeCommit":false,"messageTitle":"Replace person reference to internship, amend typo in CompanyName\u0027s isValid method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"8c5e2040e5fd1d270dcabd9dbda3024ee5545142","isMergeCommit":false,"messageTitle":"Add missing validators to ensure Description and Role are not blank","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":2},"test-code":{"insertions":147,"deletions":5}}},{"hash":"2ef0a91270d7e5de47268a922a633369c090b8e6","isMergeCommit":false,"messageTitle":"Add JsonAdaptedInternship and tests","messageBody":"Also add InternshipBuilder and TypicalInternships, which support\nInternship creation for testing purposes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":0},"test-code":{"insertions":337,"deletions":0}}},{"hash":"6284a6277737c111c5dd9f9f5b5ad8f1a9ef0b0c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into Json-Adapted-Internship","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea84daade0d6abbee8bc0b8fd9cd2d1e89001958","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":53,"deletions":32}}}]},{"date":"2024-03-14","commitResults":[{"hash":"dc9d659b2adb5737df1951d56875fc188ae58bcc","isMergeCommit":false,"messageTitle":"Add JsonSerializableInternshipData and Tests","messageBody":"Update Storage.java and StorageManager.java to include methods for\nInternshipData\nAdd JsonSerializableInternshipData and tests for it\nMove placeholder data files to a separate folder in\n/test/data/JsonSerializableInternshipDataTest\n","fileTypesAndContributionMap":{"functional-code":{"insertions":149,"deletions":1},"test-code":{"insertions":62,"deletions":0}}},{"hash":"988d097b6492081ab41c16ae1387afbdd39961a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Add-JsonSerializableInternshipData","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9dd910fc51e6ff1f3de8aee4a466621da068437d","isMergeCommit":false,"messageTitle":"Add JsonInternshipDataStorage and Tests","messageBody":"Also modify StorageManager to add methods for JsonInternshipDataStorage\nAdd tests for StorageManager and JsonInternshipDataStorage\n","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":2},"test-code":{"insertions":163,"deletions":8}}},{"hash":"8b7b2fe74879402ce975c4cdcf1d1a60cbe7f6d3","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"592473ce27db1e1fe5c837603de4782d02f82e30","isMergeCommit":false,"messageTitle":"Add tests, change isSamePerson and refactor isValidContactEmail","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":4},"test-code":{"insertions":140,"deletions":4}}},{"hash":"06fdb7b3a6c60ba0e785159b3637d64ddf45b2a3","isMergeCommit":false,"messageTitle":"resolved checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":13}}}]},{"date":"2024-03-18","commitResults":[{"hash":"8a8cd1c3d7d12dc402e8a22bc3d46c5b8779116a","isMergeCommit":false,"messageTitle":"Update UniqueInternshipListTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":172,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"3ee74156dfe46b22f9f902b9a482a79831507722","isMergeCommit":true,"messageTitle":"Merge pull request #119 from CaptainKeqing/fixUIBugs","messageBody":"Set result display to wrap text, make colour styling functional for different statuses","fileTypesAndContributionMap":{}},{"hash":"290bce02ed034b8a3fc3024e23d16f9be584bf18","isMergeCommit":false,"messageTitle":"Add basic Remark files and modify Internship to support remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":2}}},{"hash":"e8475d0966b2079658734d98230f4a1cdb77e81c","isMergeCommit":false,"messageTitle":"Add RemarkCommandParser and modify parser files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":30}}},{"hash":"55fa3e7a7c00524526471a068eee523e0251b741","isMergeCommit":false,"messageTitle":"Update UI components to support remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"8803992d5e5c4381f1bfd1bcd7d6d935f787f5ce","isMergeCommit":false,"messageTitle":"Update storage files for remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":24}}},{"hash":"2fb9660490838fdbbe385274a30b6042954d65f3","isMergeCommit":false,"messageTitle":"Add tests for remark and update placeholder data","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":225,"deletions":186}}},{"hash":"89cae2b8a4effe2cf74b317ea33701cf927af8a0","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":8},"test-code":{"insertions":37,"deletions":11}}},{"hash":"94b66488484fefa1e6135960c6725b3166f297de","isMergeCommit":false,"messageTitle":"Add support for modifying remarks via EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":17}}},{"hash":"f9720ed689bb3c2a266032b2dd48be048bd1dc0f","isMergeCommit":false,"messageTitle":"Fixed typos and replaced references to ab and person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13},"test-code":{"insertions":2,"deletions":2}}},{"hash":"de25a986901702fa1f6a038f6d05b3ddcf4d6147","isMergeCommit":false,"messageTitle":"Updated Quickstart and Save section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":23}}},{"hash":"e651cdba65320fca55320083704dc4cfaf1b0839","isMergeCommit":false,"messageTitle":"Updated Command Summary table with links, added AddRemark section to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":45,"deletions":34}}},{"hash":"ff0c4d86df172923b2e7f5cf9e97ced54931e368","isMergeCommit":false,"messageTitle":"Add newline to EOF for formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"2971855c2c34f09bdb82b12016d4206f2c4e9e57","isMergeCommit":false,"messageTitle":"Refactor storage filenames, update Storage diagram in DG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"other":{"insertions":10,"deletions":10},"docs":{"insertions":45,"deletions":4},"test-code":{"insertions":19,"deletions":19}}},{"hash":"acfbe229640249c7bfc3b877253f15fabe3ae46f","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5},"test-code":{"insertions":2,"deletions":1}}},{"hash":"f8ec75f138cb0a216cdd69864c6a005b834d7280","isMergeCommit":false,"messageTitle":"Fixed typo in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"c5fa756a91a5dba7b67d1f737df54b820e3e4883","isMergeCommit":false,"messageTitle":"Update cmd helper message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"57d05423ca6e9cdf673eb28bdfe23ced12847a41","isMergeCommit":true,"messageTitle":"Merge pull request #135 from theman-oj10/master","messageBody":"Update Model Section of Developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"13505c6973211992b7c7f4f5e5c6eb231276bc9f","isMergeCommit":true,"messageTitle":"Merge pull request #137 from HM33-Stu/ug-general-edits","messageBody":"User Guide - Formatting and updating/removal of certain sections","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"550aaaeb7e3c63979314e10725a360b011c15658","isMergeCommit":true,"messageTitle":"Merge pull request #142 from LWS49/add-UG","messageBody":"Add target audience to user guide","fileTypesAndContributionMap":{}},{"hash":"c48d1c7f0942aed14f71ca80160636e038a534a1","isMergeCommit":true,"messageTitle":"Merge pull request #138 from HM33-Stu/dg-logic-puml","messageBody":"Update Logic Section of Developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"b75b3f23b29a008a4937692c5a9f375e8efcb00c","isMergeCommit":true,"messageTitle":"Merge pull request #144 from theman-oj10/branch-developer-guide","messageBody":"Fix Developer Guide Image","fileTypesAndContributionMap":{}},{"hash":"43eacdf2d922507e9ffe2b9ceff400078dcf4d4f","isMergeCommit":true,"messageTitle":"Merge pull request #146 from CaptainKeqing/updateDG","messageBody":"Update developer guide for Architecture Diagram, Architecture Sequence Diagram and UI parts. Also fixes broken links","fileTypesAndContributionMap":{}},{"hash":"735919497d8fe12748d2895d3557b4d0e7044e9c","isMergeCommit":false,"messageTitle":"Update Quickstart, AddRemark and shift Cmd Summary","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":44,"deletions":12}}}]},{"date":"2024-03-27","commitResults":[{"hash":"b52ffad54ec862eaea2392b95132cd2d66e94a61","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ug-quickstart","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1837264c0e78574dfd4965936877df4ba2174a3","isMergeCommit":false,"messageTitle":"Resolved grammar errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"15b5caaa754da51ed4a4515188d75242c4fe9361","isMergeCommit":false,"messageTitle":"Add remark tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":0}}},{"hash":"52c92b30d6de31cf043c2ac3904b29560f4ff80a","isMergeCommit":false,"messageTitle":"Update UG addremark to explain remark deletion","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"b1e86273ba003f0061c22fbd498a87c05e49b7e3","isMergeCommit":true,"messageTitle":"Merge pull request #156 from LWS49/improve-UG","messageBody":"Correct formatting issues + have full TOC with all major sections in UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-28","commitResults":[{"hash":"4cb26ea2be0a16c13c773b07ad0be2645d4a2774","isMergeCommit":false,"messageTitle":"Add legend to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":8}}},{"hash":"11fb5a829ae345c44c3c34e316402cb30adf8620","isMergeCommit":true,"messageTitle":"Merge pull request #151 from HM33-Stu/hm33stumd-edits","messageBody":"Amended HM33-Stu Md File Format","fileTypesAndContributionMap":{}},{"hash":"494c3083e3c240ef4d69581dba8139fdd2a27d04","isMergeCommit":true,"messageTitle":"Merge pull request #157 from theman-oj10/branch-UserGuide","messageBody":"Update UG to include Sort","fileTypesAndContributionMap":{}},{"hash":"252077a9db1f59d989675053ef6c69fadb62f8d5","isMergeCommit":true,"messageTitle":"Merge pull request #159 from theman-oj10/branch-UserGuide","messageBody":"Fix formatting errors on UG Field Summary","fileTypesAndContributionMap":{}},{"hash":"ed766bfe3d6d50425b590e6762f1b0790c7cd14e","isMergeCommit":false,"messageTitle":"Update intro to make it more succinct","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":56}}},{"hash":"b5a2bb05888835d195ec83d76d171d213b073ea6","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-ug-intro","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"da262c47ddbc87e733539ee56d4dd5b9e8817567","isMergeCommit":true,"messageTitle":"Merge pull request #160 from HM33-Stu/ug-edits-add-delete","messageBody":"Amendments To Add And Delete Sections In UG ","fileTypesAndContributionMap":{}},{"hash":"7151f2a8efc4d1c4be827d4fd7442a30b4bf79de","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-ug-intro","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"c7c624eca2ac61723e8767097a6088853b2d4e45","isMergeCommit":false,"messageTitle":"Standardise headings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":32,"deletions":36}}}]},{"date":"2024-03-30","commitResults":[{"hash":"7323e42da59e5f02d2822880ba20b3970b12975d","isMergeCommit":false,"messageTitle":"Add deletetask command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":158,"deletions":2},"test-code":{"insertions":206,"deletions":0}}},{"hash":"12dba3ab2fab69b0318e6a8c65536f14eaebf8e8","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-04-01","commitResults":[{"hash":"b488de9398d2f569a10aa9805ec665d95baf465e","isMergeCommit":false,"messageTitle":"Update UserGuide to include deletetask","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":2}}}]},{"date":"2024-04-02","commitResults":[{"hash":"b2e83ea0f92a30f90b49d094d6b2fb77ab1c17e4","isMergeCommit":true,"messageTitle":"Merge pull request #126 from CaptainKeqing/addClickableInternship","messageBody":"Add clickable internship, Tests for UI","fileTypesAndContributionMap":{}},{"hash":"048f5ae2fdd9d45053e4ce8396cac81cd91fc775","isMergeCommit":false,"messageTitle":"Update delete-task error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"45f7d7c91694a758179e5a6ad5f479110aeb0a72","isMergeCommit":false,"messageTitle":"Refactor internship and task index error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5},"test-code":{"insertions":18,"deletions":15}}},{"hash":"57cf3b6a71217dda467927ddaa7894bc5dc626d7","isMergeCommit":false,"messageTitle":"Edit invalid task index message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"28e2fdfeb496397556571092495c5059eae0b6dc","isMergeCommit":false,"messageTitle":"Update RemarkCommandParser to handle invalid /remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":9}}},{"hash":"c773a5275339ebf90055fdd36c3adc993a6c1a53","isMergeCommit":true,"messageTitle":"Merge pull request #178 from LWS49/fix-editTestCases","messageBody":"Fix Edit Test Case (and some minor edits)","fileTypesAndContributionMap":{}},{"hash":"37c703071a46f26032b6fc87cbbb83d69f886d5d","isMergeCommit":true,"messageTitle":"Merge pull request #175 from LWS49/fix-error-messages","messageBody":"Fix Error Messages","fileTypesAndContributionMap":{}},{"hash":"7254ad0631ea7e5279e692c6a5a64c28371d4df1","isMergeCommit":false,"messageTitle":"Fix duplicate prefixes being accepted for some cmds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"580b5d2c613733aff23698eb15bb8fa899278271","isMergeCommit":false,"messageTitle":"Fix bug regarding tasklist not refreshing after task deletion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"31deb36fcddde997971c5378b2ca30c135f166ba","isMergeCommit":false,"messageTitle":"Revert change to findcommand duplicate prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"06a2d84cb5c02c9c9d36e5f864a04a611e8d3b5f","isMergeCommit":true,"messageTitle":"Merge pull request #188 from HM33-Stu/ug-edits-add-delete","messageBody":"User Guide - Add \u0026 Delete With Some Minor Edits","fileTypesAndContributionMap":{}},{"hash":"91537b6c482254c1dfa00367d7ea9e8caa4ad604","isMergeCommit":true,"messageTitle":"Merge pull request #154 from theman-oj10/sort-feature","messageBody":"Implement Sort feature","fileTypesAndContributionMap":{}},{"hash":"a7d9bc862e73f60c017e417835f7f6dc2a4c4455","isMergeCommit":true,"messageTitle":"Merge pull request #191 from LWS49/changeAddDeadlineToSetDeadline","messageBody":"Replace all instances of adddeadline to setdeadline","fileTypesAndContributionMap":{}},{"hash":"1a7749593109cb0d620ea20d06157d85c89c0012","isMergeCommit":true,"messageTitle":"Merge pull request #192 from LWS49/update-DG-for-edit","messageBody":"Update dg for edit","fileTypesAndContributionMap":{}},{"hash":"2e4f6dee878fe59192b4cb977de9c440a5273f06","isMergeCommit":false,"messageTitle":"Update addremark to contain tip","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-04-04","commitResults":[{"hash":"3f24f84efbb5cf0ea63abb3e8eb47c528547b04b","isMergeCommit":true,"messageTitle":"Merge pull request #185 from HM33-Stu/add-optional-feature-updated","messageBody":"Updated Optional Feature","fileTypesAndContributionMap":{}},{"hash":"1f44e0c984e9032c05c3acc95e7b118baddf35e7","isMergeCommit":true,"messageTitle":"Merge pull request #198 from HM33-Stu/minor-patch","messageBody":"Minor Edits","fileTypesAndContributionMap":{}},{"hash":"e0663142535a39809d578d4f08688e27044e3b43","isMergeCommit":true,"messageTitle":"Merge pull request #201 from LWS49/update-UG","messageBody":"Update commands in UG to correct format","fileTypesAndContributionMap":{}},{"hash":"244cb8411a77fcf398d8b54f53ba944cee587378","isMergeCommit":true,"messageTitle":"Merge pull request #203 from LWS49/updatePhoneNumberToMin8Digits","messageBody":"Update ContactNumber minimum digits to 7","fileTypesAndContributionMap":{}}]}],"HM33-Stu":[{"date":"2024-03-01","commitResults":[{"hash":"1dfe5a875eb1ac16d6d2c461b007f2ed451c44bf","isMergeCommit":true,"messageTitle":"Merge pull request #47 from CaptainKeqing/AddInfoToAboutUs","messageBody":"Add Donovan\u0027s information to AboutUs.md page","fileTypesAndContributionMap":{}},{"hash":"3b565d7a0f0592919a5122f24e6cbf9ed09252f7","isMergeCommit":true,"messageTitle":"Merge pull request #46 from CaptainKeqing/AddDetailedViewFeatureToUG","messageBody":"Add detailed view feature to user guide","fileTypesAndContributionMap":{}},{"hash":"70f2e06a5844712b7d18176f35e33db0446773ff","isMergeCommit":true,"messageTitle":"Merge pull request #45 from CaptainKeqing/AddNFRToDG","messageBody":"Add some non-functional requirements to the developers guide","fileTypesAndContributionMap":{}},{"hash":"8c1ebc21de5a22752fae34eee06ab6e126ace2b9","isMergeCommit":false,"messageTitle":"Update Hari\u0027s info, photo and contribution document to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":11}}},{"hash":"91ab84fa37bb1ce6548b74479787946aeab6852a","isMergeCommit":false,"messageTitle":"Update AboutUs to resolve image issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7543b354f93176e03aab7b4fc357e598cbe24514","isMergeCommit":false,"messageTitle":"Amend Add and Delete details in the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":17}}}]},{"date":"2024-03-02","commitResults":[{"hash":"feb7e06ef2ba9df639d5d058f7afcf6b0212090d","isMergeCommit":false,"messageTitle":"Add Use Cases and Stories To DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":173,"deletions":24}}},{"hash":"e01435f5aa3cea71f1ec37a3715532d252c894e4","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d73b262cdc9338a7cb39691299951d342ada901e","isMergeCommit":false,"messageTitle":"Rename HM33-Stu.md to hm33-stu.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6c3d376a11470265999c222ea627b2611fc8b9bb","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"396abd9e49cccded4afd5f9491e0a739702aef30","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into AddUseCasesToDG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7651a1dee8d79b9abcd0a217f0cfc48a46218e04","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AmendAddAndDeleteFeatureInUG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8dc9d50af0c97b931b0ccf93e80ec626bf286a65","isMergeCommit":true,"messageTitle":"Merge pull request #62 from jieqiboh/Update-AboutUs-JieQi","messageBody":"Add JieQi\u0027s Information to AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"975c26c5efca96aa21b30e146df97b5b48386d52","isMergeCommit":false,"messageTitle":"Rename LWS49.md to lws49.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"a240f75c84684efc22ad959998e8b38e94e4e349","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fcc59b85a88ead1d76237ac00498bfff5ffa10d3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ca3d52201a95aa7f0359e6731f5ea5fdae20a610","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"9ff0bd19fc3acad17a1504d2c16f0bc25d7badf9","isMergeCommit":true,"messageTitle":"Merge pull request #64 from LWS49/addWeiShengtoAboutUs","messageBody":"add Wei Sheng in AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"783415f4998ca374a626a792cf7ba11c1d8bbaf1","isMergeCommit":true,"messageTitle":"Merge pull request #77 from jieqiboh/Add-Test-Data","messageBody":"Add placeholder test data","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"39f01f67f8716a35658f0c1d134fcd7887754c79","isMergeCommit":true,"messageTitle":"Merge pull request #80 from jieqiboh/AppnStatus-Location-Tests","messageBody":"Added validation regex for ApplicationStatus and Location classes","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"3aebddfb2a25ad8b1d6c2a55ebe4f9e90e8db70b","isMergeCommit":true,"messageTitle":"Merge pull request #82 from CaptainKeqing/viewInternships","messageBody":"Create InternshipCard and InternshipListPanel","fileTypesAndContributionMap":{}},{"hash":"347944ec17a9025051ab6febdcb97fe7ac2c9e2e","isMergeCommit":false,"messageTitle":"Updated CliSyntax For Commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0a78f53eaa2a8acdfcd8205379f1eb19aa87c83a","isMergeCommit":false,"messageTitle":"update-add-command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":0},"test-code":{"insertions":448,"deletions":0}}},{"hash":"3191d672d982ef93d96eba7a78cae0fed22e0fba","isMergeCommit":false,"messageTitle":"update-delete-command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":98,"deletions":0},"test-code":{"insertions":154,"deletions":0}}},{"hash":"a64b67814ec52c77a43ef714346fba82dbe905e4","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1ceccb0b30d8d6de6aa1fccc4e36846cceada2ca","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"a31827b32fb27517e008d090004236f9000c1b5c","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"3f2e2ba9ebfb74c4d7ff82e6238dbda83e412de3","isMergeCommit":false,"messageTitle":"Update JavaDoc and Variable Naming","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"4b765ed18d06befa4e3ffb62199fd39f1fbc5d32","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"[Resolved]\r\nerror: type argument InternshipAddCommand is not within bounds of type-variable T","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2dcaded3b362d06e81c72d7d7142917894e4c756","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"Typo error","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"6491a22cacd061d5f2e0b4fb3f1a61ef163632b1","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Resolving checkstyle errors","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":5}}},{"hash":"ab6fbb9a62a3d7b943a9954c0f5380d57d54f3ab","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Trailing whitespace","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"5cae09c023ac8c12f1f545e677561c81acb8f241","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Checkstyle errors","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"dc2adfb8a55dcb919646254c13695ba8a02a8272","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Had to rename \"phone\" to \"phon\" to pass checks","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"a808d1ce3366ad017ab7bc75029f6e1722a126c7","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParser.java","messageBody":"Rectified based on working local gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"d062b8fcefb1c359292521488ad7bf68c51561a9","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2b0c4e5416311fa7a5a7c2d892d1550d6513ee79","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandTest.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"66468785a840a6f4fc6768ff14be210d433f81b0","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommand.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"885300cb3cbf8e32f2868130e22ab2b437f97085","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParser.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"3ce0e0089b173a9e2f155d5e7af186aba73b36e2","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandTest.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"92cd58cd08e5e5643ce17ac8886407872893975a","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"81175cf42ca57a566055b4ff50bf683ea2d638ac","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommand.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"306720f91b0b45a53e0e1fb9d1f309615d375d5e","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandTest.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1797f41509b7039fe460748793958de7fae54c55","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParserTest.java","messageBody":"Rectified based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":6}}},{"hash":"dc7f3a4131f4cc695cd5d68b0de84bfc078da049","isMergeCommit":false,"messageTitle":"update-delete-command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":6,"deletions":6}}},{"hash":"3fc5164eb734fd6e8f0681ec9b1a4aa65705915a","isMergeCommit":true,"messageTitle":"Merge pull request #103 from CaptainKeqing/clearExitHelpList","messageBody":"Add Clear, Exit, Help, List commands using internship","fileTypesAndContributionMap":{}},{"hash":"a857035ad999a7873ab41c8c711810ac32bdb89f","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"11fec1f8cece2916c75d719817cccb3ed6f8c80e","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandIntegrationTest.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1121093ab34a81436bf12f263f00dae03d466156","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandTest.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"b38d71a70e9b518abc8ea341121cd4711b9058c7","isMergeCommit":false,"messageTitle":"Update InternshipCommandTestUtil.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"c20b08b5b5da8f3d4c32cc389917c3766bafbd3d","isMergeCommit":false,"messageTitle":"Update TypicalInternships.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"17ceafb8c88cf5f42e3590f0af2f4ebcb782f415","isMergeCommit":false,"messageTitle":"Update InternshipBuilder.java","messageBody":"Rectifications based on local working gradle checks","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"b7149b9d0217d345595d29921e85957cbbef0780","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into update-add-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"76d57ea66bcc4aed31428000d79b154984f199c4","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":216,"deletions":134}}},{"hash":"4eee4789a62fb332c9fce8b2c9757f981147fe7e","isMergeCommit":false,"messageTitle":"Update TypicalInternships.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"0037feaac52f7114e8d868a8725738fdf841bbc4","isMergeCommit":false,"messageTitle":"Update InternshipAddCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}},{"hash":"2e62f699662c7f3ec67d7a6fa26fabd3159e9379","isMergeCommit":false,"messageTitle":"update-delete-command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":2,"deletions":2}}},{"hash":"f832e0882f17f7b50d3c60cbf288251021057e11","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into update-delete-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d7b13afa2c0404abf7448cf7fd7ece4d9527d2eb","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"dd9825bae036757d41bc970591c465e63a3e6eca","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"bdd41e2ec360e4f1b162d62ba8f0035880502c5d","isMergeCommit":false,"messageTitle":"Update InternshipDeleteCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"22b83bae49736927b8eb27c0dca4c8ca461d4942","isMergeCommit":false,"messageTitle":"Update InternshipUtil.java","messageBody":"Changed Javadoc person -\u003e internship","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"53ba8575e9324bca58f8b2d66afd59542abdfeca","isMergeCommit":false,"messageTitle":"Update InternshipUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"6938fe96f683c1114be952ee2f3e0860bba5ae68","isMergeCommit":true,"messageTitle":"Merge pull request #110 from CaptainKeqing/branch-addTestUtilInternshipUtil","messageBody":"Add InternshipUtil under test utils","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"d84bf24d7dc925c407ffc4ffea855d3b586dc0d7","isMergeCommit":true,"messageTitle":"Merge pull request #114 from jieqiboh/uniqueinternshiplisttest","messageBody":"Update UniqueInternshipListTest","fileTypesAndContributionMap":{}},{"hash":"9b92bc8382fa1f7400bc4038ac8026837686e677","isMergeCommit":false,"messageTitle":"Addresses UI bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22}}}]},{"date":"2024-03-19","commitResults":[{"hash":"102579b7121a13b7a60fff6f6f9238bdf803528c","isMergeCommit":true,"messageTitle":"Merge pull request #118 from CaptainKeqing/fixInternshipEquals","messageBody":"Fix internship .equals() to check equality for all data fields, UniquePersonList to check for identity not equality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"34148830cc2022eebdeea51cce790de2a13e196c","isMergeCommit":true,"messageTitle":"Merge pull request #124 from jieqiboh/ug-quickstart-save-remark","messageBody":"Update CommandSummary, Save and AddRemark section in UG","fileTypesAndContributionMap":{}},{"hash":"043ab76e924689841da3412f219052e4ea53c783","isMergeCommit":false,"messageTitle":"Update Add and Delete command sections in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"d1f2871d843140670a4763ae828340fcd862ac2f","isMergeCommit":false,"messageTitle":"Spacing change","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"3ee0f60d17f6776dab3f6f4d29ad2bfdbc735668","isMergeCommit":false,"messageTitle":"Update UG formatting and certain sections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":32}}},{"hash":"aa4fa0d836ff6f18f605aa9826080b98cee1e31c","isMergeCommit":false,"messageTitle":"Update Logic Section of Developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":3}}},{"hash":"0ab97b238e4f06ed2336519068dce575ed93a7a4","isMergeCommit":true,"messageTitle":"Merge pull request #139 from CaptainKeqing/updateUGFind","messageBody":"Update User Guide for Find Command","fileTypesAndContributionMap":{}},{"hash":"3ce4698022138a2cec2247929a24e9e0192421ec","isMergeCommit":false,"messageTitle":"Resolved typo errors flagged in PR review","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":24}}},{"hash":"6597daf2eb94c05a2d0e65b3f632a8f7e1bacff4","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into dg-logic-puml","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"8e514c87d6f95695983804546a482e836b2798ab","isMergeCommit":false,"messageTitle":"Add Task Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":63,"deletions":0}}},{"hash":"776fb2b4e590045acbc71d95fc4335487b23d403","isMergeCommit":false,"messageTitle":"Add Deadline Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":63,"deletions":0}}},{"hash":"9d6143a11400b3fdfcbd16a44daf5dd32ea8e97d","isMergeCommit":false,"messageTitle":"Addition of Task Class Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":52,"deletions":0}}},{"hash":"ceb4093b6bcf4ca86b9330a1b0cd6ebe79b6bc17","isMergeCommit":false,"messageTitle":"Modified Deadline and added Deadline Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3},"test-code":{"insertions":57,"deletions":0}}},{"hash":"7d1b87786d5b895650e47dd95f2cd40ad52dc301","isMergeCommit":false,"messageTitle":"Introduced Format To Deadline and Testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-26","commitResults":[{"hash":"5e163ca7240880d250c71285cc01e4e13c7dd893","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into dg-logic-puml","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"1a77cc1fdf9aacc675aca5773fbc99fbe2370c49","isMergeCommit":false,"messageTitle":"Amended to correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"43b748c64ff34eab81cfca9dfc836c1049d9b32f","isMergeCommit":true,"messageTitle":"Merge pull request #153 from jieqiboh/addremark-tests","messageBody":"Add RemarkTests","fileTypesAndContributionMap":{}},{"hash":"7f1bd2748e6d178dcf3fe743045b6d8ab5d5ed5b","isMergeCommit":true,"messageTitle":"Merge pull request #150 from theman-oj10/branch-UserGuide","messageBody":"Update User guide","fileTypesAndContributionMap":{}},{"hash":"df22a2a4fc5d0ef3f4b189768cbc48782d790ba0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into improve-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3888d750fb81c6c977506cfcf1d9ccae601a1df2","isMergeCommit":true,"messageTitle":"Merge pull request #149 from LWS49/improve-UG","messageBody":"update introduction and edit command in UG","fileTypesAndContributionMap":{}},{"hash":"62d5b36ca166c29bb99dac2b36453e1b525b57ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ug-quickstart","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0081e2149b586f5ee551ce163d5438fe27fd4535","isMergeCommit":true,"messageTitle":"Merge pull request #147 from jieqiboh/update-ug-quickstart","messageBody":"Update Quickstart, AddRemark and Shift Cmd Summary","fileTypesAndContributionMap":{}},{"hash":"7bd5540045ec40f034abca567877e231aa1a8069","isMergeCommit":false,"messageTitle":"Amendments for Add and Delete sections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":20}}},{"hash":"8b954f0cfcabd4db57c214d06bdbd2f47f398482","isMergeCommit":false,"messageTitle":"Command Summary Amendment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":15}}},{"hash":"1138835d328b67005ec4cb24a1d6ce226c918d94","isMergeCommit":false,"messageTitle":"Fixed small errors carried over from other merged PRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-28","commitResults":[{"hash":"99c7051be0204f211f301deb4d7198b20b1447e5","isMergeCommit":false,"messageTitle":"Edits Based on Consultation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":17}}},{"hash":"54862fc117b50e6cd23efe06f7d880c63cb6ec14","isMergeCommit":true,"messageTitle":"Merge branch \u0027ug-edits-add-delete\u0027 of https://github.com/HM33-Stu/tp into ug-edits-add-delete","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"90d715ba687f51770095889575d4b278d7645a4a","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":12}}},{"hash":"74a22f908fa1fe0088bfaca0383fbf6bbcf9b4e0","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"7fab4fe626f2fe3f0cb8486263c07acd5d9029fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into ug-edits-add-delete","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ee4f59afe0f32eaefc997c527fcd98096beedb8b","isMergeCommit":false,"messageTitle":"Edits to Add and Delete","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":1}}},{"hash":"6de9890f9bec8f0f19b6fa2b2afd84bddbaca712","isMergeCommit":false,"messageTitle":"Improving language use","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"1a8748b7475c95700484d854dd01dfd629443fe4","isMergeCommit":false,"messageTitle":"Rectified spacing errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"8233be1df083eb92ec42aebdfd81b0d246bf6fee","isMergeCommit":true,"messageTitle":"Merge pull request #161 from jieqiboh/update-ug-intro","messageBody":"Update intro to make it more succinct","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"4aa4e88e5389e7bef8d0a2f3e9d0b3db0aaa0112","isMergeCommit":false,"messageTitle":"Enable Assertions In Team Repo","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}}]},{"date":"2024-04-02","commitResults":[{"hash":"f588c405d1ee730f5f09e6ccff33de1a63584dbd","isMergeCommit":true,"messageTitle":"Merge pull request #167 from jieqiboh/delete-task","messageBody":"Add Delete Task Command","fileTypesAndContributionMap":{}},{"hash":"eecded3a6f816364bc89957ca58749618e61d86f","isMergeCommit":false,"messageTitle":"Changed App Logo to CareerSync","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"8242d30318d0ba0f5cd3fcaa03bc3f1ffe3d8fd1","isMergeCommit":false,"messageTitle":"Rectified Spacing In Error Messages (Add Command)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"60679f4fb02296480b6e5f0fdf6ef6d47db1fe1e","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"98e6c9c0c31cfdef5bcf6be2e334cb1f33cdede0","isMergeCommit":false,"messageTitle":"Adding Optional Feature (Updated)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":67},"test-code":{"insertions":8,"deletions":19}}},{"hash":"644075429abac416257a3f92fa13e224390fa6d6","isMergeCommit":false,"messageTitle":"Ui Issue Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"24dab6def59719f38d0bf9da1950f8605f8e1656","isMergeCommit":false,"messageTitle":"Ui Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":19}}},{"hash":"aa5b3f051ff300c7ea836e1195c29347cb9cced6","isMergeCommit":false,"messageTitle":"Resolved Ui Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":23}}},{"hash":"287cbba70a8f167fe22c02425fdffc48fa059578","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"dc5ecadb25ca1fa65e2df297b58b035b115c10c3","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"36de811bfb15c7faa318bb4c90d83d7a5ee1cb9f","isMergeCommit":false,"messageTitle":"Bug Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":9},"test-code":{"insertions":19,"deletions":21}}},{"hash":"370e130ec7a59cc3dd82a897c42d158a131a2269","isMergeCommit":false,"messageTitle":"Bug Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":13},"test-code":{"insertions":0,"deletions":1}}},{"hash":"72dbe932a48e6ee8778e32a9dcd96a44c233c638","isMergeCommit":false,"messageTitle":"More fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"6ad9a9b54eca2846798b2e04c7ffab65c5b70c54","isMergeCommit":false,"messageTitle":"Test Case Error Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":26}}},{"hash":"22d42027a2d05d0b941539607a08132460face51","isMergeCommit":true,"messageTitle":"Merge pull request #183 from LWS49/addCapsToArguments","messageBody":"Change MESSAGE_USAGE arguments to capital letters ","fileTypesAndContributionMap":{}},{"hash":"4dd8707a1ea0239e25c8e251791e020cf99a31e2","isMergeCommit":true,"messageTitle":"Merge pull request #177 from CaptainKeqing/improveFindUsage","messageBody":"Improve Find error messages, add support for remark, add tests for InternshipParserUtil","fileTypesAndContributionMap":{}},{"hash":"d5a56050cd44f6ec4d565330249ee8325a0e769a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-optional-feature-updated","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"759a4a5647c4b2f2a98476d5a638f64c0ef9f3c7","isMergeCommit":false,"messageTitle":"General Minor Fixes \u0026 Edits To Add \u0026 Delete Command Sections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":7}}},{"hash":"978706a0a5539fdc2f8be8ae95f9c10999b7d889","isMergeCommit":false,"messageTitle":"Spacing Issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"b32a269e4053024e0fed0fd537f9ee01d8815a90","isMergeCommit":false,"messageTitle":"Resolved Remaining Test Case Errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":12,"deletions":19}}},{"hash":"fdc4d91bfb6e8472db9733e80765e894fc02ffd7","isMergeCommit":false,"messageTitle":"Internship Card Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"6e422111586923c5e158f756e530afaf84902b16","isMergeCommit":false,"messageTitle":"Remove Internship Card Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":11}}},{"hash":"5572258d62ee3d4101999b1f12f018f50921b56c","isMergeCommit":false,"messageTitle":"Success Test Cases - Location Null","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"e878040b93a4600a094488066ac5b1749f2c6026","isMergeCommit":false,"messageTitle":"Test Cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":28,"deletions":11}}},{"hash":"4ce679d273124132df4247efbb35e81a84d8f859","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"8e03c8271c54c52ff9f8abd000b7dea30cfd5a26","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into add-optional-feature-updated","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6125256a6c35f8301aed0425ad1670cfac220fde","isMergeCommit":false,"messageTitle":"Medium Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":17},"test-code":{"insertions":2,"deletions":2}}},{"hash":"6955f966108c066eb6c76c9467c75d2bb27d46be","isMergeCommit":true,"messageTitle":"Merge pull request #194 from jieqiboh/addremark-tip","messageBody":"Update addremark to contain tip","fileTypesAndContributionMap":{}},{"hash":"2cb1857666675ebe09247199be9ec0dd09cda437","isMergeCommit":false,"messageTitle":"Change use of NULL for location to UNKNOWN","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":4,"deletions":4}}},{"hash":"6ed940acd4a32f818d415c1d0468b26893e9133a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into add-optional-feature-updated","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"409ae5dfed3dc41c84c43f7d491cd1435d7610b3","isMergeCommit":false,"messageTitle":"Bug Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":25},"test-code":{"insertions":6,"deletions":18}}},{"hash":"2fca313aaaa662455ceb17d7220cd7c7aac7edb0","isMergeCommit":false,"messageTitle":"Minor fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a7d7ba81c31677b28e9452746b7177c2fa17efde","isMergeCommit":false,"messageTitle":"Additional Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"bb28c2138df57fc96d551f248f982aca54f92317","isMergeCommit":false,"messageTitle":"Reverted changes due to use of default values for location and role","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":36},"test-code":{"insertions":12,"deletions":12}}},{"hash":"2280283e7838eacd5909f0355b5a3f40bc1ce7f4","isMergeCommit":false,"messageTitle":"Reverse more changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":18}}},{"hash":"0b71b982b7930406ccf01deb1a5c3809f4811016","isMergeCommit":false,"messageTitle":"Reverted several other changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":14},"test-code":{"insertions":0,"deletions":15}}},{"hash":"a01d0a961287fec2c546ae5b077c4dc1723d60bc","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"40935f9e8439b8cf6befa3d78e8edb1b08daadc7","isMergeCommit":false,"messageTitle":"Changed isSame and equals fields (will add remark and tasklist later on) First round of Test Cases Amendments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":5},"test-code":{"insertions":17,"deletions":11}}},{"hash":"fffc222d5c5070e83558b2452b1f58180912916f","isMergeCommit":false,"messageTitle":"Minor Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"ba2401235a679012ab4e868a4970b0f3500036fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-1:master\u0027 into add-optional-feature-updated","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"80a42fc65f62b65282878761b3ff45a867734124","isMergeCommit":false,"messageTitle":"Minor edits","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"372794ca7e412f56c39a9593b7367b79b3d367ac","isMergeCommit":false,"messageTitle":"Spacing error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"13b2eeb0e095c57baef0dc3013db13ae904db2a8","isMergeCommit":true,"messageTitle":"Merge pull request #195 from CaptainKeqing/improveConsistencyUGCommands","messageBody":"Improve consistency of UG commands","fileTypesAndContributionMap":{}},{"hash":"b3e307cb2c36a535ef1098a17a6b414ce4de0e33","isMergeCommit":true,"messageTitle":"Merge pull request #204 from LWS49/update-UG","messageBody":"Remove reminder for glossary in UG","fileTypesAndContributionMap":{}},{"hash":"f552f8d182c0a12b5963898a285798e5fa19be05","isMergeCommit":false,"messageTitle":"Fix incorrect error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":10}}},{"hash":"f7f5249cd0a4118fcb463f5aadb751d8cc43ae0f","isMergeCommit":false,"messageTitle":"Additional Fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0},"test-code":{"insertions":2,"deletions":3}}},{"hash":"57b456e7b2ccea48cc085a907e4e36b90b686426","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"0c0222e0f2b3881ec77d3c7a44b2e5ee5a2c0577","isMergeCommit":false,"messageTitle":"Changed App Ver number and jar file name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-04-05","commitResults":[{"hash":"a2cb90048df88bed2263a82e65fe2b4eb6fae62e","isMergeCommit":false,"messageTitle":"Update ContactNumber.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"71e3b6d2624583d3b5df5c4b614c0dd7711a9ddf","isMergeCommit":true,"messageTitle":"Merge pull request #208 from LWS49/update-UG","messageBody":"Change pictures to include latest GUI + correct errors","fileTypesAndContributionMap":{}},{"hash":"da67205d6e154564406be4b1ab4328bdeb5e4c2f","isMergeCommit":true,"messageTitle":"Merge pull request #200 from theman-oj10/sort-feature","messageBody":"Fix error message bug for Sort Command","fileTypesAndContributionMap":{}},{"hash":"5d70de083a1a54213a380ec4aee975ab9f2ecc5e","isMergeCommit":true,"messageTitle":"Merge pull request #210 from CaptainKeqing/branch-forv1.3.1","messageBody":"Make changes to version number for v1.3.1 release","fileTypesAndContributionMap":{}}]}],"LWS49":[{"date":"2024-03-02","commitResults":[{"hash":"e0dfe098e701efd2384527a36839a5448ae0dda2","isMergeCommit":true,"messageTitle":"Merge pull request #56 from CaptainKeqing/AddDonovanToAboutUs","messageBody":"Add Donovan\u0027s info to AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"f7a40d4ab96fccfad99be89c49321ec4eda371de","isMergeCommit":false,"messageTitle":"add Wei Sheng in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":5}}},{"hash":"247c7c1ee1f0adbb035c9347d2ecf644c51ae31e","isMergeCommit":false,"messageTitle":"add edit to User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":8}}},{"hash":"7d66ac9b88950c33811f77e347be14e08cc86543","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addEditToDG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7da06ed18aae86d2e01a18fd6d2935e9e7d7bed0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addWeiShengtoAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"13a69643cb1112fd47c1cf97ec8093a93154c9e1","isMergeCommit":false,"messageTitle":"switch lws49 to lower case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"c9b9b85ddea33ae388ca6127cf9d4bf478f005f9","isMergeCommit":true,"messageTitle":"resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b41d1cab66e54928d275e8b9f347ff2643c10488","isMergeCommit":false,"messageTitle":"update ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":11}}},{"hash":"1ba6dd3fbb58e6f2410f56859a383a9dd218619a","isMergeCommit":true,"messageTitle":"Merge pull request #67 from theman-oj10/master","messageBody":"Update About me and UserGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"28d9446a8ffb79ed473b2853517690357e5dfec2","isMergeCommit":false,"messageTitle":"added Glossary for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"1c66844f034551a05e6fbde0fc8aa5717b90dbce","isMergeCommit":false,"messageTitle":"added Glossary for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1a24a7fa3472cfcd3ca91ca18433b650f80fe663","isMergeCommit":false,"messageTitle":"update site links for README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":4}}}]},{"date":"2024-03-09","commitResults":[{"hash":"c1649bdaebd49d7ee137bc1474500cffdddbf70a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into updateReadMe","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"4e71037ad9cfea48e1546e0ea7125ca153347247","isMergeCommit":true,"messageTitle":"Merge pull request #95 from HM33-Stu/master","messageBody":"Updated CliSyntax For Commands","fileTypesAndContributionMap":{}},{"hash":"e4eed7af4e5434be510ff0a142df6ae5881a95cf","isMergeCommit":false,"messageTitle":"add InternshipMessages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0}}},{"hash":"33031d2758a4497f19b85d4326c3843129af50c0","isMergeCommit":false,"messageTitle":"add InternshipCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":0}}},{"hash":"f8be0d6f1c2f59b9ddff31b9c9dbe39cb0ab9ed5","isMergeCommit":false,"messageTitle":"add InternshipEditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":243,"deletions":0}}},{"hash":"1715ca6e90278e73079d47b67caa74ceecd704a2","isMergeCommit":false,"messageTitle":"add InternshipParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0}}},{"hash":"5f6d7bfb690badcb88149e4af519efddbbe64e79","isMergeCommit":false,"messageTitle":"add InternshipEditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"05b5aa49ca86fde63ae5a9acc1b2163dece8a9f6","isMergeCommit":true,"messageTitle":"Merge pull request #93 from jieqiboh/Add-JsonSerializableInternshipData","messageBody":"Finish adding support for Storage of Internships","fileTypesAndContributionMap":{}},{"hash":"57f6dc7b96a7eb4f620b8f060a1b92f60850d032","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ad96cb3e5b160b7942b6e148ad5e57a5ef9f05eb","isMergeCommit":false,"messageTitle":"add CompanyNameContainsKeywordsPredicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":0}}},{"hash":"3e060b185bd916ad5b3893ad31c1b9d5d411c93f","isMergeCommit":false,"messageTitle":"add EditInternshipDescriptorBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":111,"deletions":0}}},{"hash":"1fe4d904bdaeb9f5f96e834e37fb347203a5790e","isMergeCommit":false,"messageTitle":"add InternshipCommandTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":157,"deletions":0}}},{"hash":"8a9e188f96c4ef82c033cc2a4becdf9a40a26b70","isMergeCommit":false,"messageTitle":"add InternshipEditCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":101,"deletions":0}}},{"hash":"f50e973d8c0cb1ac0e52be57e17969634c36cb82","isMergeCommit":false,"messageTitle":"add InternshipEditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":186,"deletions":0}}},{"hash":"c30d0575edec07767a60906f0bb607814e94d0ff","isMergeCommit":false,"messageTitle":"add InternshipParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-03-15","commitResults":[{"hash":"89c6bee52b169807d87067f2b13d3c42e675f0be","isMergeCommit":false,"messageTitle":"add EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1ce7c9ed15b5c87f1a2f71415b1c31e08515fdaa","isMergeCommit":false,"messageTitle":"change location to valid location for AMY and BOB","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":3}}},{"hash":"e36387bbec1a5bb7ff085793128f97c6b3071e22","isMergeCommit":false,"messageTitle":"update CommandTestUtil functions and Model to use internship class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":68,"deletions":57}}},{"hash":"a5f57cccddbce2c25831a13664d301f40e4a1166","isMergeCommit":false,"messageTitle":"add InternshipTypicalIndexes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"4a4ea4fb74256075fb4a8c13b3572df5292d7f16","isMergeCommit":false,"messageTitle":"change to pass checkStyleTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":37},"test-code":{"insertions":5,"deletions":4}}},{"hash":"5b307bf659238fd0dbd13cc93b5f21155dd4b64f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"99f08b42075ff944ab873b793206e3654d67e4ec","isMergeCommit":false,"messageTitle":"change isValidEmail to isValidContactEmail","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"6314d1a3da58956d75889235ce7bd5ecc195196a","isMergeCommit":false,"messageTitle":"update invalid fields based on message constraints","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"eaae4fe8796619c7745e6773b2f949290969f7bd","isMergeCommit":false,"messageTitle":"add InternshipEditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":242,"deletions":0}}},{"hash":"016c469a105264586120d0a406d017456b747784","isMergeCommit":false,"messageTitle":"add InternshipCommandParserTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":0}}},{"hash":"6ff3ea669c9b0b0b1bf058705d8dcab6b4fa4058","isMergeCommit":false,"messageTitle":"replace Messages with InternshipMessages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":28}}},{"hash":"99d1368296c04a996aba05fb6471c5be6ba8e400","isMergeCommit":false,"messageTitle":"remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"f2693f2c7fdbcc5daca4e08be7b6f4eda8a399ee","isMergeCommit":false,"messageTitle":"update imports for checkstyleTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"ca64a320beebe551124e8a2c23c07118eed4f90d","isMergeCommit":false,"messageTitle":"remove parseTagsForEdit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"32ceee64edd56a89b6a2d555702c5624d99a9aa7","isMergeCommit":false,"messageTitle":"update javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"test-code":{"insertions":3,"deletions":3}}},{"hash":"e06bf3acdb690b8ec09ff465a5009e422fffe79b","isMergeCommit":false,"messageTitle":"remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ad9780e104496e8a4f501c37ff3263c77443515a","isMergeCommit":true,"messageTitle":"Merge pull request #111 from CaptainKeqing/logicManagerAndInternshipDataParser","messageBody":"Logic manager and internship data parser","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"fd19a7511c95b70640ccc1713dd19313ab34b4b8","isMergeCommit":true,"messageTitle":"Merge pull request #107 from theman-oj10/master","messageBody":"Implement InternshipUserPrefs","fileTypesAndContributionMap":{}},{"hash":"d46115556a317571a7fac0f683c64a742b369534","isMergeCommit":false,"messageTitle":"replace ReadOnlyUserPrefs with ReadOnlyInternshipUserPrefs in InternshipAddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"bdb5251dab4f98d5dcf1daedc03365d898be8bb1","isMergeCommit":false,"messageTitle":"add InternshipMainWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":0}}},{"hash":"3d704d88f5cb341af0973f012f50e0c43ed82d9b","isMergeCommit":false,"messageTitle":"replace ReadOnlyUserPrefs with ReadOnlyInternshipUserPrefs in InternshipModel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5fb4b2ce0e241d4fd5202c02a72335c59a156479","isMergeCommit":false,"messageTitle":"replace ReadOnlyUserPrefs with ReadOnlyInternshipUserPrefs in InternshipModel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8}}},{"hash":"49f181da6f4a9d7feedb34d0edab655e9875b2ee","isMergeCommit":false,"messageTitle":"add InternshipUiManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":0}}},{"hash":"035f5d29372ad59d82f0875635effb4d08a5e72b","isMergeCommit":false,"messageTitle":"replace userPrefs with InternshipUserPrefs in JsonUserPrefsStorage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"aff693871657672bd0e808e6f891e287f3548a7c","isMergeCommit":false,"messageTitle":"replace userPrefs with InternshipUserPrefs in JsonUserPrefsStorageTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":13}}},{"hash":"6047249c5dc3da11dbbffbaef9dff192d35c6e83","isMergeCommit":false,"messageTitle":"replace personListPanelPlaceholder with internshipListPanelPlaceholder in MainWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"33e50d751bc7c0b5abe36c2766db3040974877d1","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in Storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"a2bb13e81e4a670aaa760e2d47d60b4e28f5d544","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in Storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"3d7dfae15acaf3a5602c19a9786f6fc3b85a953b","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in UserPrefsStorage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"8c9be76751c860a14f6d5dcd6c39702fb907346b","isMergeCommit":false,"messageTitle":"update MainApp to use Internship files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":39}}},{"hash":"e1817dfba6dcf984a0e41b9531c8d673859cbff9","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in StorageManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":6}}},{"hash":"fd3b52ee5d3dbf59b4ce46358185163021befba6","isMergeCommit":false,"messageTitle":"replace UserPrefs with InternshipUserPrefs in test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":35}}},{"hash":"f881a5569485ccd6ef480b7568c1e75b74089346","isMergeCommit":false,"messageTitle":"remove AddCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":145},"test-code":{"insertions":0,"deletions":448}}},{"hash":"e6fee6d9da8010ff908ffdcac2e8192ef1e1ec18","isMergeCommit":false,"messageTitle":"remove ClearCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":23},"test-code":{"insertions":0,"deletions":32}}},{"hash":"c3e6b3d99642f797e97d7a8089cb7d895aa293a7","isMergeCommit":false,"messageTitle":"remove DeleteCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":98},"test-code":{"insertions":0,"deletions":152}}},{"hash":"1a03d422cf4c5ce3e1f03c65ae4e75e4716f0909","isMergeCommit":false,"messageTitle":"remove FindCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":91},"test-code":{"insertions":0,"deletions":125}}},{"hash":"fffafa46f29b34abb2aaf5a8bf36ab7102fe4356","isMergeCommit":false,"messageTitle":"remove ListCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":24},"test-code":{"insertions":0,"deletions":39}}},{"hash":"a81f00f757992107a3a4ad2d116d42be16438c2c","isMergeCommit":false,"messageTitle":"remove LogicManager and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":88},"test-code":{"insertions":0,"deletions":175}}},{"hash":"61c838f542d1fe27d87939c565318e51e0177852","isMergeCommit":false,"messageTitle":"remove HelpCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":21},"test-code":{"insertions":0,"deletions":20}}},{"hash":"25776e531d0230f09484a575604d9e40d860409a","isMergeCommit":false,"messageTitle":"replace ClearCommand with InternshipClearCommand in InternshipEditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"af5b8c12183686d402e932767e9d860cdf1fee63","isMergeCommit":false,"messageTitle":"remove ExitCommand and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":19},"test-code":{"insertions":0,"deletions":20}}},{"hash":"729dd702c71e6789c4aba760e91c3c2c9a3284eb","isMergeCommit":false,"messageTitle":"remove AddressBookParser and related files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":86},"test-code":{"insertions":0,"deletions":101}}},{"hash":"1be2ce4f42ebf3c6e2913812a5e50762a38a519a","isMergeCommit":false,"messageTitle":"remove EditPersonDescriptorTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":71}}},{"hash":"479b600255201f21df294f5a8bb3744bba4f890a","isMergeCommit":false,"messageTitle":"remove PersonUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":62}}},{"hash":"d61b61175f3c42d177840ddef2b7f3adaf17d5c4","isMergeCommit":false,"messageTitle":"replace ClearCommand with InternshipClearCommand in EditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"42c866f192eeb42571ff5dbf635917fbee454d0f","isMergeCommit":false,"messageTitle":"replace filepath in InternshipModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"8ab42b9a6e3dec49b76dc3f51c9b6495c97122bc","isMergeCommit":false,"messageTitle":"replace filepath and update UserPref in JsonUserPrefsStorageTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"c6897d6616b42165ca6158ce9f9548665818d00d","isMergeCommit":false,"messageTitle":"update import order for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f85356ab966824a1c059a45cafbe8cbc0733fe27","isMergeCommit":false,"messageTitle":"update getTypicalUserPrefs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"80ecc77b96b74d740899d732cf985a7c9e94f609","isMergeCommit":false,"messageTitle":"replace InternshipMainWindow and InternshipUiManager with MainWindow and UiManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":299}}},{"hash":"33310b3d166907663e342960edeeb62f133c40ee","isMergeCommit":false,"messageTitle":"checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7e3256c939ae898f17656db9b7c64c276bee2dd5","isMergeCommit":false,"messageTitle":"replace address book with internship data in comments and variable names","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"780fa171a1ebf0713eeffeedfbec55cc3bf4c7d7","isMergeCommit":false,"messageTitle":"fix InternshipMessages to output in correct format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"c2575cacba2cd2abb8ef4cc6675ab7ec65d19bf2","isMergeCommit":true,"messageTitle":"Merge pull request #113 from LWS49/activate-base-app","messageBody":"Activate base app","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3e75aea5dcba655a383b860dc1149fdd8d680a50","isMergeCommit":true,"messageTitle":"Merge pull request #131 from CaptainKeqing/addInternshipFindCommand","messageBody":"Add internship find command","fileTypesAndContributionMap":{}},{"hash":"75281a82333331ad0d66e93e4571004521aadc2c","isMergeCommit":true,"messageTitle":"Merge pull request #123 from jieqiboh/add-remark-cmd","messageBody":"Add support for adding remarks to Internships","fileTypesAndContributionMap":{}},{"hash":"0daf45acb08afa97c854d61e9016443fe3a914e7","isMergeCommit":true,"messageTitle":"Merge pull request #132 from CaptainKeqing/addInternshipFindCommand","messageBody":"Fix main window title typo, Improve error message","fileTypesAndContributionMap":{}},{"hash":"e5adcb2cc89243fc5ae5207d89a9c010c0aec7fa","isMergeCommit":true,"messageTitle":"Merge pull request #127 from jieqiboh/storage-dg-puml","messageBody":"Refactor storage filenames, update Storage diagram in DG","fileTypesAndContributionMap":{}},{"hash":"bbf9e1c8290876b5ff904b185d2b9badb299c30c","isMergeCommit":true,"messageTitle":"Merge pull request #128 from HM33-Stu/ug-add-delete-edits","messageBody":"Update Add and Delete section in UG","fileTypesAndContributionMap":{}},{"hash":"c14f24dd308ad079378d9a5b2a8db9b5c2eb8948","isMergeCommit":true,"messageTitle":"Merge pull request #133 from CaptainKeqing/addInternshipFindCommand","messageBody":"Add user guide for internship find command","fileTypesAndContributionMap":{}},{"hash":"79e37e870bb6dcb8901c5e76d9a20fc7a14e6d3d","isMergeCommit":true,"messageTitle":"Merge pull request #134 from CaptainKeqing/addInternshipFindCommand","messageBody":"Fix typo","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"c23da0cbcbe904dcb52bb88c71a03f17de8811aa","isMergeCommit":true,"messageTitle":"Merge pull request #140 from HM33-Stu/AddTaskClass","messageBody":"Add Task Class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"521edf13a218ed75a354989fef4a3e03047df765","isMergeCommit":true,"messageTitle":"Merge pull request #141 from HM33-Stu/AddDeadlineClass","messageBody":"Add Deadline Class","fileTypesAndContributionMap":{}},{"hash":"9916a9e10f7a1e5d6763fe56e0ff98e121fea467","isMergeCommit":false,"messageTitle":"Add target audience to user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":1}}}]},{"date":"2024-03-26","commitResults":[{"hash":"2de8f422545599147eaa0c79b693b4df61d13473","isMergeCommit":false,"messageTitle":"Add InternshipAddTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":0}}},{"hash":"3496fd2fe6dcc219a1f5d9da04815fc38737269c","isMergeCommit":false,"messageTitle":"Add prefixes to CliSyntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"790bc02c697f060d661db841766346b5f0766682","isMergeCommit":false,"messageTitle":"Add InternshipAddTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":0}}},{"hash":"a227c77dab5d99ee346ae428d8d618711ed3ad54","isMergeCommit":false,"messageTitle":"Add InternshipAddTaskCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":91,"deletions":0}}},{"hash":"60dec34051963130055a66a0f7697bb17f6c7269","isMergeCommit":false,"messageTitle":"Update InternshipBuilder to include TaskList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"5da84a7dfd37a66039e5fee4dcebf998877006b6","isMergeCommit":false,"messageTitle":"Update InternshipEditCommand to include TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"026991f692753b02b4cbe0befbc09c38c1148f34","isMergeCommit":false,"messageTitle":"Update InternshipRemarkCommand to include TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d42914fa785a7534e5571c01a1e7807ad8ecc83f","isMergeCommit":false,"messageTitle":"Update files to include TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6},"test-code":{"insertions":47,"deletions":30}}},{"hash":"54408eed60c8c66bfdee54fdb4a1aaaf99aa3222","isMergeCommit":false,"messageTitle":"Update file to include TaskList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"8e0b728462a29bf2d222d6ffea17bb69bb740fed","isMergeCommit":false,"messageTitle":"Update InternshipParserUtil to parse Task and Deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":0}}},{"hash":"54052749356da06836c66bb7189d964f6cf0d0e9","isMergeCommit":false,"messageTitle":"Update InternshipParserUtil to include message for invalid task index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a774195be2ce5336911e549adf839b6330c9e85a","isMergeCommit":false,"messageTitle":"Update InternshipDataParser to include InternshipAddDeadlineCommand and InternshipAddTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"b4b9d5dd6cf9a93e5ed4c3400cf57ba66fdcc8af","isMergeCommit":false,"messageTitle":"Add InternshipAddDeadlineCommand, its parser and test file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":160,"deletions":0},"test-code":{"insertions":113,"deletions":0}}},{"hash":"795643e5fef71346c96e625f00f0cf50a98bd08e","isMergeCommit":false,"messageTitle":"Update Task to include Deadline and isDeadlineSet field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":1}}},{"hash":"cda7961c21f301c6d4c53d00260109981674c6e2","isMergeCommit":false,"messageTitle":"Add TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":0}}},{"hash":"e98fff2c5b43e03ddf874c2a8f26847342e4ac6a","isMergeCommit":false,"messageTitle":"Update Internship to include TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":1}}},{"hash":"76f27b576f10a2ddc7768b7c4920a268065efd7b","isMergeCommit":false,"messageTitle":"Update Deadline and DeadlineTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":0},"test-code":{"insertions":57,"deletions":0}}},{"hash":"9b23ea49aa5d2d2eda4dc0737385db341830982c","isMergeCommit":false,"messageTitle":"Add TaskListTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":6},"test-code":{"insertions":73,"deletions":0}}},{"hash":"95cc49f927045161fec71dfd47538404a20fc130","isMergeCommit":false,"messageTitle":"Add puml files of DG diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":155,"deletions":0}}},{"hash":"8f18e89a2564c7911c6785bc36d9abe86b0c77b8","isMergeCommit":false,"messageTitle":"Fix Json conversion of TaskList and Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":77,"deletions":11},"test-code":{"insertions":5,"deletions":2}}},{"hash":"f13bc6956dc8efe0dc07d0326361cfe68465b108","isMergeCommit":false,"messageTitle":"Change implementation to fix bug where task is added to all internships","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":2}}},{"hash":"d954f67e0a89bdc4f5503805ce8a03d2b85e4ba2","isMergeCommit":false,"messageTitle":"Change implementation to fix bug where deadline cannot be converted from json to internship object","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":9}}},{"hash":"327d4c9f7aa6adeb088616f983acec42c3df5552","isMergeCommit":false,"messageTitle":"Add InternshipAddTaskCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4},"test-code":{"insertions":63,"deletions":0}}},{"hash":"ce4e7c63f344f2b73bd1206f24dd1a1462c682d9","isMergeCommit":false,"messageTitle":"Add InternshipAddDeadlineCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":113,"deletions":2}}},{"hash":"57d5169ff34d26741ba961750e385bc99d8d8346","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":55},"test-code":{"insertions":51,"deletions":45}}},{"hash":"d81207f68b493fce711f815c8ddd45321154dacc","isMergeCommit":true,"messageTitle":"merge from master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1c979bc0539194a04e42a26a89629353666668cd","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":7}}},{"hash":"b3b83b3b3160615dbaecb317d01e332da77412c1","isMergeCommit":false,"messageTitle":"Fix checkStyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"044afc3ccd20769a7f265eaffd9d115899a4569d","isMergeCommit":false,"messageTitle":"Comment out execute_allFieldsSpecifiedUnfilteredList_success under InternshipEditCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"fde59e9912d3a0e6a7e6dd4f5c4f6d29a8b21fe6","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"4a5b395e1fa250233007630e622cf1270f6cf08e","isMergeCommit":false,"messageTitle":"Remove imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-27","commitResults":[{"hash":"e8caf3e68d706088847345cf032350b1e67dd075","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"08e56e9e1e63ca360fb7c33e73a1da383089c634","isMergeCommit":false,"messageTitle":"Update InternshipAddDeadlineCommand MESSAGE_USAGE","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"e2be561d4805dfaa965cf757885f48aac75f225c","isMergeCommit":true,"messageTitle":"Merge pull request #148 from CaptainKeqing/donImproveUG","messageBody":"Improve Commands section for Find, List, Clear. Also improves Known Issues explanation.","fileTypesAndContributionMap":{}},{"hash":"16b00012c977e6edccdb6a07059b11f5a9f1a1fb","isMergeCommit":false,"messageTitle":"update introduction and edit command in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":220,"deletions":55}}},{"hash":"e72aaded8e7a3d2292ae424f1daa659239607f92","isMergeCommit":false,"messageTitle":"Update validation and MESSAGE_USAGE in Deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5}}},{"hash":"24daef78094ec83ed197a37274361607ac2a0a91","isMergeCommit":false,"messageTitle":"Add TaskList, Tasks and Deadlines to ALICE, BENSON and CARL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"e89c5a7073e8f01ddc9e0db8006ee3e9069b07b9","isMergeCommit":false,"messageTitle":"Change string constructor to enable constructions of TaskList where tasks with deadlines are present","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4}}},{"hash":"4d91941e4e3d4889ffebb91561d3bc9284e6b360","isMergeCommit":false,"messageTitle":"Change parseRemark, parseTask and parseDeadline to now throw exception + Use correct Javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"52ff5a45370887c297cf8785b4e7045bdce2bd76","isMergeCommit":false,"messageTitle":"Change ParserUtil to InternshipParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9a7b56ec0bcc706a3b270d2c3fb844fdaeb370ee","isMergeCommit":false,"messageTitle":"Change ParserUtil to InternshipParserUtil and update message thrown for InternshipAddTaskCommandParser and InternshipAddTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":30}}},{"hash":"23e23dc082c100d82da45aed4b819c02d2bd782b","isMergeCommit":false,"messageTitle":"Update to getOneBased for InternshipAddTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"d8a7229d4824a23b23c288cd3c77833a64351899","isMergeCommit":false,"messageTitle":"Change \u003e\u003d to \u003e, remove getting all internships and update MESSAGE_USAGE for InternshipAddDeadlineCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7}}},{"hash":"3f839dca18c361aa8b517454076d719564a35485","isMergeCommit":false,"messageTitle":"Update tests to reflect correct error messages shown for both parser tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":15}}},{"hash":"0a22741ad6c68c87a51951a50e3cf4f2cb64db21","isMergeCommit":false,"messageTitle":"Change Javadoc for InternshipBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"856d6dd6029231580782005ea89ffab9fcf3a99e","isMergeCommit":false,"messageTitle":"Change VALID_DEADLINE_AMY to actually valid deadline for InternshipCommandTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"fd4793c6b564ca9b3b706e8a56e501bbcbaec1ab","isMergeCommit":false,"messageTitle":"Remove import for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"d9086f7b4c2478b0d98af6739b90f7373c942ded","isMergeCommit":false,"messageTitle":"Correct formatting issues in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":60}}},{"hash":"49ec54c238d0460ce72af7b095f8c4a167763830","isMergeCommit":false,"messageTitle":"Update TOC in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"c4cd1566e2413b3d2adc21924d8c94ed72ade6fb","isMergeCommit":true,"messageTitle":"Merge pull request #155 from HM33-Stu/ug-edits-add-delete","messageBody":"Amendments For UG Add and Delete Sections","fileTypesAndContributionMap":{}},{"hash":"b09615c92d5268d7830703e088115a1e64730119","isMergeCommit":true,"messageTitle":"Merge with upstream changes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2bd95eda47f0814ac6add69a3234c8ef2eb98c1f","isMergeCommit":false,"messageTitle":"Fix field summary and Glossary in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]},{"date":"2024-03-29","commitResults":[{"hash":"b5f4350668ba3dd97bd42e29ff18bb469cbd3589","isMergeCommit":true,"messageTitle":"Merge pull request #163 from jieqiboh/standardise-ug-headings","messageBody":"Standardise headings","fileTypesAndContributionMap":{}},{"hash":"46c915d5474c6609039a44c680e15a2631c31500","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into add-addTask-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"50fc4dcfeb7969bdc40bc23110bb0ac45c97432f","isMergeCommit":false,"messageTitle":"Add tasks to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"3ad654697bf68cfdd5d749aaa84f9aaa2cf9348b","isMergeCommit":false,"messageTitle":"Add PREDICATE_SHOW_ALL_INTERNSHIPS to InternshipAddTaskCommand and InternshipAddDeadlineCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"19cf3eca89eb1f8cb956797e6533a1a0804528f8","isMergeCommit":false,"messageTitle":"Add Tasks to InternshipCard.fxml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"3e76fa91bae1fd183b5d7ecdf3086af5b5308d04","isMergeCommit":true,"messageTitle":"Merge pull request #165 from theman-oj10/small-changes-branch","messageBody":"Update Version Number","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"13db508dc090256c57d92d88a37bdadc38f725d5","isMergeCommit":true,"messageTitle":"Merge pull request #171 from jieqiboh/refactor-invalididx-message","messageBody":"Refactor invalididx message","fileTypesAndContributionMap":{}},{"hash":"aed9bae645e20c32c70e8be8ce2abdc8ee0f77ff","isMergeCommit":false,"messageTitle":"fix InternshipEditCommand and InternshipEditCommandParser error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":14},"test-code":{"insertions":4,"deletions":3}}},{"hash":"0253e15cc3dd4dcb38259c0b7bbaafd5f73f3811","isMergeCommit":true,"messageTitle":"Merge pull request #172 from HM33-Stu/app-logo","messageBody":"App Logo Change","fileTypesAndContributionMap":{}},{"hash":"bf1f81c0a71d3dd4376b14b727d28d225d2f6739","isMergeCommit":false,"messageTitle":"fix InternshipAddTaskCommand and InternshipAddTaskCommandParser error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"70a5b60185f92628d4ff86981dac2fbf7f6a442a","isMergeCommit":false,"messageTitle":"fix InternshipAddDeadlineCommand and InternshipAddDeadlineCommandParser error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":9},"test-code":{"insertions":1,"deletions":1}}},{"hash":"612694994bb4bc90531ff35ebdc97d00eb421446","isMergeCommit":false,"messageTitle":"update InternshipEditCommand success message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b4a4e18aab6586a3f8380415a08b3a666ccada65","isMergeCommit":false,"messageTitle":"edit internship.toString() for each field to be in a new line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":10}}},{"hash":"555750fc2c982dbb866521f1e0871766edf089f3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"cf99898e50a82d99270b5464a8a7946c14371c2e","isMergeCommit":true,"messageTitle":"Merge pull request #174 from HM33-Stu/update-add-command","messageBody":"Rectified Spacing In Error Messages ","fileTypesAndContributionMap":{}},{"hash":"abf6ad07bfbe4523bb5937953fffd0677edf4110","isMergeCommit":true,"messageTitle":"Merge pull request #173 from jieqiboh/update-addremark-errors","messageBody":"Update RemarkCommandParser to handle invalid /remark","fileTypesAndContributionMap":{}},{"hash":"0a30a2e8e92cae67c4499714886b472fc6f51c55","isMergeCommit":false,"messageTitle":"Remove unnecessary messages (minor)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"800a1779ca66b5929030ebf14a249e56d6949fb1","isMergeCommit":false,"messageTitle":"Remove System.println(date) in Deadline (minor)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"92c5155424964b84b217d4130ec445eb71c6db19","isMergeCommit":false,"messageTitle":"Restore commented out test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":6}}},{"hash":"dbec4c7b78e0aa9d4671227ea0b6af9d1805fea0","isMergeCommit":false,"messageTitle":"Update EditInternshipDescriptorBuilder and InternshipUtil to include Remark and TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0},"test-code":{"insertions":7,"deletions":1}}},{"hash":"483da53290c2cff379fd994c686140087496fa25","isMergeCommit":false,"messageTitle":"Update createdEditedInternship in InternshipEditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"0edf1b732c3b138b60f00fc6e4ddfd6750ba50d5","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"c1fc30da64d35ffe1396a4398cc88457239afbc4","isMergeCommit":false,"messageTitle":"Remove unused constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}},{"hash":"348401d1384cee0afc7a28ae1043a4c115e39390","isMergeCommit":false,"messageTitle":"Improve navigation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":123,"deletions":49}}},{"hash":"a9bdf9f8139c78650bcadf43c35530c1579a1b19","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"32f16f1ffd0bbf9b530c3b6627c613ec18e5cf6b","isMergeCommit":false,"messageTitle":"added pictures","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":73,"deletions":2}}},{"hash":"c2a28378da5e0451e270ceb2485668d1d8f35a19","isMergeCommit":true,"messageTitle":"Merge with upstream/master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2b6c06f0348054efb291bec20b4c718bd2272625","isMergeCommit":false,"messageTitle":"add addtask and setdeadline to commands in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":24}}},{"hash":"755768195b32bbd1d01ff6b785e9f50470099fc9","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92b3f4a7ed0de15161e6508b9fe9b305322817b0","isMergeCommit":false,"messageTitle":"Remove hash for public urls","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"1736debd90ae984a1ec4e75d489bd61eeee6d7e7","isMergeCommit":false,"messageTitle":"Change MESSAGE_USAGE arguemnts to capital letters for InternshipAddTaskCommand and InternshipEditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}}]},{"date":"2024-04-03","commitResults":[{"hash":"449b75897bf4521fd5fff8007ef9dc7b51d94ac0","isMergeCommit":false,"messageTitle":"Change tutorial headers","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":23}}},{"hash":"8069e4f3da50f941867112e0819773162b9a0b26","isMergeCommit":true,"messageTitle":"Merge with upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7df0e762814940c29b2ebd9c6255bd4c0dddf630","isMergeCommit":false,"messageTitle":"Revert \"Change tutorial headers\"","messageBody":"This reverts commit 449b75897bf4521fd5fff8007ef9dc7b51d94ac0.\n\nRevert commit\n","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":22}}},{"hash":"e450e7df6794ca3b5ee58cf7f208d002fe110bca","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ef2a6196c61ae454f6dbd10f140ffcb7b47d2b94","isMergeCommit":false,"messageTitle":"Change tutorial headers","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"0d4180ccc66a9c6ab5a2a3068976b0cc9a4337f1","isMergeCommit":false,"messageTitle":"Replace all instances of adddeadline to setdeadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":33,"deletions":33}}},{"hash":"7d60887510452b564f8dba25ec3be31de88a1865","isMergeCommit":false,"messageTitle":"Fix import + fix InternshipAddTaskCommand description","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"e4ee5cb49acad017192ab9b7c218e74c99ba6415","isMergeCommit":false,"messageTitle":"Fix test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}},{"hash":"3cce67db6d290edb2434ca27e7415cb0142fc0e4","isMergeCommit":false,"messageTitle":"Replace all instance of addDeadline to setDeadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":9,"deletions":9}}},{"hash":"48f76a1cd207c847327bd07e5d448c959b42fd07","isMergeCommit":true,"messageTitle":"Merge from upstream/master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17cf64190b4c966dfe8eb7a4df0f5495b6072663","isMergeCommit":false,"messageTitle":"Restore changes made by @CaptainKeqing","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":16}}}]},{"date":"2024-04-04","commitResults":[{"hash":"a1dc6a459586e60cd544dd695f86ed994d5167a7","isMergeCommit":true,"messageTitle":"Merge pull request #197 from CaptainKeqing/addUGClickable","messageBody":"Improve functionality of detailed view window, add user guide ","fileTypesAndContributionMap":{}},{"hash":"a350acef67ae470c26d239b070980d13e9b8578a","isMergeCommit":false,"messageTitle":"Update addtask command to correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}},{"hash":"a17599478930fd591e6512814e6b735be42580dc","isMergeCommit":false,"messageTitle":"Remove all instances of person from src","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":2383},"test-code":{"insertions":36,"deletions":2373}}},{"hash":"3de44cc84af2f86487fd9f3250e4eab77f5dd34c","isMergeCommit":false,"messageTitle":"Remove all instances of addressbook from src","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5},"test-code":{"insertions":4,"deletions":3}}},{"hash":"0efe2321ec65bf907c6860b2d0d2414bd61d93b9","isMergeCommit":false,"messageTitle":"Update edit format to include remark + add reminder to add things to glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"226f272482fa029c16a49bc3a5b2c89c3928d092","isMergeCommit":false,"messageTitle":"Update ContactNumber minimum digits to 7","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":6,"deletions":6}}},{"hash":"44d5d648eeb2151754515fd39e76250b5a0f151c","isMergeCommit":false,"messageTitle":"Remove all instances of addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":41},"test-code":{"insertions":3,"deletions":3}}},{"hash":"815bbae69ab6e539e1f20d7486de0d4b20f2d613","isMergeCommit":false,"messageTitle":"Remove reminder for glossary in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"67b98cb7cb2bef409388f7b9aaaf5164a36734e6","isMergeCommit":true,"messageTitle":"Merge pull request #206 from HM33-Stu/delete-error-msg-fix","messageBody":"Fix Incorrect Delete Command Error Messages","fileTypesAndContributionMap":{}},{"hash":"5318750a85082f3821872783e5e99cd042935697","isMergeCommit":true,"messageTitle":"Merge pull request #205 from HM33-Stu/ug-edit-images","messageBody":"Removed Window From Images","tags":["v1.3"],"fileTypesAndContributionMap":{}},{"hash":"e0df756410a8cb443d21285824e7fcaec4094a12","isMergeCommit":true,"messageTitle":"Merge pull request #1 from CaptainKeqing/removePersons","messageBody":"Remove even more person relics","fileTypesAndContributionMap":{}},{"hash":"f373e591f0490a17f3cb1649d73752515ac01c3d","isMergeCommit":false,"messageTitle":"Change pictures to include latest GUI + correct errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":35}}},{"hash":"53421a023c0e4e0a6211b15250e2834fa79179f2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-UG","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"aae800dc2f64e976ba5a97ec2194521aaa0403c8","isMergeCommit":true,"messageTitle":"Merge from upstream/master","messageBody":"","fileTypesAndContributionMap":{}}]}],"theman-oj10":[{"date":"2024-03-02","commitResults":[{"hash":"0ab40778b566594cb320c101e9f7d2e2ada8e013","isMergeCommit":true,"messageTitle":"Merge pull request #58 from CaptainKeqing/AddNFRToDG","messageBody":"Add some non-functional requirements to Developer\u0027s Guide","fileTypesAndContributionMap":{}},{"hash":"9cbbf16385fe3aa3cb81551f69d4724feeea4431","isMergeCommit":false,"messageTitle":"Update About me and UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":16}}}]},{"date":"2024-03-07","commitResults":[{"hash":"36c3bf8f3799b18bcdcc35c36fe9a0ad6f92f559","isMergeCommit":true,"messageTitle":"Merge pull request #74 from jieqiboh/Add-Skeletal-Internship","messageBody":"Add skeletal internship","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"618716d7278fd614cb3a125fc7687df9bfee7ad6","isMergeCommit":false,"messageTitle":"Refactor AddressBook as Internship Data, UniqueInternshipList and SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":430,"deletions":94}}},{"hash":"5bdc53e3d5c2f192502c06df96ba648ecda66f0f","isMergeCommit":false,"messageTitle":"Update Location enum to be private","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"791e089892c7044af912495496c4379e7259c337","isMergeCommit":true,"messageTitle":"Merge pull request #85 from jieqiboh/AppnStatus-Location-Tests","messageBody":"Update toString method for ApplicationStatus and Location","fileTypesAndContributionMap":{}},{"hash":"0a6cf27e8494c589239d355282aad40a66f3b59c","isMergeCommit":true,"messageTitle":"Resolve Merge Conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b5fa82f73267025a400a6b688f497fb4fef99aaf","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"863ee6de8c01581e84871b9754de6c647cde6058","isMergeCommit":false,"messageTitle":"Fix CI checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":374,"deletions":81},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-13","commitResults":[{"hash":"1a0df6e8f2705b4b76fe7eb18529dca37bca0f39","isMergeCommit":false,"messageTitle":"Implement Tests and IntenrshipNotFound Exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7},"test-code":{"insertions":387,"deletions":0}}},{"hash":"fe23cc3e6f156f57e24bd0ac7d30e4aadd0b9f21","isMergeCommit":false,"messageTitle":"Implement InternshipModelManagerTest and fix CheckStyle Errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3},"test-code":{"insertions":110,"deletions":27}}},{"hash":"d34347bbe8e16cbb81fdce4611acf55dc3e609e5","isMergeCommit":false,"messageTitle":"Implement InternshipSampleDataUtilTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":35,"deletions":0}}},{"hash":"ca6c680f246886cc78c9b21fec2503cb208ac17e","isMergeCommit":false,"messageTitle":"Add more test cases to improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":14}}},{"hash":"392a63ada09904e41002318cd8ea2e5a715c3cdb","isMergeCommit":false,"messageTitle":"Fix access modifier of Enums","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"129758b88669dd7b7f047d1cd1e8e338acb47c0e","isMergeCommit":false,"messageTitle":"Add getters for Location and ApplicationStatus","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}}]},{"date":"2024-03-14","commitResults":[{"hash":"9cdd668821568bf6b5996640ad0620c4c6309f9f","isMergeCommit":false,"messageTitle":"Update JavaDocs and Implement InternshipUserPrefs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":24}}},{"hash":"78dc51730ffdce9bdb655bca9681350d1127d741","isMergeCommit":true,"messageTitle":"Fixed Merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"58b42ee4dcafba7661fc132246121ec7e465863e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027Main/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"9c63fad33592aae8376cc517ec66c6cc1bafc4f1","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027Main/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9984035d4ffc659ba8dfe0ee033e96e86e8cf083","isMergeCommit":false,"messageTitle":"Refactor Tests for InternshipData","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":11},"test-code":{"insertions":124,"deletions":1}}},{"hash":"b991bb68474f1c4aeca2ebea00f84e1bb26be036","isMergeCommit":true,"messageTitle":"Merge pull request #109 from CaptainKeqing/branch-addSimpleFindCommands","messageBody":"Add simple find commands","fileTypesAndContributionMap":{}},{"hash":"d1eadb562cb20b6a0cec53b9cd5d6410406af3d9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027Main/master\u0027 ZZZZ","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e6b5b87dc19d7e57b4b4de584a13888159db1ec4","isMergeCommit":false,"messageTitle":"Update InternshipDataTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":72,"deletions":100}}},{"hash":"7534a2fe209a27e7f8eeab4fda9c88c0316c7138","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027Main/master\u0027 Resolving merge Conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"020b11a1982b48ea1a495396a343ecaf98f37c29","isMergeCommit":false,"messageTitle":"Update InternshipData Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":25}}},{"hash":"32bdd76da6a094b3c4be7834e4a050f4343e93c2","isMergeCommit":false,"messageTitle":"Fix Checkstyle for Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":8}}},{"hash":"9d64c39b8f802f9433d96d82cbe16a462b57cfc4","isMergeCommit":false,"messageTitle":"Add more tests for InternshipUserPref","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":129,"deletions":3}}},{"hash":"c3790bc7883443a56fa3ca94e4c2ca7f330192a4","isMergeCommit":false,"messageTitle":"Add even more test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":199,"deletions":0}}},{"hash":"1c940287385e1b63712b4258b251bc6241c5485d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"598848584456ac79341f94b4ef6d12194cf31bca","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":1}}},{"hash":"a95fd79f42bddf13409b29eeb80689257a3b5e7d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"c89ce4d519cd722b67d54dc07dfb7ffa89807ad8","isMergeCommit":false,"messageTitle":"Update Model in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":46}}},{"hash":"9cc242a2bb2a87f2d035d11b91e61cb1d61257c6","isMergeCommit":false,"messageTitle":"Further changes to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"d015773a9d02d68b72d0799e6bed82a8b74cb7cf","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a71ee3ce5d7ef50c45a858a6069b0922eb9f641d","isMergeCommit":false,"messageTitle":"Update Model Diagram in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-26","commitResults":[{"hash":"3103462c986d36c4f64982dbe2da933813373a56","isMergeCommit":false,"messageTitle":"Update About Me pictures","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f3b2fbc69a4834dd2a384f9326b5e2e2f264ad7c","isMergeCommit":false,"messageTitle":"Fix issue with Image in About Me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1e755436d4d8c15fd1e951d5d438738854022a0d","isMergeCommit":false,"messageTitle":"Add sort functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":254,"deletions":6}}},{"hash":"080fd14ec2013513786a2f6bc7fa716d2b17edd1","isMergeCommit":false,"messageTitle":"Add sort command to Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":10}}},{"hash":"aaeb15a65f826abfa9e8d7ba74110ea07ced13f6","isMergeCommit":false,"messageTitle":"Fix issues with Sort functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":21}}},{"hash":"3e24173dfbeec32390b5fd4b585936374d839886","isMergeCommit":false,"messageTitle":"Fix Checkstyle for Main code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":125,"deletions":47},"test-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-27","commitResults":[{"hash":"fa150f79e118e5a0da118837d0976299d13db1ed","isMergeCommit":false,"messageTitle":"Fix Application Status Comparator","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":21},"test-code":{"insertions":120,"deletions":1}}},{"hash":"b4f5e77da2d0388f9a3e637be3df548ab44da18d","isMergeCommit":false,"messageTitle":"Add Field Summary and fix command summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":12}}},{"hash":"7d6e202f4a5dcf8bbbba544e4cefaa72992b6396","isMergeCommit":false,"messageTitle":"Add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":3}}},{"hash":"aca6aac157622bad720e54ce74b18851073ebbbe","isMergeCommit":false,"messageTitle":"Update Transfer information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":8}}},{"hash":"6e4a09884fafddec1736d19d8e0ce384e3ef85bf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cf5e2d75ac8af5ecad1d8214c4d3d8fc1cef11f0","isMergeCommit":false,"messageTitle":"Fix Checkstyle for Tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":90,"deletions":7}}},{"hash":"373d9d776a8b335c4dbe5d0f73d0ccbd6d592565","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"7900cbb19777841ba5e4714ef8cc439ea2e37ad0","isMergeCommit":false,"messageTitle":"Fix bug with testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"3ede7f8d039d89964f9ce59316ba82a767093b0c","isMergeCommit":false,"messageTitle":"Implement Tests for InternshipComparators","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":69,"deletions":0}}},{"hash":"cbec136e949db5a7dd2d9248714a5b5bae936c15","isMergeCommit":false,"messageTitle":"Add more test cases for InternshipComparators","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":87,"deletions":0}}},{"hash":"e793c854422ed7dd08f6adeab478b8c02bca2fd2","isMergeCommit":false,"messageTitle":"Improve code coverage for InternshipModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":0}}},{"hash":"314425ff99139a4c002c2f2a56bf3ac568b05bb3","isMergeCommit":false,"messageTitle":"Add toString test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":10,"deletions":0}}},{"hash":"8162780e6de11b16ea61b5a789052a7aa32ddd7e","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":21}}},{"hash":"8010e5be797912f7c1ad8ecb4020a3f9f9d270bd","isMergeCommit":false,"messageTitle":"Add sort command to UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":57,"deletions":38}}},{"hash":"6b39572911284291456d23752dd9cafd79c2d145","isMergeCommit":false,"messageTitle":"Update sort feauture in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"7ef9f98df0cf81ea178a7c5a25ea64f9e8f6dbc5","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"af7be5f6f2660f8b8e0ddfe7f1520acd6ddcec7c","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c57a25c9e87a1add568b69fa3620968475d90414","isMergeCommit":false,"messageTitle":"Fix formatting issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"09ff73d1c05735c797ff9427508d92dc7f9aecce","isMergeCommit":false,"messageTitle":"Add CLI hyperlinks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0c0f1eb0eeab54de1edeb0b63908ff54a56c43ba","isMergeCommit":false,"messageTitle":"Updare field summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"e34e4e746f6c3fdbdcb4637f919e45c1f67743f4","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"052a990b43376ef4833e5fc355fb73215e2ab4ec","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"ad1d4e00b7f90c14bbe41a84111b91aa93e75397","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-28","commitResults":[{"hash":"89a24408256ea0d388aec446c33c0b01825b7784","isMergeCommit":true,"messageTitle":"Merge pull request #158 from jieqiboh/add-legend","messageBody":"Add legend to UG","fileTypesAndContributionMap":{}},{"hash":"d1fe8de375117d8fcb851dd023e1e840f8d164bc","isMergeCommit":false,"messageTitle":"Fix formatting errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":21}}}]},{"date":"2024-03-29","commitResults":[{"hash":"9fd1cedd69e8bb0d0c64bebacc8f313b3a77c496","isMergeCommit":false,"messageTitle":"Update Version Number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"f307f64f25435332e45a1fb2db90395ad5c51df0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into sort-feature","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"8c78cf007f49d8bb70f24a0a6a63907e63090717","isMergeCommit":false,"messageTitle":"Change Implementation of Sort Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":41}}},{"hash":"fbd69ff216bc39b8334b9e067eb495bdd1fff0a8","isMergeCommit":false,"messageTitle":"Implement sort feature with ArgMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":33}}},{"hash":"7f8635f78b5ca39dd1a29a8db5291ccc2bab7d5c","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a51a4c9ddc148c52bacbfc2aab9bd09a3a98c33","isMergeCommit":false,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}}]},{"date":"2024-04-02","commitResults":[{"hash":"82f31eae3a4b0f634ed36772aa2219ad84a5a1f4","isMergeCommit":false,"messageTitle":"Fix Error Messages and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":67},"test-code":{"insertions":10,"deletions":7}}},{"hash":"787dee75331feedfe16dd8c5a1f33d73210e35c2","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10adc9e2c864145d2060af49979cc6a059d1ebf9","isMergeCommit":false,"messageTitle":"Update model stub","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":3}}},{"hash":"8a6f72d540179dd20ed7d60b3238db97c262ea17","isMergeCommit":false,"messageTitle":"Resolve comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":33},"test-code":{"insertions":81,"deletions":13}}},{"hash":"b7b90edcebb4bbcad688c49397ad61d155ed4411","isMergeCommit":false,"messageTitle":"Fix error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"f3a1c68872f9aa7a16d1dffbd559692ed4ee5d7a","isMergeCommit":false,"messageTitle":"Update sort in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":17}}}]},{"date":"2024-04-03","commitResults":[{"hash":"60e4a10390a559e3d65b0df01bf2af0e179e689b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"181ed435477d573285052bff65460cb99ea33d80","isMergeCommit":true,"messageTitle":"Merge pull request #186 from CaptainKeqing/updateUGFind","messageBody":"Update UG for Find command","fileTypesAndContributionMap":{}},{"hash":"b476223652d1ee48d792f3648b9f16ad814420a5","isMergeCommit":false,"messageTitle":"Fix duplicate prefix error for Sort","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"daf088cf6a43251a08d4d257bc0af5ef81f798cf","isMergeCommit":false,"messageTitle":"Fix multiple different prefix bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":0}}},{"hash":"4559146495c2c7a8363d151ae96b3103c51e81e0","isMergeCommit":false,"messageTitle":"Fix illegal arguments error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}}]},{"date":"2024-04-04","commitResults":[{"hash":"9e7c9cae1c0f0ac0536bac35efc71a66dbfd1b19","isMergeCommit":false,"messageTitle":"Fix error message bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"b727148572efa7f01dddb3d27a770df3bc9e3f80","isMergeCommit":false,"messageTitle":"Change error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":11}}},{"hash":"b5f48c94daa393e69bbac9774fe2ecf1f22ae71b","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":14}}},{"hash":"5e3c4fb79cbcad7ea33ffb4c50c3fb32a6c1d962","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a6a88e7aa9a9e81ca33d826de7d564eae447745b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"0d906c5aa61598379f6bf3be2f2360bfc9377861","isMergeCommit":false,"messageTitle":"Improve Code Coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-04-05","commitResults":[{"hash":"7ad74f450caa23b7228760ca7707299f4e002fc9","isMergeCommit":false,"messageTitle":"Improve code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":23,"deletions":4}}},{"hash":"8feb59e451cd0ae111aa81421ce2dfb7024c0704","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}}]}],"CaptainKeqing":[{"date":"2024-03-01","commitResults":[{"hash":"311bc16eb0a8c0e86385091721332ae0d7809c78","isMergeCommit":true,"messageTitle":"Sync with team repo master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"eba4f964e44e36219ce3fcb4f1aa215b2b71b957","isMergeCommit":false,"messageTitle":"Update Donovan\u0027s info on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":9}}},{"hash":"179c60565bff15d95db6710f2f72b0beea49816c","isMergeCommit":false,"messageTitle":"Add detailed view feature to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}},{"hash":"ee33402e78b725faa8e9f346b15b64bfa52e2aef","isMergeCommit":false,"messageTitle":"Add some non-functional requirements to Developer\u0027s Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}}]},{"date":"2024-03-02","commitResults":[{"hash":"68a002e78ec8e8fdb711a19b5a8e87a67a43da7e","isMergeCommit":false,"messageTitle":"Add Donovan\u0027s info to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":5}}},{"hash":"5729b68e59333c39188f5ef6c01e5931d0e9dc9c","isMergeCommit":false,"messageTitle":"Add detailed view feature to User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":29}}},{"hash":"6726574612d1e3fa7b0d4781a736639de31936e7","isMergeCommit":false,"messageTitle":"Add newline to EOF for UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2c5806b8efd469e82d947041264a74d61e60f131","isMergeCommit":false,"messageTitle":"Add newline to EOF for captainkeqing.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a55599566ec7aa7bb3f2e1f96b9d2a03893bf2ff","isMergeCommit":false,"messageTitle":"Add some non-functional requirements to Developer\u0027s Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":86,"deletions":68}}},{"hash":"c1fb6a50ec79d8e493c0b0dda524a7c70c623d2c","isMergeCommit":false,"messageTitle":"Fix old version of md not matching Jekyll","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":65}}},{"hash":"a8b4bc6fbe760c34572c4ce7c8d512da678a2129","isMergeCommit":false,"messageTitle":"Fix old version of md not matching Jekyll","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":29}}},{"hash":"0a6a1f9472751e7d0817f6ce1a7a03604ee066dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into AddInfoToAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9fa42afc6dea7311b048d860ed099d1be5c175f7","isMergeCommit":true,"messageTitle":"Merge pull request #49 from HM33-Stu/AddInfoToAboutUs","messageBody":"Add Hari\u0027s information to AboutUs.md page","fileTypesAndContributionMap":{}},{"hash":"9dfd12d07af38016792fad0ab1788e1b85635776","isMergeCommit":true,"messageTitle":"Merge pull request #51 from HM33-Stu/AddUseCasesToDG","messageBody":"Add Use Cases (and Stories) To DG","fileTypesAndContributionMap":{}},{"hash":"2dba60f6e1198052f2a74b3391b9e2adcd41ff2a","isMergeCommit":true,"messageTitle":"Merge pull request #50 from HM33-Stu/AmendAddAndDeleteFeatureInUG","messageBody":"Amend Add and Delete details in the User Guide","fileTypesAndContributionMap":{}},{"hash":"9ed484d58160592c5d6a01b746ff2ca6dd92648b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from LWS49/addEditToDG","messageBody":"add edit to User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"c66db0f78c429309794e4e509dd8c06ab7812e59","isMergeCommit":false,"messageTitle":"Rename fxml files and add labels for internship fields","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":5,"deletions":5}}},{"hash":"339432f31f3815f1d9dcdd18ad256c9ec43e8002","isMergeCommit":false,"messageTitle":"Delete PersonCard and PersonListPanel files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":108}}},{"hash":"05ed9d16987a39383bbdc3c06f60f443ff7e0e4f","isMergeCommit":false,"messageTitle":"Implement InternshipCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":0}}},{"hash":"2492bb2a87015b29b5c1077fab88332ff56e632e","isMergeCommit":false,"messageTitle":"Implement InternshipListPanel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":0}}},{"hash":"4bb1518658ed58795002e6f78ebd84e59df268f2","isMergeCommit":false,"messageTitle":"Remove unused import and tweak poc label name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-13","commitResults":[{"hash":"704616e988443a31801d7a1c48f4440f8f68ab70","isMergeCommit":false,"messageTitle":"Update Internship.java","messageBody":"Remove stray getName function","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"05d111d4d7fbd723f936908a4f1e47d1e28f917f","isMergeCommit":true,"messageTitle":"Merge pull request #89 from theman-oj10/master","messageBody":"Refactor AddressBook as InternshipData","fileTypesAndContributionMap":{}},{"hash":"4826f3e93e597efeb1e86b43fefa3965ef5bc1b2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into viewInternships","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1e6a473525383ed1538ce8084ff5160dce58e609","isMergeCommit":false,"messageTitle":"Add javadocs and change access of applicationStatus to use getter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":2}}},{"hash":"2d61d527a73978b34245abf8e8931592bc3ba6ad","isMergeCommit":true,"messageTitle":"Merge pull request #88 from jieqiboh/Json-Adapted-Internship","messageBody":"Add JsonAdaptedInternship And Update Description and Role isValid methods","fileTypesAndContributionMap":{}},{"hash":"8aeb581d3898b807343d96c776178e8754e7b08d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into viewInternships","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d8c5bc3a9f1e3255a8d36a8955fa3eff738e62bf","isMergeCommit":false,"messageTitle":"Rename fxml id location to loc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":1},"other":{"insertions":2,"deletions":2}}},{"hash":"ef33b32719270bb6b46142433a6e1758d0dd539c","isMergeCommit":false,"messageTitle":"Add back Person files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":0}}},{"hash":"0de93fb96f11140e6d29788e6c0602f5c593f1da","isMergeCommit":false,"messageTitle":"Add newline to EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-14","commitResults":[{"hash":"96ca80574e395887aaa787211426e54df1c1c92e","isMergeCommit":false,"messageTitle":"Re-add person fxml files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":0}}},{"hash":"ae6faa25eca8f9b221faf6ea095332db2b525121","isMergeCommit":false,"messageTitle":"Fix FXML string typo, rename variable to loc to match fxml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"ad90777ce6be4bc4c919ff24b6b6619002b1c579","isMergeCommit":false,"messageTitle":"Fix typo in InternshipListPanel javadocs and fxml fx:id","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"f118890629ad0e5a38692510334e07eb3b465f6e","isMergeCommit":false,"messageTitle":"Add newline to EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"620a9997b69493264ec04dffc4375d2db177276f","isMergeCommit":true,"messageTitle":"Merge pull request #99 from jieqiboh/test-email-number-internship","messageBody":"Add tests, change isSamePerson and refactor isValidContactEmail","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"242efdd07d7dea0446cb06cdc58eaa22a526c8f6","isMergeCommit":true,"messageTitle":"Merge pull request #98 from LWS49/update-edit-command","messageBody":"add InternshipEditCommand","fileTypesAndContributionMap":{}},{"hash":"d4202fe886c9b968e32c699bf38a08d90c529a32","isMergeCommit":false,"messageTitle":"Create internship versions for Clear, Exit, Help, List commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":0}}},{"hash":"3c4c4c6cfbcd0bfb76774ceab476a401affe87cb","isMergeCommit":false,"messageTitle":"Add tests for Clear, Exit and Help","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":0}}},{"hash":"7462472b9d7b216579098051a539d91509156f48","isMergeCommit":false,"messageTitle":"Add tests for List","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"cbb4c261fecea918e2858a2f83735f1d3d69beef","isMergeCommit":false,"messageTitle":"Fix long line","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"9cad1f0080971370694fdd288fdacf9b70a5f6b7","isMergeCommit":true,"messageTitle":"Merge pull request #104 from HM33-Stu/update-add-command","messageBody":"add InternshipAddCommand","fileTypesAndContributionMap":{}},{"hash":"1055c848a2aabf5579e8f2ae608f074786aca219","isMergeCommit":true,"messageTitle":"Merge pull request #106 from HM33-Stu/update-delete-command","messageBody":"add InternshipDeleteCommand","fileTypesAndContributionMap":{}},{"hash":"6c231589776f13a2ff439f7e966f01cd83e250a4","isMergeCommit":false,"messageTitle":"Create new InternshipDataParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":0}}},{"hash":"29072803452a1b32960430953d4da2bda32cb1f7","isMergeCommit":false,"messageTitle":"Add simple find command for internship company name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":0}}},{"hash":"26d6bfb3c6391bf14f35032196a2039828fe8e22","isMergeCommit":false,"messageTitle":"Add parser for find command for internships","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0}}},{"hash":"40159856b57e5a61eee2fdbad38eddd1d3c1a205","isMergeCommit":false,"messageTitle":"Add test for find command for internships","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":91,"deletions":0}}},{"hash":"23992ebd40afa381d5c291185c2b421ded1a87f4","isMergeCommit":false,"messageTitle":"Remove data parser, not relevant to this branch","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":86}}},{"hash":"99980b7e3699bbecc1f05c8e97b41925ebaa13bc","isMergeCommit":false,"messageTitle":"Add test for find command parser for internships","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}}]},{"date":"2024-03-17","commitResults":[{"hash":"5dc5853275a2b097d0104789c47e87f0e76025a5","isMergeCommit":false,"messageTitle":"Add internship logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":0}}},{"hash":"5dcdd88430a1e6fb6d669f422da7076f3c64514c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into logicManagerAndInternshipDataParser","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf2a799016b885a0d46fa3fd95625b66f65cdfae","isMergeCommit":false,"messageTitle":"Create internship data parser","messageBody":"This parser helps to parse all Internship related commands, by\neither calling their parser if more parsing is necessary, or\ndirectly creating the InternshipCommand object.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":0}}},{"hash":"4fdfae5e463bdaf0ba41bc5a0b962b796bc10a89","isMergeCommit":false,"messageTitle":"Create internship logic manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":0}}},{"hash":"87e50c5d7230664e4e5ea4f5069aa2f06f0a5579","isMergeCommit":false,"messageTitle":"Create InternshipUtil","messageBody":"This is a utility class for testing Internships. This allows us\nto get the user command necessary for creating an Internship.\n","fileTypesAndContributionMap":{"test-code":{"insertions":62,"deletions":0}}},{"hash":"be8ef0676e2a61563f7e0bd8f0d669db51758190","isMergeCommit":false,"messageTitle":"Fix asterisk import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":1}}},{"hash":"2554b337777491afa0901f567617db984d7b3a87","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into logicManagerAndInternshipDataParser","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1fd87726871fae07b294c06d0e5bb9d48d621cae","isMergeCommit":false,"messageTitle":"Add tests for internship data command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":102,"deletions":0}}},{"hash":"0a89364af2122cfdff2448923f134b24e4d3e481","isMergeCommit":false,"messageTitle":"Add test for internship logic manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":170,"deletions":0}}},{"hash":"760d71379ab775618cedbc29fbd1e609771c79bc","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9b37745dac94191883a8831fa6118ce3eab48cb2","isMergeCommit":false,"messageTitle":"Fix no whitespace between prefix and argument, cosmetic change","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":16}}},{"hash":"c6c18b50dd0b8d1ef04db2573c743892b987091b","isMergeCommit":false,"messageTitle":"Fix long line checkstyle violation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"ccccd080040470e86b8195f9496bd6379f21d07e","isMergeCommit":false,"messageTitle":"Update InternshipAddCommand.java","messageBody":"fix typo","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"257e3b54b07adfb3af96a989663c2b31c6c9c06f","isMergeCommit":true,"messageTitle":"Merge pull request #117 from HM33-Stu/update-add-command","messageBody":"Resolve Add Command UI-related Bugs","fileTypesAndContributionMap":{}},{"hash":"586802e8d7cbd1732615dd52b0bd66bc8293ec4f","isMergeCommit":false,"messageTitle":"Fix internship .equals() to check equality for all data fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"4c5e82e2946cc9762184443862a3fbed95ff58d0","isMergeCommit":false,"messageTitle":"Fix .contains() method bug","messageBody":"The contains method for UniqueInternshipList is used to check\nfor unique internships. Internship has some identity fields,\nnamely companyName, location, role and description.\n\nCurrently, the .contains() method actually uses the stronger\ndefinition of equality defined in Internship, which checks for\nthe equality of all data fields.\n\nLet\u0027s change .contains() to use .isSameInternship() in Internship\nthat only checks for equality for the identity fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"4c2407df9e5b76550741e25f830e2b0073b38ecf","isMergeCommit":false,"messageTitle":"Specify identify fields in javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"086c15fd8671a7a46be02d6a24da6ce28f0128d3","isMergeCommit":false,"messageTitle":"Add tests for Internship","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":1}}},{"hash":"a1e902efd6ecb2d72d4dfdc7cc696d44b763ce06","isMergeCommit":false,"messageTitle":"Add test for equals() method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":0}}},{"hash":"2fad1b85c83d91f155ea02f3016029640f103278","isMergeCommit":false,"messageTitle":"Set result display box to wrap result text","messageBody":"Currently the text overflows and expands the text area, so\nthe user is unable to see the full error/result message\nunless he scrolls to the right with a mouse.\n\nIn light of efficiency purposes, it is better to have the text\nwrap around the text area so it will not extend horizontally\npast the border.\n\nLet\u0027s set the wrap text property to true for better user QOL.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"9ce0f66967cd930d44c01fe027e27f7cf6b45a77","isMergeCommit":false,"messageTitle":"Fix label colour styling to work","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5}}},{"hash":"73430c58a0b34c4c024b1d105effde4d8153f480","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"205f8e4db4302cf0b7536e2bdc5e92caa072f27c","isMergeCommit":false,"messageTitle":"Set potentially long labels to wrap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-20","commitResults":[{"hash":"8c64eba60fa7a91ec3a14bf27704d50ae9e0ab29","isMergeCommit":false,"messageTitle":"Create ui part for displaying detailed internship info","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":213,"deletions":0}}},{"hash":"bf56620572e017bf2f04f35d95be3f5d7f73a3e8","isMergeCommit":false,"messageTitle":"Add ui part that stores the detailed internship","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":0}}},{"hash":"d73071b5b08a4ec2f220e6d64ea48b7817cc0c99","isMergeCommit":false,"messageTitle":"Add ui part for the separate detailed view window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":215,"deletions":0}}},{"hash":"798b4e59dbc8286193717177423bb70af90d3e75","isMergeCommit":false,"messageTitle":"Add click to view details functionality to InternshipListPanel","messageBody":"Currently, clicking only highlights the InternshipCard element, and\nhas no other effects. We want InternshipListPanel to return the\nInternship that was clicked on.\n\nLet\u0027s add handlers to return the Internship that was clicked.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":1}}},{"hash":"aa4c5e24a5864cfee200198f83030e1efdfafab1","isMergeCommit":false,"messageTitle":"Add new selectedInternship field in model, with getters and setters","messageBody":"This addition is to support the feature for viewing a selected\ninternship in MainWindow.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":0}}},{"hash":"5879c12c4d56f9985aab25e064eb447063e490c1","isMergeCommit":false,"messageTitle":"Add getter and setter for selected internship","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}},{"hash":"923551f8ce33ffa7aa024bf4d6b486b65fd69a95","isMergeCommit":false,"messageTitle":"Add new window to display detailed internship view","messageBody":"MainWindow is the main UI of the application. It holds references to\nthe helpWindow, resultDisplay, InternshipListPanel and more.\nCurrently, it does not support a separate window for a more\ndetailed view of an internship.\n\nTo support this new feature, we need to show a new window that we\nwill populate with our selected internship for the detailed view.\n\nLet\u0027s\n* Add mouse click handlers to update the selected internship in Logic\n* Add a new DetailedInternshipWindow that we can show/hide\n","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"1fa645c9b0ab8aa7c0b81205ad45ef95b4e655a1","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"26967c5eb8a3d1edffdf4764c50f973a7382e7af","isMergeCommit":false,"messageTitle":"Include TestFX dependencies for testing UI","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":16,"deletions":0}}},{"hash":"78804ce9cd13c9da5b30e283a7b3a40531e77369","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addClickableInternship","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2fe7e1d284e51bc1f8436450514e6e25153f6f78","isMergeCommit":false,"messageTitle":"Fix deprecated gradle dependency method","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":5,"deletions":4}}},{"hash":"233525c5020320adaaca39a943556b78f9e4267d","isMergeCommit":false,"messageTitle":"Update model stub to include new selected internship get/set","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"57655667f6b50d426f405694df9cd3c9c3f33028","isMergeCommit":false,"messageTitle":"Add tests for InternshipCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":9},"test-code":{"insertions":83,"deletions":0}}},{"hash":"ee808f3ee59eecf958ff11c3d83d4272e39a64f4","isMergeCommit":false,"messageTitle":"Fix import checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"9c993e85838a4cc4b12fdcc73146212a390f0a60","isMergeCommit":false,"messageTitle":"Add monocle support for headless testing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0}}},{"hash":"2723290fec2043fea2e5512ca895e96d6083376f","isMergeCommit":false,"messageTitle":"Create predicate to test internship for keywords","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":125,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"75c47c730c7c5c5457cc36dab801fc2548d8f9fd","isMergeCommit":false,"messageTitle":"Update InternshipFindCommand to use all fields predicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":50}}},{"hash":"6ffb6872f70a8a576f9cf9afca9b49d2bd244a5e","isMergeCommit":false,"messageTitle":"Add parser for find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":7}}},{"hash":"82e6f2de1c6e7bbf8e5ee69da07cefe7a5b87485","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2}}},{"hash":"11e4c43675639735498a1d695465b68fe8779fd3","isMergeCommit":false,"messageTitle":"Fix stream processing bug for fields with \u003e1 words","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"3e443cae2fba9f3f39648790f2c93b415eb833df","isMergeCommit":false,"messageTitle":"Add find command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":21}}},{"hash":"647e82c716281ece389a637b940e7e8ada946144","isMergeCommit":false,"messageTitle":"Modify data parser test for new find command syntax","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":8}}},{"hash":"042ade9065c1f2bbcace577425f992968d860c40","isMergeCommit":false,"messageTitle":"Add test for internship find command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":7}}},{"hash":"d63d7da17a7192ac97022b401815baccf9961df3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"cc488efeb758d37a16f8b5993a72e38089534e9f","isMergeCommit":false,"messageTitle":"Fix bug where validCompanyName rejects 2+ word names","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":89,"deletions":0}}},{"hash":"abf8e32834f61372fc911864996f50d2b31634bb","isMergeCommit":false,"messageTitle":"Add isMatchAll field to equals and toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":7}}},{"hash":"4c6d9ff3ab7cdc116634763baca25a4e648c996d","isMergeCommit":false,"messageTitle":"Fix typo in test case setting isMatchAll wrongly","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"3ceb4a97b24ea5b0616f876391b257a261f6c2da","isMergeCommit":false,"messageTitle":"Add tests for intership predicate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":39}}},{"hash":"1d59c9f3736afa4a1dcddb76a2dde51fd26c8e4a","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":9}}},{"hash":"9e3110136d325716c63a5d75630902cc8d30c92f","isMergeCommit":false,"messageTitle":"Improve error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5}}},{"hash":"4ff5f7fecc9a945eb9f1832b5b1929dd89cbb03f","isMergeCommit":false,"messageTitle":"Fix test case string input","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"45a33e55917d8b278e7388e49a1ea31f18f5be66","isMergeCommit":false,"messageTitle":"Change main window to show CareerSync","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"fe23adf660c8415251ad0b4b52a9b11ea7bf34fd","isMergeCommit":false,"messageTitle":"Add user guide for find","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":12}}},{"hash":"9512d0789d5c55d9349dd98bca583f5874e8188b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addInternshipFindCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e1de58cee6b6c929862c5174b604155b0e920b2","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"a94fe241df81b5eb47e9cac38f166e074c2471fc","isMergeCommit":false,"messageTitle":"Fix find command header link, remove whitespace at EOLs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":22}}},{"hash":"8929e3cef5ddec5b24698c176a4901a759c01df4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into updateUGFind","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ef84efabf56b852d84bc042a384c3f909303174","isMergeCommit":false,"messageTitle":"Resolve all merge conflicts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":18}}}]},{"date":"2024-03-26","commitResults":[{"hash":"1acb0490192b377610e0272e044a289b96870305","isMergeCommit":false,"messageTitle":"Update diagrams, fix internal links in Architecture section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":27}}},{"hash":"c8b8527ab9d71a330860d4051f5b83b4bef4a1cb","isMergeCommit":false,"messageTitle":"Update broken links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}},{"hash":"58793f1c38338b3c20a69dccc7c4e1ed0de01c55","isMergeCommit":false,"messageTitle":"Rectify typo in notes about command format section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"251536e6ff83d5ac8b458c6d03943bfd47621fbe","isMergeCommit":false,"messageTitle":"Make Known Issues multiple screen issue more readable","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"6da1e6169257e14d102797941e68f582d9bb7314","isMergeCommit":false,"messageTitle":"Improve section for list command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":2}}},{"hash":"696667338ddd3091677cd566ad65550c56b0a883","isMergeCommit":false,"messageTitle":"Improve section for clear command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":1}}}]},{"date":"2024-03-27","commitResults":[{"hash":"b857714725ef61967a4d1f73100e584e4397f465","isMergeCommit":false,"messageTitle":"Improve section for find command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":5}}},{"hash":"96995a21fc7e001e381ed94fb392f52c416c2ba4","isMergeCommit":false,"messageTitle":"Add bold format for list","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"744a065e81fc54d7fb6d1025e931cef67175f86c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addClickableInternship","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9cfc5ac2bc876682c3a7e4fb13e2e12bef9373cb","isMergeCommit":false,"messageTitle":"Change to correct monocle version for headless testing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":3}}},{"hash":"cc51b2ec27d0cd0dbcca819d5d8ffc475464d829","isMergeCommit":false,"messageTitle":"Fix bug where remark field not copied from other","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"0c389c3f445e7d9e157066caf1c19e0240d90530","isMergeCommit":false,"messageTitle":"Add support for remark field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":9}}},{"hash":"006686cefb93c7198f64ee2857c27eab318e8da9","isMergeCommit":false,"messageTitle":"Add new abstract Ui test class, support headless testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"7246e7a58a16d15696e7e97cbbe3f4ec902abf11","isMergeCommit":false,"messageTitle":"Update test to include remark label","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"1bc91c86e15830c0926097d575190a93124ea538","isMergeCommit":false,"messageTitle":"Add tests for click, add support for remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":45,"deletions":2}}},{"hash":"ec00e839b65c773d3ae38aeb70d5118302d3f0a6","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":4}}}]},{"date":"2024-03-29","commitResults":[{"hash":"61b58a05aa32e2c3cf4db384f30dd67772041b91","isMergeCommit":true,"messageTitle":"Merge pull request #143 from LWS49/add-addTask-command","messageBody":"Add TaskList, AddTask, AddDeadline command and add JSON conversion for both Task and Deadline\r\n\r\nThanks for the speedy fixes ","fileTypesAndContributionMap":{}},{"hash":"8a7764d1bb387e2ea6db6efdd0c93903a0c812d1","isMergeCommit":true,"messageTitle":"Merge pull request #164 from HM33-Stu/enable-assertions","messageBody":"Enable Assertions In Team Repo","tags":["v1.3.trial"],"fileTypesAndContributionMap":{}},{"hash":"5576954bb58f87a8961a3e75a8c97cc6218331a7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addClickableInternship","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-01","commitResults":[{"hash":"3d2c3ed95fc91008adb3424ff7239bd184103899","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addClickableInternship","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3a7437ced350c49d75f09b0e3687cd5fe5b97c00","isMergeCommit":false,"messageTitle":"Fix bug where deadline added does not reflect on UI","messageBody":"The current addDeadline command does not call\nmodel.setInternship(). However, this is required to\nbasically trigger a UI refresh (via ObservableList\nlistener).\n\nLet\u0027s add a line to set the internship that we added\nthe deadline to, to replace itself (no change to\ninternal internship list). This triggers the UI to\nupdate which displays the added deadline.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"1803e05585fd578eb4ba40692497180120f47d26","isMergeCommit":false,"messageTitle":"Add support for remarks and tasks in detailed view","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6}}}]},{"date":"2024-04-02","commitResults":[{"hash":"f476a00ef5dae5a8081ca7349f5774eef0119d53","isMergeCommit":false,"messageTitle":"Remove command box and result display from detailed window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":37}}},{"hash":"6b7da0d6c7344aa5a468dfa876df58bc961344c0","isMergeCommit":false,"messageTitle":"Add tests, remove unused functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":80},"test-code":{"insertions":61,"deletions":0}}},{"hash":"caad3177f9fb2accddcfefb5172869d682e2d14f","isMergeCommit":false,"messageTitle":"Implement headless testing for this test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"700bcfba49ed8218e8068857ea470f903636662f","isMergeCommit":false,"messageTitle":"Improve error message for Find","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":14}}},{"hash":"8b65dbea96dc4624ac0c849c319bdb15015afec2","isMergeCommit":false,"messageTitle":"Add support for find by remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4},"test-code":{"insertions":19,"deletions":17}}},{"hash":"f14cfeac401d3f4a25336c37d107246cfaed2ce7","isMergeCommit":false,"messageTitle":"Improve error message for prefix present but no key","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":4}}},{"hash":"3e70abfb78f674a89c8ec4c2974d408d1919449a","isMergeCommit":false,"messageTitle":"Move prefix checking functions to InternshipParserUtil","messageBody":"Currently, there are 3 flavours of prefix checking.\n1) anyPrefixesPresent\n2) allPrefixesPresent\n3) prefixesPresentAreNotEmpty\nThese are split among the parser functions as individual stand\nalone private functions.\n\nThis makes it difficult to test them (private, so can\u0027t test.\nImplemented separately so changes have to be done multiple times).\n\nLet\u0027s\n* Shift them to a centralised location in InternshipParserUtil.\n* Implement tests for these functions\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":30}}},{"hash":"9795dfdddc10f0459a86eb62e20de4dbd92bfa5e","isMergeCommit":false,"messageTitle":"Add test for InternshipParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":124,"deletions":0}}},{"hash":"ceceb890b9ce5ec675abd9db4b582366aec242aa","isMergeCommit":true,"messageTitle":"Merge pull request #176 from theman-oj10/branch-UserGuide","messageBody":"Update Sort in UG","fileTypesAndContributionMap":{}},{"hash":"2cd65192e8524c6ccc72b36a9af5a18cb25fe7ed","isMergeCommit":false,"messageTitle":"Fix checkstyle, add test for no keyword","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":5}}},{"hash":"1feca1d90b7c8158544a5a652f8bf8234d2123b0","isMergeCommit":false,"messageTitle":"Update InternshipDeleteTaskCommand.java","messageBody":"fix typo in comment","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0cb395201592456c692655d47cd228356a7220b0","isMergeCommit":true,"messageTitle":"Merge pull request #181 from jieqiboh/dup-addremark-bugfix","messageBody":"BugFix for duplicate prefixes","fileTypesAndContributionMap":{}},{"hash":"040d13dd1e635aabaad0a750c11eff5e6e601e03","isMergeCommit":false,"messageTitle":"Improve tip for adddeadline section","messageBody":"This commit also fixes typo in deadline format, and adds a hyperlink to the Try It Out section to add task","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":8}}},{"hash":"f5c19023cb8bee488e367c7c93c0c694af75a07b","isMergeCommit":false,"messageTitle":"Fix deadline format typo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-04-03","commitResults":[{"hash":"1f3201e956b48437212f1d1d3dc45cf5f017b14b","isMergeCommit":false,"messageTitle":"Improve error msg to show supported prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":13},"test-code":{"insertions":5,"deletions":0}}},{"hash":"22e7cf82185ee603adece47d10c24d4f03ade23f","isMergeCommit":false,"messageTitle":"Fix duplicate prefix bug for Find","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"881d1b07c18d97737b2b8d7f66cdbdd539b05b13","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4}}},{"hash":"8dc57fb1fcdb7c2e421bfe443eb9599a695f624d","isMergeCommit":true,"messageTitle":"Merge pull request #179 from LWS49/update-UG","messageBody":"Improve navigation","fileTypesAndContributionMap":{}},{"hash":"97756da55d17e52a7301f821164bb6a87e920487","isMergeCommit":false,"messageTitle":"Improve grammer in error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"20a57ddf4b3651321364e9afb0fd41c245d98ca8","isMergeCommit":false,"messageTitle":"Update command section for Find, amend typos in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":27}}},{"hash":"aca7304ff6d1949c78a04de6601ab5d960ddf540","isMergeCommit":false,"messageTitle":"Remove stray words","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":5}}},{"hash":"3f17abe7d0c428df783f9ec598dff358950154ce","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"Fix typo buy in command summary link","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c8e107b032c10b121c92a4cf0b29fa9ca7c79577","isMergeCommit":true,"messageTitle":"Merge pull request #190 from LWS49/update-UG","messageBody":"Change Tutorial Headers, Looks good to me! thanks for the quick changes","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"36c7a592b97f718e7fef418f285c9840360a2b5f","isMergeCommit":false,"messageTitle":"Rewrite add and delete commands for User Guide","messageBody":"The biggest change here is the the removal of the screenshots for\nsuccessful output and error as this screenshots do not provide\nmuch value at the moment without further context.\n\nInstead, the users are now directed to the Tutorial section which\nhas a more contextualised use case for both Add and Delete.\n","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":47}}},{"hash":"06698a6eb7910cd66e92ea7249a1be9536491785","isMergeCommit":false,"messageTitle":"Increase specificity of tutorial links for add, delete","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"fc33ff55f0ef6859c47a93673d61d17e6d3cf638","isMergeCommit":false,"messageTitle":"Use you language for edit, addremark and update screenshots","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":12}}},{"hash":"2645459977c15705a0174248ae0ee3d9874aaf6e","isMergeCommit":false,"messageTitle":"Use you language for sort, improve description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":24}}},{"hash":"3d843fc8a09e49a4723a3d90489e03cbdad26ecb","isMergeCommit":false,"messageTitle":"Improve description for setdeadline, deletetask, clear, exit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"bc643349602c45095ee5be30fab3337ce0bb6617","isMergeCommit":false,"messageTitle":"Update UG section for detailed view feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":3}}},{"hash":"28c566c9ab0ac3ee7a841293b2f1ee4b6f7da7e1","isMergeCommit":false,"messageTitle":"Add dev comment to explain abscence of tasks in detail string","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"bea31adffc7313b358a71adcfb8c173bda73cb30","isMergeCommit":false,"messageTitle":"Fix bug with detailed view window and edit","messageBody":"Currently, when an internship is being edited, if it is being\ndisplayed on the detailed view window, it would dissapear on occasion.\nThis is discovered to be because the identity fields of Internship\nare being used to check for equality (aka isSameInternship()).\n\nIt would be useful for users if the internship that is being viewed\ndoes not dissapear upon any field update.\n\nThis is made possible with a simple change to edit command. By\nchecking if the internship to be edited is the model\u0027s current\nselected internship (which is the one displayed in the GUI), the\npost-edit internship can be set to the new selected internship\nin model. (A non selected internship post-edit will NOT appear\nin the detailed view window).\n\nThis is corroborated by 2 additional test cases in\nInternshipEditCommandTest which checks that a selected internship\npost edit will still be the selected internship, and a non-selected\ninternship will not become the selected internship.\n\nLet\u0027s implement these changes within edit command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0},"test-code":{"insertions":51,"deletions":0}}},{"hash":"e7ccc8dca3319f9fde7e299c3adc7dee1383325a","isMergeCommit":false,"messageTitle":"Fix reference to deprecated Command (for persons)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"646af807a79702f2d6f118e8f441e0a9de3b4021","isMergeCommit":false,"messageTitle":"Update javadocs to use Internship","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":20}}}]},{"date":"2024-04-05","commitResults":[{"hash":"c6e6a659d6284cbf07c2a1f40c34cc789a7de237","isMergeCommit":false,"messageTitle":"Add new static utility method, converts prefixes to String","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1},"test-code":{"insertions":25,"deletions":0}}},{"hash":"c1b7f43903b4d39462655bc49913e4898c82555a","isMergeCommit":false,"messageTitle":"Add check for unsupported prefixes","messageBody":"Currently, find command only shows the supported prefixes\nrecognised by CareerSync. However, it does not explicitly\nhighlight to the users which of the prefixes (that are recognised\nby our ArgumentMultiMap) are unsupported etc. /email, /phone.\n\nLet\u0027s\n* Make explicit the unsupported fields keyed in by the user.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":6},"test-code":{"insertions":33,"deletions":1}}},{"hash":"b120446878c7e49d0680ef42f90c9dd8da487b5d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"dc09891b39c7eb31b61ebdbb79ac7c047ac61702","isMergeCommit":false,"messageTitle":"Update UG for find to include unsupported fields","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"65518da1674e5c77a7603b9e4cb0dab80a3824bc","isMergeCommit":true,"messageTitle":"Merge pull request #207 from HM33-Stu/rectified-build-details","messageBody":"Changed App Ver Number And Jar File Name","fileTypesAndContributionMap":{}},{"hash":"7533bd3f9495566de9ca12b9a93d920eb61eee52","isMergeCommit":true,"messageTitle":"Merge pull request #202 from LWS49/removeAllPersons","messageBody":"Remove all instances of person from src","fileTypesAndContributionMap":{}},{"hash":"2885133c296299804f1ecb04cd1fe1440fdf4116","isMergeCommit":true,"messageTitle":"Merge pull request #209 from CaptainKeqing/updateSupportedPrefixesFind","messageBody":"Update supported prefixes find","tags":["v1.3.1"],"fileTypesAndContributionMap":{}},{"hash":"161c1b0e5630e1a275bb91399f36d12498013321","isMergeCommit":false,"messageTitle":"Make changes to version number for v1.3.1 release","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"jieqiboh":{"docs":261,"functional-code":1356,"test-code":1585,"other":679},"HM33-Stu":{"docs":282,"functional-code":412,"test-code":897,"other":3},"LWS49":{"docs":465,"functional-code":1451,"test-code":1328},"theman-oj10":{"docs":113,"functional-code":1139,"test-code":1509},"CaptainKeqing":{"docs":212,"functional-code":1347,"test-code":1176,"other":21}},"authorContributionVariance":{"jieqiboh":64999.668,"HM33-Stu":54902.145,"LWS49":804479.0,"theman-oj10":64478.016,"CaptainKeqing":41841.11},"authorDisplayNameMap":{"jieqiboh":"CS2103T-W11-1 BOH ..E QI","HM33-Stu":"CS2103T-W11-1 HARI..OHAN","LWS49":"CS2103T-W11-1 LOW ..HENG","theman-oj10":"CS2103T-W11-1 RAJE..NDER","CaptainKeqing":"CS2103T-W11-1 LOH ..OVAN"}} diff --git a/AY2324S2-CS2103T-W11-2_tp_master/authorship.json b/AY2324S2-CS2103T-W11-2_tp_master/authorship.json index 3d300a89..55b999ed 100644 --- a/AY2324S2-CS2103T-W11-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W11-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"# CCA Manager","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W11-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W11-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"* This is the **CCA Manager** project. We aim to help NUS CCA members improve their contact management.","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"* Example usages:","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":" * assign roles to contacts corresponding to their actual role in the CCA.","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":" * form groups and sub-groups of contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"* This project is ongoing and still a WIP.","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":" * We aim to use multiple paradigms of programming, such as **OOP** and **functional** programming.","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":" However, the main paradigm will be **OOP**.","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":" * User and developer documentation is still a WIP, and will be updated soon.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"* For detailed information, please see the [CCA Manager Product Website](https://ay2324s2-cs2103t-w11-2.github.io/tp/).","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Fidget-Spinner":13,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":" archiveFileName \u003d \u0027ccamanager.jar\u0027","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":"// Credits to https://se-education.org/guides/tutorials/gradle.html#enabling-assertions","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":"// for how to do this.","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":"run {","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":73,"Fidget-Spinner":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" title: \"About Us\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"# About Us","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"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":"JuliaPoo"},"content":"### Ken Jin","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cimg src\u003d\"images/fidget-spinner.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"[[github](https://github.com/Fidget-Spinner/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/fidget-spinner.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"* Role: Developer","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"### Lifu","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cimg src\u003d\"images/lifhoshi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"[[github](https://github.com/LifHoshi)]","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/lifhoshi.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":"* Role: Developer","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"### Jules","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"\u003cimg src\u003d\"images/juliapoo.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":"[[homepage](https://juliapoo.github.io/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":"[[github](http://github.com/JuliaPoo)]","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/juliapoo.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"### Jia Jie","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"\u003cimg src\u003d\"images/chuahjiajie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"[[github](http://github.com/chuahjiajie)]","lastModifiedDate":"2024-03-03"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/chuahjiajie.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" * Logic","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" * Deliverables and Deadlines","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":"### Jae Geun","lastModifiedDate":"2024-03-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"alphajae11"},"content":"\u003cimg src\u003d\"images/alphajae11.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":"[[github](http://github.com/alphajae11)]","lastModifiedDate":"2024-03-03"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/alphajae11.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":22,"chuahjiajie":5,"alphajae11":1,"-":32,"Fidget-Spinner":5}},{"path":"docs/Configuration.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Configuration guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"# Configuration guide","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: `config.json`).","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"-":4,"Fidget-Spinner":4}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"DevOps guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# DevOps guide","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","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":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26"}],"authorContributionMap":{"-":74,"Fidget-Spinner":8}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Role` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Role` object per unique role, instead of each `Person` needing their own `Role` objects.\u003cbr\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":191,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":196,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":197,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":198,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":212,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":213,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":222,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":223,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"### \\[Proposed\\] Payment splitting","lastModifiedDate":"2024-03-29"},{"lineNumber":260,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":261,"author":{"gitId":"Fidget-Spinner"},"content":"After payments are implemented, we expect to be able to split payments among","lastModifiedDate":"2024-03-29"},{"lineNumber":262,"author":{"gitId":"Fidget-Spinner"},"content":"CCA members. An example command is ``split a/4.00 c/NUS Cycling``. Which means","lastModifiedDate":"2024-03-29"},{"lineNumber":263,"author":{"gitId":"Fidget-Spinner"},"content":"\"split $4.00 among CCA members NUS Cycling\". The process is as follows.","lastModifiedDate":"2024-03-29"},{"lineNumber":264,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":265,"author":{"gitId":"Fidget-Spinner"},"content":"1. Identify all members belonging to that CCA.","lastModifiedDate":"2024-03-29"},{"lineNumber":266,"author":{"gitId":"Fidget-Spinner"},"content":"2. Count the number of members in 1., and split the amount equally.","lastModifiedDate":"2024-03-29"},{"lineNumber":267,"author":{"gitId":"Fidget-Spinner"},"content":" * Note: rounding errors may occur here. So we should use `double` in Java","lastModifiedDate":"2024-03-29"},{"lineNumber":268,"author":{"gitId":"Fidget-Spinner"},"content":" for higher precision and also round to nearest 2 d.p.","lastModifiedDate":"2024-03-29"},{"lineNumber":269,"author":{"gitId":"Fidget-Spinner"},"content":"3. Add the split amount to each member\u0027s \"payment owed\" field","lastModifiedDate":"2024-03-29"},{"lineNumber":270,"author":{"gitId":"Fidget-Spinner"},"content":" (this field has yet to be implemented).","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":272,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":273,"author":{"gitId":"JuliaPoo"},"content":"### \\[Proposed\\] Better CCA-level Actions","lastModifiedDate":"2024-03-29"},{"lineNumber":274,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":275,"author":{"gitId":"JuliaPoo"},"content":"This feature will implement a better internal representation of a `Cca` object. This enables the implementation of certain features such as:","lastModifiedDate":"2024-03-29"},{"lineNumber":276,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":277,"author":{"gitId":"JuliaPoo"},"content":"1. Adding meta-data to CCAs","lastModifiedDate":"2024-03-29"},{"lineNumber":278,"author":{"gitId":"JuliaPoo"},"content":"2. Displaying every contact related to CCAs in a concise manner.","lastModifiedDate":"2024-03-29"},{"lineNumber":279,"author":{"gitId":"JuliaPoo"},"content":"3. Allow more interactive ways to traverse contacts related to CCAs.","lastModifiedDate":"2024-03-29"},{"lineNumber":280,"author":{"gitId":"JuliaPoo"},"content":" - E.g., `display CCA` can list every contact (summary) grouped according to roles. Each contact is clickable, which will modify the `ModelManager.filteredPersons` to only have said contact.","lastModifiedDate":"2024-03-29"},{"lineNumber":281,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":282,"author":{"gitId":"JuliaPoo"},"content":"This meta-feature will consist of two parts:","lastModifiedDate":"2024-03-29"},{"lineNumber":283,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":284,"author":{"gitId":"JuliaPoo"},"content":"1. A better `Model` representation.","lastModifiedDate":"2024-03-29"},{"lineNumber":285,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":286,"author":{"gitId":"JuliaPoo"},"content":"#### A better `Model` representation","lastModifiedDate":"2024-03-29"},{"lineNumber":287,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":288,"author":{"gitId":"JuliaPoo"},"content":"\u003cpuml src\u003d\"diagrams/HalfBetterModelClassDiagram.puml\" width\u003d\"600\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":289,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":290,"author":{"gitId":"JuliaPoo"},"content":"The minimal `Model` changes required to implement this is the implementation of `UniqueCcaList` as per above. This represents a half-way point between the ideal `Model` implementation which involves `UniqueRoleList`.","lastModifiedDate":"2024-03-29"},{"lineNumber":291,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":292,"author":{"gitId":"JuliaPoo"},"content":"This allows `Cca` objects to contain metadata (such as `Cca.description: String`) that is automatically shared across all members within the `Cca`.","lastModifiedDate":"2024-03-29"},{"lineNumber":293,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":294,"author":{"gitId":"JuliaPoo"},"content":"Due to this fundamental change, implementation of this will be fairly invasive across the codebase, albeit straightforward. This includes (but might not be exhaustive):","lastModifiedDate":"2024-03-29"},{"lineNumber":295,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":296,"author":{"gitId":"JuliaPoo"},"content":"1. `model`:","lastModifiedDate":"2024-03-29"},{"lineNumber":297,"author":{"gitId":"JuliaPoo"},"content":" - See above diagram.","lastModifiedDate":"2024-03-29"},{"lineNumber":298,"author":{"gitId":"JuliaPoo"},"content":"2. `logic`:","lastModifiedDate":"2024-03-29"},{"lineNumber":299,"author":{"gitId":"JuliaPoo"},"content":" - `Command.execute` that use `Cca`s needs to interface with `ModelManager.UniqueCcaList` to create new `Cca`s as needed or to reuse the object in the list.","lastModifiedDate":"2024-03-29"},{"lineNumber":300,"author":{"gitId":"JuliaPoo"},"content":"3. `storage`:","lastModifiedDate":"2024-03-29"},{"lineNumber":301,"author":{"gitId":"JuliaPoo"},"content":" - `JsonAdaptedCCA` needs to seralise any new fields in `Cca`.","lastModifiedDate":"2024-03-29"},{"lineNumber":302,"author":{"gitId":"JuliaPoo"},"content":"4. `test`:","lastModifiedDate":"2024-03-29"},{"lineNumber":303,"author":{"gitId":"JuliaPoo"},"content":" - Tests similar to that of `UniquePersonList` has to be implemented.","lastModifiedDate":"2024-03-29"},{"lineNumber":304,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":305,"author":{"gitId":"JuliaPoo"},"content":"Following the implementation of this meta-feature, the following features can be implemented:","lastModifiedDate":"2024-03-29"},{"lineNumber":306,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":307,"author":{"gitId":"JuliaPoo"},"content":"1. Adding meta-data to CCAs. Possible implementation details:","lastModifiedDate":"2024-03-29"},{"lineNumber":308,"author":{"gitId":"JuliaPoo"},"content":" 1. Have the command format be `cca-desc DESC`.","lastModifiedDate":"2024-03-29"},{"lineNumber":309,"author":{"gitId":"JuliaPoo"},"content":" 2. The creation of a new `Command` class `CcaDescCommand`.","lastModifiedDate":"2024-03-29"},{"lineNumber":310,"author":{"gitId":"JuliaPoo"},"content":" 3. Implementing `Cca.setDesc`.","lastModifiedDate":"2024-03-29"},{"lineNumber":311,"author":{"gitId":"JuliaPoo"},"content":" 4. `CcaDescCommand.execute` will look for the correct `Cca` object in `UniqueCcaList` and call `Cca.setDesc(desc)`.","lastModifiedDate":"2024-03-29"},{"lineNumber":312,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":313,"author":{"gitId":"JuliaPoo"},"content":"More details of these specific features in the future.","lastModifiedDate":"2024-03-29"},{"lineNumber":314,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":315,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":316,"author":{"gitId":"JuliaPoo"},"content":"#### Modification of UI elements to display `Cca`s.","lastModifiedDate":"2024-03-29"},{"lineNumber":317,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":318,"author":{"gitId":"JuliaPoo"},"content":"This is fairly straightforward:","lastModifiedDate":"2024-03-29"},{"lineNumber":319,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":320,"author":{"gitId":"JuliaPoo"},"content":"1. Renaming of `PersonListPanel` to `DisplayObjectListPanel`.","lastModifiedDate":"2024-03-29"},{"lineNumber":321,"author":{"gitId":"JuliaPoo"},"content":"2. Renaming of `PersonListPanel.fxml` to `DisplayObjectListPanel.fxml`.","lastModifiedDate":"2024-03-29"},{"lineNumber":322,"author":{"gitId":"JuliaPoo"},"content":"3. Add a new `ListView` in `DisplayObjectListPanel.fxml` below `personListView` known as `ccaView`.","lastModifiedDate":"2024-03-29"},{"lineNumber":323,"author":{"gitId":"JuliaPoo"},"content":" - Update `DisplayObjectListPanel` accordingly.","lastModifiedDate":"2024-03-29"},{"lineNumber":324,"author":{"gitId":"JuliaPoo"},"content":"4. Create a new `CcaCard` object in `ui` and its corresponding `CcaCard.fxml` file.","lastModifiedDate":"2024-03-29"},{"lineNumber":325,"author":{"gitId":"JuliaPoo"},"content":"5. Add a new overload `updateItem` with type signature `(Cca cca, boolean empty)` that appends a `CcaCard` object to `PersonListPanel.ccaView`.","lastModifiedDate":"2024-03-29"},{"lineNumber":326,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":327,"author":{"gitId":"JuliaPoo"},"content":"The resulting Ui model should look something like this:","lastModifiedDate":"2024-03-29"},{"lineNumber":328,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":329,"author":{"gitId":"JuliaPoo"},"content":"\u003cpuml src\u003d\"diagrams/NewUiClassDiagram.puml\" width\u003d\"1000px\"\u003e\u003c/puml\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":330,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":331,"author":{"gitId":"JuliaPoo"},"content":"Following the implementation of this meta-feature, the following features can be implemented:","lastModifiedDate":"2024-03-29"},{"lineNumber":332,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":333,"author":{"gitId":"JuliaPoo"},"content":"1. Displaying every contact related to CCAs in a concise manner.","lastModifiedDate":"2024-03-29"},{"lineNumber":334,"author":{"gitId":"JuliaPoo"},"content":" - This will depend on the implementation of `CcaCard`.","lastModifiedDate":"2024-03-29"},{"lineNumber":335,"author":{"gitId":"JuliaPoo"},"content":"2. Allow more interactive ways to traverse contacts related to CCAs.","lastModifiedDate":"2024-03-29"},{"lineNumber":336,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":337,"author":{"gitId":"JuliaPoo"},"content":"More details of these specific features in the future.","lastModifiedDate":"2024-03-29"},{"lineNumber":338,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":339,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":340,"author":{"gitId":"chuahjiajie"},"content":"### \\[Proposed\\] Attendance Tracking","lastModifiedDate":"2024-03-29"},{"lineNumber":341,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":342,"author":{"gitId":"chuahjiajie"},"content":"After members of a CCA has been added to CCA Manager, it is expected to be able to track","lastModifiedDate":"2024-03-29"},{"lineNumber":343,"author":{"gitId":"chuahjiajie"},"content":"their attendance. This will be displayed below their CCA.","lastModifiedDate":"2024-03-29"},{"lineNumber":344,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":345,"author":{"gitId":"chuahjiajie"},"content":"An example command for setting attendance is ``setatt index att\\9 s\\10``. Which means","lastModifiedDate":"2024-04-05"},{"lineNumber":346,"author":{"gitId":"chuahjiajie"},"content":"\"Set the attendance of person at index to be 9 out of 10 sessions\". The process is as follows.","lastModifiedDate":"2024-04-05"},{"lineNumber":347,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":348,"author":{"gitId":"chuahjiajie"},"content":"1. Retrieve the attendance information of John Doe.","lastModifiedDate":"2024-03-29"},{"lineNumber":349,"author":{"gitId":"chuahjiajie"},"content":"2. Edit the attendance details according to the input.","lastModifiedDate":"2024-03-29"},{"lineNumber":350,"author":{"gitId":"chuahjiajie"},"content":"3. Update the attendance details of the person in the model.","lastModifiedDate":"2024-03-29"},{"lineNumber":351,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":352,"author":{"gitId":"chuahjiajie"},"content":"An example command for setting the number of sessions is ``setsess index s\\10``. Which means","lastModifiedDate":"2024-04-05"},{"lineNumber":353,"author":{"gitId":"chuahjiajie"},"content":"\"Set the number of sessions of person at index to be 10\". The process is as follows.","lastModifiedDate":"2024-04-05"},{"lineNumber":354,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":355,"author":{"gitId":"chuahjiajie"},"content":"1. Retrieve the attendance information of John Doe.","lastModifiedDate":"2024-03-29"},{"lineNumber":356,"author":{"gitId":"chuahjiajie"},"content":"2. Increment the attendance value by 1.","lastModifiedDate":"2024-03-29"},{"lineNumber":357,"author":{"gitId":"chuahjiajie"},"content":"3. Update the attendance details of the person in the model.","lastModifiedDate":"2024-03-29"},{"lineNumber":358,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":359,"author":{"gitId":"chuahjiajie"},"content":"An example command for incrementing attendance is ``incatt index``. Which means","lastModifiedDate":"2024-04-05"},{"lineNumber":360,"author":{"gitId":"chuahjiajie"},"content":"\"Increment the attendance of person at index by 1\". The process is as follows.","lastModifiedDate":"2024-04-05"},{"lineNumber":361,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":362,"author":{"gitId":"chuahjiajie"},"content":"1. Retrieve the attendance information of John Doe.","lastModifiedDate":"2024-03-29"},{"lineNumber":363,"author":{"gitId":"chuahjiajie"},"content":"2. Edit the session detail according to the input.","lastModifiedDate":"2024-03-29"},{"lineNumber":364,"author":{"gitId":"chuahjiajie"},"content":"3. Update the attendance details of the person in the model.","lastModifiedDate":"2024-03-29"},{"lineNumber":365,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":366,"author":{"gitId":"alphajae11"},"content":"### \\[Proposed\\] Feedback to App Developers and CCA Excos","lastModifiedDate":"2024-03-31"},{"lineNumber":367,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":368,"author":{"gitId":"alphajae11"},"content":"After using the app (CCA Manager), there will be certain features that","lastModifiedDate":"2024-03-31"},{"lineNumber":369,"author":{"gitId":"alphajae11"},"content":"the users will not be too comfortable with.","lastModifiedDate":"2024-03-31"},{"lineNumber":370,"author":{"gitId":"alphajae11"},"content":"CCA Manager will allow these users to provide some direct feedback to the","lastModifiedDate":"2024-03-31"},{"lineNumber":371,"author":{"gitId":"alphajae11"},"content":"app developers so that they can immediately improve the features. The process is as follows.","lastModifiedDate":"2024-03-31"},{"lineNumber":372,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":373,"author":{"gitId":"alphajae11"},"content":"1. User click on the hyperlink that leads to the Google Form, CCA Manager App feedback form.","lastModifiedDate":"2024-03-31"},{"lineNumber":374,"author":{"gitId":"alphajae11"},"content":"2. User fill in the feedback form based on the issues that they have.","lastModifiedDate":"2024-03-31"},{"lineNumber":375,"author":{"gitId":"alphajae11"},"content":"3. User submit the feedback form (Google Form)","lastModifiedDate":"2024-03-31"},{"lineNumber":376,"author":{"gitId":"alphajae11"},"content":"4. App Developers receive the feedback","lastModifiedDate":"2024-03-31"},{"lineNumber":377,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":378,"author":{"gitId":"alphajae11"},"content":"As CCA members participates in their CCA activities and events, they may want","lastModifiedDate":"2024-03-31"},{"lineNumber":379,"author":{"gitId":"alphajae11"},"content":"certain things to improve in their CCA. At the same time, the Exco members would","lastModifiedDate":"2024-03-31"},{"lineNumber":380,"author":{"gitId":"alphajae11"},"content":"want to know how their CCA management or ways of handling events/activities can improve.","lastModifiedDate":"2024-03-31"},{"lineNumber":381,"author":{"gitId":"alphajae11"},"content":"The App allows CCA members to give direct feedback to Exco members on how they think","lastModifiedDate":"2024-03-31"},{"lineNumber":382,"author":{"gitId":"alphajae11"},"content":"the CCA can be improved. The process is as follows.","lastModifiedDate":"2024-03-31"},{"lineNumber":383,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":384,"author":{"gitId":"alphajae11"},"content":"1. CCA members click on the hyperlink that leads to the Google form, CCA feedback form.","lastModifiedDate":"2024-03-31"},{"lineNumber":385,"author":{"gitId":"alphajae11"},"content":"2. CCA members fill in the feedback form based on the issues that they have.","lastModifiedDate":"2024-03-31"},{"lineNumber":386,"author":{"gitId":"alphajae11"},"content":"3. CCA members submit the feedback form (Google form)","lastModifiedDate":"2024-03-31"},{"lineNumber":387,"author":{"gitId":"alphajae11"},"content":"4. CCA Exco members receive the feedback","lastModifiedDate":"2024-03-31"},{"lineNumber":388,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":389,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":394,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":395,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":396,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":397,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"alphajae11"},"content":"* has a need to manage a significant amount of CCA information (such as contacts, roles and details)","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":411,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"alphajae11"},"content":"**Value proposition**: manage CCA information faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"alphajae11"},"content":"|----------|---------------------------|---------------------------|-----------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"alphajae11"},"content":"| `* * *` | `EXCO Member` | Assign roles to contacts | manage my `CCA Member`s |","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"alphajae11"},"content":"| `* * *` | `CCA Member` | Identify the `EXCO Member`s | Inform them if I am unable to make it for the CCA session |","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"alphajae11"},"content":"| `* * *` | `EXCO Member` | Form groups of contacts | associate who belongs to what CCA |","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"alphajae11"},"content":"| | | | |","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"alphajae11"},"content":"| | | | |","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"alphajae11"},"content":"| | | | |","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"alphajae11"},"content":"(For all use cases below, the **System** is the `CCA Manager` and the **Actor** are the `EXCO Member`s and `CCA Member`s, unless specified otherwise)","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"alphajae11"},"content":"#### UC01 - Assign roles to contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"alphajae11"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"alphajae11"},"content":"2. `CCA Manager` shows a list of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"alphajae11"},"content":"3. User requests to assign role to the contact","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"alphajae11"},"content":"4. `CCA Manager` assigns role to that contact","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"alphajae11"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"alphajae11"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"alphajae11"},"content":"2a. Provided Non-Integer input for `Index of Contacts`.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"alphajae11"},"content":" 2a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"alphajae11"},"content":"3a. Provided Integer that is out of range of index","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"alphajae11"},"content":" 3a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"alphajae11"},"content":"4a. Invalid `Role Name`","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"alphajae11"},"content":"5a. Neglected to input `r` or `c` character prior to name","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"alphajae11"},"content":" 5a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"alphajae11"},"content":"#### UC02 - Form groups of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"alphajae11"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"alphajae11"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"alphajae11"},"content":"2. `CCA Manager` shows a list of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"alphajae11"},"content":"3. User requests to form a group for a list of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"alphajae11"},"content":"4. `CCA Manager` forms a group for a list of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"alphajae11"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":478,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":479,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":482,"author":{"gitId":"alphajae11"},"content":"2a. Provided Non-Integer input for `Index of Contacts`.","lastModifiedDate":"2024-03-04"},{"lineNumber":483,"author":{"gitId":"alphajae11"},"content":" 2a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":484,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":485,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":486,"author":{"gitId":"alphajae11"},"content":"3a. Provided Integer that is out of range of index","lastModifiedDate":"2024-03-04"},{"lineNumber":487,"author":{"gitId":"alphajae11"},"content":" 3a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":488,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"alphajae11"},"content":"4a. Invalid `Group Name`","lastModifiedDate":"2024-03-04"},{"lineNumber":491,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"alphajae11"},"content":"5a. Invalid `Index of Contacts`","lastModifiedDate":"2024-03-04"},{"lineNumber":494,"author":{"gitId":"alphajae11"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":495,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":497,"author":{"gitId":"alphajae11"},"content":"#### UC03 - Identify the EXCO members","lastModifiedDate":"2024-03-04"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"alphajae11"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":502,"author":{"gitId":"alphajae11"},"content":"1. User requests to view the contacts in the EXCO group","lastModifiedDate":"2024-03-04"},{"lineNumber":503,"author":{"gitId":"alphajae11"},"content":"2. AddressBook shows a list of contacts in the EXCO group","lastModifiedDate":"2024-03-04"},{"lineNumber":504,"author":{"gitId":"alphajae11"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":505,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"JuliaPoo"},"content":"1. Compatibility:","lastModifiedDate":"2024-03-07"},{"lineNumber":512,"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":513,"author":{"gitId":"JuliaPoo"},"content":"1. Performance:","lastModifiedDate":"2024-03-07"},{"lineNumber":514,"author":{"gitId":"JuliaPoo"},"content":" 1. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":515,"author":{"gitId":"JuliaPoo"},"content":" 1. GUI should respond/provide feedback within 2s.","lastModifiedDate":"2024-03-07"},{"lineNumber":516,"author":{"gitId":"JuliaPoo"},"content":"1. Usability:","lastModifiedDate":"2024-03-07"},{"lineNumber":517,"author":{"gitId":"JuliaPoo"},"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-07"},{"lineNumber":518,"author":{"gitId":"JuliaPoo"},"content":" 1. A new user should be able to navigate the functionality of the program with ease.","lastModifiedDate":"2024-03-07"},{"lineNumber":519,"author":{"gitId":"JuliaPoo"},"content":" 1. The GUI should be readable with sufficient contrast between UI elements.","lastModifiedDate":"2024-03-07"},{"lineNumber":520,"author":{"gitId":"JuliaPoo"},"content":"1. Process:","lastModifiedDate":"2024-03-07"},{"lineNumber":521,"author":{"gitId":"JuliaPoo"},"content":" 1. The project is expected to adhere to a schedule that delivers a feature set every one month.","lastModifiedDate":"2024-03-07"},{"lineNumber":522,"author":{"gitId":"JuliaPoo"},"content":"1. Constraints:","lastModifiedDate":"2024-03-07"},{"lineNumber":523,"author":{"gitId":"JuliaPoo"},"content":" 1. The project should be implementable in 4 weeks.","lastModifiedDate":"2024-03-07"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":530,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"JuliaPoo"},"content":"* **CCA Manager**: The name used to refer to this project","lastModifiedDate":"2024-03-07"},{"lineNumber":532,"author":{"gitId":"JuliaPoo"},"content":"* **CCA**: Refers to the student organisation which `CCA Manager` intends to simplify the administration of.","lastModifiedDate":"2024-03-07"},{"lineNumber":533,"author":{"gitId":"JuliaPoo"},"content":"* **EXCO Member**: A target user group. Refers to a member that is in-charge of the organisation of a `CCA`.","lastModifiedDate":"2024-03-07"},{"lineNumber":534,"author":{"gitId":"JuliaPoo"},"content":"* **CCA Member**: A target user group. Refers to a member that partakes in the activities of a `CCA`.","lastModifiedDate":"2024-03-07"},{"lineNumber":535,"author":{"gitId":"JuliaPoo"},"content":"* **Contact**: An object that refers to a person. It is the core object of administration in **CCA Manager**.","lastModifiedDate":"2024-03-07"},{"lineNumber":536,"author":{"gitId":"JuliaPoo"},"content":"* **Role**: Part of the metadata of a `contact`. It classifies a `contact` based on their responsibilities in the CCA.","lastModifiedDate":"2024-03-07"},{"lineNumber":537,"author":{"gitId":"JuliaPoo"},"content":"* **Group**: Part of the metadata of a `contact`. It allows `contact`s to be organised in groups the user can manage seperately.","lastModifiedDate":"2024-03-07"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":546,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":547,"author":{"gitId":"Fidget-Spinner"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2024-02-25"},{"lineNumber":548,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"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":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"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":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"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":577,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"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":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"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":582,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","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":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":588,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"JuliaPoo":88,"chuahjiajie":26,"alphajae11":90,"-":321,"Fidget-Spinner":67}},{"path":"docs/Documentation.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Documentation guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Documentation Guide","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"* We use [**MarkBind**](https://markbind.org/) to manage documentation.","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"* The `docs/` folder contains the source files for the documentation website.","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"* To learn how set it up and maintain the project website, follow the guide [[se-edu/guides] Working with Forked MarkBind sites](https://se-education.org/guides/tutorials/markbind-forked-sites.html) for project documentation.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"**Style guidance:**","lastModifiedDate":"2020-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style).","lastModifiedDate":"2020-06-17"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"* Also relevant is the [_se-edu/guides **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html).","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"**Converting to PDF**","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"* See the guide [_se-edu/guides **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html).","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"-":11,"Fidget-Spinner":10}},{"path":"docs/Logging.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Logging guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"# Logging guide","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* We are using `java.util.logging` package for logging.","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"* The `LogsCenter` class is used to manage the logging levels and logging destinations.","lastModifiedDate":"2020-06-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to the specified logging level.","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"* Log messages are output through the console and to a `.log` file.","lastModifiedDate":"2020-06-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* The output logging level can be controlled using the `logLevel` setting in the configuration file (See the [Configuration guide](Configuration.md) section).","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* **When choosing a level for a log message**, follow the conventions given in [_[se-edu/guides] Java: Logging conventions_](https://se-education.org/guides/conventions/java/logging.html).","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"-":9,"Fidget-Spinner":4}},{"path":"docs/SettingUp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Setting up and getting started\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Setting up and getting started","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"**Caution:**","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" 1. Run the `seedu.address.Main` and try a few commands.","lastModifiedDate":"2020-06-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" **Tip:**","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"-":45,"Fidget-Spinner":16}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Testing guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Testing guide","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"**Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" e.g. `seedu.address.storage.StorageManagerTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" e.g. `seedu.address.logic.LogicManagerTest`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":29,"Fidget-Spinner":12}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"User Guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# CCA Manager User Guide","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"\u003c!--","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"- Clear and engaging introduction or welcome note that sets the tone for the UG.","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"- What this User Guide aims to achieve","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"- What this software is about","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" - Clear and engaging introduction or welcome note that sets the tone for the UG.","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" - Identifies the target user or audience and makes appropriate assumptions, such as the level of relatedness, comprehension, and prior knowledge.","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"--\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"Welcome to CCA Manager\u0027s User Guide! CCA Manager is a **contact manager designed to simplify the management of CCAs and enhance your administrative efficiency**, regardless of whether you\u0027re overseeing a sports team, academic club, any other extracurricular activity, or simply a CCA participant. It has a minimal and intuitive GUI where most actions are performed via commands, making it a pleasure to use. If you can type fast, CCA Manager can get your admin tracking done faster than traditional GUI apps.","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"In this user guide, we\u0027ll walk you through the essential steps to harness the full potential of CCA Manager. Whether you\u0027re a CCA Executive Committee Member or simply a CCA participant, our guide will provide you with the knowledge and tools you need to make the most of our app.","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"This user guide does not assume any prior experience with administrative tools or command interfaces and is accessible for beginners and self-contained. However, if you\u0027ve used command interfaces such as those from Telegram, you might find this guide easier to follow. If you have further questions while reading this document or while using our app, visit our [FAQ](#faq). If your question isn\u0027t answered there, feel free to visit our [project repository](https://github.com/AY2324S2-CS2103T-W11-2/tp/issues) and raise an issue.","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"This user guide is split into 4 parts:","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"1. An introduction to what CCA Manager offers,","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"2. A section to set up our app,","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":"3. Beginner-friendly tutorials that introduce CCA Manager through a practical use case, and","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":"4. A comprehensive reference that explains all of CCA Manager\u0027s concepts and features. Feel free to navigate this guide via the sidebar on the right.","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":"\u003cpage-nav-print\u003e\u003ch2\u003eTable of Contents\u003c/h2\u003e\u003c/page-nav-print\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"## Product Introduction","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"\u003c!--","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":"1. Introduction","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" - Problem we\u0027re trying to solve","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" - How the software solves the problem","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" - User-centric statement detailing product information, including product description and an overview of main features.","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" - Links to basic tutorials (concrete use cases)","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":"--\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":"Managing contact information and roles for members of CCAs can be a cumbersome task, often involving disparate tools and platforms. Administrators face challenges in efficiently organizing members, coordinating activities, and communicating effectively within these groups.","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":"For instance, the management of contact information and associated information about a CCA activity often involves the use of the following apps: Discord, Telegram, Google Spreadsheets, Sessionize, etc. This makes maintaining administrative information messy, often involving several steps to accomplish a simple task.","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager endeavors to equip CCAs with tools that streamline administration, freeing up valuable time for more meaningful tasks. We do so by providing a unified solution in the form of the following core features:","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":"1. **Centralized CCA Membership Management**: Easily associate members with their respective CCAs within one app, eliminating the need for multiple platforms.","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":"2. **Efficient Group Actions**: Perform actions on groups of CCA members, such as searching for multiple CCAs at once, and streamlining administrative tasks.","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":"3. **Role Assignment**: Assign roles to CCA members, enhancing organization and clarity within the group.","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":"To get started with CCA Manager and explore its features further, check out our [Installation Guide](#installation-guide) and our [Tutorials](#tutorials), where we\u0027ll go through some concrete use cases for our app.","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":"## Installation Guide","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":"**This Installation guide targets an audience who has knowledge of how to install programs and how to use a command line/terminal.**","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":"\u003c!-- TODO: Make the above disclaimer redundant --\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":"### Steps","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":"1. Download the latest `ccamanager.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":"1. On **Linux** and **macOS**:","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":" 1. Open a command terminal.","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" 1. Type `cd \u003cfolder\u003e` into the terminal and press `enter`, where you replace `\u003cfolder\u003e` with the path to the folder where you\u0027ve placed `ccamanager.jar`. This navigates the terminal to the correct folder.","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":" 1. Type `java -jar ccamanager.jar` into the terminal and press `enter` to run the application. \u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":"1. On **Windows**:","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" 1. Double click the `ccamanager.jar` file to run it.","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":"\u003c!--TODO--\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":"**A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.**\u003cbr\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":"For more details on the commands, visit our [Tutorials](#tutorials) or refer to our [Reference](#reference) below for details of each command.","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":"## Tutorials","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":"Confused on where to get started? Don’t fret, in this section we’ll outline how to use CCA Manager to its maximum effect with a few use case scenarios.","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":"First off, CCA Manager\u0027s interface consists of the following main components:","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"JuliaPoo"},"content":"\u003c!-- TODO regen this image --\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"JuliaPoo"},"content":"![CommandLine](images/CommandLine.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":"1. **Command Box**: A small text box where you type the commands.","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":"3. **Output Box**: Displays any errors that might have occurred, or other information about the most recent command executed.","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":"2. **Results Box**: Displays the results of the command.","lastModifiedDate":"2024-03-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":"All of CCA Manager\u0027s functionality is accessed via commands. This includes both adding and editing contacts, as well as accessing existing contacts.","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":"### Upon Booting Up","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":"When you first boot up the app, the app will contain some example contacts for you to get a feel of using CCA Manager\u0027s functionalities.","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":"To run a command, type the command in the **Command Box** and press Enter to execute it. For example, typing **`help`** and pressing Enter will open the help window.","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":"Here are some other example commands you can try:","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" * `list`: [Lists all contacts.](#listing-all-persons--list)","lastModifiedDate":"2024-03-27"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" * `delete 3`: [Deletes the 3rd contact shown in the currently displayed list.](#deleting-a-person--delete)","lastModifiedDate":"2024-03-27"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" * `exit`: [Exits the app.](#exiting-the-program--exit)","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" * `filter NUS Cycling`: [Filter contacts by CCA.](#filter-by-cca)","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" \u003c!--* `add`: [Adds a contact/CCA group to the CCA Manager](#add-contacts-with-cca-labels)--\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" \u003c!--* `edit`: [Edit details of the contacts.](#edit-the-details-of-your-contacts)--\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"JuliaPoo"},"content":"Now you can proceed to the tutorials for more information on the actual commands.","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"JuliaPoo"},"content":"### General Format of the Commands","lastModifiedDate":"2024-03-27"},{"lineNumber":119,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"JuliaPoo"},"content":"Before we start on the tutorials for each command, you should understand the command format of CCA Manager.","lastModifiedDate":"2024-03-27"},{"lineNumber":121,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"JuliaPoo"},"content":"All commands in CCA Manager follow the following format:","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"JuliaPoo"},"content":"```","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"JuliaPoo"},"content":"ACTION PRIMARY_VALUE ARGUMENT_NAME/ARGUMENT_VALUE","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":"```","lastModifiedDate":"2024-03-27"},{"lineNumber":127,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":128,"author":{"gitId":"JuliaPoo"},"content":"`ACTION`: The name of the action you want to perform","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"JuliaPoo"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"JuliaPoo"},"content":"- E.g., For the command `find jason`, `find` is the `ACTION`.","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"JuliaPoo"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":"`PRIMARY_VALUE`: The value related to the action.","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"JuliaPoo"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":"- This aids in specifying exactly what you want from the action.","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":"- E.g., For the command `find jason`, `jason` is the `PRIMARY_VALUE`.","lastModifiedDate":"2024-03-27"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":"- Some commands might not have this field.","lastModifiedDate":"2024-03-27"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":141,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":142,"author":{"gitId":"JuliaPoo"},"content":"`ARGUMENT_NAME/ARGUMENT_VALUE`: The name and its associated value that\u0027s related to the command.","lastModifiedDate":"2024-03-27"},{"lineNumber":143,"author":{"gitId":"JuliaPoo"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":145,"author":{"gitId":"JuliaPoo"},"content":"- Some commands require the user to specify additional values. Each of these additional values has an `ARGUMENT_NAME` associated to it.","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"JuliaPoo"},"content":"- `ARGUMENT_NAME` is usually one character long.","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"JuliaPoo"},"content":" - E.g., For the command `add n/Brian p/87601212 e/test@gmail.com`:","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"JuliaPoo"},"content":" - `n` is the `ARGUMENT_NAME` of the `ARGUMENT_VALUE` `Brian`.","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"JuliaPoo"},"content":" - `p` is the `ARGUMENT_NAME` of the `ARGUMENT_VALUE` `87601212`.","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"JuliaPoo"},"content":" - `e` is the `ARGUMENT_NAME` of the `ARGUMENT_VALUE` `test@gmail.com`.","lastModifiedDate":"2024-03-27"},{"lineNumber":151,"author":{"gitId":"JuliaPoo"},"content":"- Some commands allow multiple `ARGUMENT_VALUE`s associated with the same `ARGUMENT_NAME`","lastModifiedDate":"2024-03-27"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":" - E.g., For the command `edit 2 r/Treasurer r/EXCO Member`","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":" - The values `Treasurer` and `EXCO Member` are associated with the `ARGUMENT_NAME` `r`.","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"JuliaPoo"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":156,"author":{"gitId":"JuliaPoo"},"content":"Now we can move on to some command commands. For a full list of commands available for CCA Manager, refer to our [Reference](#reference).","lastModifiedDate":"2024-03-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"chuahjiajie"},"content":"### Clear Contacts","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":160,"author":{"gitId":"JuliaPoo"},"content":"The first thing you\u0027d probably want to do is to clear the sample data, as it is likely of no relevance to you.","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":"You can do so using the clear command as follows:","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" ![clear command](images/UG-Basics/clear-command.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":"And just like that, the address book will be cleared:","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" ![clear output](images/UG-Basics/clear-output.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":"### Add Contacts with CCA Labels","lastModifiedDate":"2024-03-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":"Now that you have a clean address book in CCA Manager, you can start adding your own contacts. An example of the command can be seen below:","lastModifiedDate":"2024-03-25"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" ![add-command-1](images/UG-Basics/add-command-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":178,"author":{"gitId":"chuahjiajie"},"content":" ![add-output-1](images/UG-Basics/add-output-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":179,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":180,"author":{"gitId":"chuahjiajie"},"content":"If you want to, you can even specify the CCAs and Roles of the person being added as shown below:","lastModifiedDate":"2024-03-25"},{"lineNumber":181,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":182,"author":{"gitId":"chuahjiajie"},"content":" ![add-command-2](images/UG-Basics/add-command-2.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":184,"author":{"gitId":"chuahjiajie"},"content":"Notice how there is now an indicated role and CCA:","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"chuahjiajie"},"content":" ![add-output-2](images/UG-Basics/add-output-2.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":189,"author":{"gitId":"chuahjiajie"},"content":"### Add Roles in the Future","lastModifiedDate":"2024-03-25"},{"lineNumber":190,"author":{"gitId":"chuahjiajie"},"content":"Forgot to add the roles initially, or need to add the roles later on because they haven’t been decided yet? Don’t worry the “assign” feature has got you covered simply add the role using the following command:","lastModifiedDate":"2024-03-25"},{"lineNumber":191,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":192,"author":{"gitId":"chuahjiajie"},"content":"In this example we will be adding a role for John who is at index 1:","lastModifiedDate":"2024-03-25"},{"lineNumber":193,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":194,"author":{"gitId":"chuahjiajie"},"content":" ![assign-command](images/UG-Basics/assign-command.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":195,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":196,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":197,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":198,"author":{"gitId":"chuahjiajie"},"content":" ![assign-output](images/UG-Basics/assign-output.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":199,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":200,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":201,"author":{"gitId":"chuahjiajie"},"content":"### Filter by CCA","lastModifiedDate":"2024-03-25"},{"lineNumber":202,"author":{"gitId":"chuahjiajie"},"content":"In reality, you would have access to the contacts of a vast array of people, many from different CCAs and navigating the whole list will certainly be overwhelming. If you’d like to identify only those of a specific CCA you can!","lastModifiedDate":"2024-03-25"},{"lineNumber":203,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":204,"author":{"gitId":"chuahjiajie"},"content":"Want to filter those from NUS Cycling? Just type the command:","lastModifiedDate":"2024-03-25"},{"lineNumber":205,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":206,"author":{"gitId":"chuahjiajie"},"content":" ![filter-command-1](images/UG-Basics/filter-command-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":207,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":208,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":209,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":210,"author":{"gitId":"chuahjiajie"},"content":" ![filter-output-1](images/UG-Basics/filter-output-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":211,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":212,"author":{"gitId":"chuahjiajie"},"content":"Likewise for another CCA – NUS Origami:","lastModifiedDate":"2024-03-25"},{"lineNumber":213,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":214,"author":{"gitId":"chuahjiajie"},"content":" ![filter-command-1](images/UG-Basics/filter-command-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":215,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":216,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":217,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":218,"author":{"gitId":"chuahjiajie"},"content":" ![filter-output-1](images/UG-Basics/filter-output-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":219,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":220,"author":{"gitId":"chuahjiajie"},"content":"### Edit the Details of your Contacts","lastModifiedDate":"2024-03-25"},{"lineNumber":221,"author":{"gitId":"chuahjiajie"},"content":"Have the contact details of some members changed, or maybe you just forgot to add the CCA of the person you were adding. Don’t need to get frustrated, you don’t have to add the person from scratch. You can edit any of the details of any of the members at any time, using the “edit” feature.","lastModifiedDate":"2024-03-25"},{"lineNumber":222,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":223,"author":{"gitId":"chuahjiajie"},"content":"Here’s an example for reference, where John from NUS Origami would not only like to change CCAs but also moved from Kent Ridge to UTown:","lastModifiedDate":"2024-03-25"},{"lineNumber":224,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":225,"author":{"gitId":"chuahjiajie"},"content":" ![edit-command](images/UG-Basics/edit-command.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":226,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":227,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":228,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":229,"author":{"gitId":"chuahjiajie"},"content":" ![edit-output](images/UG-Basics/edit-output.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":230,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":231,"author":{"gitId":"JuliaPoo"},"content":"### Delete a Contact","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"chuahjiajie"},"content":"Has a member quit the CCA completely. Don’t need to waste space in your address book and clutter it up. You can simply delete them from the address book with this simple command.","lastModifiedDate":"2024-03-25"},{"lineNumber":233,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":234,"author":{"gitId":"chuahjiajie"},"content":"Let’s say Mary Jane at index 2 has quit NUS Origami. To remove her simply use the following command:","lastModifiedDate":"2024-03-25"},{"lineNumber":235,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":236,"author":{"gitId":"chuahjiajie"},"content":" ![delete-command](images/UG-Basics/delete-command.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":237,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":238,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":239,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":240,"author":{"gitId":"chuahjiajie"},"content":" ![delete-output](images/UG-Basics/delete-output.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":242,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"JuliaPoo"},"content":"## Reference","lastModifiedDate":"2024-03-27"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"LifHoshi"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"LifHoshi"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":251,"author":{"gitId":"JuliaPoo"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter that can be used as `add n/John Doe`.","lastModifiedDate":"2024-03-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":254,"author":{"gitId":"JuliaPoo"},"content":" e.g `n/NAME [r/ROLE]` can be used as `n/John Doe r/friend` or as `n/John Doe`.","lastModifiedDate":"2024-03-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":256,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":257,"author":{"gitId":"JuliaPoo"},"content":" e.g. `[r/ROLE]…​` can be used as ` ` (i.e. 0 times), `r/friend`, `r/friend r/family` etc.","lastModifiedDate":"2024-03-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":259,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":260,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2024-03-24"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":262,"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":"2024-03-24"},{"lineNumber":263,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2024-03-24"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":265,"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":"2024-03-24"},{"lineNumber":266,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"JuliaPoo"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2024-03-24"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2024-03-24"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"Fidget-Spinner"},"content":"Adds a person to the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"JuliaPoo"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/ROLE] [c/CCA]…​`","lastModifiedDate":"2024-03-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"LifHoshi"},"content":"_Adds a CCA group to the CCA manager._","lastModifiedDate":"2024-03-21"},{"lineNumber":284,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":285,"author":{"gitId":"LifHoshi"},"content":"**Format**: `add c/CCA GROUP`","lastModifiedDate":"2024-03-21"},{"lineNumber":286,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":287,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":288,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":289,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":290,"author":{"gitId":"JuliaPoo"},"content":"**Tip:** A person can have any number of roles and ccas (including 0)","lastModifiedDate":"2024-03-29"},{"lineNumber":291,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":294,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"JuliaPoo"},"content":"* `add n/Betsy Crowe r/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 r/criminal`","lastModifiedDate":"2024-03-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"Fidget-Spinner"},"content":"Shows a list of all persons in the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2024-03-24"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"Fidget-Spinner"},"content":"Edits an existing person in the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"JuliaPoo"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/ROLE] [c/CCA]...`","lastModifiedDate":"2024-03-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"JuliaPoo"},"content":"* When editing roles, the existing roles of the person will be removed i.e., the adding of roles is not cumulative.","lastModifiedDate":"2024-03-29"},{"lineNumber":313,"author":{"gitId":"JuliaPoo"},"content":"* You can remove all the person’s roles by typing `r/` without","lastModifiedDate":"2024-03-29"},{"lineNumber":314,"author":{"gitId":"JuliaPoo"},"content":" specifying any roles after it.","lastModifiedDate":"2024-03-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":317,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"JuliaPoo"},"content":"* `edit 2 n/Betsy Crower r/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing roles.","lastModifiedDate":"2024-03-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"LifHoshi"},"content":"**[Images with example is TBD]**","lastModifiedDate":"2024-03-21"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":322,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2024-03-24"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2024-03-24"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-24"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":336,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2024-03-24"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"Fidget-Spinner"},"content":"Deletes the specified person from the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-03-24"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"Fidget-Spinner"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the CCA Manager.","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-03-24"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":356,"author":{"gitId":"Fidget-Spinner"},"content":"Clears all entries from the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":358,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2024-03-24"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":360,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2024-03-24"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2024-03-24"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2024-03-24"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"Fidget-Spinner"},"content":"CCA Manager data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":372,"author":{"gitId":"Fidget-Spinner"},"content":"CCA Manager data are saved automatically as a JSON file `[JAR file location]/data/\u003cTODO\u003e.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":374,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":376,"author":{"gitId":"Fidget-Spinner"},"content":"**Caution:**","lastModifiedDate":"2024-03-24"},{"lineNumber":377,"author":{"gitId":"Fidget-Spinner"},"content":"If your changes to the data file makes its format invalid, CCA Manager 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-24"},{"lineNumber":378,"author":{"gitId":"Fidget-Spinner"},"content":"Furthermore, certain edits can cause the CCA Manager 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-07"},{"lineNumber":379,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":381,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2024-03-24"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":383,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2024-03-24"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":385,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"JuliaPoo"},"content":"**A**: Install the app on the other computer and overwrite the empty data file it creates with the file that contains the data of your previous CCA Manager home folder.","lastModifiedDate":"2024-03-25"},{"lineNumber":391,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":392,"author":{"gitId":"JuliaPoo"},"content":"**Q**: My administrative information is sensitive and should not be made public. Is it safe to use CCA Manager for my purposes? \u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":393,"author":{"gitId":"JuliaPoo"},"content":"**A**: Yes. CCA Manager runs locally on your machine and does not connect to the internet nor does it have any functions to communicate outside of your computer. Your data will never leave your machine unless you want it to.","lastModifiedDate":"2024-03-25"},{"lineNumber":394,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":395,"author":{"gitId":"JuliaPoo"},"content":"**Q**: Is there a cost associated with using CCA Manager? \u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":396,"author":{"gitId":"JuliaPoo"},"content":"**A**: None! CCA Manager is free to use with no strings attached.","lastModifiedDate":"2024-03-25"},{"lineNumber":397,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":398,"author":{"gitId":"JuliaPoo"},"content":"**Q**: What should I do if I encounter technical issues with CCA Manager? \u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":399,"author":{"gitId":"JuliaPoo"},"content":"**A**: You can visit the [Common Issues](#common-issues) section if your problem is common. Otherwise, feel free to [open an issue](https://github.com/AY2324S2-CS2103T-W11-2/tp/issues). You would have to create a new [Github](https://github.com/) account to do so. This will allow us to maintain constant communication with you until the issue is addressed.","lastModifiedDate":"2024-03-25"},{"lineNumber":400,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":401,"author":{"gitId":"JuliaPoo"},"content":"**Q**: How can I provide feedback or suggest improvements for CCA Manager? \u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":402,"author":{"gitId":"JuliaPoo"},"content":"**A**: Feel free to [open an issue](https://github.com/AY2324S2-CS2103T-W11-2/tp/issues), your feedback is very valuable to us. You would have to create a new [Github](https://github.com/) account to do so. This will allow us to maintain constant communication with you until the issue is addressed.","lastModifiedDate":"2024-03-25"},{"lineNumber":403,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":404,"author":{"gitId":"JuliaPoo"},"content":"## Common Issues","lastModifiedDate":"2024-03-25"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":410,"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":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":412,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":414,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"LifHoshi"},"content":"-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-21"},{"lineNumber":418,"author":{"gitId":"JuliaPoo"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/ROLE] [c/CCA]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 r/friend r/colleague c/CCA Cycling`","lastModifiedDate":"2024-03-29"},{"lineNumber":419,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"JuliaPoo"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [r/ROLE] [c/CCA]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-03-29"},{"lineNumber":422,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"Fidget-Spinner"},"content":"**Filter** | `filter CCA1, CCA2, ...` e.g. `filter NUS Cycling`","lastModifiedDate":"2024-03-24"},{"lineNumber":425,"author":{"gitId":"JuliaPoo"},"content":"**Assign** | `assign INDEX r/ROLE` e.g. `assign 2 r/ Member` or `assign 2 r/Member`","lastModifiedDate":"2024-03-29"},{"lineNumber":426,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"JuliaPoo":142,"chuahjiajie":75,"alphajae11":5,"-":159,"Fidget-Spinner":29,"LifHoshi":16}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eCCA Manager\u003c/a\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/form\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/header\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":"* Tutorials","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/nav\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" {{ content }}","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/nav\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cfooter\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/footer\u003e","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"Fidget-Spinner":67}},{"path":"docs/_markbind/variables.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cvariable name\u003d\"example\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"To inject this HTML segment in your markbind files, use {{ example }} where you want to place it.","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"More generally, surround the segment\u0027s id with double curly braces.","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/variable\u003e","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"Fidget-Spinner":4}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"AddressBook *-right-\u003e \"1\" UniqueRoleList","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"AddressBook *-right-\u003e \"1\" UniqueCcaList","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"UniqueRoleList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"UniqueRoleList -right-\u003e \"*\" Role","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"UniqueCcaList -right-\u003e \"*\" Cca","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"Person -up-\u003e \"*\" Role","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"Person -up-\u003e \"*\" Cca","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"JuliaPoo":7,"-":16}},{"path":"docs/diagrams/HalfBetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"!include style.puml","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"AddressBook *-right-\u003e \"1\" UniqueCcaList","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"UniqueCcaList -right-\u003e \"*\" Cca","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"Person -up-\u003e \"*\" Cca","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e Name","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e Phone","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e Email","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e Address","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e \"*\" Role","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":20}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"Class UniqueCcaList","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"Class Role","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"Class Cca","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":"AddressBook *--\u003e \"1\" UniqueCcaList","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":"UniqueCcaList *--\u003e \"*\" Cca","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e \"*\" Role","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"Person --\u003e \"*\" Cca","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":"Phone -[hidden]right-\u003e Cca","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":"Cca -[hidden]right-\u003e Address","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"JuliaPoo":7,"-":51,"Fidget-Spinner":2}},{"path":"docs/diagrams/NewUiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"!include style.puml","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Class UiManager","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"Class MainWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"Class HelpWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"Class ResultDisplay","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"Class DisplayObjectListPanel","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"Class PersonCard","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"Class CcaCard","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"Class StatusBarFooter","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"Class CommandBox","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"MainWindow *-down-\u003e \"1\" DisplayObjectListPanel","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":"DisplayObjectListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":"DisplayObjectListPanel -down-\u003e \"0..1\" CcaCard","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":"DisplayObjectListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"CcaCard --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":"CcaCard ..\u003e Model","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":"DisplayObjectListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":64}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"skinparam arrowThickness 1.2","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"Class JsonAdaptedRole","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"Class JsonAdaptedCca","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedRole","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedCca","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"JuliaPoo":2,"chuahjiajie":3,"-":40}},{"path":"docs/diagrams/UndoRedoState0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title Initial state","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"hide State2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State1","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"delete 5\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":20,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"add n/David\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState3.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"undo\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState4.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"list\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState5.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"clear\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm3:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":"note right on link: State ca2 deleted.","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":4}},{"path":"docs/diagrams/UndoRedoState6.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"@startuml","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"!include style.puml","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"title After command \"filter\"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm3:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" class State4 as \"\u003cu\u003ecm4:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":"Pointer -up-\u003e State4","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":"@end","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"LifHoshi":22}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"# AddressBook Level-3","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"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":9,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","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":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":17,"Fidget-Spinner":4}},{"path":"docs/stylesheets/main.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"mark {","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" background-color: #ff0;","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 5px;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" padding-top: 0;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":" padding-bottom: 0;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":".indented {","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":" padding-left: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":".theme-card img {","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":" width: 100%;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"/* Scrollbar */","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll::-webkit-scrollbar {","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":" width: 5px;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll::-webkit-scrollbar-thumb {","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" background: #808080;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll::-webkit-scrollbar-track {","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" background: transparent;","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll-blue::-webkit-scrollbar {","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" width: 5px;","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll-blue::-webkit-scrollbar-thumb {","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" background: #00b0ef;","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll-blue::-webkit-scrollbar-track {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" background: transparent;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":"/* Layout containers */","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":"#flex-body {","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" display: flex;","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" flex: 1;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" align-items: start;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":"#content-wrapper {","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" flex: 1;","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" margin: 0 auto;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" min-width: 0;","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" max-width: 1000px;","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" overflow-x: auto;","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" padding: 0.8rem 20px 0 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" transition: 0.4s;","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" -webkit-transition: 0.4s;","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":"#site-nav,","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":"#page-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" display: flex;","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":" flex-direction: column;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":" position: sticky;","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" top: var(--sticky-header-height);","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" flex: 0 0 auto;","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" max-width: 300px;","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" max-height: calc(100vh - var(--sticky-header-height));","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" width: 300px;","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":"#site-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" border-right: 1px solid lightgrey;","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" padding-bottom: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" z-index: 999;","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":".site-nav-top {","lastModifiedDate":"2024-02-25"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" margin: 0.8rem 0;","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" padding: 0 12px 12px 12px;","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":".nav-component {","lastModifiedDate":"2024-02-25"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":" overflow-y: auto;","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":"#page-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":" border-left: 1px solid lightgrey;","lastModifiedDate":"2024-02-25"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":"@media screen and (max-width: 1299.98px) {","lastModifiedDate":"2024-02-25"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" #page-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":101,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":"/* Bootstrap medium(md) responsive breakpoint */","lastModifiedDate":"2024-02-25"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":"@media screen and (max-width: 991.98px) {","lastModifiedDate":"2024-02-25"},{"lineNumber":104,"author":{"gitId":"Fidget-Spinner"},"content":" #site-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":105,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":106,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":107,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":108,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":109,"author":{"gitId":"Fidget-Spinner"},"content":"/* Bootstrap small(sm) responsive breakpoint */","lastModifiedDate":"2024-02-25"},{"lineNumber":110,"author":{"gitId":"Fidget-Spinner"},"content":"@media (max-width: 767.98px) {","lastModifiedDate":"2024-02-25"},{"lineNumber":111,"author":{"gitId":"Fidget-Spinner"},"content":" .indented {","lastModifiedDate":"2024-02-25"},{"lineNumber":112,"author":{"gitId":"Fidget-Spinner"},"content":" padding-left: 10px;","lastModifiedDate":"2024-02-25"},{"lineNumber":113,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"Fidget-Spinner"},"content":" #content-wrapper {","lastModifiedDate":"2024-02-25"},{"lineNumber":116,"author":{"gitId":"Fidget-Spinner"},"content":" padding: 0 10px;","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"Fidget-Spinner"},"content":"/* Bootstrap extra small(xs) responsive breakpoint */","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"Fidget-Spinner"},"content":"@media screen and (max-width: 575.98px) {","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"Fidget-Spinner"},"content":" #site-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":126,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":127,"author":{"gitId":"Fidget-Spinner"},"content":"/* Hide site navigation when printing */","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"Fidget-Spinner"},"content":"@media print {","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"Fidget-Spinner"},"content":" #site-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":130,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"Fidget-Spinner"},"content":" #page-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":137,"author":{"gitId":"Fidget-Spinner"},"content":" /* Reduce font size when printing */","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"Fidget-Spinner"},"content":" h1 {","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 1.2rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"Fidget-Spinner"},"content":" h2 {","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 1.0rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"Fidget-Spinner"},"content":" h3 {","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.9rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":146,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"Fidget-Spinner"},"content":" h4 {","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.8rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"Fidget-Spinner"},"content":" h5 {","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.7rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"Fidget-Spinner"},"content":" body {","lastModifiedDate":"2024-02-25"},{"lineNumber":154,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.65rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":155,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":156,"author":{"gitId":"Fidget-Spinner"},"content":" .btn {","lastModifiedDate":"2024-02-25"},{"lineNumber":157,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.65rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":158,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":159,"author":{"gitId":"Fidget-Spinner"},"content":" img {","lastModifiedDate":"2024-02-25"},{"lineNumber":160,"author":{"gitId":"Fidget-Spinner"},"content":" zoom: 0.8; /* might not work on some browsers */","lastModifiedDate":"2024-02-25"},{"lineNumber":161,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":162,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":163,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":164,"author":{"gitId":"Fidget-Spinner"},"content":"h2,","lastModifiedDate":"2024-02-25"},{"lineNumber":165,"author":{"gitId":"Fidget-Spinner"},"content":"h3,","lastModifiedDate":"2024-02-25"},{"lineNumber":166,"author":{"gitId":"Fidget-Spinner"},"content":"h4,","lastModifiedDate":"2024-02-25"},{"lineNumber":167,"author":{"gitId":"Fidget-Spinner"},"content":"h5,","lastModifiedDate":"2024-02-25"},{"lineNumber":168,"author":{"gitId":"Fidget-Spinner"},"content":"h6 {","lastModifiedDate":"2024-02-25"},{"lineNumber":169,"author":{"gitId":"Fidget-Spinner"},"content":" color: #e46c0a;","lastModifiedDate":"2024-02-25"},{"lineNumber":170,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":172,"author":{"gitId":"JuliaPoo"},"content":"p {","lastModifiedDate":"2024-03-27"},{"lineNumber":173,"author":{"gitId":"JuliaPoo"},"content":" margin-bottom: 1em;","lastModifiedDate":"2024-03-27"},{"lineNumber":174,"author":{"gitId":"JuliaPoo"},"content":" margin-top: 1em;","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":176,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":177,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e a {","lastModifiedDate":"2024-03-27"},{"lineNumber":178,"author":{"gitId":"JuliaPoo"},"content":" font-weight: bold;","lastModifiedDate":"2024-03-27"},{"lineNumber":179,"author":{"gitId":"JuliaPoo"},"content":" font-size: 1.5em;","lastModifiedDate":"2024-03-27"},{"lineNumber":180,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":181,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":182,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e a:after {","lastModifiedDate":"2024-03-27"},{"lineNumber":183,"author":{"gitId":"JuliaPoo"},"content":" content: \": \"","lastModifiedDate":"2024-03-27"},{"lineNumber":184,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":185,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":186,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav {","lastModifiedDate":"2024-03-27"},{"lineNumber":187,"author":{"gitId":"JuliaPoo"},"content":" margin: 2.5%;","lastModifiedDate":"2024-03-27"},{"lineNumber":188,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":189,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":190,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav \u003e a {","lastModifiedDate":"2024-03-27"},{"lineNumber":191,"author":{"gitId":"JuliaPoo"},"content":" font-weight: bold;","lastModifiedDate":"2024-03-27"},{"lineNumber":192,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":193,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":194,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav \u003e nav {","lastModifiedDate":"2024-03-27"},{"lineNumber":195,"author":{"gitId":"JuliaPoo"},"content":" flex-direction: row !important;","lastModifiedDate":"2024-03-27"},{"lineNumber":196,"author":{"gitId":"JuliaPoo"},"content":" flex-wrap: wrap;","lastModifiedDate":"2024-03-27"},{"lineNumber":197,"author":{"gitId":"JuliaPoo"},"content":" align-content: flex-start;","lastModifiedDate":"2024-03-27"},{"lineNumber":198,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav \u003e nav \u003e a {","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"JuliaPoo"},"content":" align-self: flex-start;","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"JuliaPoo"},"content":" padding-left: 0.3em;","lastModifiedDate":"2024-03-27"},{"lineNumber":203,"author":{"gitId":"JuliaPoo"},"content":" padding-right: 0em;","lastModifiedDate":"2024-03-27"},{"lineNumber":204,"author":{"gitId":"JuliaPoo"},"content":" flex-shrink: 3;","lastModifiedDate":"2024-03-27"},{"lineNumber":205,"author":{"gitId":"JuliaPoo"},"content":" display: inline-block;","lastModifiedDate":"2024-03-27"},{"lineNumber":206,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":207,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav \u003e nav \u003e a:not(:last-child):after {","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"JuliaPoo"},"content":" content: \" | \";","lastModifiedDate":"2024-03-27"},{"lineNumber":210,"author":{"gitId":"JuliaPoo"},"content":" color: black;","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"JuliaPoo"},"content":" font-weight: bold;","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JuliaPoo":42,"Fidget-Spinner":170}},{"path":"docs/team/alphajae11.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Jae Geun\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/team/chuahjiajie.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Jia Jie\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/team/fidget-spinner.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Ken Jin\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/team/johndoe.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":44,"Fidget-Spinner":2}},{"path":"docs/team/juliapoo.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Jule\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/team/lifhoshi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Lifu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"Fidget-Spinner"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2024-02-25"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"Fidget-Spinner"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2024-02-25"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"Fidget-Spinner"},"content":"You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-02-25"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"-":387,"Fidget-Spinner":15}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Tutorial: Removing Fields","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"success\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.person.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":104,"Fidget-Spinner":11}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2024-02-25"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","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":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","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":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":174,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":175,"author":{"gitId":"Fidget-Spinner"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2024-02-25"},{"lineNumber":176,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of persons is being tracked.","lastModifiedDate":"2021-07-31"},{"lineNumber":214,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":218,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":222,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":228,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":229,"author":{"gitId":"Fidget-Spinner"},"content":" **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2024-02-25"},{"lineNumber":230,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":255,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":256,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"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":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":272,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":276,"Fidget-Spinner":35}},{"path":"src/main/java/seedu/address/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" private static final String LOG_FILE \u003d \"ccamanager.log\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":105,"Fidget-Spinner":1}},{"path":"src/main/java/seedu/address/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Utility methods related to Collections","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" public static boolean isNotNull(Object... items) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).noneMatch(Objects::isNull);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alphajae11":4,"-":35}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" /** Returns an unmodifiable view of the filtered list of Cca */","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cCca\u003e getFilteredCcaList();","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"JuliaPoo":4,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getFilteredCcaList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" return model.getFilteredCcaList();","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"JuliaPoo":6,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" .append(\"; Roles: \");","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" person.getRoles().forEach(builder::append);","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" builder.append(\"; CCA: \");","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" person.getCcas().forEach(builder::append);","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" builder.append(\"; Amount: \")","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" .append(person.getAmount());","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" builder.append(\"; Attendance: \")","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" .append(person.getAtt())","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" .append(\"/\")","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" .append(person.getSess());","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" builder.append(\"; Metadata: \")","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":" .append(person.getMetadata());","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"JuliaPoo":4,"chuahjiajie":4,"alphajae11":2,"-":49,"LifHoshi":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE]...\\n\"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" + PREFIX_ROLE + \"friends \"","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" + PREFIX_ROLE + \"owesMoney \"","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" + PREFIX_METADATA + \"I have food allegeries - Egg and Peanuts \"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" + PREFIX_CCA + \"NUS Cycling\";","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"JuliaPoo":4,"chuahjiajie":2,"alphajae11":2,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/AssignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" * Assigns role to the existing person in the CCA Manager","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":"public class AssignCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Assigns the details of the person identified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE]...\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" + \"Example: \" + COMMAND_WORD + \" 2 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" + PREFIX_ROLE + \"Head \";","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_ASSIGN_PERSON_SUCCESS \u003d \"Assigned Person: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_NOT_ASSIGNED \u003d \"Role should be provided here.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alphajae11"},"content":" private final Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"alphajae11"},"content":" private final AssignCommand.AssignPersonDescriptor assignPersonDescriptor;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" * @param index of the person to assign","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":" * @param assignPersonDescriptor details of the role to assign the person with","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"alphajae11"},"content":" public AssignCommand(Index index, AssignCommand.AssignPersonDescriptor assignPersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"alphajae11"},"content":" requireNonNull(assignPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alphajae11"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alphajae11"},"content":" this.assignPersonDescriptor \u003d new AssignCommand.AssignPersonDescriptor(assignPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"alphajae11"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"alphajae11"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"alphajae11"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"alphajae11"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"alphajae11"},"content":" Person personToAssign \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"alphajae11"},"content":" Person assignedPerson \u003d createAssignedPerson(personToAssign, assignPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"alphajae11"},"content":" if (!personToAssign.isSamePerson(assignedPerson) \u0026\u0026 model.hasPerson(assignedPerson)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"alphajae11"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"alphajae11"},"content":" model.setPerson(personToAssign, assignedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"alphajae11"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"alphajae11"},"content":" return new CommandResult(String.format(MESSAGE_ASSIGN_PERSON_SUCCESS, Messages.format(assignedPerson)));","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"alphajae11"},"content":" * Creates and returns an assigned person with details of the role","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"alphajae11"},"content":" * @param personToAssign person who will be assigned","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"alphajae11"},"content":" * @param assignPersonDescriptor details of the role to assign the person with","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"alphajae11"},"content":" * @return Person who is assigned with a role","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"alphajae11"},"content":" private static Person createAssignedPerson(Person personToAssign,","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor assignPersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"alphajae11"},"content":" assert personToAssign !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"alphajae11"},"content":" Name updatedName \u003d personToAssign.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"alphajae11"},"content":" Phone updatedPhone \u003d personToAssign.getPhone();","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"alphajae11"},"content":" Email updatedEmail \u003d personToAssign.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"alphajae11"},"content":" Address updatedAddress \u003d personToAssign.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"alphajae11"},"content":" Set\u003cCca\u003e updatedCcas \u003d personToAssign.getCcas();","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e updatedRoles \u003d assignPersonDescriptor.getRole().orElse(personToAssign.getRoles());","lastModifiedDate":"2024-03-29"},{"lineNumber":104,"author":{"gitId":"LifHoshi"},"content":" Amount updatedAmount \u003d personToAssign.getAmount();","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" Attendance updatedAttendance \u003d personToAssign.getAtt();","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" Sessions updatedSessions \u003d personToAssign.getSess();","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"alphajae11"},"content":" Metadata updatedMetadata \u003d personToAssign.getMetadata();","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"LifHoshi"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"chuahjiajie"},"content":" updatedRoles, updatedCcas, updatedAmount, updatedAttendance, updatedSessions, updatedMetadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"alphajae11"},"content":" * Stores the details of the role to assign the person with.","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"alphajae11"},"content":" public static class AssignPersonDescriptor {","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"JuliaPoo"},"content":" private Set\u003cRole\u003e role;","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptor() {}","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"alphajae11"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"JuliaPoo"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-03-29"},{"lineNumber":124,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptor(AssignCommand.AssignPersonDescriptor toCopy) {","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"alphajae11"},"content":" setRole(toCopy.role);","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"alphajae11"},"content":" * Returns true if at least all fields are edited.","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"alphajae11"},"content":" public boolean isAnyFieldNotEdited() {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"alphajae11"},"content":" return CollectionUtil.isNotNull(role);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" public void setRole(Set\u003cRole\u003e role) {","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"alphajae11"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" public Optional\u003cSet\u003cRole\u003e\u003e getRole() {","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"alphajae11"},"content":" return (role !\u003d null) ? Optional.of(Collections.unmodifiableSet(role)) : Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"alphajae11"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"alphajae11"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"alphajae11"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"alphajae11"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"alphajae11"},"content":" if (!(other instanceof AssignCommand.AssignPersonDescriptor)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"alphajae11"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor otherAssignDescriptor \u003d (AssignCommand.AssignPersonDescriptor) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"alphajae11"},"content":" return Objects.equals(role, otherAssignDescriptor.role);","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"alphajae11"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"alphajae11"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"alphajae11"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"alphajae11"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":6,"chuahjiajie":5,"alphajae11":150,"Fidget-Spinner":2,"LifHoshi":3}},{"path":"src/main/java/seedu/address/logic/commands/ChargeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":" * Owes the details of the person identified using the displayed index from the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"public class ChargeCommand extends Command {","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String COMMAND_WORD \u003d \"charge\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" // MESSAGE_USAGE below is modified from my Teammate\u0027s (AlphaJae) code","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" + \": Adds a certain amount to how much all matching CCA + optional role members owe.\"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" + \"[\" + PREFIX_AMOUNT + \"AMOUNT]...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" + \"[\" + PREFIX_CCA + \"AMOUNT] (more than one allowed)...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" + \"[\" + PREFIX_ROLE + \"AMOUNT] (more than one allowed)...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" + PREFIX_AMOUNT + \"10.00 \"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" + PREFIX_CCA + \"NUS Cycling \"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" + PREFIX_ROLE + \"friends\";","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_NO_AMOUNT \u003d \"An amount should be provided.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" private final Amount amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" private final CcaContainsKeywordPredicate ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" * @param amount The amount to charge.","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" * @param ccas The matching CCA and roles you want to charge.","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" public ChargeCommand(Amount amount, CcaContainsKeywordPredicate ccas) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(amount);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(ccas);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" this.amount \u003d amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" this.ccas \u003d ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" public Amount getAmount() {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" return amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" // Solution below (equals method) is adapted from original AB3 author lzq.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" || (other instanceof ChargeCommand // instanceof handles nulls","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" \u0026\u0026 ccas.equals(((ChargeCommand) other).ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" \u0026\u0026 amount.equals(((ChargeCommand) other).amount));","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" model.updateFilteredPersonList(this.ccas);","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" for (Person personToOwe : lastShownList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" Amount oldAmount \u003d personToOwe.getAmount();","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" Amount newAmount \u003d oldAmount.deduct(this.amount);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" Person owedPerson \u003d OweCommand.createOwedPerson(personToOwe, newAmount);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" model.setPerson(personToOwe, owedPerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" result.append(String.format(\"Owed Person: $%s\\n\", owedPerson.getAmount().toString()));","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" return new CommandResult(result.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" public String toString() {","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" return new StringBuilder().append(\"ChargeCommand{ \")","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"amount: \").append(amount).append(\", \")","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"cca\u0026roles: \").append(ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"}\").toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"Fidget-Spinner":88}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCcaCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" * Owes the details of the person identified using the displayed index from the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"public class DeleteCcaCommand extends Command {","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String COMMAND_WORD \u003d \"cca_delete\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" // MESSAGE_USAGE below is modified from my Teammate\u0027s (AlphaJae) code","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" + \": Deletes a CCA and all its associated members from your contacts.\"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" + \"[\" + PREFIX_CCA + \"CCA]...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" + PREFIX_CCA + \"NUS Cycling \";","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_NO_CCA \u003d \"A CCA should be provided.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" private final CcaContainsKeywordPredicate ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" * @param ccas The matching CCA to delete.","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" public DeleteCcaCommand(CcaContainsKeywordPredicate ccas) {","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(ccas);","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" this.ccas \u003d ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" // Solution below (equals method) is adapted from original AB3 author lzq.","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" || (other instanceof DeleteCcaCommand // instanceof handles nulls","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" \u0026\u0026 ccas.equals(((DeleteCcaCommand) other).ccas));","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" model.updateFilteredPersonList(this.ccas);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" result.append(String.format(\"Deleting CCA(s) %s tags from all its members:\\n\", this.ccas));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" // We have to essentially clone the list","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" // because as `model.setPerson` is called,","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" // the ObservableList gets updated.","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" // This causes some people to be skipped.","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" List\u003cPerson\u003e affectedPeople \u003d model","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" .getFilteredPersonList()","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":" // Delete their roles","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" ArrayList\u003cCca\u003e removedCcas \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" affectedPeople","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" .forEach(affectedPerson -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e updatedCca \u003d affectedPerson","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" .getCcas()","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" .filter(c -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":" boolean isToDelete \u003d ccas.contains(c);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" if (isToDelete) {","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" removedCcas.add(c);","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":" return !isToDelete;","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" })","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" model.setPerson(affectedPerson, affectedPerson.replaceCca(updatedCca));","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" result.append(String.format(\"Person affected: $%s\\n\", affectedPerson.getName()));","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" // Remove Ccas","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" removedCcas.stream().distinct().forEach(model::deleteCca);","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" // Update filteredlist to display the same people","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":" model.updateFilteredPersonList(p -\u003e affectedPeople","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":" .anyMatch(p::isSamePerson)","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":" return new CommandResult(result.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":" public String toString() {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"Fidget-Spinner"},"content":" return new StringBuilder().append(\"DeleteCcaCommand{ \")","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"cca: \").append(ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"}\").toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"Fidget-Spinner":105}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE] \"","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" + \"[\" + PREFIX_CCA + \"CCA] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" + \"[\" + PREFIX_METADATA + \"Meta-data]...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e updatedRoles \u003d editPersonDescriptor.getRoles().orElse(personToEdit.getRoles());","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"chuahjiajie"},"content":" Set\u003cCca\u003e updatedCcas \u003d editPersonDescriptor.getCcas().orElse(personToEdit.getCcas());","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"alphajae11"},"content":" Metadata updatedMetadata \u003d editPersonDescriptor.getMetadata().orElse(personToEdit.getMetadata());","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"LifHoshi"},"content":" Amount updatedAmount \u003d personToEdit.getAmount();","lastModifiedDate":"2024-03-31"},{"lineNumber":115,"author":{"gitId":"chuahjiajie"},"content":" Attendance updatedAttendance \u003d personToEdit.getAtt();","lastModifiedDate":"2024-04-05"},{"lineNumber":116,"author":{"gitId":"chuahjiajie"},"content":" Sessions updatedSessions \u003d personToEdit.getSess();","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"chuahjiajie"},"content":" updatedRoles, updatedCcas, updatedAmount, updatedAttendance, updatedSessions, updatedMetadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"JuliaPoo"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"chuahjiajie"},"content":" private Set\u003cCca\u003e ccas;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"alphajae11"},"content":" private Metadata metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"JuliaPoo"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":" setRoles(toCopy.roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" setCcas(toCopy.ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"alphajae11"},"content":" setMetadata(toCopy.metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"alphajae11"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, ccas, roles, metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"JuliaPoo"},"content":" * Sets {@code roles} to this object\u0027s {@code roles}.","lastModifiedDate":"2024-03-29"},{"lineNumber":217,"author":{"gitId":"JuliaPoo"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-03-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":219,"author":{"gitId":"JuliaPoo"},"content":" public void setRoles(Set\u003cRole\u003e roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":220,"author":{"gitId":"JuliaPoo"},"content":" this.roles \u003d (roles !\u003d null) ? new HashSet\u003c\u003e(roles) : null;","lastModifiedDate":"2024-03-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"JuliaPoo"},"content":" * Returns an unmodifiable roles set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"JuliaPoo"},"content":" * Returns {@code Optional#empty()} if {@code roles} is null.","lastModifiedDate":"2024-03-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"JuliaPoo"},"content":" public Optional\u003cSet\u003cRole\u003e\u003e getRoles() {","lastModifiedDate":"2024-03-29"},{"lineNumber":229,"author":{"gitId":"JuliaPoo"},"content":" return (roles !\u003d null) ? Optional.of(Collections.unmodifiableSet(roles)) : Optional.empty();","lastModifiedDate":"2024-03-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"chuahjiajie"},"content":" * Sets {@code CCAs} to this object\u0027s {@code CCAs}.","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"chuahjiajie"},"content":" * A defensive copy of {@code CCAs} is used internally.","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"chuahjiajie"},"content":" public void setCcas(Set\u003cCca\u003e ccas) {","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"chuahjiajie"},"content":" this.ccas \u003d (ccas !\u003d null) ? new HashSet\u003c\u003e(ccas) : null;","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"chuahjiajie"},"content":" * Returns an unmodifiable CCA set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"chuahjiajie"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"chuahjiajie"},"content":" * Returns {@code Optional#empty()} if {@code CCAs} is null.","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"chuahjiajie"},"content":" public Optional\u003cSet\u003cCca\u003e\u003e getCcas() {","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"chuahjiajie"},"content":" return (ccas !\u003d null) ? Optional.of(Collections.unmodifiableSet(ccas)) : Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"alphajae11"},"content":" * Sets {@code Metadata} to this object\u0027s {@code Metadata}.","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"alphajae11"},"content":" * A defensive copy of {@code Metadata} is used internally.","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"alphajae11"},"content":" public void setMetadata(Metadata metadata) {","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"alphajae11"},"content":" * Returns an unmodifiable Metadata set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"alphajae11"},"content":" * Returns {@code Optional#empty()} if {@code Metadata} is null.","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"alphajae11"},"content":" public Optional\u003cMetadata\u003e getMetadata() {","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"alphajae11"},"content":" return Optional.ofNullable(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":279,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":282,"author":{"gitId":"alphajae11"},"content":" \u0026\u0026 Objects.equals(roles, otherEditPersonDescriptor.roles)","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"alphajae11"},"content":" \u0026\u0026 Objects.equals(metadata, otherEditPersonDescriptor.metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":293,"author":{"gitId":"JuliaPoo"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-03-29"},{"lineNumber":294,"author":{"gitId":"JuliaPoo"},"content":" .add(\"CCAs\", ccas)","lastModifiedDate":"2024-03-29"},{"lineNumber":295,"author":{"gitId":"alphajae11"},"content":" .add(\"Metadata\", metadata)","lastModifiedDate":"2024-04-04"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"JuliaPoo":17,"chuahjiajie":27,"alphajae11":20,"-":232,"LifHoshi":3}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommand.java. All credits and thanks to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" * Filters all persons in address book by their cca (case-sensitive).","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":" * Serves the purpose of grouping people together..","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters a person by their CCA \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" + \"(case-sensitive) and optionally their roles.\"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Parameters: c/CCA c/[MORE CCAs]... r/ROLE /r[MORE ROLES]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Example: \" + COMMAND_WORD + \" c/NUS Cycling r/Member\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_NOT_FILTER_CCA \u003d \"A CCA should be provided.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" private final CcaContainsKeywordPredicate cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" public FilterCommand(CcaContainsKeywordPredicate cca) {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" this.cca \u003d cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" model.updateFilteredPersonList(cca);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand otherFilterCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" return cca.equals(otherFilterCommand.cca);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" .add(\"cca\", cca)","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"JuliaPoo":1,"Fidget-Spinner":62}},{"path":"src/main/java/seedu/address/logic/commands/OweCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" * Owes the details of the person identified using the displayed index from the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":"public class OweCommand extends Command {","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" public static final String COMMAND_WORD \u003d \"owe\";","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" // MESSAGE_USAGE below is modified from my Teammate\u0027s (AlphaJae) code","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Owes the details of the person identified \"","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" + \"[\" + PREFIX_AMOUNT + \"AMOUNT]...\\n\"","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" + \"Example: \" + COMMAND_WORD + \" 2 \"","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" + PREFIX_AMOUNT + \"10.00 \";","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_OWE_PERSON_SUCCESS \u003d \"Owed Person: %1$s\";","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_NOT_OWE \u003d \"Amount should be provided here.\";","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" private final Index index;","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" private final Amount amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" * @param index of the person to assign","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" * @param amount details of the role to assign the person with","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" public OweCommand(Index index, Amount amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" this.amount \u003d amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" public Index getIndex() {","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" return index;","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" public Amount getAmount() {","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" return amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" // Solution below (equals method) is adapted from original AB3 author lzq.","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" || (other instanceof OweCommand // instanceof handles nulls","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" \u0026\u0026 index.equals(((OweCommand) other).index)","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" \u0026\u0026 amount.equals(((OweCommand) other).amount));","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"LifHoshi"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-31"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":83,"author":{"gitId":"LifHoshi"},"content":" Person personToOwe \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-31"},{"lineNumber":84,"author":{"gitId":"LifHoshi"},"content":" Person owedPerson \u003d createOwedPerson(personToOwe, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":86,"author":{"gitId":"LifHoshi"},"content":" model.setPerson(personToOwe, owedPerson);","lastModifiedDate":"2024-03-31"},{"lineNumber":87,"author":{"gitId":"LifHoshi"},"content":" return new CommandResult(String.format(\"Owed Person: $%s\", owedPerson.getAmount().toString()));","lastModifiedDate":"2024-03-31"},{"lineNumber":88,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" protected static Person createOwedPerson(Person personToOwe, Amount amount) {","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"LifHoshi"},"content":" assert personToOwe !\u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":92,"author":{"gitId":"LifHoshi"},"content":" Name updatedName \u003d personToOwe.getName();","lastModifiedDate":"2024-03-31"},{"lineNumber":93,"author":{"gitId":"LifHoshi"},"content":" Phone updatedPhone \u003d personToOwe.getPhone();","lastModifiedDate":"2024-03-31"},{"lineNumber":94,"author":{"gitId":"LifHoshi"},"content":" Email updatedEmail \u003d personToOwe.getEmail();","lastModifiedDate":"2024-03-31"},{"lineNumber":95,"author":{"gitId":"LifHoshi"},"content":" Address updatedAddress \u003d personToOwe.getAddress();","lastModifiedDate":"2024-03-31"},{"lineNumber":96,"author":{"gitId":"LifHoshi"},"content":" Set\u003cRole\u003e updatedRoles \u003d personToOwe.getRoles();","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"LifHoshi"},"content":" Set\u003cCca\u003e updatedCcas \u003d personToOwe.getCcas();","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"LifHoshi"},"content":" Amount updatedAmount \u003d new Amount(amount.toString());","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" Attendance updatedAttendance \u003d personToOwe.getAtt();","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":" Sessions updatedSessions \u003d personToOwe.getSess();","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"alphajae11"},"content":" Metadata updatedMetadata \u003d personToOwe.getMetadata();","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRoles, updatedCcas,","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" updatedAmount, updatedAttendance, updatedSessions, updatedMetadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":108,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-03-31"},{"lineNumber":109,"author":{"gitId":"LifHoshi"},"content":" return new StringBuilder().append(\"OweCommand{ index: \").append(index).append(\", amount: \").append(amount)","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"LifHoshi"},"content":" .append(\"}\").toString();","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"chuahjiajie":6,"alphajae11":2,"LifHoshi":103,"Fidget-Spinner":1}},{"path":"src/main/java/seedu/address/logic/commands/SetAttCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import java.util.List;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Objects;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" * Assigns role to the existing person in the CCA Manager","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttCommand extends Command {","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" public static final String COMMAND_WORD \u003d \"setatt\";","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the attendance details of the person identified \"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" + \"[\" + PREFIX_ATTENDANCE + \"ATTENDANCE] \"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" + \"[\" + PREFIX_SESSIONS + \"SESSIONS] \"","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" + PREFIX_ATTENDANCE + \"3 \"","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" + PREFIX_SESSIONS + \"10\";","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_SETATT_PERSON_SUCCESS \u003d \"Set Attendance for Person: %1$s\";","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_ATT_NOT_SET \u003d \"Positive Integer has to be provided after /att and /s\";","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_ATT_TOO_LARGE \u003d \"Attendance number exceeds sessions number\";","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Attendance has already been set to that value\";","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" private final Index index;","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" private final SetAttCommand.SetAttDescriptor setAttDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" * @param setAttDescriptor attendance details to edit the person with","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":" public SetAttCommand(Index index, SetAttCommand.SetAttDescriptor setAttDescriptor) {","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(setAttDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" this.setAttDescriptor \u003d new SetAttCommand.SetAttDescriptor(setAttDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chuahjiajie"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"chuahjiajie"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chuahjiajie"},"content":" Person personToSetAtt \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" Person setAttPerson \u003d createSetAttPerson(personToSetAtt, setAttDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"chuahjiajie"},"content":" if (!personToSetAtt.isSamePerson(setAttPerson) \u0026\u0026 model.hasPerson(setAttPerson)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"chuahjiajie"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chuahjiajie"},"content":" model.setPerson(personToSetAtt, setAttPerson);","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chuahjiajie"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"chuahjiajie"},"content":" return new CommandResult(String.format(MESSAGE_SETATT_PERSON_SUCCESS, Messages.format(setAttPerson)));","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chuahjiajie"},"content":" * Creates and returns an person with attendance details","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"chuahjiajie"},"content":" * @param personToAssign person who will be assigned","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chuahjiajie"},"content":" * @param setAttDescriptor details of the attendance to assign the person with","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" * @return Person who is assigned with attendance details","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" private static Person createSetAttPerson(Person personToAssign,","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor setAttDescriptor) {","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" assert personToAssign !\u003d null;","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" Name updatedName \u003d personToAssign.getName();","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":" Phone updatedPhone \u003d personToAssign.getPhone();","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"chuahjiajie"},"content":" Email updatedEmail \u003d personToAssign.getEmail();","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":" Address updatedAddress \u003d personToAssign.getAddress();","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" Set\u003cCca\u003e updatedCcas \u003d personToAssign.getCcas();","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" Set\u003cRole\u003e updatedRoles \u003d personToAssign.getRoles();","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" Amount updatedAmount \u003d personToAssign.getAmount();","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" Attendance updatedAttendance \u003d setAttDescriptor.getAtt().orElse(personToAssign.getAtt());","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"chuahjiajie"},"content":" Sessions updatedSessions \u003d setAttDescriptor.getSess().orElse(personToAssign.getSess());","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"chuahjiajie"},"content":" Metadata updatedMetaData \u003d personToAssign.getMetadata();","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"chuahjiajie"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"chuahjiajie"},"content":" updatedRoles, updatedCcas, updatedAmount, updatedAttendance, updatedSessions, updatedMetaData);","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":115,"author":{"gitId":"chuahjiajie"},"content":" * Stores the details of the role to assign the person with.","lastModifiedDate":"2024-04-05"},{"lineNumber":116,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"chuahjiajie"},"content":" public static class SetAttDescriptor {","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"chuahjiajie"},"content":" private Attendance attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"chuahjiajie"},"content":" private Sessions sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptor() {}","lastModifiedDate":"2024-04-05"},{"lineNumber":122,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"chuahjiajie"},"content":" * Copy constructor.","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"chuahjiajie"},"content":" * A defensive copy of {@code SetAtt} is used internally.","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":127,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptor(SetAttCommand.SetAttDescriptor toCopy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"chuahjiajie"},"content":" setAtt(toCopy.attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"chuahjiajie"},"content":" setSess(toCopy.sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":131,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":132,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"chuahjiajie"},"content":" * Returns true if at least all fields are edited.","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"chuahjiajie"},"content":" public boolean isAnyFieldNotEdited() {","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"chuahjiajie"},"content":" return CollectionUtil.isNotNull(attendance, sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chuahjiajie"},"content":" public void setAtt(Attendance attendance) {","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chuahjiajie"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chuahjiajie"},"content":" public Optional\u003cAttendance\u003e getAtt() {","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chuahjiajie"},"content":" return (attendance !\u003d null) ? Optional.of(attendance) : Optional.empty();","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chuahjiajie"},"content":" public void setSess(Sessions sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"chuahjiajie"},"content":" this.sessions \u003d sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"chuahjiajie"},"content":" public Optional\u003cSessions\u003e getSess() {","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"chuahjiajie"},"content":" return (attendance !\u003d null) ? Optional.of(sessions) : Optional.empty();","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chuahjiajie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chuahjiajie"},"content":" return true;","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":" if (!(other instanceof SetAttCommand.SetAttDescriptor)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" return false;","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor otherSetAttDescriptor \u003d (SetAttCommand.SetAttDescriptor) other;","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" return Objects.equals(attendance, otherSetAttDescriptor.attendance)","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 Objects.equals(sessions, otherSetAttDescriptor.sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":" .add(\"attendance\", attendance)","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":" .add(\"sessions\", sessions)","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":" .toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":180,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":180}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_ROLE,","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" PREFIX_CCA, PREFIX_METADATA);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e roleList \u003d ParserUtil.parseRoles(argMultimap.getAllValues(PREFIX_ROLE));","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" Set\u003cCca\u003e ccaList \u003d ParserUtil.parseCcas(argMultimap.getAllValues(PREFIX_CCA));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" Metadata metadata \u003d ParserUtil.parseMetadata(argMultimap.getValue(PREFIX_METADATA).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"0.0\");","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" Attendance attendance \u003d new Attendance(\"0\");","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" Sessions sessions \u003d new Sessions(\"0\");","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" Person person \u003d new Person(name, phone, email, address, roleList, ccaList, amount, attendance, sessions,","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"JuliaPoo":4,"chuahjiajie":9,"alphajae11":4,"-":56,"LifHoshi":2}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.ChargeCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.DeleteCcaCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.OweCommand;","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" case DeleteCcaCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" return new DeleteCcaCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" case ChargeCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" return new ChargeCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":95,"author":{"gitId":"alphajae11"},"content":" case AssignCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"alphajae11"},"content":" return new AssignCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"LifHoshi"},"content":" case OweCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"LifHoshi"},"content":" return new OweCommandParser().parse(arguments);","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"chuahjiajie"},"content":" case SetAttCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":" return new SetAttCommandParser().parse(arguments);","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chuahjiajie":3,"alphajae11":4,"-":86,"Fidget-Spinner":11,"LifHoshi":4}},{"path":"src/main/java/seedu/address/logic/parser/AssignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" * Parses input arguments and creates a new AssignCommand Object","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":"public class AssignCommandParser implements Parser\u003cAssignCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" * Parses the given {@code String} of arguments in the context of the AssignCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" * and returns an AssignCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" public AssignCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor assignPersonDescriptor \u003d new AssignCommand.AssignPersonDescriptor();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" parseRolesForAssign(argMultimap.getAllValues(PREFIX_ROLE)).ifPresent(assignPersonDescriptor::setRole);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" System.out.println(assignPersonDescriptor.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" if (!assignPersonDescriptor.isAnyFieldNotEdited()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" throw new ParseException(AssignCommand.MESSAGE_NOT_ASSIGNED);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alphajae11"},"content":" return new AssignCommand(index, assignPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e} if {@code roles} is non-empty.","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" * If {@code roles} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" * {@code Set\u003cRole\u003e} containing zero roles.","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" private Optional\u003cSet\u003cRole\u003e\u003e parseRolesForAssign(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" assert roles !\u003d null;","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"alphajae11"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" Collection\u003cString\u003e roleSet \u003d roles.size() \u003d\u003d 1 \u0026\u0026 roles.contains(\"\") ? Collections.emptySet() : roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" return Optional.of(ParserUtil.parseRoles(roleSet));","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":9,"alphajae11":59,"Fidget-Spinner":2}},{"path":"src/main/java/seedu/address/logic/parser/ChargeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommandParser.java. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.ChargeCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"public class ChargeCommandParser implements Parser\u003cChargeCommand\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" public ChargeCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_AMOUNT, PREFIX_CCA, PREFIX_ROLE);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getValue(PREFIX_AMOUNT).isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ChargeCommand.MESSAGE_NO_AMOUNT)","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getValue(PREFIX_CCA).isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_NOT_FILTER_CCA)","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e ccas \u003d new HashSet\u003c\u003e(ParserUtil.parseCcas(argumentMultimap.getAllValues(PREFIX_CCA)));","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" Optional\u003cSet\u003cRole\u003e\u003e roles \u003d argumentMultimap.getAllValues(PREFIX_ROLE).isEmpty()","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" ? Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" : Optional.of(new HashSet\u003c\u003e(ParserUtil.parseRoles(argumentMultimap.getAllValues(PREFIX_ROLE))));","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(ccas, roles);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" return new ChargeCommand(new Amount(argumentMultimap.getValue(PREFIX_AMOUNT).get()), predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"Fidget-Spinner":59}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" public static final Prefix PREFIX_CCA \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" public static final Prefix PREFIX_AMOUNT \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" public static final Prefix PREFIX_ATTENDANCE \u003d new Prefix(\"att/\");","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" public static final Prefix PREFIX_SESSIONS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":" public static final Prefix PREFIX_METADATA \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"JuliaPoo":1,"chuahjiajie":2,"alphajae11":2,"-":13,"LifHoshi":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCcaCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommandParser.java. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.DeleteCcaCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"public class DeleteCcaCommandParser implements Parser\u003cDeleteCcaCommand\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" public DeleteCcaCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_CCA);","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getValue(PREFIX_CCA).isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCcaCommand.MESSAGE_NO_CCA)","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getAllValues(PREFIX_CCA).size() \u003e 1) {","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, \"Cannot delete more than one CCA.\"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" )","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e ccas \u003d new HashSet\u003c\u003e(ParserUtil.parseCcas(argumentMultimap.getAllValues(PREFIX_CCA)));","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(ccas, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" return new DeleteCcaCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"Fidget-Spinner":53}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_ROLE,","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" PREFIX_CCA, PREFIX_METADATA);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" parseRolesForEdit(argMultimap.getAllValues(PREFIX_ROLE)).ifPresent(editPersonDescriptor::setRoles);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" parseCcasForEdit(argMultimap.getAllValues(PREFIX_CCA)).ifPresent(editPersonDescriptor::setCcas);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"alphajae11"},"content":" if (argMultimap.getValue(PREFIX_METADATA).isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" editPersonDescriptor.setMetadata(ParserUtil.parseMetadata(argMultimap.getValue(PREFIX_METADATA).get()));","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003croles\u003e} if {@code roles} is non-empty.","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":" * If {@code roles} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" * {@code Set\u003cRole\u003e} containing zero roles.","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" private Optional\u003cSet\u003cRole\u003e\u003e parseRolesForEdit(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" assert roles !\u003d null;","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" Collection\u003cString\u003e roleSet \u003d roles.size() \u003d\u003d 1 \u0026\u0026 roles.contains(\"\") ? Collections.emptySet() : roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" return Optional.of(ParserUtil.parseRoles(roleSet));","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" * Parses {@code Collection\u003cString\u003e CCAs} into a {@code Set\u003cCCA\u003e} if {@code CCAs} is non-empty.","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" * If {@code CCAs} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" * {@code Set\u003cCCA\u003e} containing zero roles.","lastModifiedDate":"2024-03-29"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" private Optional\u003cSet\u003cCca\u003e\u003e parseCcasForEdit(Collection\u003cString\u003e ccas) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":" assert ccas !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":" if (ccas.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" Collection\u003cString\u003e ccaSet \u003d ccas.size() \u003d\u003d 1 \u0026\u0026 ccas.contains(\"\") ? Collections.emptySet() : ccas;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" return Optional.of(ParserUtil.parseCcas(ccaSet));","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"JuliaPoo":13,"chuahjiajie":16,"alphajae11":5,"-":74}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommandParser.java. All credits and thanks to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_CCA, PREFIX_ROLE);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getValue(PREFIX_CCA).isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_NOT_FILTER_CCA)","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e ccas \u003d new HashSet\u003c\u003e(ParserUtil.parseCcas(argumentMultimap.getAllValues(PREFIX_CCA)));","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" Optional\u003cSet\u003cRole\u003e\u003e roles \u003d argumentMultimap.getAllValues(PREFIX_ROLE).isEmpty()","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" ? Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" : Optional.of(new HashSet\u003c\u003e(ParserUtil.parseRoles(argumentMultimap.getAllValues(PREFIX_ROLE))));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(ccas, roles);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" return new FilterCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Fidget-Spinner":52}},{"path":"src/main/java/seedu/address/logic/parser/OweCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Some of the code is inspired by the AddCommandParser.java. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.OweCommand;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" * Parses input arguments and creates a new OweCommand object","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" **/","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"public class OweCommandParser implements Parser\u003cOweCommand\u003e {","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" * Parses the given {@code String} of arguments in the context of the OweCommand","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" * and returns an OweCommand object for execution.","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" public OweCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" args \u003d args.toLowerCase();","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_AMOUNT);","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" Index index;","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, OweCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" if (argMultimap.getValue(PREFIX_AMOUNT).isEmpty()) {","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" throw new ParseException(OweCommand.MESSAGE_NOT_OWE);","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d ParserUtil.parseAmount(argMultimap.getValue(PREFIX_AMOUNT).get());","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" return new OweCommand(index, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":44}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" * Parses a {@code String roles} into a {@code Role}.","lastModifiedDate":"2024-03-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"JuliaPoo"},"content":" * @throws ParseException if the given {@code roles} is invalid.","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" if (!Role.isValidRoleName(trimmedRole)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"chuahjiajie"},"content":" * Parses a {@code String CCA} into a {@code CCA}.","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"chuahjiajie"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"chuahjiajie"},"content":" * @throws ParseException if the given {@code CCA} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"chuahjiajie"},"content":" public static Cca parseCca(String ccaString) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(ccaString);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"chuahjiajie"},"content":" String trimmedCca \u003d ccaString.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"chuahjiajie"},"content":" if (!Cca.isValidCcaName(trimmedCca)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(Cca.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"chuahjiajie"},"content":" return new Cca(trimmedCca);","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e}.","lastModifiedDate":"2024-03-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" public static Set\u003cRole\u003e parseRoles(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" final Set\u003cRole\u003e roleSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":" for (String roleName : roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" roleSet.add(parseRole(roleName));","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":142,"author":{"gitId":"JuliaPoo"},"content":" return roleSet;","lastModifiedDate":"2024-03-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":146,"author":{"gitId":"LifHoshi"},"content":" * Parses a {@code String amount} into a {@code Amount}.","lastModifiedDate":"2024-03-31"},{"lineNumber":147,"author":{"gitId":"LifHoshi"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-31"},{"lineNumber":148,"author":{"gitId":"LifHoshi"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":149,"author":{"gitId":"LifHoshi"},"content":" * @throws ParseException if the given {@code amount} is invalid.","lastModifiedDate":"2024-03-31"},{"lineNumber":150,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":151,"author":{"gitId":"LifHoshi"},"content":" public static Amount parseAmount(String amount) throws ParseException {","lastModifiedDate":"2024-03-31"},{"lineNumber":152,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"LifHoshi"},"content":" String trimmedAmount \u003d amount.trim();","lastModifiedDate":"2024-03-31"},{"lineNumber":154,"author":{"gitId":"LifHoshi"},"content":" if (!Amount.isValidAmount(trimmedAmount)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":155,"author":{"gitId":"LifHoshi"},"content":" throw new ParseException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":156,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":157,"author":{"gitId":"LifHoshi"},"content":" return new Amount(trimmedAmount);","lastModifiedDate":"2024-03-31"},{"lineNumber":158,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":159,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":160,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":" * Parses {@code Collection\u003cString\u003e CCAs} into a {@code Set\u003cCCA\u003e}.","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":" public static Set\u003cCca\u003e parseCcas(Collection\u003cString\u003e ccas) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":" final Set\u003cCca\u003e ccaSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":" for (String ccaName : ccas) {","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" ccaSet.add(parseCca(ccaName));","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":" return ccaSet;","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" * Parses a {@code String attendance} into an {@code attendance}.","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":" * @throws ParseException if the given {@code attendance} is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"chuahjiajie"},"content":" public static Attendance parseAtt(String attendance) throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":180,"author":{"gitId":"chuahjiajie"},"content":" String trimmedAtt \u003d attendance.trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"chuahjiajie"},"content":" if (!Attendance.isValidAttendance(trimmedAtt)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":182,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(Attendance.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"chuahjiajie"},"content":" return new Attendance(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":185,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chuahjiajie"},"content":" * Parses a {@code String sessions} into an {@code sessions}.","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"chuahjiajie"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":191,"author":{"gitId":"chuahjiajie"},"content":" * @throws ParseException if the given {@code sessions} is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":192,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":193,"author":{"gitId":"chuahjiajie"},"content":" public static Sessions parseSess(String sessions) throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":194,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":195,"author":{"gitId":"chuahjiajie"},"content":" String trimmedSess \u003d sessions.trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":196,"author":{"gitId":"chuahjiajie"},"content":" if (!Sessions.isValidSessions(trimmedSess)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":197,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(Sessions.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":198,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":199,"author":{"gitId":"chuahjiajie"},"content":" return new Sessions(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":200,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":201,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":202,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":203,"author":{"gitId":"chuahjiajie"},"content":" * Parses a {@code String sessions} into an {@code sessions}.","lastModifiedDate":"2024-04-05"},{"lineNumber":204,"author":{"gitId":"chuahjiajie"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-05"},{"lineNumber":205,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":206,"author":{"gitId":"alphajae11"},"content":" * Parses {@code Metadata metadata} into a {@code Metadata}.","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":208,"author":{"gitId":"alphajae11"},"content":" public static Metadata parseMetadata(String metadata) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":209,"author":{"gitId":"alphajae11"},"content":" requireNonNull(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":210,"author":{"gitId":"alphajae11"},"content":" String trimmedMetadata \u003d metadata.trim();","lastModifiedDate":"2024-04-04"},{"lineNumber":211,"author":{"gitId":"alphajae11"},"content":" if (!Metadata.isValidMetadata(trimmedMetadata)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":212,"author":{"gitId":"alphajae11"},"content":" throw new ParseException(Metadata.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":214,"author":{"gitId":"alphajae11"},"content":" return new Metadata(trimmedMetadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"JuliaPoo":16,"chuahjiajie":62,"alphajae11":10,"-":112,"LifHoshi":16}},{"path":"src/main/java/seedu/address/logic/parser/SetAttCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" * Parses input arguments and creates a new SetAttCommand Object","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttCommandParser implements Parser\u003cSetAttCommand\u003e {","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" * Parses the given {@code String} of arguments in the context of the SetAttCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" * and returns an SetAttCommand object for execution.","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" public SetAttCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_ATTENDANCE, PREFIX_SESSIONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_ATTENDANCE, PREFIX_SESSIONS)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SetAttCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" Index index;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" try {","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SetAttCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_ATTENDANCE, PREFIX_SESSIONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor setAttDescriptor \u003d new SetAttCommand.SetAttDescriptor();","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" setAttDescriptor.setAtt(ParserUtil.parseAtt(argMultimap.getValue(PREFIX_ATTENDANCE).get()));","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" setAttDescriptor.setSess(ParserUtil.parseSess(argMultimap.getValue(PREFIX_SESSIONS).get()));","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" int attendanceInt \u003d setAttDescriptor.getAtt().get().getValue();","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" int sessionsInt \u003d setAttDescriptor.getSess().get().getValue();","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" if (attendanceInt \u003e sessionsInt) {","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(SetAttCommand.MESSAGE_ATT_TOO_LARGE);","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" return new SetAttCommand(index, setAttDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":61}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.UniqueCcaList;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" private final UniqueCcaList ccas;","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" ccas \u003d new UniqueCcaList();","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" List\u003cPerson\u003e newPersons \u003d persons","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" .map(p -\u003e p.replaceCca(ccas.getUniqueCcas(p.getCcas())))","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" this.persons.setPersons(newPersons);","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" public void setCcas(List\u003cCca\u003e ccas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" this.ccas.setCcas(ccas);","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" setCcas(newData.getCcaList());","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" public boolean hasPerson(Person p) {","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(p);","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" return persons.contains(p);","lastModifiedDate":"2024-03-31"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if a cca with the same name as {@code cca} exists in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":" public boolean hasCca(Cca c) {","lastModifiedDate":"2024-03-31"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(c);","lastModifiedDate":"2024-03-31"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" return ccas.contains(c);","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" Person newPerson \u003d p","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" .replaceCca(ccas.getUniqueCcas(p.getCcas()));","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" persons.add(newPerson);","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":" * Adds a cca to the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":" * The cca must not already exist in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"JuliaPoo"},"content":" public void addCca(Cca c) {","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":" ccas.add(c);","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"Fidget-Spinner"},"content":" * Removes a cca to the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"Fidget-Spinner"},"content":" * The cca must not already exist in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"Fidget-Spinner"},"content":" public void removeCca(Cca c) {","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"Fidget-Spinner"},"content":" ccas.remove(c);","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"JuliaPoo"},"content":" Person newEditedPerson \u003d editedPerson","lastModifiedDate":"2024-03-31"},{"lineNumber":125,"author":{"gitId":"JuliaPoo"},"content":" .replaceCca(ccas.getUniqueCcas(editedPerson.getCcas()));","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":" persons.setPerson(target, newEditedPerson);","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":149,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":150,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getCcaList() {","lastModifiedDate":"2024-03-31"},{"lineNumber":151,"author":{"gitId":"JuliaPoo"},"content":" return ccas.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-31"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":43,"-":122,"Fidget-Spinner":8}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" * Deletes the given cca.","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" * The cca must exist in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":" void deleteCca(Cca cca);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" /** Returns an unmodifable view of the filtered Cca list */","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cCca\u003e getFilteredCcaList();","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" * Updates the filter of the filtered cca list to filter by the given {@code predicate}.","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":" void updateFilteredCcaList(Predicate\u003cCca\u003e predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"JuliaPoo":10,"-":87,"Fidget-Spinner":6}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" private final FilteredList\u003cCca\u003e filteredCcas;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" // Display all CCAs and Persons on startup.","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" filteredCcas \u003d new FilteredList\u003c\u003e(this.addressBook.getCcaList());","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":114,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"Fidget-Spinner"},"content":" public void deleteCca(Cca target) {","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"Fidget-Spinner"},"content":" addressBook.removeCca(target);","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":" * Returns an unmodifiable view of the list of {@code Cca} backed by the internal list of","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"JuliaPoo"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getFilteredCcaList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":" return filteredCcas;","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":144,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"JuliaPoo"},"content":" public void updateFilteredCcaList(Predicate\u003cCca\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"JuliaPoo"},"content":" filteredCcas.setPredicate(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":171,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" return String.format(\"%s, %s, %s\", this.addressBook, this.userPrefs, this.filteredPersons);","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":19,"chuahjiajie":4,"-":147,"Fidget-Spinner":5}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" * Returns an unmodifiable view of the cca list.","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" * This list will not contain any duplicate cca.","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cCca\u003e getCcaList();","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":7,"-":17}},{"path":"src/main/java/seedu/address/model/amount/Amount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.model.amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import java.math.BigDecimal;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" * Represents an Amount in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" * is valid as declared in {@link #isValidAmount(String)}","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"public class Amount {","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Amount should only contain correct numbers \"","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" + \"with no more than 2 decimal places\\n\"","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" + \"and it should not be blank or negative\";","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_NUMBER_CONSTRAINTS \u003d \"Amount should not be negative\";","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" private static final String AMOUNT_VALIDATION_REGEX \u003d \"(?!0\\\\d)\\\\d+(\\\\.\\\\d{1,2})?\";","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" public final BigDecimal value;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" * Constructs a {@code Amount}.","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" * @param amount A valid amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" public Amount(String amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" checkArgument(isValidAmount(amount), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" this.value \u003d new BigDecimal(amount);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" private Amount(BigDecimal value) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" this.value \u003d value;","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" * Returns true if a given string is a valid amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" public static boolean isValidAmount(String test) {","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" boolean isValidAmount \u003d test.matches(AMOUNT_VALIDATION_REGEX);","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" return isValidAmount;","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" * Returns true if a given string is a negative amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" public static boolean isNegativeAmount(String test) {","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" boolean isNegativeAmount \u003d new BigDecimal(test).compareTo(new BigDecimal(0)) \u003c 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" return isNegativeAmount;","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" * Returns a new Amount object with the given amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" public static Amount setAmount(String amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" return new Amount(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" return value.toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" || (other instanceof Amount // instanceof handles nulls","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" \u0026\u0026 value.equals(((Amount) other).value)); // state check","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" return value.hashCode();","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":" public int compareTo(Amount other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" return this.value.compareTo(other.value);","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" * Returns a new amount by deducting current amount with another amount.","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" * @param other The other amount to deduct by","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" * @return A new amount.","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" public Amount deduct(Amount other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" return new Amount(this.value.add(other.value));","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":69,"Fidget-Spinner":21}},{"path":"src/main/java/seedu/address/model/attendance/Attendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" * Represents an Attendance in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" * Guarantees: immutable; attendance is valid as declared in {@link #isValidAttendance(String)}","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"public class Attendance {","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Attendance should be a non-negative integer\";","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_LESS_THAN_CONSTRAINT \u003d \"Attendance should be less than sessions\";","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" public final String value;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" * Constructs a {@code Attendance}.","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" * @param attendance A valid attendance number.","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" public Attendance(String attendance) {","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" checkArgument(isValidAttendance(attendance), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" this.value \u003d attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" public int getValue() {","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" return Integer.parseInt(value);","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" * Returns true if a given string is a valid attendance number.","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" public static boolean isValidAttendance(String test) {","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" return true;","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" if (!(other instanceof Attendance)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" return false;","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" Attendance otherAtt \u003d (Attendance) other;","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" return value.equals(otherAtt.value);","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" return value;","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" public int hashCode() {","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" return value.hashCode();","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":66}},{"path":"src/main/java/seedu/address/model/attendance/Sessions.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" * Represents an Sessions in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" * Guarantees: immutable; attendance is valid as declared in {@link #isValidSessions(String)}","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"public class Sessions {","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Sessions should be a non-negative integer\";","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" public final String value;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" * Constructs a {@code Sessions}.","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" * @param sessions A valid session number.","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" public Sessions(String sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" checkArgument(isValidSessions(sessions), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" this.value \u003d sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" public int getValue() {","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" return Integer.parseInt(value);","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" * Returns true if a given string is a valid session number.","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" public static boolean isValidSessions(String test) {","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" return true;","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" if (!(other instanceof Sessions)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" return false;","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" Sessions otherSess \u003d (Sessions) other;","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" return value.equals(otherSess.value);","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" return value;","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" public int hashCode() {","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" return value.hashCode();","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":66}},{"path":"src/main/java/seedu/address/model/cca/Cca.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.model.cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" * Represents a CCA in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidCCAName(String)}","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"public class Cca {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"CCA names should be alphanumeric (but can include \"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" + \"whitespace)\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}\\\\s]+\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" public final String ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" * Constructs a {@code Cca}.","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" * @param CCAName A valid CCA name.","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" public Cca(String ccaName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(ccaName);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" checkArgument(isValidCcaName(ccaName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" this.ccaName \u003d ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if a given string is a valid Cca name.","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" public static boolean isValidCcaName(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" * Checks if other is the same Cca by checking only the name.","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" * @param other","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" * @return","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" public boolean isSameCcaName(Cca other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(other);","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" return true;","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" return ccaName.equals(other.ccaName);","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" if (!(other instanceof Cca)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" Cca otherCca \u003d (Cca) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" return ccaName.equals(otherCca.ccaName);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" * hashCode() should ONLY hash ccaName!","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"chuahjiajie"},"content":" return ccaName.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"chuahjiajie"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"chuahjiajie"},"content":" return \"[CCA: \" + ccaName + \u0027]\u0027;","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":22,"chuahjiajie":58}},{"path":"src/main/java/seedu/address/model/person/CcaContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" * Tests that a {@code Person}\u0027s {@code Cca} matches any of the keywords given.","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"public class CcaContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":" private final Set\u003cCca\u003e ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":" private final Optional\u003cSet\u003cRole\u003e\u003e roles;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" * Returns a CcaContainsKeywordsPredicate object by taking a list of the Cca names.","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" public CcaContainsKeywordPredicate(Set\u003cCca\u003e keywords, Optional\u003cSet\u003cRole\u003e\u003e roles) {","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" this.ccas \u003d keywords;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" this.roles \u003d roles;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean contains(Cca cca) {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" return ccas.contains(cca);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e personCcas \u003d person.getCcas();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cRole\u003e personRoles \u003d person.getRoles();","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" boolean matchesCCa \u003d ccas.stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" .anyMatch(personCcas::contains);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" boolean matchesRole \u003d this.roles","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" .map(realRoles -\u003e realRoles.stream().anyMatch(personRoles::contains))","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" .orElse(true);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" return matchesCCa \u0026\u0026 matchesRole;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" if (!(other instanceof CcaContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate otherNameContainsKeywordsPredicate \u003d (CcaContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" return ccas.equals(otherNameContainsKeywordsPredicate.ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" \u0026\u0026 roles.equals(otherNameContainsKeywordsPredicate.roles);","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" .add(\"ccas\", ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" .toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"JuliaPoo":2,"Fidget-Spinner":65}},{"path":"src/main/java/seedu/address/model/person/Metadata.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alphajae11"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":" * Represents a Person\u0027s meta-data in the CCA Manager","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMetadata(String)}","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"public class Metadata {","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":" \"Meta-data should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":" /*","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":" * A valid metadata is any string that does not contain a `/`.","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":" public static final String VALIDATION_REGEX \u003d \"[^/]+\";","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" public final String metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" * Constructs a {@code Metadata}.","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" * @param metadata A valid metadata.","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":" public Metadata(String metadata) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":" requireNonNull(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" checkArgument(isValidMetadata(metadata), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":" public static boolean isValidMetadata(String test) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" public String toString() {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" return metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" return true;","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" if (!(other instanceof Metadata)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"alphajae11"},"content":" return false;","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"alphajae11"},"content":" Metadata otherMetadata \u003d (Metadata) other;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" return metadata.equals(otherMetadata.metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"alphajae11"},"content":" public int hashCode() {","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"alphajae11"},"content":" return metadata.hashCode();","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"alphajae11":61}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" private final Set\u003cRole\u003e roles \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" private final Set\u003cCca\u003e ccas \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" private final Amount amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" private final Attendance attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" private final Sessions sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" private final Metadata metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cRole\u003e roles, Set\u003cCca\u003e ccas, Amount amount,","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" Attendance attendance, Sessions sessions, Metadata metadata) {","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" requireAllNonNull(name, phone, email, address, roles, ccas, amount, attendance, sessions, metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" this.ccas.addAll(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" this.amount \u003d amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" this.sessions \u003d sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" * Replaces {@code Person.ccas} with another {@code Set\u003cCca\u003e}","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" * by creating another Person with the new {@code Set\u003cCca\u003e}.","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" * This is used in AddressBook to replace {@code Person.ccas}","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" * with objects in AddressBook.ccas.","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" * @return new person","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" public Person replaceCca(Set\u003cCca\u003e newCcas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" return new Person(name, phone, email, address, roles, newCcas, amount, attendance, sessions, metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":" * Returns an immutable role set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" public Set\u003cRole\u003e getRoles() {","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" return Collections.unmodifiableSet(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" * Returns an immutable CCA set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" public Set\u003cCca\u003e getCcas() {","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" return Collections.unmodifiableSet(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"LifHoshi"},"content":" * Returns the amount owed by the person.","lastModifiedDate":"2024-03-31"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"LifHoshi"},"content":" public Amount getAmount() {","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":" return amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":108,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"alphajae11"},"content":" * Returns the Metadata of the person.","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"alphajae11"},"content":" public Metadata getMetadata() {","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"alphajae11"},"content":" return metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":116,"author":{"gitId":"LifHoshi"},"content":" * Returns a new Person object with the amount set to the given amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":117,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" public Amount setAmount(Amount amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"LifHoshi"},"content":" return amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":120,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":121,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":122,"author":{"gitId":"chuahjiajie"},"content":" public Attendance getAtt() {","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"chuahjiajie"},"content":" return attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"chuahjiajie"},"content":" public Sessions getSess() {","lastModifiedDate":"2024-04-05"},{"lineNumber":127,"author":{"gitId":"chuahjiajie"},"content":" return sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"JuliaPoo"},"content":" \u0026\u0026 roles.equals(otherPerson.roles)","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"LifHoshi"},"content":" \u0026\u0026 ccas.equals(otherPerson.ccas)","lastModifiedDate":"2024-03-31"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 otherPerson.getAmount().equals(getAmount())","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 attendance.equals(otherPerson.attendance)","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 sessions.equals(otherPerson.sessions)","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 metadata.equals(otherPerson.metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" return Objects.hash(name, phone, email, address, roles, ccas, amount, attendance, sessions, metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"JuliaPoo"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"chuahjiajie"},"content":" .add(\"CCAs\", ccas)","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"LifHoshi"},"content":" .add(\"amount\", amount)","lastModifiedDate":"2024-03-31"},{"lineNumber":187,"author":{"gitId":"chuahjiajie"},"content":" .add(\"attendance\", attendance)","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chuahjiajie"},"content":" .add(\"sessions\", sessions)","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"alphajae11"},"content":" .add(\"metadata\", metadata)","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"JuliaPoo":16,"chuahjiajie":36,"alphajae11":10,"-":112,"LifHoshi":19}},{"path":"src/main/java/seedu/address/model/person/UniqueCcaList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" * This file is copied and modified from UniquePersonList.java","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import java.util.List;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.exceptions.CcaNotFoundException;","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.exceptions.DuplicateCcaException;","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" * A list of ccas that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" * A cca is considered unique by comparing using {@code Cca#isSameCca(Cca)}. As such, adding and updating of","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" * ccas uses Cca#isSameCca(Cca) for equality so as to ensure that the cca being added or updated is","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" * unique in terms of identity in the UniqueCcaList. However, the removal of a cca uses Person#equals(Object) so","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" * as to ensure that the cca with exactly the same fields will be removed.","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" * @see Cca#isSameCcaName(Cca)","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":"public class UniqueCcaList implements Iterable\u003cCca\u003e {","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" private final ObservableList\u003cCca\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" private final ObservableList\u003cCca\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" * Gets the corresponding Cca in this.","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" * @param ccaName","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" * @return cca in list","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" public Cca getUniqueCca(String ccaName) {","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(ccaName);","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" return internalList","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" // Find cca in list.","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" .filter(c -\u003e c.ccaName.equals(ccaName))","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" .findFirst()","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":" // If it doesn\u0027t exist, create a new one.","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":" .orElseGet(() -\u003e {","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" Cca newCca \u003d new Cca(ccaName);","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":" internalList.add(newCca);","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" return newCca;","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" });","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" public Set\u003cCca\u003e getUniqueCcas(Set\u003cCca\u003e currentCcas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" return currentCcas","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" .map(c -\u003e this.getUniqueCca(c.ccaName))","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toCollection(HashSet::new));","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if the list contains an equivalent cca as the given argument.","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" public boolean contains(Cca toCheck) {","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":" return internalList.stream().anyMatch(toCheck::isSameCcaName);","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":" * Adds a cca to the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" * The cca must not already exist in the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" public void add(Cca toAdd) {","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":" throw new DuplicateCcaException();","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-31"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" * Replaces the cca {@code target} in the list with {@code editedCca}.","lastModifiedDate":"2024-03-31"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" * The cca name of {@code editedCca} must not be the same as another existing Cca in the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" public void setCca(Cca target, Cca editedCca) {","lastModifiedDate":"2024-03-31"},{"lineNumber":92,"author":{"gitId":"JuliaPoo"},"content":" requireAllNonNull(target, editedCca);","lastModifiedDate":"2024-03-31"},{"lineNumber":93,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":94,"author":{"gitId":"JuliaPoo"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-31"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-31"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" throw new CcaNotFoundException();","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" if (!target.isSameCcaName(editedCca) \u0026\u0026 contains(editedCca)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" throw new DuplicateCcaException();","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":103,"author":{"gitId":"JuliaPoo"},"content":" internalList.set(index, editedCca);","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"JuliaPoo"},"content":" * Removes the equivalent cca from the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":" * The cca must exist in the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" public void remove(Cca toRemove) {","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" throw new CcaNotFoundException();","lastModifiedDate":"2024-03-31"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":116,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":117,"author":{"gitId":"JuliaPoo"},"content":" public void setCcas(UniqueCcaList replacement) {","lastModifiedDate":"2024-03-31"},{"lineNumber":118,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"JuliaPoo"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-31"},{"lineNumber":120,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":121,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":122,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":123,"author":{"gitId":"JuliaPoo"},"content":" * Replaces the contents of this list with {@code ccas}.","lastModifiedDate":"2024-03-31"},{"lineNumber":124,"author":{"gitId":"JuliaPoo"},"content":" * {@code ccas} must not contain duplicate ccas.","lastModifiedDate":"2024-03-31"},{"lineNumber":125,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":" public void setCcas(List\u003cCca\u003e ccas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"JuliaPoo"},"content":" requireAllNonNull(ccas);","lastModifiedDate":"2024-03-31"},{"lineNumber":128,"author":{"gitId":"JuliaPoo"},"content":" if (!ccasAreUnique(ccas)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"JuliaPoo"},"content":" throw new DuplicateCcaException();","lastModifiedDate":"2024-03-31"},{"lineNumber":130,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":131,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":132,"author":{"gitId":"JuliaPoo"},"content":" internalList.setAll(ccas);","lastModifiedDate":"2024-03-31"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":135,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-31"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-31"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-31"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":141,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":142,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":143,"author":{"gitId":"JuliaPoo"},"content":" public Iterator\u003cCca\u003e iterator() {","lastModifiedDate":"2024-03-31"},{"lineNumber":144,"author":{"gitId":"JuliaPoo"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-31"},{"lineNumber":145,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":146,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":147,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":148,"author":{"gitId":"JuliaPoo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":149,"author":{"gitId":"JuliaPoo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-31"},{"lineNumber":150,"author":{"gitId":"JuliaPoo"},"content":" return true;","lastModifiedDate":"2024-03-31"},{"lineNumber":151,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-31"},{"lineNumber":154,"author":{"gitId":"JuliaPoo"},"content":" if (!(other instanceof UniqueCcaList)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":155,"author":{"gitId":"JuliaPoo"},"content":" return false;","lastModifiedDate":"2024-03-31"},{"lineNumber":156,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":157,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":158,"author":{"gitId":"JuliaPoo"},"content":" UniqueCcaList otherUniqueCcaList \u003d (UniqueCcaList) other;","lastModifiedDate":"2024-03-31"},{"lineNumber":159,"author":{"gitId":"JuliaPoo"},"content":" return internalList.equals(otherUniqueCcaList.internalList);","lastModifiedDate":"2024-03-31"},{"lineNumber":160,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":161,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":162,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":163,"author":{"gitId":"JuliaPoo"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-31"},{"lineNumber":164,"author":{"gitId":"JuliaPoo"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-31"},{"lineNumber":165,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":166,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":167,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":168,"author":{"gitId":"JuliaPoo"},"content":" public String toString() {","lastModifiedDate":"2024-03-31"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-31"},{"lineNumber":170,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":172,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":173,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if {@code ccas} contains only unique ccas.","lastModifiedDate":"2024-03-31"},{"lineNumber":174,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":175,"author":{"gitId":"JuliaPoo"},"content":" private boolean ccasAreUnique(List\u003cCca\u003e ccas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":176,"author":{"gitId":"JuliaPoo"},"content":" for (int i \u003d 0; i \u003c ccas.size() - 1; i++) {","lastModifiedDate":"2024-03-31"},{"lineNumber":177,"author":{"gitId":"JuliaPoo"},"content":" for (int j \u003d i + 1; j \u003c ccas.size(); j++) {","lastModifiedDate":"2024-03-31"},{"lineNumber":178,"author":{"gitId":"JuliaPoo"},"content":" if (ccas.get(i).isSameCcaName(ccas.get(j))) {","lastModifiedDate":"2024-03-31"},{"lineNumber":179,"author":{"gitId":"JuliaPoo"},"content":" return false;","lastModifiedDate":"2024-03-31"},{"lineNumber":180,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":181,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":182,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":183,"author":{"gitId":"JuliaPoo"},"content":" return true;","lastModifiedDate":"2024-03-31"},{"lineNumber":184,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":185,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"JuliaPoo":185}},{"path":"src/main/java/seedu/address/model/person/exceptions/CcaNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.person.exceptions;","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":" * Signals that the operation is unable to find the specified cca.","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"public class CcaNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"JuliaPoo":6}},{"path":"src/main/java/seedu/address/model/person/exceptions/DuplicateCcaException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.person.exceptions;","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":" * Signals that the operation will result in duplicate Cca (Cca are considered duplicates if they have the same","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":" * ccaName).","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"public class DuplicateCcaException extends RuntimeException {","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":" public DuplicateCcaException() {","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":" super(\"Multiple CCAs of the same name.\");","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"src/main/java/seedu/address/model/roles/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":" * Represents a Role in the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidRoleName(String)}","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"public class Role {","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Role names should be alphanumeric with whitespace\";","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}\\\\s]+\";","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":" public final String roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" * Constructs a {@code Role}.","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" * @param roleName A valid role name.","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" public Role(String roleName) {","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(roleName);","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" checkArgument(isValidRoleName(roleName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if a given string is a valid role name.","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" public static boolean isValidRoleName(String test) {","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" Role otherRole \u003d (Role) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" return roleName.equals(otherRole.roleName);","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":" return roleName.hashCode();","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" return \u0027[\u0027 + roleName + \u0027]\u0027;","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":62}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"friends\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I have a sleeping disorder.\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"colleagues\", \"friends\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I have food allergies: Egg and peanuts\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"neighbours\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I like to sleep on the floor.\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"family\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I like to sleep on the floor.\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"classmates\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I have food allergies: Egg and peanuts\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"colleagues\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I like eating grapes.\"))","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" sampleAb.addCca(new Cca(\"NUS Cycling\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" * Returns a role set containing the list of strings given.","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" public static Set\u003cRole\u003e getRoleSet(String... strings) {","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" .map(Role::new)","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"chuahjiajie"},"content":" * Returns a CCA set containing the list of strings given.","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"chuahjiajie"},"content":" public static Set\u003cCca\u003e getCcaSet(String... strings) {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"chuahjiajie"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"chuahjiajie"},"content":" .map(Cca::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"chuahjiajie"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"JuliaPoo":5,"chuahjiajie":17,"alphajae11":13,"-":50,"LifHoshi":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAmount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import com.fasterxml.jackson.databind.JsonNode;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" * Jackson-friendly version of {@link Amount}.","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"public class JsonAdaptedAmount {","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Amount\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" private final String value;","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" * Constructs a {@code JsonAdaptedAmount} with the given amount details.","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" @JsonCreator","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" public JsonAdaptedAmount(JsonNode jsonNode) {","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" this.value \u003d jsonNode.get(\"value\").asText();","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" * Converts a given {@code Amount} into this class for Jackson use.","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" public JsonAdaptedAmount(Amount source) {","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" value \u003d source.value.toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" @JsonProperty(\"value\")","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" public String getValue() {","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" return value;","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" * Converts this Jackson-friendly adapted amount object into the model\u0027s","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" * {@code Amount} object.","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" * @throws IllegalValueException if there were any data constraints violated in","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" * the adapted amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" public Amount toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" if (!Amount.isValidAmount(value)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" throw new IllegalValueException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" return new Amount(value);","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":53,"Fidget-Spinner":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedCCA.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" * Jackson-friendly version of {@link CCA}.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"class JsonAdaptedCca {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" private final String ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" * Constructs a {@code JsonAdaptedCCA} with the given {@code CCAName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" @JsonCreator","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" public JsonAdaptedCca(String ccaName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" this.ccaName \u003d ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" * Converts a given {@code CCA} into this class for Jackson use.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" public JsonAdaptedCca(Cca source) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" ccaName \u003d source.ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" @JsonValue","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" public String getCcaName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" return ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" * Converts this Jackson-friendly adapted Cca object into the model\u0027s {@code CCA} object.","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted CCA.","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" public Cca toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" if (!Cca.isValidCcaName(ccaName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(Cca.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" return new Cca(ccaName);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":1,"chuahjiajie":47}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" private final String metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" private final List\u003cJsonAdaptedRole\u003e roles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" private final List\u003cJsonAdaptedCca\u003e ccas \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" private final JsonAdaptedAmount amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" private final String attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" private final String sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"roles\") List\u003cJsonAdaptedRole\u003e roles,","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"CCAs\") List\u003cJsonAdaptedCca\u003e ccas,","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"amount\") JsonAdaptedAmount amount,","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"attendance\") String attendance,","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"sessions\") String sessions,","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"metadata\") String metadata) {","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" if (roles !\u003d null) {","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" if (ccas !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" this.ccas.addAll(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" this.amount \u003d amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"chuahjiajie"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" this.sessions \u003d sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"alphajae11"},"content":" metadata \u003d source.getMetadata().metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":" amount \u003d new JsonAdaptedAmount(source.getAmount());","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" roles.addAll(source.getRoles().stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"chuahjiajie"},"content":" ccas.addAll(source.getCcas().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"chuahjiajie"},"content":" .map(JsonAdaptedCca::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"chuahjiajie"},"content":" attendance \u003d source.getAtt().value;","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chuahjiajie"},"content":" sessions \u003d source.getSess().value;","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" final List\u003cRole\u003e personRoles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" for (JsonAdaptedRole role : roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" personRoles.add(role.toModelType());","lastModifiedDate":"2024-03-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" final List\u003cCca\u003e personCcas \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" for (JsonAdaptedCca cca : ccas) {","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" personCcas.add(cca.toModelType());","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"LifHoshi"},"content":" if (amount \u003d\u003d null) {","lastModifiedDate":"2024-03-31"},{"lineNumber":140,"author":{"gitId":"LifHoshi"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Amount.class.getSimpleName()));","lastModifiedDate":"2024-03-31"},{"lineNumber":141,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":142,"author":{"gitId":"LifHoshi"},"content":" if (!Amount.isValidAmount(amount.getValue())) {","lastModifiedDate":"2024-03-31"},{"lineNumber":143,"author":{"gitId":"LifHoshi"},"content":" throw new IllegalValueException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":144,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":145,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"alphajae11"},"content":" if (metadata \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"alphajae11"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"alphajae11"},"content":" Metadata.class.getSimpleName()));","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"alphajae11"},"content":" if (!Metadata.isValidMetadata(metadata)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"alphajae11"},"content":" throw new IllegalValueException(Metadata.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"alphajae11"},"content":" final Metadata modelMetadata \u003d new Metadata(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"LifHoshi"},"content":" final Amount modelAmount \u003d amount.toModelType();","lastModifiedDate":"2024-03-31"},{"lineNumber":156,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":" if (attendance \u003d\u003d null) {","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chuahjiajie"},"content":" Attendance.class.getSimpleName()));","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":" if (!Attendance.isValidAttendance(attendance)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(Attendance.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" final Attendance modelAtt \u003d new Attendance(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":" if (sessions \u003d\u003d null) {","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" Sessions.class.getSimpleName()));","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":" if (!Sessions.isValidSessions(sessions)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(Sessions.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" final Sessions modelSess \u003d new Sessions(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":" if (isMoreThanSess(modelAtt, modelSess)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(Attendance.MESSAGE_LESS_THAN_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-31"},{"lineNumber":179,"author":{"gitId":"JuliaPoo"},"content":" final Set\u003cRole\u003e modelRoles \u003d new HashSet\u003c\u003e(personRoles);","lastModifiedDate":"2024-03-29"},{"lineNumber":180,"author":{"gitId":"chuahjiajie"},"content":" final Set\u003cCca\u003e modelCcas \u003d new HashSet\u003c\u003e(personCcas);","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":182,"author":{"gitId":"chuahjiajie"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRoles, modelCcas, modelAmount,","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"chuahjiajie"},"content":" modelAtt, modelSess, modelMetadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":186,"author":{"gitId":"chuahjiajie"},"content":" public boolean isMoreThanSess(Attendance attendance, Sessions sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"chuahjiajie"},"content":" return attendance.getValue() \u003e sessions.getValue();","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"JuliaPoo":10,"chuahjiajie":51,"alphajae11":14,"-":103,"LifHoshi":11}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedRole.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":" * Jackson-friendly version of {@link Role}.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"class JsonAdaptedRole {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" private final String roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":" * Constructs a {@code JsonAdaptedRole} with the given {@code roleName}.","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" @JsonCreator","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" public JsonAdaptedRole(String roleName) {","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" * Converts a given {@code Role} into this class for Jackson use.","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" public JsonAdaptedRole(Role source) {","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" roleName \u003d source.roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" @JsonValue","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" public String getRoleName() {","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" return roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" * Converts this Jackson-friendly adapted rolex object into the model\u0027s {@code Role} object.","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted role.","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" public Role toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" if (!Role.isValidRoleName(roleName)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" return new Role(roleName);","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":48}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" public static final String MESSAGE_DUPLICATE_CCA \u003d \"Cca list contains duplicate cca(s).\";","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" private final List\u003cJsonAdaptedCca\u003e ccas \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" public JsonSerializableAddressBook(","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" @JsonProperty(\"ccas\") List\u003cJsonAdaptedCca\u003e ccas,","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" @JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" // The database can have an \"ccas\" field of length 0.","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" if (ccas !\u003d null) {","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" this.ccas.addAll(ccas);","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" ccas.addAll(source.getCcaList().stream().map(JsonAdaptedCca::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" for (JsonAdaptedCca jsonAdaptedCca : ccas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" Cca cca \u003d jsonAdaptedCca.toModelType();","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" if (addressBook.hasCca(cca)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CCA);","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" addressBook.addCca(cca);","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"JuliaPoo":18,"-":59}},{"path":"src/main/java/seedu/address/ui/CcaCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.IntStream;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"public class CcaCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" private static final String FXML \u003d \"CcaListCard.fxml\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" public final Cca cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" private HBox cardPane;","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" private Label ccaName;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" private VBox ccaRoleList;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" * Creates a {@code CcaCard} with the given {@code Cca} and index to display.","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" public CcaCard(Cca cca, ObservableList\u003cPerson\u003e allPersons) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" super(FXML);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" this.cca \u003d cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" ccaName.setText(cca.ccaName);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" FilteredList\u003cPerson\u003e ccaPersonel \u003d allPersons.filtered(p -\u003e !p","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":" .getCcas()","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" .noneMatch(c -\u003e c.ccaName.equals(cca.ccaName))","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" List\u003cRole\u003e allRoles \u003d ccaPersonel","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" .flatMap(p -\u003e p.getRoles().stream())","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" .distinct()","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" .sorted((a, b) -\u003e a.roleName.compareTo(b.roleName))","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" allRoles.forEach(r -\u003e ccaRoleList","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" .getChildren()","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" .add(generateRoleUi(r, ccaPersonel))","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" private HBox generateRoleListElementUi(int idx, Person p) {","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" Label pl \u003d new Label();","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" pl.getStyleClass().add(\"ccaRolePersonIndex\");","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":" pl.setText(Integer.valueOf(idx + 1).toString() + \". \");","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" Label nl \u003d new Label();","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":" nl.getStyleClass().add(\"ccaRolePersonName\");","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" nl.setText(p.getName().fullName);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" HBox hb \u003d new HBox();","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" hb.getChildren().add(pl);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" hb.getChildren().add(nl);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" return hb;","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" private VBox generateRoleUi(Role r, ObservableList\u003cPerson\u003e ccaPersonel) {","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" VBox rb \u003d new VBox();","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" rb.getStyleClass().add(\"ccaRoleListBox\");","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" // Add the role label","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" Label l \u003d new Label();","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" l.getStyleClass().add(\"ccaRoleName\");","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" l.setText(r.roleName + \":\");","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" rb.getChildren().add(l);","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"JuliaPoo"},"content":" // Get the people satisfying role","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"JuliaPoo"},"content":" List\u003cPerson\u003e rolePersonel \u003d ccaPersonel.filtered(p -\u003e !p","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" .getRoles()","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" .noneMatch(o -\u003e o.roleName.equals(r.roleName))","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" )","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" .sorted((a, b) -\u003e a.getName().fullName.compareTo(b.getName().fullName))","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"JuliaPoo"},"content":" // Create box for rolePersonel list","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" VBox b \u003d new VBox();","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"JuliaPoo"},"content":" b.getStyleClass().add(\"ccaRolePersonList\");","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":" IntStream","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"JuliaPoo"},"content":" .range(0, rolePersonel.size())","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":" .forEach(idx -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" Person p \u003d rolePersonel.get(idx);","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" b.getChildren().add(generateRoleListElementUi(idx, p));","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" rb.getChildren().add(b);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" return rb;","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"JuliaPoo":115}},{"path":"src/main/java/seedu/address/ui/DisplayObjectListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.ListChangeListener;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" * Represents a union type of all displayable classes","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"class DisplayObject {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" // Only one of these fields should be non-empty","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" private final Optional\u003cPerson\u003e person;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" private final Optional\u003cCca\u003e cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" public DisplayObject(Person person) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" this.person \u003d Optional.of(person);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" this.cca \u003d Optional.empty();","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" public DisplayObject(Cca cca) {","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" this.person \u003d Optional.empty();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" this.cca \u003d Optional.of(cca);","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" public boolean isPerson() {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" return this.person.isPresent();","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" public boolean isCca() {","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" return this.cca.isPresent();","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" public Person getPerson() {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" return this.person.get();","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" public Cca getCca() {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" return this.cca.get();","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":"public class DisplayObjectListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" private static final String FXML \u003d \"DisplayObjectListPanel.fxml\";","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" private ListView\u003cDisplayObject\u003e displayObjectListView;","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" * Creates a {@code DisplayObjectListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" public DisplayObjectListPanel(","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cPerson\u003e personList,","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cCca\u003e ccaList,","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cPerson\u003e allPersons) {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" super(FXML);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cDisplayObject\u003e displayObjects \u003d createDisplayObjectList(personList, ccaList)","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toCollection(FXCollections::observableArrayList));","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" displayObjectListView.setItems(displayObjects);","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" displayObjectListView.setCellFactory(lsitView -\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" new DisplayObjectListViewCell(allPersons)","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":" // The ObservableList displayObject is no longer automatically","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" // updated on change of personList and ccaList,","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" // so we\u0027d have to do it manually.","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" personList.addListener(new ListChangeListener\u003cPerson\u003e() {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":" public void onChanged(Change\u003c? extends Person\u003e c) {","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" displayObjects.setAll(createDisplayObjectList(personList, ccaList));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" ccaList.addListener(new ListChangeListener\u003cCca\u003e() {","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"JuliaPoo"},"content":" public void onChanged(Change\u003c? extends Cca\u003e c) {","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"JuliaPoo"},"content":" displayObjects.setAll(createDisplayObjectList(personList, ccaList));","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" private List\u003cDisplayObject\u003e createDisplayObjectList(","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cPerson\u003e personList, ObservableList\u003cCca\u003e ccaList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":" return Stream.concat(","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"JuliaPoo"},"content":" personList","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"JuliaPoo"},"content":" .map(p -\u003e new DisplayObject(p)),","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":" ccaList","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":" .map(c -\u003e new DisplayObject(c))","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" ).collect(Collectors.toList());","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" * Custom {@code ListCell} that displays the graphics of a","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" * {@code DisplayObject} using a {@code PersonCard} or a {@code CcaCard}.","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"JuliaPoo"},"content":" class DisplayObjectListViewCell extends ListCell\u003cDisplayObject\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"JuliaPoo"},"content":" private final ObservableList\u003cPerson\u003e allPersons;","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"JuliaPoo"},"content":" DisplayObjectListViewCell(ObservableList\u003cPerson\u003e allPersons) {","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"JuliaPoo"},"content":" super();","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"JuliaPoo"},"content":" this.allPersons \u003d allPersons;","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":" protected void updateItem(DisplayObject object, boolean empty) {","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"JuliaPoo"},"content":" super.updateItem(object, empty);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"JuliaPoo"},"content":" if (empty || object \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"JuliaPoo"},"content":" setGraphic(null);","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"JuliaPoo"},"content":" setText(null);","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"JuliaPoo"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":" Region card;","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":" if (object.isPerson()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"JuliaPoo"},"content":" card \u003d new PersonCard(object.getPerson(), getIndex() + 1).getRoot();","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":" card \u003d new CcaCard(object.getCca(), allPersons).getRoot();","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" card.getStyleClass().add((getIndex() % 2 \u003d\u003d 0) ? \"ccaEven\" : \"ccaOdd\");","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" setGraphic(card);","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"JuliaPoo":144}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" private DisplayObjectListPanel displayObjectListPanel;","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" private StackPane displayObjectListPanelPlaceholder;","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" displayObjectListPanel \u003d new DisplayObjectListPanel(","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" logic.getFilteredPersonList(),","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":" logic.getFilteredCcaList(),","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"JuliaPoo"},"content":" logic.getAddressBook().getPersonList());","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"JuliaPoo"},"content":" displayObjectListPanelPlaceholder.getChildren().add(displayObjectListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" public DisplayObjectListPanel getDisplayObjectListPanel() {","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"JuliaPoo"},"content":" return displayObjectListPanel;","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"JuliaPoo":9,"-":190}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" private Label metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" private FlowPane roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" private FlowPane ccas;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" @FXML","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" private Label owe;","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" @FXML","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" private Label attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" owe.setText(\"Owe: \" + \"$\" + person.getAmount().value);","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" attendance.setText(\"Attendance: \" + person.getAtt().value + \"/\" + person.getSess());","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"alphajae11"},"content":" metadata.setText(person.getMetadata().metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" person.getRoles().stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" .sorted(Comparator.comparing(role -\u003e role.roleName))","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" .forEach(role -\u003e roles.getChildren().add(new Label(role.roleName)));","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"chuahjiajie"},"content":" person.getCcas().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" .sorted(Comparator.comparing(cca -\u003e cca.ccaName))","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" .forEach(cca -\u003e ccas.getChildren().add(new Label(cca.ccaName)));","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"JuliaPoo":5,"chuahjiajie":7,"alphajae11":3,"-":55,"LifHoshi":4}},{"path":"src/main/resources/view/CcaListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"\u003cHBox id\u003d\"cardPaneCca\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" \u003cLabel fx:id\u003d\"ccaName\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" \u003cLabel id\u003d\"ccaRoleListLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Roles:\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" \u003cVBox fx:id\u003d\"ccaRoleList\" alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"JuliaPoo":29}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"JuliaPoo"},"content":"#roles {","lastModifiedDate":"2024-03-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"JuliaPoo"},"content":"#roles .label {","lastModifiedDate":"2024-03-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":354,"author":{"gitId":"JuliaPoo"},"content":"#ccas {","lastModifiedDate":"2024-03-22"},{"lineNumber":355,"author":{"gitId":"JuliaPoo"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-22"},{"lineNumber":356,"author":{"gitId":"JuliaPoo"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-22"},{"lineNumber":357,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":358,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":359,"author":{"gitId":"JuliaPoo"},"content":"#ccas .label {","lastModifiedDate":"2024-03-22"},{"lineNumber":360,"author":{"gitId":"JuliaPoo"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-22"},{"lineNumber":361,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-color: #913e68;","lastModifiedDate":"2024-03-22"},{"lineNumber":362,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-22"},{"lineNumber":363,"author":{"gitId":"JuliaPoo"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-22"},{"lineNumber":364,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-22"},{"lineNumber":365,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-22"},{"lineNumber":366,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":367,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":368,"author":{"gitId":"JuliaPoo"},"content":"#ccalabel #rolelabel {","lastModifiedDate":"2024-03-29"},{"lineNumber":369,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-22"},{"lineNumber":370,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":371,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":372,"author":{"gitId":"JuliaPoo"},"content":".ccaRoleListLabel {","lastModifiedDate":"2024-04-04"},{"lineNumber":373,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":374,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 16;","lastModifiedDate":"2024-04-04"},{"lineNumber":375,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":376,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":377,"author":{"gitId":"JuliaPoo"},"content":".ccaRoleList {","lastModifiedDate":"2024-04-04"},{"lineNumber":378,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 0 0 0 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":379,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":380,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":381,"author":{"gitId":"JuliaPoo"},"content":".ccaRoleName {","lastModifiedDate":"2024-04-04"},{"lineNumber":382,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":383,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 14;","lastModifiedDate":"2024-04-04"},{"lineNumber":384,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":385,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":386,"author":{"gitId":"JuliaPoo"},"content":".ccaRolePersonName {","lastModifiedDate":"2024-04-04"},{"lineNumber":387,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-04-04"},{"lineNumber":388,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-04-04"},{"lineNumber":389,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-color: #1d3741;","lastModifiedDate":"2024-04-04"},{"lineNumber":390,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-04-04"},{"lineNumber":391,"author":{"gitId":"JuliaPoo"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-04-04"},{"lineNumber":392,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-04-04"},{"lineNumber":393,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":394,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":395,"author":{"gitId":"JuliaPoo"},"content":".ccaRolePersonIndex {","lastModifiedDate":"2024-04-04"},{"lineNumber":396,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-04-04"},{"lineNumber":397,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 13;","lastModifiedDate":"2024-04-04"},{"lineNumber":398,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":399,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":400,"author":{"gitId":"JuliaPoo"},"content":".ccaRolePersonList {","lastModifiedDate":"2024-04-04"},{"lineNumber":401,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 0 0 0 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":402,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":403,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":404,"author":{"gitId":"JuliaPoo"},"content":".ccaRoleListBox {","lastModifiedDate":"2024-04-04"},{"lineNumber":405,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 0 0 10 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":406,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":407,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":408,"author":{"gitId":"JuliaPoo"},"content":".ccaEven {","lastModifiedDate":"2024-04-04"},{"lineNumber":409,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-color: rgb(15, 13, 27);","lastModifiedDate":"2024-04-04"},{"lineNumber":410,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":411,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":412,"author":{"gitId":"JuliaPoo"},"content":".ccaOdd {","lastModifiedDate":"2024-04-04"},{"lineNumber":413,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-color: rgb(33, 28, 62);","lastModifiedDate":"2024-04-04"},{"lineNumber":414,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"JuliaPoo":64,"-":350}},{"path":"src/main/resources/view/DisplayObjectListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":" \u003cListView fx:id\u003d\"displayObjectListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":1,"-":7}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":" title\u003d\"CCA Manager App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" \u003cVBox fx:id\u003d\"displayObjectList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" \u003cStackPane fx:id\u003d\"displayObjectListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"JuliaPoo":2,"-":57,"Fidget-Spinner":1}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" \u003cFlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" \u003cLabel fx:id\u003d\"rolelabel\" text\u003d\"Roles: \"/\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" \u003cFlowPane fx:id\u003d\"roles\"\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" \u003cFlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" \u003cLabel fx:id\u003d\"ccalabel\" text\u003d\"CCAs: \"/\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" \u003cFlowPane fx:id\u003d\"ccas\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" \u003cLabel fx:id\u003d\"owe\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$owe\" /\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" \u003cLabel fx:id\u003d\"attendance\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$attendance\" /\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" \u003cLabel fx:id\u003d\"metadata\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$metadata\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":10,"chuahjiajie":1,"alphajae11":1,"-":35,"LifHoshi":1}},{"path":"src/main/resources/view/StatusBarFooter.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" style\u003d\"-fx-background-color: #E27c39;\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" /\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2016-08-26"}],"authorContributionMap":{"-":11,"LifHoshi":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CCA_DESC_DEFAULT;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.METADATA_DESC_DEFAULT;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"alphajae11"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CCA_DESC_DEFAULT + METADATA_DESC_DEFAULT;","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"JuliaPoo"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRoles().build();","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"JuliaPoo":1,"chuahjiajie":1,"alphajae11":2,"-":173}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getFilteredCcaList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":159,"author":{"gitId":"JuliaPoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":160,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":161,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":168,"author":{"gitId":"JuliaPoo"},"content":" public void updateFilteredCcaList(Predicate\u003cCca\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"Fidget-Spinner"},"content":" public void deleteCca(Cca cca) {","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"Fidget-Spinner"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":210,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"JuliaPoo":10,"-":203,"Fidget-Spinner":5}},{"path":"src/test/java/seedu/address/logic/commands/AssignCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HEAD;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"import seedu.address.testutil.AssignPersonDescriptorBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" * Contains integration tests (interaction with the Model) and unit tests for AssignCommand.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":"public class AssignCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" public void execute_assignRole_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" Person assignedPerson \u003d personInList.withRoles(VALID_ROLE_HEAD).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor descriptor \u003d new AssignPersonDescriptorBuilder(VALID_ROLE_HEAD).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" AssignCommand assignCommand \u003d new AssignCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_ASSIGN_PERSON_SUCCESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" Messages.format(assignedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" expectedModel.setPerson(lastPerson, assignedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"alphajae11"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor descriptor \u003d new AssignPersonDescriptorBuilder(VALID_ROLE_HEAD).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alphajae11"},"content":" AssignCommand assignCommand \u003d new AssignCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":1,"alphajae11":55,"Fidget-Spinner":2}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" public static final String VALID_ROLE_HUSBAND \u003d \"husband\";","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" public static final String VALID_ROLE_HEAD \u003d \"Head\";","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" public static final String VALID_ROLE_FRIEND \u003d \"friend\";","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALID_CCA \u003d \"NUS Cycling\";","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" public static final String VALID_AMOUNT \u003d \"10.00\";","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALID_ATTENDANCE \u003d \"1\";","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALID_SESSIONS \u003d \"5\";","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" public static final String VALID_METADATA \u003d \"I like to do leetcode everyday.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" public static final String ROLE_DESC_FRIEND \u003d \" \" + PREFIX_ROLE + VALID_ROLE_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" public static final String ROLE_DESC_HUSBAND \u003d \" \" + PREFIX_ROLE + VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"alphajae11"},"content":" public static final String ROLE_DESC_HEAD \u003d \" \" + PREFIX_ROLE + VALID_ROLE_HEAD;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" public static final String CCA_DESC_DEFAULT \u003d \" \" + PREFIX_CCA + VALID_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" public static final String AMOUNT_DESC_DEFAULT \u003d \" \" + PREFIX_AMOUNT + VALID_AMOUNT;","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" public static final String ATTENDANCE_DESC_DEFAULT \u003d \" \" + PREFIX_ATTENDANCE + VALID_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" public static final String SESSIONS_DESC_DEFAULT \u003d \" \" + PREFIX_SESSIONS + VALID_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"alphajae11"},"content":" public static final String METADATA_DESC_DEFAULT \u003d \" \" + PREFIX_METADATA + VALID_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \"hubby*\"; // \u0027*\u0027 not allowed in roles","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" public static final String INVALID_AMOUNT_DESC \u003d \" \" + PREFIX_AMOUNT + \"10.00.00\"; // extra decimal point","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"chuahjiajie"},"content":" public static final String INVALID_ATTENDANCE_DESC \u003d \" \" + PREFIX_ATTENDANCE + \"-1\"; // negative integer not allowed","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chuahjiajie"},"content":" public static final String INVALID_SESSIONS_DESC \u003d \" \" + PREFIX_SESSIONS + \"-1\"; // negative integer not allowed","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(VALID_ROLE_FRIEND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(VALID_ROLE_HUSBAND, VALID_ROLE_FRIEND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"JuliaPoo":7,"chuahjiajie":11,"alphajae11":6,"-":119,"LifHoshi":4}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" Person editedPerson \u003d new PersonBuilder().withAmount(\"10.00\").withAtt(\"0\").withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" .build();","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" .withPhone(VALID_PHONE_BOB).withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"JuliaPoo":3,"chuahjiajie":2,"-":180}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" // different roles -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", roles\u003d\"","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" + editPersonDescriptor.getRoles().orElse(null) + \", CCAs\u003d\"","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" + editPersonDescriptor.getMetadata().orElse(null) + \", Metadata\u003d\"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"}\";","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"JuliaPoo":6,"alphajae11":1,"-":66}},{"path":"src/test/java/seedu/address/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommand.java. All credits and thanks to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" * Contains integration tests (interaction with the Model) for {@code FilterCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"first\")","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e secondPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"second\")","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" new CcaContainsKeywordPredicate(firstPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" new CcaContainsKeywordPredicate(secondPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand findFirstCommand \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand findSecondCommand \u003d new FilterCommand(secondPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand findFirstCommandCopy \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d preparePredicate(\"hi\");","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d preparePredicate(\"NUS Bakes, NUS Cycling\");","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, CARL, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e predicateKeywordsList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"friends\")","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":" predicateKeywordsList,","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand filterCommand \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Fidget-Spinner"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{cca\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" * Parses {@code userInput} into a {@code CcaContainsKeywordPredicate}.","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"Fidget-Spinner"},"content":" private CcaContainsKeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"Fidget-Spinner"},"content":" return new CcaContainsKeywordPredicate(Arrays.stream(userInput.split(\",\"))","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Fidget-Spinner"},"content":" .map(String::trim).map(Cca::new).collect(Collectors.toSet()), Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"JuliaPoo":1,"Fidget-Spinner":116}},{"path":"src/test/java/seedu/address/logic/commands/OweCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" * OweCommand.","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":"public class OweCommandTest {","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"10.00\");","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" OweCommand oweCommand \u003d new OweCommand(outOfBoundIndex, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" assertCommandFailure(oweCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" public void equals() {","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"10.00\");","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" final OweCommand standardCommand \u003d new OweCommand(INDEX_FIRST_PERSON, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" OweCommand commandWithSameValues \u003d new OweCommand(INDEX_FIRST_PERSON, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" assertTrue(!standardCommand.equals(null));","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" assertTrue(!standardCommand.equals(new OweCommand(INDEX_SECOND_PERSON, amount)));","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":55}},{"path":"src/test/java/seedu/address/logic/commands/SetAttCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.testutil.SetAttDescriptorBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" * Contains integration tests (interaction with the Model) and unit tests for SetAttCommand.","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttCommandTest {","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" public void execute_assignRole_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" Person setAttPerson \u003d personInList.withAtt(VALID_ATTENDANCE).withSess(VALID_SESSIONS).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor descriptor \u003d new SetAttDescriptorBuilder(VALID_ATTENDANCE, VALID_SESSIONS)","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" .build();","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand setAttCommand \u003d new SetAttCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d String.format(SetAttCommand.MESSAGE_SETATT_PERSON_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" Messages.format(setAttPerson));","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" expectedModel.setPerson(lastPerson, setAttPerson);","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" assertCommandSuccess(setAttCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor descriptor \u003d new SetAttDescriptorBuilder(VALID_ATTENDANCE, VALID_SESSIONS)","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" .build();","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand setAttCommand \u003d new SetAttCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" assertCommandFailure(setAttCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":59}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CCA_DESC_DEFAULT;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.METADATA_DESC_DEFAULT;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_FRIEND).withAmount(\"0.0\").build();","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"alphajae11"},"content":" + ADDRESS_DESC_BOB + ROLE_DESC_FRIEND + CCA_DESC_DEFAULT + METADATA_DESC_DEFAULT,","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" // multiple roles - all accepted","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" Person expectedPersonMultipleRoles \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_FRIEND, VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" .withAmount(\"0.0\").build();","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + ROLE_DESC_HUSBAND","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"alphajae11"},"content":" + ROLE_DESC_FRIEND + CCA_DESC_DEFAULT + METADATA_DESC_DEFAULT,","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" new AddCommand(expectedPersonMultipleRoles));","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":" public void parse_repeatedNonRoleValue_failure() {","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":" + ADDRESS_DESC_BOB + ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" // zero roles","lastModifiedDate":"2024-03-29"},{"lineNumber":139,"author":{"gitId":"LifHoshi"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRoles().withAmount(\"0.0\").build();","lastModifiedDate":"2024-03-31"},{"lineNumber":140,"author":{"gitId":"chuahjiajie"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"alphajae11"},"content":" + CCA_DESC_DEFAULT + METADATA_DESC_DEFAULT,","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":178,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"JuliaPoo"},"content":" // invalid role","lastModifiedDate":"2024-03-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"JuliaPoo"},"content":" + INVALID_ROLE_DESC + VALID_ROLE_FRIEND, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":198,"author":{"gitId":"JuliaPoo"},"content":" + ADDRESS_DESC_BOB + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND,","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"JuliaPoo":20,"chuahjiajie":2,"alphajae11":5,"-":171,"LifHoshi":3}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.OweCommand;","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" Person person \u003d new PersonBuilder().withAmount(\"0.0\").build();","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" public void parseCommand_filter() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" List\u003cString\u003e ccas \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e keywords \u003d ccas","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":" String cmd \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand.COMMAND_WORD + \" \" + ccas.stream().map(cca -\u003e \"c/\" + cca)","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.joining(\" \"));","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(cmd);","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(new FilterCommand(new CcaContainsKeywordPredicate(keywords, Optional.empty())), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" public void parseCommand_owe() throws Exception {","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"LifHoshi"},"content":" OweCommand command \u003d (OweCommand) parser.parseCommand(OweCommand.COMMAND_WORD + \" 1 m/10\");","lastModifiedDate":"2024-03-31"},{"lineNumber":120,"author":{"gitId":"LifHoshi"},"content":" assertEquals(new OweCommand(INDEX_FIRST_PERSON, new Amount(\"10\")), command);","lastModifiedDate":"2024-03-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"-":97,"Fidget-Spinner":19,"LifHoshi":7}},{"path":"src/test/java/seedu/address/logic/parser/AssignCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HEAD;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"public class AssignCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":" private AssignCommandParser parser \u003d new AssignCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":" // no index specified","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" assertParseFailure(parser, VALID_ROLE_HEAD, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" // no role specified","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" assertParseFailure(parser, \"1\", AssignCommand.MESSAGE_NOT_ASSIGNED);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":" // no index and no role specified","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"alphajae11":30,"Fidget-Spinner":2}},{"path":"src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" System.out.println(command.equals(expectedCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"alphajae11":1,"-":39}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" private static final String ROLE_EMPTY \u003d \" \" + PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROLE_DESC, Role.MESSAGE_CONSTRAINTS); // invalid role","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" // while parsing {@code PREFIX_ROLE} alone will reset the roles of the {@code Person} being edited,","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" // parsing it together with a valid role results in error","lastModifiedDate":"2024-03-29"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_FRIEND + ROLE_DESC_HUSBAND + ROLE_EMPTY, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_FRIEND + ROLE_EMPTY + ROLE_DESC_HUSBAND, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" assertParseFailure(parser, \"1\" + ROLE_EMPTY + ROLE_DESC_FRIEND + ROLE_DESC_HUSBAND, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + ROLE_DESC_HUSBAND","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(VALID_ROLE_HUSBAND, VALID_ROLE_FRIEND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"JuliaPoo"},"content":" // roles","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"JuliaPoo"},"content":" userInput \u003d targetIndex.getOneBased() + ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"JuliaPoo"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRoles(VALID_ROLE_FRIEND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" // AddCommandParserTest#parse_repeatedNonRoleValue_failure()","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + ROLE_DESC_FRIEND","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"JuliaPoo"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"JuliaPoo":23,"-":174}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCOmmandParserTest.java. Full credits to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// authors and CS2103T teaching team.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_NOT_FILTER_CCA));","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e keywords \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"Alice\", \"Bob\")","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand expectedFilterCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" new FilterCommand(new CcaContainsKeywordPredicate(keywords, Optional.empty()));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" assertParseSuccess(parser, \" c/Alice c/Bob\", expectedFilterCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" assertParseSuccess(parser, \" \\n c/Alice \\n \\t c/Bob \\t\", expectedFilterCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Fidget-Spinner":46}},{"path":"src/test/java/seedu/address/logic/parser/OweCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HEAD;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.OweCommand;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"public class OweCommandParserTest {","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" OweCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" private OweCommandParser parser \u003d new OweCommandParser();","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" // no index specified","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" assertParseFailure(parser, VALID_ROLE_HEAD, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" // no role specified","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" assertParseFailure(parser, \"1\", OweCommand.MESSAGE_NOT_OWE);","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" // no index and no role specified","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" public void parse_invalidIndex_failure() {","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" // invalid index","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" assertParseFailure(parser, \"a\" + VALID_ROLE_HEAD, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":37}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" private static final String INVALID_ROLE \u003d \"#friend\";","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" private static final String VALID_ROLE_1 \u003d \"friend\";","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" private static final String VALID_ROLE_2 \u003d \"neighbour\";","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":" public void parseRole_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRole(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"JuliaPoo"},"content":" public void parseRole_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRole(INVALID_ROLE));","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"JuliaPoo"},"content":" public void parseRole_validValueWithoutWhitespace_returnsRole() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"JuliaPoo"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"JuliaPoo"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(VALID_ROLE_1));","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"JuliaPoo"},"content":" public void parseRole_validValueWithWhitespace_returnsTrimmedRole() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" String roleWithWhitespace \u003d WHITESPACE + VALID_ROLE_1 + WHITESPACE;","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"JuliaPoo"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(roleWithWhitespace));","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"JuliaPoo"},"content":" public void parseRoles_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoles(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"JuliaPoo"},"content":" public void parseRoles_collectionWithInvalidRoles_throwsParseException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, INVALID_ROLE)));","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"JuliaPoo"},"content":" public void parseRoles_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"JuliaPoo"},"content":" assertTrue(ParserUtil.parseRoles(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"JuliaPoo"},"content":" public void parseRoles_collectionWithValidRoles_returnsRoleSet() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e actualRoleSet \u003d ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, VALID_ROLE_2));","lastModifiedDate":"2024-03-29"},{"lineNumber":192,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e expectedRoleSet \u003d new HashSet\u003cRole\u003e(Arrays.asList(new Role(VALID_ROLE_1), new Role(VALID_ROLE_2)));","lastModifiedDate":"2024-03-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"JuliaPoo"},"content":" assertEquals(expectedRoleSet, actualRoleSet);","lastModifiedDate":"2024-03-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"JuliaPoo":25,"-":171}},{"path":"src/test/java/seedu/address/logic/parser/SetAttCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ATTENDANCE_DESC_DEFAULT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SESSIONS_DESC_DEFAULT;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttCommandParserTest {","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SetAttCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" private SetAttCommandParser parser \u003d new SetAttCommandParser();","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" // no index specified","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" assertParseFailure(parser, ATTENDANCE_DESC_DEFAULT + SESSIONS_DESC_DEFAULT, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" // no role specified","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" // no index and no role specified","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":31}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" private final ObservableList\u003cCca\u003e ccas \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getCcaList() {","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" return ccas;","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"JuliaPoo":10,"-":105}},{"path":"src/test/java/seedu/address/model/amount/AmountTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.model.amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.math.BigDecimal;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.storage.JsonAdaptedAmount;","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"public class AmountTest {","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" public void isValidAmount() {","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" // null amount","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" assertThrows(NullPointerException.class, () -\u003e Amount.isValidAmount(null));","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" // invalid amount","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\"\")); // empty string","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\" \")); // spaces only","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\"phone\")); // non-numeric","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" // valid amount","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" assertTrue(Amount.isValidAmount(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" assertTrue(Amount.isValidAmount(\"93121534\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" public void testHashCode() {","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"30\");","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" int expectedHashCode \u003d new BigDecimal(30).hashCode();","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" assertEquals(expectedHashCode, amount.hashCode());","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" public void testToString() {","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(amount.toString(), amount.value.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" public void testEquals() {","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" Amount amount2 \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" Amount amount3 \u003d new Amount(\"200\");","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" assertTrue(amount.equals(amount2));","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" assertFalse(amount.equals(amount3));","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" assertFalse(amount.equals(null));","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" assertFalse(amount.equals(\"100\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" public void testCompareTo() {","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" Amount amount2 \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" Amount amount3 \u003d new Amount(\"200\");","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" assertEquals(amount.compareTo(amount2), 0);","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" assertEquals(amount.compareTo(amount3), -1);","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" assertEquals(amount3.compareTo(amount), 1);","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" public void testJsonAdaptedAmount() {","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" JsonAdaptedAmount jsonAdaptedAmount \u003d new JsonAdaptedAmount(new Amount(\"100\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" assertEquals(jsonAdaptedAmount.getValue(), \"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" assertEquals(jsonAdaptedAmount.toModelType(), new Amount(\"100\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":76,"Fidget-Spinner":4}},{"path":"src/test/java/seedu/address/model/cca/CcaTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.model.cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"public class CcaTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(NullPointerException.class, () -\u003e new Cca(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":" public void constructor_invalidCcaName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" String invalidCcaName \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Cca(invalidCcaName));","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" public void isValidCcaName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" // null cca name","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(NullPointerException.class, () -\u003e Cca.isValidCcaName(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":2,"chuahjiajie":24}},{"path":"src/test/java/seedu/address/model/person/MetadataTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alphajae11"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"alphajae11"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import seedu.address.testutil.Assert;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"public class MetadataTest {","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":" public void isValidMetadata() {","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":" // null metadata","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Metadata.isValidMetadata(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":" // invalid metadata","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" assertFalse(Metadata.isValidMetadata(\"/\")); // contains slash","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" assertFalse(Metadata.isValidMetadata(\"peter/a\")); // contains slash","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" // valid metadata","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" assertTrue(Metadata.isValidMetadata(\"I love to get drink every day\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" assertTrue(Metadata.isValidMetadata(\"I sleep on the floor\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" assertTrue(Metadata.isValidMetadata(\"I like to play soccer 2 times a week\")); // alphanumeric characters","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" public void equals() {","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" Metadata metadata \u003d new Metadata(\"I love to eat pear\");","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" assertTrue(metadata.equals(new Metadata(\"I love to eat pear\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" assertTrue(metadata.equals(metadata));","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" assertFalse(metadata.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" assertFalse(metadata.equals(5.0f));","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" assertFalse(metadata.equals(new Metadata(\"I love to eat grape\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"alphajae11":48}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getRoles().remove(0));","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" .withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" // different roles -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", roles\u003d\" + ALICE.getRoles()","lastModifiedDate":"2024-03-29"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" + \", CCAs\u003d\" + ALICE.getCcas() + \", amount\u003d\" + ALICE.getAmount() + \", attendance\u003d\" + ALICE.getAtt()","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" + \", sessions\u003d\" + ALICE.getSess() + \", metadata\u003d\" + ALICE.getMetadata() + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"JuliaPoo":6,"chuahjiajie":2,"-":93}},{"path":"src/test/java/seedu/address/model/person/RoleContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from NameContainsKeywordsPredicateTest.java. Full credits to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// authors and CS2103T teaching team.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"public class RoleContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"first\")","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e secondPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"first\", \"second\")","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate firstPredicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" firstPredicateKeywordList,","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate secondPredicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" secondPredicateKeywordList,","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate firstPredicateCopy \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" firstPredicateKeywordList,","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" public void test_ccaContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" // One keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"friends\")","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" firstPredicateKeywordList,","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withCcas(\"friends\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"friends\", \"classmates\")","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" predicate \u003d new CcaContainsKeywordPredicate(firstPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withCcas(\"friends\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" predicate \u003d new CcaContainsKeywordPredicate(firstPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(predicate.test(","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" new PersonBuilder().withName(\"Alice Carol\").withCcas(\"friends\", \"classmates\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":" public void test_ccaDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":" // Zero keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" Collections.emptySet(),","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"Friends\")","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"Fidget-Spinner"},"content":" predicate \u003d new CcaContainsKeywordPredicate(firstPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withRoles(\"Friend\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"Fidget-Spinner"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e keywords \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"keyword1\", \"keyword2\")","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(keywords, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"Fidget-Spinner"},"content":" String expected \u003d CcaContainsKeywordPredicate.class.getCanonicalName() + \"{ccas\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Fidget-Spinner"},"content":" + keywords + \", roles\u003d\" + Optional.empty() + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"JuliaPoo":2,"Fidget-Spinner":124}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"JuliaPoo":3,"-":172}},{"path":"src/test/java/seedu/address/model/role/RoleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.role;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"public class RoleTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(NullPointerException.class, () -\u003e new Role(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":" public void constructor_invalidRoleName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" String invalidRoleName \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Role(invalidRoleName));","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" public void isValidRoleName() {","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" // null role name","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(NullPointerException.class, () -\u003e Role.isValidRoleName(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":28}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" private static final String INVALID_ROLE \u003d \"#friend\";","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_CCA \u003d \"#NUS Cycling\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" private static final String INVALID_AMOUNT \u003d \"10.00.00\";","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_ATTENDANCE_N \u003d \"-1\";","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_ATTENDANCE \u003d \"5\";","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_SESSIONS_N \u003d \"-1\";","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_SESSIONS \u003d \"4\";","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" private static final String INVALID_METADATA \u003d \"#MIENIV\";","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" private static final JsonAdaptedAmount VALID_AMOUNT \u003d new JsonAdaptedAmount(BENSON.getAmount());","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" private static final String VALID_ATTENDANCE \u003d BENSON.getAtt().toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" private static final String VALID_SESSIONS \u003d BENSON.getSess().toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" private static final List\u003cJsonAdaptedRole\u003e VALID_ROLES \u003d BENSON.getRoles().stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" private static final List\u003cJsonAdaptedCca\u003e VALID_CCAS \u003d BENSON.getCcas().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" .map(JsonAdaptedCca::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" private static final String VALID_METADATA \u003d BENSON.getMetadata().toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" VALID_ROLES, VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-31"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-29"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"JuliaPoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_ROLES,","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":" public void toModelType_invalidRoles_throwsIllegalValueException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":127,"author":{"gitId":"JuliaPoo"},"content":" List\u003cJsonAdaptedRole\u003e invalidRoles \u003d new ArrayList\u003c\u003e(VALID_ROLES);","lastModifiedDate":"2024-03-29"},{"lineNumber":128,"author":{"gitId":"JuliaPoo"},"content":" invalidRoles.add(new JsonAdaptedRole(INVALID_ROLE));","lastModifiedDate":"2024-03-29"},{"lineNumber":129,"author":{"gitId":"chuahjiajie"},"content":" List\u003cJsonAdaptedCca\u003e invalidCcas \u003d new ArrayList\u003c\u003e(VALID_CCAS);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"JuliaPoo"},"content":" invalidRoles.add(new JsonAdaptedRole(INVALID_CCA));","lastModifiedDate":"2024-03-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidRoles,","lastModifiedDate":"2024-03-31"},{"lineNumber":133,"author":{"gitId":"chuahjiajie"},"content":" invalidCcas, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_invalidAttendance_throwsIllegalValueException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chuahjiajie"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, INVALID_ATTENDANCE_N, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d Attendance.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_nullAttendance_throwsIllegalValueException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"chuahjiajie"},"content":" VALID_ROLES, VALID_CCAS, VALID_AMOUNT, null, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Attendance.class.getSimpleName());","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_invalidSessions_throwsIllegalValueException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, INVALID_SESSIONS_N, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d Sessions.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_nullSessions_throwsIllegalValueException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":" VALID_ROLES, VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, null, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Sessions.class.getSimpleName());","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_invalidSetAtt_throwsParseException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, INVALID_ATTENDANCE, INVALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d Attendance.MESSAGE_LESS_THAN_CONSTRAINT;","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"JuliaPoo":10,"chuahjiajie":65,"alphajae11":2,"-":95,"LifHoshi":7}},{"path":"src/test/java/seedu/address/testutil/AssignPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand.AssignPersonDescriptor;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":" * A utility class to help with building AssignPersonDescriptor objects.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":"public class AssignPersonDescriptorBuilder {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":" private AssignPersonDescriptor descriptor;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptorBuilder() {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" this.descriptor \u003d new AssignPersonDescriptor();","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptorBuilder(AssignCommand.AssignPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" this.descriptor \u003d new AssignCommand.AssignPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" * Returns an {@code AssignPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptorBuilder(String role) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":" descriptor \u003d new AssignPersonDescriptor();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e roleSet \u003d Stream.of(role).map(Role::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" descriptor.setRole(roleSet);","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" public AssignCommand.AssignPersonDescriptor build() {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" return descriptor;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":3,"alphajae11":35,"Fidget-Spinner":2}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" descriptor.setRoles(person.getRoles());","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" descriptor.setCcas(person.getCcas());","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" descriptor.setMetadata(person.getMetadata());","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" public EditPersonDescriptorBuilder withRoles(String... roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e roleSet \u003d Stream.of(roles).map(Role::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" descriptor.setRoles(roleSet);","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" * Parses the {@code cca} into a {@code Set\u003cCCA\u003e} and","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"chuahjiajie"},"content":" * set it to the {@code EditPersonDescriptorBuilder}","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" * @param cca","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"chuahjiajie"},"content":" * @return","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"JuliaPoo"},"content":" public EditPersonDescriptorBuilder withCcas(String... cca) {","lastModifiedDate":"2024-03-29"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cCca\u003e ccaSet \u003d Stream.of(cca).map(Cca::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" descriptor.setCcas(ccaSet);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"alphajae11"},"content":" * Parses the {@code metadata} into a {@code Metadata} and","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"alphajae11"},"content":" * set it to the {@code EditPersonDescriptorBuilder}","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"alphajae11"},"content":" * @param metadata","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"alphajae11"},"content":" * @return","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" public EditPersonDescriptorBuilder withMetadata(String metadata) {","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"alphajae11"},"content":" descriptor.setMetadata(new Metadata(metadata));","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"JuliaPoo":10,"chuahjiajie":11,"alphajae11":9,"-":84}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" public static final String DEFAULT_AMOUNT \u003d \"0.0\";","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" public static final String DEFAULT_ATTENDANCE \u003d \"0\";","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" public static final String DEFAULT_SESSIONS \u003d \"0\";","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" public static final String DEFAULT_METADATA \u003d \"I like peaches\";","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" private Set\u003cCca\u003e ccas;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" private Amount amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" private Attendance attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" private Sessions sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" private Metadata metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":" roles \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" ccas \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" amount \u003d new Amount(DEFAULT_AMOUNT);","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" attendance \u003d new Attendance(DEFAULT_ATTENDANCE);","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" sessions \u003d new Sessions(DEFAULT_SESSIONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":" metadata \u003d new Metadata(DEFAULT_METADATA);","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" roles \u003d new HashSet\u003c\u003e(personToCopy.getRoles());","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" ccas \u003d new HashSet\u003c\u003e(personToCopy.getCcas());","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" amount \u003d personToCopy.getAmount();","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" attendance \u003d personToCopy.getAtt();","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":" sessions \u003d personToCopy.getSess();","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"alphajae11"},"content":" metadata \u003d personToCopy.getMetadata();","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" public PersonBuilder withRoles(String... roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" this.roles \u003d SampleDataUtil.getRoleSet(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" * Parses the {@code CCA} into a {@code Set\u003cCCA\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" public PersonBuilder withCcas(String... ccas) {","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" this.ccas \u003d SampleDataUtil.getCcaSet(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":125,"author":{"gitId":"LifHoshi"},"content":" * Sets the {@code Amount} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"LifHoshi"},"content":" public PersonBuilder withAmount(String amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":128,"author":{"gitId":"LifHoshi"},"content":" this.amount \u003d new Amount(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"LifHoshi"},"content":" return this;","lastModifiedDate":"2024-03-31"},{"lineNumber":130,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":131,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":132,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"chuahjiajie"},"content":" * Sets the {@code Attendance} of the {@code Person} that we are building.","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"chuahjiajie"},"content":" public PersonBuilder withAtt(String attendance) {","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"chuahjiajie"},"content":" this.attendance \u003d new Attendance(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"chuahjiajie"},"content":" return this;","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chuahjiajie"},"content":" * Sets the {@code Sessions} of the {@code Person} that we are building.","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chuahjiajie"},"content":" public PersonBuilder withSess(String sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chuahjiajie"},"content":" this.sessions \u003d new Sessions(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chuahjiajie"},"content":" return this;","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"alphajae11"},"content":" * Sets the {@code Metadata} of the {@code Person} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"alphajae11"},"content":" public PersonBuilder withMetadata(String metadata) {","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d new Metadata(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"alphajae11"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":" return new Person(name, phone, email, address, roles, ccas, amount, attendance, sessions, metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"JuliaPoo":7,"chuahjiajie":36,"alphajae11":13,"-":91,"LifHoshi":13}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" person.getRoles().stream().forEach(","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" s -\u003e sb.append(PREFIX_ROLE + s.roleName + \" \")","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" person.getCcas().stream().forEach(","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" c -\u003e sb.append(PREFIX_CCA + c.ccaName + \" \")","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" );","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" sb.append(PREFIX_METADATA + person.getMetadata().metadata + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" if (descriptor.getRoles().isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e roles \u003d descriptor.getRoles().get();","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" sb.append(PREFIX_ROLE);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" sb.append(PREFIX_ROLE);","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" roles.forEach(s -\u003e sb.append(PREFIX_ROLE).append(s.roleName).append(\" \"));","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" sb.append(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" if (descriptor.getCcas().isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cCca\u003e roles \u003d descriptor.getCcas().get();","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":" sb.append(PREFIX_CCA);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" roles.forEach(s -\u003e sb.append(PREFIX_CCA).append(s.ccaName).append(\" \"));","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"alphajae11"},"content":" sb.append(\" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"alphajae11"},"content":" descriptor.getMetadata().ifPresent(metadata -\u003e sb.append(PREFIX_METADATA)","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"alphajae11"},"content":" .append(metadata.metadata).append(\" \"));","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"JuliaPoo":13,"chuahjiajie":8,"alphajae11":5,"-":56}},{"path":"src/test/java/seedu/address/testutil/SetAttDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand.SetAttDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" * A utility class to help with building SetAttDescriptor objects.","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttDescriptorBuilder {","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" private SetAttDescriptor descriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptorBuilder() {","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" this.descriptor \u003d new SetAttDescriptor();","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptorBuilder(SetAttCommand.SetAttDescriptor descriptor) {","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" this.descriptor \u003d new SetAttCommand.SetAttDescriptor(descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" * Returns an {@code AssignPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptorBuilder(String attendance, String sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" descriptor \u003d new SetAttDescriptor();","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" descriptor.setAtt(new Attendance(attendance));","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" descriptor.setSess(new Sessions(sessions));","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" public SetAttCommand.SetAttDescriptor build() {","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" return descriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":35}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(\"friends\")","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" .withCcas(\"NUS Cycling\")","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":" .withAmount(\"10.00\")","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":" .withMetadata(\"I like to eat apples.\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" .withCcas(\"NUS Cycling\", \"NUS Bakes\")","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":" .withAmount(\"20.00\")","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" .withMetadata(\"I like to eat oranges.\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" .withCcas(\"NUS Cycling\")","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" .withAmount(\"30.00\")","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":" .withMetadata(\"I like to eat apples.\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withRoles(\"friends\")","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" .withCcas(\"NUS Cycling\")","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" .withAmount(\"40.00\")","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"alphajae11"},"content":" .withMetadata(\"I like to play basketball.\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withMetadata(\"I support Manchester United.\")","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"alphajae11"},"content":" .build();","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" .withAmount(\"50.00\")","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chuahjiajie"},"content":" .withMetadata(\"I support Manchester United.\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withMetadata(\"I support Manchester United.\")","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"alphajae11"},"content":" .build();","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withRoles(VALID_ROLE_FRIEND)","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"alphajae11"},"content":" .withCcas(\"NUS Cycling\").withMetadata(VALID_METADATA).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND, VALID_ROLE_FRIEND)","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"alphajae11"},"content":" .withCcas(\"NUS Cycling\").withMetadata(VALID_METADATA)","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"JuliaPoo":7,"chuahjiajie":13,"alphajae11":15,"-":65,"LifHoshi":5}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"# CCA Manager","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W11-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W11-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"* This is the **CCA Manager** project. We aim to help NUS CCA members improve their contact management.","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"* Example usages:","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":" * assign roles to contacts corresponding to their actual role in the CCA.","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":" * form groups and sub-groups of contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"* This project is ongoing and still a WIP.","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":" * We aim to use multiple paradigms of programming, such as **OOP** and **functional** programming.","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":" However, the main paradigm will be **OOP**.","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":" * User and developer documentation is still a WIP, and will be updated soon.","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"* For detailed information, please see the [CCA Manager Product Website](https://ay2324s2-cs2103t-w11-2.github.io/tp/).","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Fidget-Spinner":13,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":" archiveFileName \u003d \u0027ccamanager.jar\u0027","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":"// Credits to https://se-education.org/guides/tutorials/gradle.html#enabling-assertions","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":"// for how to do this.","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":"run {","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":73,"Fidget-Spinner":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" title: \"About Us\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"# About Us","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"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":"JuliaPoo"},"content":"### Ken Jin","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cimg src\u003d\"images/fidget-spinner.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"[[github](https://github.com/Fidget-Spinner/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/fidget-spinner.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"* Role: Developer","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"### Lifu","lastModifiedDate":"2024-03-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cimg src\u003d\"images/lifhoshi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"[[github](https://github.com/LifHoshi)]","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/lifhoshi.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":"* Role: Developer","lastModifiedDate":"2024-03-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"### Jules","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"\u003cimg src\u003d\"images/juliapoo.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":"[[homepage](https://juliapoo.github.io/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":"[[github](http://github.com/JuliaPoo)]","lastModifiedDate":"2024-03-03"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/juliapoo.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"### Jia Jie","lastModifiedDate":"2024-03-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"\u003cimg src\u003d\"images/chuahjiajie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"[[github](http://github.com/chuahjiajie)]","lastModifiedDate":"2024-03-03"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/chuahjiajie.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" * Logic","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" * Deliverables and Deadlines","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":"### Jae Geun","lastModifiedDate":"2024-03-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"alphajae11"},"content":"\u003cimg src\u003d\"images/alphajae11.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":"[[github](http://github.com/alphajae11)]","lastModifiedDate":"2024-03-03"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":"[[portfolio](team/alphajae11.md)]","lastModifiedDate":"2024-03-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":22,"chuahjiajie":5,"alphajae11":1,"-":32,"Fidget-Spinner":5}},{"path":"docs/Configuration.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Configuration guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"# Configuration guide","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: `config.json`).","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"-":4,"Fidget-Spinner":4}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"DevOps guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# DevOps guide","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","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":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java).","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26"}],"authorContributionMap":{"-":74,"Fidget-Spinner":8}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Role` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Role` object per unique role, instead of each `Person` needing their own `Role` objects.\u003cbr\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":191,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":196,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":197,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":198,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":212,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":213,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":222,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":223,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"Fidget-Spinner"},"content":"### \\[Proposed\\] Payment splitting","lastModifiedDate":"2024-03-29"},{"lineNumber":260,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":261,"author":{"gitId":"Fidget-Spinner"},"content":"After payments are implemented, we expect to be able to split payments among","lastModifiedDate":"2024-03-29"},{"lineNumber":262,"author":{"gitId":"Fidget-Spinner"},"content":"CCA members. An example command is ``split a/4.00 c/NUS Cycling``. Which means","lastModifiedDate":"2024-03-29"},{"lineNumber":263,"author":{"gitId":"Fidget-Spinner"},"content":"\"split $4.00 among CCA members NUS Cycling\". The process is as follows.","lastModifiedDate":"2024-03-29"},{"lineNumber":264,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":265,"author":{"gitId":"Fidget-Spinner"},"content":"1. Identify all members belonging to that CCA.","lastModifiedDate":"2024-03-29"},{"lineNumber":266,"author":{"gitId":"Fidget-Spinner"},"content":"2. Count the number of members in 1., and split the amount equally.","lastModifiedDate":"2024-03-29"},{"lineNumber":267,"author":{"gitId":"Fidget-Spinner"},"content":" * Note: rounding errors may occur here. So we should use `double` in Java","lastModifiedDate":"2024-03-29"},{"lineNumber":268,"author":{"gitId":"Fidget-Spinner"},"content":" for higher precision and also round to nearest 2 d.p.","lastModifiedDate":"2024-03-29"},{"lineNumber":269,"author":{"gitId":"Fidget-Spinner"},"content":"3. Add the split amount to each member\u0027s \"payment owed\" field","lastModifiedDate":"2024-03-29"},{"lineNumber":270,"author":{"gitId":"Fidget-Spinner"},"content":" (this field has yet to be implemented).","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":272,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":273,"author":{"gitId":"JuliaPoo"},"content":"### \\[Proposed\\] Better CCA-level Actions","lastModifiedDate":"2024-03-29"},{"lineNumber":274,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":275,"author":{"gitId":"JuliaPoo"},"content":"This feature will implement a better internal representation of a `Cca` object. This enables the implementation of certain features such as:","lastModifiedDate":"2024-03-29"},{"lineNumber":276,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":277,"author":{"gitId":"JuliaPoo"},"content":"1. Adding meta-data to CCAs","lastModifiedDate":"2024-03-29"},{"lineNumber":278,"author":{"gitId":"JuliaPoo"},"content":"2. Displaying every contact related to CCAs in a concise manner.","lastModifiedDate":"2024-03-29"},{"lineNumber":279,"author":{"gitId":"JuliaPoo"},"content":"3. Allow more interactive ways to traverse contacts related to CCAs.","lastModifiedDate":"2024-03-29"},{"lineNumber":280,"author":{"gitId":"JuliaPoo"},"content":" - E.g., `display CCA` can list every contact (summary) grouped according to roles. Each contact is clickable, which will modify the `ModelManager.filteredPersons` to only have said contact.","lastModifiedDate":"2024-03-29"},{"lineNumber":281,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":282,"author":{"gitId":"JuliaPoo"},"content":"This meta-feature will consist of two parts:","lastModifiedDate":"2024-03-29"},{"lineNumber":283,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":284,"author":{"gitId":"JuliaPoo"},"content":"1. A better `Model` representation.","lastModifiedDate":"2024-03-29"},{"lineNumber":285,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":286,"author":{"gitId":"JuliaPoo"},"content":"#### A better `Model` representation","lastModifiedDate":"2024-03-29"},{"lineNumber":287,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":288,"author":{"gitId":"JuliaPoo"},"content":"\u003cpuml src\u003d\"diagrams/HalfBetterModelClassDiagram.puml\" width\u003d\"600\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":289,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":290,"author":{"gitId":"JuliaPoo"},"content":"The minimal `Model` changes required to implement this is the implementation of `UniqueCcaList` as per above. This represents a half-way point between the ideal `Model` implementation which involves `UniqueRoleList`.","lastModifiedDate":"2024-03-29"},{"lineNumber":291,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":292,"author":{"gitId":"JuliaPoo"},"content":"This allows `Cca` objects to contain metadata (such as `Cca.description: String`) that is automatically shared across all members within the `Cca`.","lastModifiedDate":"2024-03-29"},{"lineNumber":293,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":294,"author":{"gitId":"JuliaPoo"},"content":"Due to this fundamental change, implementation of this will be fairly invasive across the codebase, albeit straightforward. This includes (but might not be exhaustive):","lastModifiedDate":"2024-03-29"},{"lineNumber":295,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":296,"author":{"gitId":"JuliaPoo"},"content":"1. `model`:","lastModifiedDate":"2024-03-29"},{"lineNumber":297,"author":{"gitId":"JuliaPoo"},"content":" - See above diagram.","lastModifiedDate":"2024-03-29"},{"lineNumber":298,"author":{"gitId":"JuliaPoo"},"content":"2. `logic`:","lastModifiedDate":"2024-03-29"},{"lineNumber":299,"author":{"gitId":"JuliaPoo"},"content":" - `Command.execute` that use `Cca`s needs to interface with `ModelManager.UniqueCcaList` to create new `Cca`s as needed or to reuse the object in the list.","lastModifiedDate":"2024-03-29"},{"lineNumber":300,"author":{"gitId":"JuliaPoo"},"content":"3. `storage`:","lastModifiedDate":"2024-03-29"},{"lineNumber":301,"author":{"gitId":"JuliaPoo"},"content":" - `JsonAdaptedCCA` needs to seralise any new fields in `Cca`.","lastModifiedDate":"2024-03-29"},{"lineNumber":302,"author":{"gitId":"JuliaPoo"},"content":"4. `test`:","lastModifiedDate":"2024-03-29"},{"lineNumber":303,"author":{"gitId":"JuliaPoo"},"content":" - Tests similar to that of `UniquePersonList` has to be implemented.","lastModifiedDate":"2024-03-29"},{"lineNumber":304,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":305,"author":{"gitId":"JuliaPoo"},"content":"Following the implementation of this meta-feature, the following features can be implemented:","lastModifiedDate":"2024-03-29"},{"lineNumber":306,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":307,"author":{"gitId":"JuliaPoo"},"content":"1. Adding meta-data to CCAs. Possible implementation details:","lastModifiedDate":"2024-03-29"},{"lineNumber":308,"author":{"gitId":"JuliaPoo"},"content":" 1. Have the command format be `cca-desc DESC`.","lastModifiedDate":"2024-03-29"},{"lineNumber":309,"author":{"gitId":"JuliaPoo"},"content":" 2. The creation of a new `Command` class `CcaDescCommand`.","lastModifiedDate":"2024-03-29"},{"lineNumber":310,"author":{"gitId":"JuliaPoo"},"content":" 3. Implementing `Cca.setDesc`.","lastModifiedDate":"2024-03-29"},{"lineNumber":311,"author":{"gitId":"JuliaPoo"},"content":" 4. `CcaDescCommand.execute` will look for the correct `Cca` object in `UniqueCcaList` and call `Cca.setDesc(desc)`.","lastModifiedDate":"2024-03-29"},{"lineNumber":312,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":313,"author":{"gitId":"JuliaPoo"},"content":"More details of these specific features in the future.","lastModifiedDate":"2024-03-29"},{"lineNumber":314,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":315,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":316,"author":{"gitId":"JuliaPoo"},"content":"#### Modification of UI elements to display `Cca`s.","lastModifiedDate":"2024-03-29"},{"lineNumber":317,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":318,"author":{"gitId":"JuliaPoo"},"content":"This is fairly straightforward:","lastModifiedDate":"2024-03-29"},{"lineNumber":319,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":320,"author":{"gitId":"JuliaPoo"},"content":"1. Renaming of `PersonListPanel` to `DisplayObjectListPanel`.","lastModifiedDate":"2024-03-29"},{"lineNumber":321,"author":{"gitId":"JuliaPoo"},"content":"2. Renaming of `PersonListPanel.fxml` to `DisplayObjectListPanel.fxml`.","lastModifiedDate":"2024-03-29"},{"lineNumber":322,"author":{"gitId":"JuliaPoo"},"content":"3. Add a new `ListView` in `DisplayObjectListPanel.fxml` below `personListView` known as `ccaView`.","lastModifiedDate":"2024-03-29"},{"lineNumber":323,"author":{"gitId":"JuliaPoo"},"content":" - Update `DisplayObjectListPanel` accordingly.","lastModifiedDate":"2024-03-29"},{"lineNumber":324,"author":{"gitId":"JuliaPoo"},"content":"4. Create a new `CcaCard` object in `ui` and its corresponding `CcaCard.fxml` file.","lastModifiedDate":"2024-03-29"},{"lineNumber":325,"author":{"gitId":"JuliaPoo"},"content":"5. Add a new overload `updateItem` with type signature `(Cca cca, boolean empty)` that appends a `CcaCard` object to `PersonListPanel.ccaView`.","lastModifiedDate":"2024-03-29"},{"lineNumber":326,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":327,"author":{"gitId":"JuliaPoo"},"content":"The resulting Ui model should look something like this:","lastModifiedDate":"2024-03-29"},{"lineNumber":328,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":329,"author":{"gitId":"JuliaPoo"},"content":"\u003cpuml src\u003d\"diagrams/NewUiClassDiagram.puml\" width\u003d\"1000px\"\u003e\u003c/puml\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":330,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":331,"author":{"gitId":"JuliaPoo"},"content":"Following the implementation of this meta-feature, the following features can be implemented:","lastModifiedDate":"2024-03-29"},{"lineNumber":332,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":333,"author":{"gitId":"JuliaPoo"},"content":"1. Displaying every contact related to CCAs in a concise manner.","lastModifiedDate":"2024-03-29"},{"lineNumber":334,"author":{"gitId":"JuliaPoo"},"content":" - This will depend on the implementation of `CcaCard`.","lastModifiedDate":"2024-03-29"},{"lineNumber":335,"author":{"gitId":"JuliaPoo"},"content":"2. Allow more interactive ways to traverse contacts related to CCAs.","lastModifiedDate":"2024-03-29"},{"lineNumber":336,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":337,"author":{"gitId":"JuliaPoo"},"content":"More details of these specific features in the future.","lastModifiedDate":"2024-03-29"},{"lineNumber":338,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":339,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":340,"author":{"gitId":"chuahjiajie"},"content":"### \\[Proposed\\] Attendance Tracking","lastModifiedDate":"2024-03-29"},{"lineNumber":341,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":342,"author":{"gitId":"chuahjiajie"},"content":"After members of a CCA has been added to CCA Manager, it is expected to be able to track","lastModifiedDate":"2024-03-29"},{"lineNumber":343,"author":{"gitId":"chuahjiajie"},"content":"their attendance. This will be displayed below their CCA.","lastModifiedDate":"2024-03-29"},{"lineNumber":344,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":345,"author":{"gitId":"chuahjiajie"},"content":"An example command for setting attendance is ``setatt index att\\9 s\\10``. Which means","lastModifiedDate":"2024-04-05"},{"lineNumber":346,"author":{"gitId":"chuahjiajie"},"content":"\"Set the attendance of person at index to be 9 out of 10 sessions\". The process is as follows.","lastModifiedDate":"2024-04-05"},{"lineNumber":347,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":348,"author":{"gitId":"chuahjiajie"},"content":"1. Retrieve the attendance information of John Doe.","lastModifiedDate":"2024-03-29"},{"lineNumber":349,"author":{"gitId":"chuahjiajie"},"content":"2. Edit the attendance details according to the input.","lastModifiedDate":"2024-03-29"},{"lineNumber":350,"author":{"gitId":"chuahjiajie"},"content":"3. Update the attendance details of the person in the model.","lastModifiedDate":"2024-03-29"},{"lineNumber":351,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":352,"author":{"gitId":"chuahjiajie"},"content":"An example command for setting the number of sessions is ``setsess index s\\10``. Which means","lastModifiedDate":"2024-04-05"},{"lineNumber":353,"author":{"gitId":"chuahjiajie"},"content":"\"Set the number of sessions of person at index to be 10\". The process is as follows.","lastModifiedDate":"2024-04-05"},{"lineNumber":354,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":355,"author":{"gitId":"chuahjiajie"},"content":"1. Retrieve the attendance information of John Doe.","lastModifiedDate":"2024-03-29"},{"lineNumber":356,"author":{"gitId":"chuahjiajie"},"content":"2. Increment the attendance value by 1.","lastModifiedDate":"2024-03-29"},{"lineNumber":357,"author":{"gitId":"chuahjiajie"},"content":"3. Update the attendance details of the person in the model.","lastModifiedDate":"2024-03-29"},{"lineNumber":358,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":359,"author":{"gitId":"chuahjiajie"},"content":"An example command for incrementing attendance is ``incatt index``. Which means","lastModifiedDate":"2024-04-05"},{"lineNumber":360,"author":{"gitId":"chuahjiajie"},"content":"\"Increment the attendance of person at index by 1\". The process is as follows.","lastModifiedDate":"2024-04-05"},{"lineNumber":361,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":362,"author":{"gitId":"chuahjiajie"},"content":"1. Retrieve the attendance information of John Doe.","lastModifiedDate":"2024-03-29"},{"lineNumber":363,"author":{"gitId":"chuahjiajie"},"content":"2. Edit the session detail according to the input.","lastModifiedDate":"2024-03-29"},{"lineNumber":364,"author":{"gitId":"chuahjiajie"},"content":"3. Update the attendance details of the person in the model.","lastModifiedDate":"2024-03-29"},{"lineNumber":365,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":366,"author":{"gitId":"alphajae11"},"content":"### \\[Proposed\\] Feedback to App Developers and CCA Excos","lastModifiedDate":"2024-03-31"},{"lineNumber":367,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":368,"author":{"gitId":"alphajae11"},"content":"After using the app (CCA Manager), there will be certain features that","lastModifiedDate":"2024-03-31"},{"lineNumber":369,"author":{"gitId":"alphajae11"},"content":"the users will not be too comfortable with.","lastModifiedDate":"2024-03-31"},{"lineNumber":370,"author":{"gitId":"alphajae11"},"content":"CCA Manager will allow these users to provide some direct feedback to the","lastModifiedDate":"2024-03-31"},{"lineNumber":371,"author":{"gitId":"alphajae11"},"content":"app developers so that they can immediately improve the features. The process is as follows.","lastModifiedDate":"2024-03-31"},{"lineNumber":372,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":373,"author":{"gitId":"alphajae11"},"content":"1. User click on the hyperlink that leads to the Google Form, CCA Manager App feedback form.","lastModifiedDate":"2024-03-31"},{"lineNumber":374,"author":{"gitId":"alphajae11"},"content":"2. User fill in the feedback form based on the issues that they have.","lastModifiedDate":"2024-03-31"},{"lineNumber":375,"author":{"gitId":"alphajae11"},"content":"3. User submit the feedback form (Google Form)","lastModifiedDate":"2024-03-31"},{"lineNumber":376,"author":{"gitId":"alphajae11"},"content":"4. App Developers receive the feedback","lastModifiedDate":"2024-03-31"},{"lineNumber":377,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":378,"author":{"gitId":"alphajae11"},"content":"As CCA members participates in their CCA activities and events, they may want","lastModifiedDate":"2024-03-31"},{"lineNumber":379,"author":{"gitId":"alphajae11"},"content":"certain things to improve in their CCA. At the same time, the Exco members would","lastModifiedDate":"2024-03-31"},{"lineNumber":380,"author":{"gitId":"alphajae11"},"content":"want to know how their CCA management or ways of handling events/activities can improve.","lastModifiedDate":"2024-03-31"},{"lineNumber":381,"author":{"gitId":"alphajae11"},"content":"The App allows CCA members to give direct feedback to Exco members on how they think","lastModifiedDate":"2024-03-31"},{"lineNumber":382,"author":{"gitId":"alphajae11"},"content":"the CCA can be improved. The process is as follows.","lastModifiedDate":"2024-03-31"},{"lineNumber":383,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":384,"author":{"gitId":"alphajae11"},"content":"1. CCA members click on the hyperlink that leads to the Google form, CCA feedback form.","lastModifiedDate":"2024-03-31"},{"lineNumber":385,"author":{"gitId":"alphajae11"},"content":"2. CCA members fill in the feedback form based on the issues that they have.","lastModifiedDate":"2024-03-31"},{"lineNumber":386,"author":{"gitId":"alphajae11"},"content":"3. CCA members submit the feedback form (Google form)","lastModifiedDate":"2024-03-31"},{"lineNumber":387,"author":{"gitId":"alphajae11"},"content":"4. CCA Exco members receive the feedback","lastModifiedDate":"2024-03-31"},{"lineNumber":388,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":389,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":394,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":395,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":396,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":397,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"alphajae11"},"content":"* has a need to manage a significant amount of CCA information (such as contacts, roles and details)","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":411,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"alphajae11"},"content":"**Value proposition**: manage CCA information faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"alphajae11"},"content":"|----------|---------------------------|---------------------------|-----------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"alphajae11"},"content":"| `* * *` | `EXCO Member` | Assign roles to contacts | manage my `CCA Member`s |","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"alphajae11"},"content":"| `* * *` | `CCA Member` | Identify the `EXCO Member`s | Inform them if I am unable to make it for the CCA session |","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"alphajae11"},"content":"| `* * *` | `EXCO Member` | Form groups of contacts | associate who belongs to what CCA |","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"alphajae11"},"content":"| | | | |","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"alphajae11"},"content":"| | | | |","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"alphajae11"},"content":"| | | | |","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"alphajae11"},"content":"(For all use cases below, the **System** is the `CCA Manager` and the **Actor** are the `EXCO Member`s and `CCA Member`s, unless specified otherwise)","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"alphajae11"},"content":"#### UC01 - Assign roles to contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"alphajae11"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"alphajae11"},"content":"2. `CCA Manager` shows a list of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"alphajae11"},"content":"3. User requests to assign role to the contact","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"alphajae11"},"content":"4. `CCA Manager` assigns role to that contact","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"alphajae11"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"alphajae11"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"alphajae11"},"content":"2a. Provided Non-Integer input for `Index of Contacts`.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"alphajae11"},"content":" 2a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"alphajae11"},"content":"3a. Provided Integer that is out of range of index","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"alphajae11"},"content":" 3a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"alphajae11"},"content":"4a. Invalid `Role Name`","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"alphajae11"},"content":"5a. Neglected to input `r` or `c` character prior to name","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"alphajae11"},"content":" 5a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"alphajae11"},"content":"#### UC02 - Form groups of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"alphajae11"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"alphajae11"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"alphajae11"},"content":"2. `CCA Manager` shows a list of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"alphajae11"},"content":"3. User requests to form a group for a list of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"alphajae11"},"content":"4. `CCA Manager` forms a group for a list of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"alphajae11"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":478,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":479,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":482,"author":{"gitId":"alphajae11"},"content":"2a. Provided Non-Integer input for `Index of Contacts`.","lastModifiedDate":"2024-03-04"},{"lineNumber":483,"author":{"gitId":"alphajae11"},"content":" 2a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":484,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":485,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":486,"author":{"gitId":"alphajae11"},"content":"3a. Provided Integer that is out of range of index","lastModifiedDate":"2024-03-04"},{"lineNumber":487,"author":{"gitId":"alphajae11"},"content":" 3a1. `CCA Manager` shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":488,"author":{"gitId":"alphajae11"},"content":" Use case resumes at step 2","lastModifiedDate":"2024-03-04"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"alphajae11"},"content":"4a. Invalid `Group Name`","lastModifiedDate":"2024-03-04"},{"lineNumber":491,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"alphajae11"},"content":"5a. Invalid `Index of Contacts`","lastModifiedDate":"2024-03-04"},{"lineNumber":494,"author":{"gitId":"alphajae11"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":495,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":497,"author":{"gitId":"alphajae11"},"content":"#### UC03 - Identify the EXCO members","lastModifiedDate":"2024-03-04"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"alphajae11"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":502,"author":{"gitId":"alphajae11"},"content":"1. User requests to view the contacts in the EXCO group","lastModifiedDate":"2024-03-04"},{"lineNumber":503,"author":{"gitId":"alphajae11"},"content":"2. AddressBook shows a list of contacts in the EXCO group","lastModifiedDate":"2024-03-04"},{"lineNumber":504,"author":{"gitId":"alphajae11"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":505,"author":{"gitId":"alphajae11"},"content":"```","lastModifiedDate":"2024-03-04"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"JuliaPoo"},"content":"1. Compatibility:","lastModifiedDate":"2024-03-07"},{"lineNumber":512,"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":513,"author":{"gitId":"JuliaPoo"},"content":"1. Performance:","lastModifiedDate":"2024-03-07"},{"lineNumber":514,"author":{"gitId":"JuliaPoo"},"content":" 1. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":515,"author":{"gitId":"JuliaPoo"},"content":" 1. GUI should respond/provide feedback within 2s.","lastModifiedDate":"2024-03-07"},{"lineNumber":516,"author":{"gitId":"JuliaPoo"},"content":"1. Usability:","lastModifiedDate":"2024-03-07"},{"lineNumber":517,"author":{"gitId":"JuliaPoo"},"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-07"},{"lineNumber":518,"author":{"gitId":"JuliaPoo"},"content":" 1. A new user should be able to navigate the functionality of the program with ease.","lastModifiedDate":"2024-03-07"},{"lineNumber":519,"author":{"gitId":"JuliaPoo"},"content":" 1. The GUI should be readable with sufficient contrast between UI elements.","lastModifiedDate":"2024-03-07"},{"lineNumber":520,"author":{"gitId":"JuliaPoo"},"content":"1. Process:","lastModifiedDate":"2024-03-07"},{"lineNumber":521,"author":{"gitId":"JuliaPoo"},"content":" 1. The project is expected to adhere to a schedule that delivers a feature set every one month.","lastModifiedDate":"2024-03-07"},{"lineNumber":522,"author":{"gitId":"JuliaPoo"},"content":"1. Constraints:","lastModifiedDate":"2024-03-07"},{"lineNumber":523,"author":{"gitId":"JuliaPoo"},"content":" 1. The project should be implementable in 4 weeks.","lastModifiedDate":"2024-03-07"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":530,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"JuliaPoo"},"content":"* **CCA Manager**: The name used to refer to this project","lastModifiedDate":"2024-03-07"},{"lineNumber":532,"author":{"gitId":"JuliaPoo"},"content":"* **CCA**: Refers to the student organisation which `CCA Manager` intends to simplify the administration of.","lastModifiedDate":"2024-03-07"},{"lineNumber":533,"author":{"gitId":"JuliaPoo"},"content":"* **EXCO Member**: A target user group. Refers to a member that is in-charge of the organisation of a `CCA`.","lastModifiedDate":"2024-03-07"},{"lineNumber":534,"author":{"gitId":"JuliaPoo"},"content":"* **CCA Member**: A target user group. Refers to a member that partakes in the activities of a `CCA`.","lastModifiedDate":"2024-03-07"},{"lineNumber":535,"author":{"gitId":"JuliaPoo"},"content":"* **Contact**: An object that refers to a person. It is the core object of administration in **CCA Manager**.","lastModifiedDate":"2024-03-07"},{"lineNumber":536,"author":{"gitId":"JuliaPoo"},"content":"* **Role**: Part of the metadata of a `contact`. It classifies a `contact` based on their responsibilities in the CCA.","lastModifiedDate":"2024-03-07"},{"lineNumber":537,"author":{"gitId":"JuliaPoo"},"content":"* **Group**: Part of the metadata of a `contact`. It allows `contact`s to be organised in groups the user can manage seperately.","lastModifiedDate":"2024-03-07"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":546,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":547,"author":{"gitId":"Fidget-Spinner"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2024-02-25"},{"lineNumber":548,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"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":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"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":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"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":577,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"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":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"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":582,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","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":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":588,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"JuliaPoo":88,"chuahjiajie":26,"alphajae11":90,"-":321,"Fidget-Spinner":67}},{"path":"docs/Documentation.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Documentation guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Documentation Guide","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"* We use [**MarkBind**](https://markbind.org/) to manage documentation.","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"* The `docs/` folder contains the source files for the documentation website.","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"* To learn how set it up and maintain the project website, follow the guide [[se-edu/guides] Working with Forked MarkBind sites](https://se-education.org/guides/tutorials/markbind-forked-sites.html) for project documentation.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"**Style guidance:**","lastModifiedDate":"2020-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style).","lastModifiedDate":"2020-06-17"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"* Also relevant is the [_se-edu/guides **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html).","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"**Converting to PDF**","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"* See the guide [_se-edu/guides **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html).","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"-":11,"Fidget-Spinner":10}},{"path":"docs/Logging.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Logging guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-06-07"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"# Logging guide","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* We are using `java.util.logging` package for logging.","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"* The `LogsCenter` class is used to manage the logging levels and logging destinations.","lastModifiedDate":"2020-06-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to the specified logging level.","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"* Log messages are output through the console and to a `.log` file.","lastModifiedDate":"2020-06-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* The output logging level can be controlled using the `logLevel` setting in the configuration file (See the [Configuration guide](Configuration.md) section).","lastModifiedDate":"2020-06-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* **When choosing a level for a log message**, follow the conventions given in [_[se-edu/guides] Java: Logging conventions_](https://se-education.org/guides/conventions/java/logging.html).","lastModifiedDate":"2020-06-07"}],"authorContributionMap":{"-":9,"Fidget-Spinner":4}},{"path":"docs/SettingUp.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Setting up and getting started\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Setting up and getting started","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"**Caution:**","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.","lastModifiedDate":"2020-06-07"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to to ensure Intellij is configured to use **JDK 11**.","lastModifiedDate":"2020-06-07"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" 1. Run the `seedu.address.Main` and try a few commands.","lastModifiedDate":"2020-06-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA\u0027s coding style to match ours.","lastModifiedDate":"2020-09-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" **Tip:**","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code.","lastModifiedDate":"2020-06-07"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required.","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture).","lastModifiedDate":"2020-06-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"-":45,"Fidget-Spinner":16}},{"path":"docs/Testing.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"Testing guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Testing guide","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Running tests","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"There are two ways to run tests.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **Method 1: Using IntelliJ JUnit test runner**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * To run all tests, right-click on the `src/test/java` folder and choose `Run \u0027All Tests\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * To run a subset of tests, you can right-click on a test package,","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" test class, or a test and choose `Run \u0027ABC\u0027`","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Method 2: Using Gradle**","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`)","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"**Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"## Types of tests","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"This project has three types of tests:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"1. *Unit tests* targeting the lowest level methods/classes.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" e.g. `seedu.address.commons.StringUtilTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" e.g. `seedu.address.storage.StorageManagerTest`","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" e.g. `seedu.address.logic.LogicManagerTest`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":29,"Fidget-Spinner":12}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"User Guide\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# CCA Manager User Guide","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"\u003c!--","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"- Clear and engaging introduction or welcome note that sets the tone for the UG.","lastModifiedDate":"2024-03-25"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"- What this User Guide aims to achieve","lastModifiedDate":"2024-03-25"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"- What this software is about","lastModifiedDate":"2024-03-25"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" - Clear and engaging introduction or welcome note that sets the tone for the UG.","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" - Identifies the target user or audience and makes appropriate assumptions, such as the level of relatedness, comprehension, and prior knowledge.","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"--\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"Welcome to CCA Manager\u0027s User Guide! CCA Manager is a **contact manager designed to simplify the management of CCAs and enhance your administrative efficiency**, regardless of whether you\u0027re overseeing a sports team, academic club, any other extracurricular activity, or simply a CCA participant. It has a minimal and intuitive GUI where most actions are performed via commands, making it a pleasure to use. If you can type fast, CCA Manager can get your admin tracking done faster than traditional GUI apps.","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"In this user guide, we\u0027ll walk you through the essential steps to harness the full potential of CCA Manager. Whether you\u0027re a CCA Executive Committee Member or simply a CCA participant, our guide will provide you with the knowledge and tools you need to make the most of our app.","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"This user guide does not assume any prior experience with administrative tools or command interfaces and is accessible for beginners and self-contained. However, if you\u0027ve used command interfaces such as those from Telegram, you might find this guide easier to follow. If you have further questions while reading this document or while using our app, visit our [FAQ](#faq). If your question isn\u0027t answered there, feel free to visit our [project repository](https://github.com/AY2324S2-CS2103T-W11-2/tp/issues) and raise an issue.","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"This user guide is split into 4 parts:","lastModifiedDate":"2024-03-27"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"1. An introduction to what CCA Manager offers,","lastModifiedDate":"2024-03-27"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"2. A section to set up our app,","lastModifiedDate":"2024-03-27"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":"3. Beginner-friendly tutorials that introduce CCA Manager through a practical use case, and","lastModifiedDate":"2024-03-27"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":"4. A comprehensive reference that explains all of CCA Manager\u0027s concepts and features. Feel free to navigate this guide via the sidebar on the right.","lastModifiedDate":"2024-03-27"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":"\u003cpage-nav-print\u003e\u003ch2\u003eTable of Contents\u003c/h2\u003e\u003c/page-nav-print\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"## Product Introduction","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"\u003c!--","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":"1. Introduction","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" - Problem we\u0027re trying to solve","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" - How the software solves the problem","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" - User-centric statement detailing product information, including product description and an overview of main features.","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" - Links to basic tutorials (concrete use cases)","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":"--\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":"Managing contact information and roles for members of CCAs can be a cumbersome task, often involving disparate tools and platforms. Administrators face challenges in efficiently organizing members, coordinating activities, and communicating effectively within these groups.","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":"For instance, the management of contact information and associated information about a CCA activity often involves the use of the following apps: Discord, Telegram, Google Spreadsheets, Sessionize, etc. This makes maintaining administrative information messy, often involving several steps to accomplish a simple task.","lastModifiedDate":"2024-03-25"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager endeavors to equip CCAs with tools that streamline administration, freeing up valuable time for more meaningful tasks. We do so by providing a unified solution in the form of the following core features:","lastModifiedDate":"2024-03-25"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":"1. **Centralized CCA Membership Management**: Easily associate members with their respective CCAs within one app, eliminating the need for multiple platforms.","lastModifiedDate":"2024-03-25"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":"2. **Efficient Group Actions**: Perform actions on groups of CCA members, such as searching for multiple CCAs at once, and streamlining administrative tasks.","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":"3. **Role Assignment**: Assign roles to CCA members, enhancing organization and clarity within the group.","lastModifiedDate":"2024-03-25"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":"To get started with CCA Manager and explore its features further, check out our [Installation Guide](#installation-guide) and our [Tutorials](#tutorials), where we\u0027ll go through some concrete use cases for our app.","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":"## Installation Guide","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":"**This Installation guide targets an audience who has knowledge of how to install programs and how to use a command line/terminal.**","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":"\u003c!-- TODO: Make the above disclaimer redundant --\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":"### Steps","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":"1. Download the latest `ccamanager.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":"1. On **Linux** and **macOS**:","lastModifiedDate":"2024-03-27"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":" 1. Open a command terminal.","lastModifiedDate":"2024-03-27"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" 1. Type `cd \u003cfolder\u003e` into the terminal and press `enter`, where you replace `\u003cfolder\u003e` with the path to the folder where you\u0027ve placed `ccamanager.jar`. This navigates the terminal to the correct folder.","lastModifiedDate":"2024-03-27"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":" 1. Type `java -jar ccamanager.jar` into the terminal and press `enter` to run the application. \u003cbr\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":"1. On **Windows**:","lastModifiedDate":"2024-03-27"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" 1. Double click the `ccamanager.jar` file to run it.","lastModifiedDate":"2024-03-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":"\u003c!--TODO--\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":"**A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.**\u003cbr\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2024-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":"For more details on the commands, visit our [Tutorials](#tutorials) or refer to our [Reference](#reference) below for details of each command.","lastModifiedDate":"2024-03-27"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-27"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":"## Tutorials","lastModifiedDate":"2024-03-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":"Confused on where to get started? Don’t fret, in this section we’ll outline how to use CCA Manager to its maximum effect with a few use case scenarios.","lastModifiedDate":"2024-03-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":"First off, CCA Manager\u0027s interface consists of the following main components:","lastModifiedDate":"2024-03-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"JuliaPoo"},"content":"\u003c!-- TODO regen this image --\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":93,"author":{"gitId":"JuliaPoo"},"content":"![CommandLine](images/CommandLine.png)","lastModifiedDate":"2024-03-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":"1. **Command Box**: A small text box where you type the commands.","lastModifiedDate":"2024-03-27"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":"3. **Output Box**: Displays any errors that might have occurred, or other information about the most recent command executed.","lastModifiedDate":"2024-03-27"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":"2. **Results Box**: Displays the results of the command.","lastModifiedDate":"2024-03-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":"All of CCA Manager\u0027s functionality is accessed via commands. This includes both adding and editing contacts, as well as accessing existing contacts.","lastModifiedDate":"2024-03-27"},{"lineNumber":101,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":"### Upon Booting Up","lastModifiedDate":"2024-03-27"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":"When you first boot up the app, the app will contain some example contacts for you to get a feel of using CCA Manager\u0027s functionalities.","lastModifiedDate":"2024-03-27"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":"To run a command, type the command in the **Command Box** and press Enter to execute it. For example, typing **`help`** and pressing Enter will open the help window.","lastModifiedDate":"2024-03-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":"Here are some other example commands you can try:","lastModifiedDate":"2024-03-27"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" * `list`: [Lists all contacts.](#listing-all-persons--list)","lastModifiedDate":"2024-03-27"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" * `delete 3`: [Deletes the 3rd contact shown in the currently displayed list.](#deleting-a-person--delete)","lastModifiedDate":"2024-03-27"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" * `exit`: [Exits the app.](#exiting-the-program--exit)","lastModifiedDate":"2024-03-27"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" * `filter NUS Cycling`: [Filter contacts by CCA.](#filter-by-cca)","lastModifiedDate":"2024-03-27"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" \u003c!--* `add`: [Adds a contact/CCA group to the CCA Manager](#add-contacts-with-cca-labels)--\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" \u003c!--* `edit`: [Edit details of the contacts.](#edit-the-details-of-your-contacts)--\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"JuliaPoo"},"content":"Now you can proceed to the tutorials for more information on the actual commands.","lastModifiedDate":"2024-03-27"},{"lineNumber":117,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"JuliaPoo"},"content":"### General Format of the Commands","lastModifiedDate":"2024-03-27"},{"lineNumber":119,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"JuliaPoo"},"content":"Before we start on the tutorials for each command, you should understand the command format of CCA Manager.","lastModifiedDate":"2024-03-27"},{"lineNumber":121,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"JuliaPoo"},"content":"All commands in CCA Manager follow the following format:","lastModifiedDate":"2024-03-27"},{"lineNumber":123,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"JuliaPoo"},"content":"```","lastModifiedDate":"2024-03-27"},{"lineNumber":125,"author":{"gitId":"JuliaPoo"},"content":"ACTION PRIMARY_VALUE ARGUMENT_NAME/ARGUMENT_VALUE","lastModifiedDate":"2024-03-27"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":"```","lastModifiedDate":"2024-03-27"},{"lineNumber":127,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":128,"author":{"gitId":"JuliaPoo"},"content":"`ACTION`: The name of the action you want to perform","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"JuliaPoo"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":130,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":131,"author":{"gitId":"JuliaPoo"},"content":"- E.g., For the command `find jason`, `find` is the `ACTION`.","lastModifiedDate":"2024-03-27"},{"lineNumber":132,"author":{"gitId":"JuliaPoo"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":"`PRIMARY_VALUE`: The value related to the action.","lastModifiedDate":"2024-03-27"},{"lineNumber":135,"author":{"gitId":"JuliaPoo"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":"- This aids in specifying exactly what you want from the action.","lastModifiedDate":"2024-03-27"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":"- E.g., For the command `find jason`, `jason` is the `PRIMARY_VALUE`.","lastModifiedDate":"2024-03-27"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":"- Some commands might not have this field.","lastModifiedDate":"2024-03-27"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":141,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":142,"author":{"gitId":"JuliaPoo"},"content":"`ARGUMENT_NAME/ARGUMENT_VALUE`: The name and its associated value that\u0027s related to the command.","lastModifiedDate":"2024-03-27"},{"lineNumber":143,"author":{"gitId":"JuliaPoo"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":144,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":145,"author":{"gitId":"JuliaPoo"},"content":"- Some commands require the user to specify additional values. Each of these additional values has an `ARGUMENT_NAME` associated to it.","lastModifiedDate":"2024-03-27"},{"lineNumber":146,"author":{"gitId":"JuliaPoo"},"content":"- `ARGUMENT_NAME` is usually one character long.","lastModifiedDate":"2024-03-27"},{"lineNumber":147,"author":{"gitId":"JuliaPoo"},"content":" - E.g., For the command `add n/Brian p/87601212 e/test@gmail.com`:","lastModifiedDate":"2024-03-27"},{"lineNumber":148,"author":{"gitId":"JuliaPoo"},"content":" - `n` is the `ARGUMENT_NAME` of the `ARGUMENT_VALUE` `Brian`.","lastModifiedDate":"2024-03-27"},{"lineNumber":149,"author":{"gitId":"JuliaPoo"},"content":" - `p` is the `ARGUMENT_NAME` of the `ARGUMENT_VALUE` `87601212`.","lastModifiedDate":"2024-03-27"},{"lineNumber":150,"author":{"gitId":"JuliaPoo"},"content":" - `e` is the `ARGUMENT_NAME` of the `ARGUMENT_VALUE` `test@gmail.com`.","lastModifiedDate":"2024-03-27"},{"lineNumber":151,"author":{"gitId":"JuliaPoo"},"content":"- Some commands allow multiple `ARGUMENT_VALUE`s associated with the same `ARGUMENT_NAME`","lastModifiedDate":"2024-03-27"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":" - E.g., For the command `edit 2 r/Treasurer r/EXCO Member`","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":" - The values `Treasurer` and `EXCO Member` are associated with the `ARGUMENT_NAME` `r`.","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"JuliaPoo"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-27"},{"lineNumber":155,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":156,"author":{"gitId":"JuliaPoo"},"content":"Now we can move on to some command commands. For a full list of commands available for CCA Manager, refer to our [Reference](#reference).","lastModifiedDate":"2024-03-27"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"chuahjiajie"},"content":"### Clear Contacts","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":160,"author":{"gitId":"JuliaPoo"},"content":"The first thing you\u0027d probably want to do is to clear the sample data, as it is likely of no relevance to you.","lastModifiedDate":"2024-03-27"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":"You can do so using the clear command as follows:","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" ![clear command](images/UG-Basics/clear-command.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":"And just like that, the address book will be cleared:","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" ![clear output](images/UG-Basics/clear-output.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":"### Add Contacts with CCA Labels","lastModifiedDate":"2024-03-25"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":"Now that you have a clean address book in CCA Manager, you can start adding your own contacts. An example of the command can be seen below:","lastModifiedDate":"2024-03-25"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" ![add-command-1](images/UG-Basics/add-command-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":178,"author":{"gitId":"chuahjiajie"},"content":" ![add-output-1](images/UG-Basics/add-output-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":179,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":180,"author":{"gitId":"chuahjiajie"},"content":"If you want to, you can even specify the CCAs and Roles of the person being added as shown below:","lastModifiedDate":"2024-03-25"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":182,"author":{"gitId":"chuahjiajie"},"content":" ![add-command-2](images/UG-Basics/add-command-2.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":184,"author":{"gitId":"chuahjiajie"},"content":"Notice how there is now an indicated role and CCA:","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"chuahjiajie"},"content":" ![add-output-2](images/UG-Basics/add-output-2.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":189,"author":{"gitId":"chuahjiajie"},"content":"### Add Roles in the Future","lastModifiedDate":"2024-03-25"},{"lineNumber":190,"author":{"gitId":"chuahjiajie"},"content":"Forgot to add the roles initially, or need to add the roles later on because they haven’t been decided yet? Don’t worry the “assign” feature has got you covered simply add the role using the following command:","lastModifiedDate":"2024-03-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":192,"author":{"gitId":"chuahjiajie"},"content":"In this example we will be adding a role for John who is at index 1:","lastModifiedDate":"2024-03-25"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":194,"author":{"gitId":"chuahjiajie"},"content":" ![assign-command](images/UG-Basics/assign-command.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":196,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":197,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":198,"author":{"gitId":"chuahjiajie"},"content":" ![assign-output](images/UG-Basics/assign-output.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":199,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":200,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":201,"author":{"gitId":"chuahjiajie"},"content":"### Filter by CCA","lastModifiedDate":"2024-03-25"},{"lineNumber":202,"author":{"gitId":"chuahjiajie"},"content":"In reality, you would have access to the contacts of a vast array of people, many from different CCAs and navigating the whole list will certainly be overwhelming. If you’d like to identify only those of a specific CCA you can!","lastModifiedDate":"2024-03-25"},{"lineNumber":203,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":204,"author":{"gitId":"chuahjiajie"},"content":"Want to filter those from NUS Cycling? Just type the command:","lastModifiedDate":"2024-03-25"},{"lineNumber":205,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":206,"author":{"gitId":"chuahjiajie"},"content":" ![filter-command-1](images/UG-Basics/filter-command-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":207,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":208,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":209,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":210,"author":{"gitId":"chuahjiajie"},"content":" ![filter-output-1](images/UG-Basics/filter-output-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":211,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":212,"author":{"gitId":"chuahjiajie"},"content":"Likewise for another CCA – NUS Origami:","lastModifiedDate":"2024-03-25"},{"lineNumber":213,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":214,"author":{"gitId":"chuahjiajie"},"content":" ![filter-command-1](images/UG-Basics/filter-command-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":215,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":216,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":217,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":218,"author":{"gitId":"chuahjiajie"},"content":" ![filter-output-1](images/UG-Basics/filter-output-1.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":219,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":220,"author":{"gitId":"chuahjiajie"},"content":"### Edit the Details of your Contacts","lastModifiedDate":"2024-03-25"},{"lineNumber":221,"author":{"gitId":"chuahjiajie"},"content":"Have the contact details of some members changed, or maybe you just forgot to add the CCA of the person you were adding. Don’t need to get frustrated, you don’t have to add the person from scratch. You can edit any of the details of any of the members at any time, using the “edit” feature.","lastModifiedDate":"2024-03-25"},{"lineNumber":222,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":223,"author":{"gitId":"chuahjiajie"},"content":"Here’s an example for reference, where John from NUS Origami would not only like to change CCAs but also moved from Kent Ridge to UTown:","lastModifiedDate":"2024-03-25"},{"lineNumber":224,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":225,"author":{"gitId":"chuahjiajie"},"content":" ![edit-command](images/UG-Basics/edit-command.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":226,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":227,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":228,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":229,"author":{"gitId":"chuahjiajie"},"content":" ![edit-output](images/UG-Basics/edit-output.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":230,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":231,"author":{"gitId":"JuliaPoo"},"content":"### Delete a Contact","lastModifiedDate":"2024-03-27"},{"lineNumber":232,"author":{"gitId":"chuahjiajie"},"content":"Has a member quit the CCA completely. Don’t need to waste space in your address book and clutter it up. You can simply delete them from the address book with this simple command.","lastModifiedDate":"2024-03-25"},{"lineNumber":233,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":234,"author":{"gitId":"chuahjiajie"},"content":"Let’s say Mary Jane at index 2 has quit NUS Origami. To remove her simply use the following command:","lastModifiedDate":"2024-03-25"},{"lineNumber":235,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":236,"author":{"gitId":"chuahjiajie"},"content":" ![delete-command](images/UG-Basics/delete-command.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":237,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":238,"author":{"gitId":"chuahjiajie"},"content":"Output:","lastModifiedDate":"2024-03-25"},{"lineNumber":239,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":240,"author":{"gitId":"chuahjiajie"},"content":" ![delete-output](images/UG-Basics/delete-output.png)","lastModifiedDate":"2024-03-25"},{"lineNumber":241,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":242,"author":{"gitId":"LifHoshi"},"content":"### Set up owe amount money: `Owe`","lastModifiedDate":"2024-04-05"},{"lineNumber":243,"author":{"gitId":"LifHoshi"},"content":"Set up owe amount of money in each person.","lastModifiedDate":"2024-04-05"},{"lineNumber":244,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":245,"author":{"gitId":"LifHoshi"},"content":"Format: owe INDEX m/AMOUNT","lastModifiedDate":"2024-04-05"},{"lineNumber":246,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":247,"author":{"gitId":"LifHoshi"},"content":"### Delete a CCA: `cca_delete`","lastModifiedDate":"2024-04-05"},{"lineNumber":248,"author":{"gitId":"LifHoshi"},"content":"Delete a current existing CCA","lastModifiedDate":"2024-04-05"},{"lineNumber":249,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":250,"author":{"gitId":"LifHoshi"},"content":"Format: cca_delete c/CCA","lastModifiedDate":"2024-04-05"},{"lineNumber":251,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":252,"author":{"gitId":"LifHoshi"},"content":"### Remove or show CCA details: `cca display/cca remove`","lastModifiedDate":"2024-04-05"},{"lineNumber":253,"author":{"gitId":"LifHoshi"},"content":"show the details of the current CCA and remove a current CCA","lastModifiedDate":"2024-04-05"},{"lineNumber":254,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":255,"author":{"gitId":"LifHoshi"},"content":"Format: cca display c/CCA or","lastModifiedDate":"2024-04-05"},{"lineNumber":256,"author":{"gitId":"LifHoshi"},"content":" cca remove c/CCA","lastModifiedDate":"2024-04-05"},{"lineNumber":257,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":258,"author":{"gitId":"LifHoshi"},"content":"### Charge a person with an amount of money: `charge`","lastModifiedDate":"2024-04-05"},{"lineNumber":259,"author":{"gitId":"LifHoshi"},"content":"Charge a person with an amount of money by CCA and role","lastModifiedDate":"2024-04-05"},{"lineNumber":260,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":261,"author":{"gitId":"LifHoshi"},"content":"Format: charge m/AMOUNT c/NUS CCA r/ROLES","lastModifiedDate":"2024-04-05"},{"lineNumber":262,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":263,"author":{"gitId":"LifHoshi"},"content":"### Track attendance: `setatt`","lastModifiedDate":"2024-04-05"},{"lineNumber":264,"author":{"gitId":"LifHoshi"},"content":"Set attendance for each person","lastModifiedDate":"2024-04-05"},{"lineNumber":265,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":266,"author":{"gitId":"LifHoshi"},"content":"Format: setatt INDEX att/NUMBER s/NUMBER","lastModifiedDate":"2024-04-05"},{"lineNumber":267,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":268,"author":{"gitId":"LifHoshi"},"content":"### Filter by CCA and roles: `filter`","lastModifiedDate":"2024-04-05"},{"lineNumber":269,"author":{"gitId":"LifHoshi"},"content":"Filter the current list with CCA and roles","lastModifiedDate":"2024-04-05"},{"lineNumber":270,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":271,"author":{"gitId":"LifHoshi"},"content":"Format: filter c/CCA r/ROLES","lastModifiedDate":"2024-04-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-02"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"JuliaPoo"},"content":"## Reference","lastModifiedDate":"2024-03-27"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"LifHoshi"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"LifHoshi"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":283,"author":{"gitId":"JuliaPoo"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter that can be used as `add n/John Doe`.","lastModifiedDate":"2024-03-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":285,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":286,"author":{"gitId":"JuliaPoo"},"content":" e.g `n/NAME [r/ROLE]` can be used as `n/John Doe r/friend` or as `n/John Doe`.","lastModifiedDate":"2024-03-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":288,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":289,"author":{"gitId":"JuliaPoo"},"content":" e.g. `[r/ROLE]…​` can be used as ` ` (i.e. 0 times), `r/friend`, `r/friend r/family` etc.","lastModifiedDate":"2024-03-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":291,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":292,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2024-03-24"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":294,"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":"2024-03-24"},{"lineNumber":295,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2024-03-24"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":297,"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":"2024-03-24"},{"lineNumber":298,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"JuliaPoo"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2024-03-24"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2024-03-24"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"Fidget-Spinner"},"content":"Adds a person to the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"LifHoshi"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/ROLE] [c/CCA]…​ [d/MetaContact]`","lastModifiedDate":"2024-04-05"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"LifHoshi"},"content":"_Adds a CCA group to the CCA manager._","lastModifiedDate":"2024-03-21"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":317,"author":{"gitId":"LifHoshi"},"content":"**Format**: `add c/CCA GROUP`","lastModifiedDate":"2024-03-21"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":319,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":320,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":321,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":322,"author":{"gitId":"JuliaPoo"},"content":"**Tip:** A person can have any number of roles and ccas (including 0)","lastModifiedDate":"2024-03-29"},{"lineNumber":323,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":326,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"JuliaPoo"},"content":"* `add n/Betsy Crowe r/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 r/criminal`","lastModifiedDate":"2024-03-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"Fidget-Spinner"},"content":"Shows a list of all persons in the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2024-03-24"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"Fidget-Spinner"},"content":"Edits an existing person in the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"JuliaPoo"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/ROLE] [c/CCA]...`","lastModifiedDate":"2024-03-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"JuliaPoo"},"content":"* When editing roles, the existing roles of the person will be removed i.e., the adding of roles is not cumulative.","lastModifiedDate":"2024-03-29"},{"lineNumber":345,"author":{"gitId":"JuliaPoo"},"content":"* You can remove all the person’s roles by typing `r/` without","lastModifiedDate":"2024-03-29"},{"lineNumber":346,"author":{"gitId":"JuliaPoo"},"content":" specifying any roles after it.","lastModifiedDate":"2024-03-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":349,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"JuliaPoo"},"content":"* `edit 2 n/Betsy Crower r/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing roles.","lastModifiedDate":"2024-03-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"LifHoshi"},"content":"**[Images with example is TBD]**","lastModifiedDate":"2024-03-21"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2024-03-24"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2024-03-24"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-24"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":368,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2024-03-24"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"Fidget-Spinner"},"content":"Deletes the specified person from the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-03-24"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"Fidget-Spinner"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the CCA Manager.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-03-24"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":388,"author":{"gitId":"Fidget-Spinner"},"content":"Clears all entries from the CCA Manager.","lastModifiedDate":"2024-03-24"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2024-03-24"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":392,"author":{"gitId":"LifHoshi"},"content":"### Set up owe amount money: `Owe`","lastModifiedDate":"2024-04-05"},{"lineNumber":393,"author":{"gitId":"LifHoshi"},"content":"Set up owe amount of money in each person.","lastModifiedDate":"2024-04-05"},{"lineNumber":394,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":395,"author":{"gitId":"LifHoshi"},"content":"Format: owe INDEX m/AMOUNT","lastModifiedDate":"2024-04-05"},{"lineNumber":396,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":397,"author":{"gitId":"LifHoshi"},"content":"### Delete a CCA: `cca_delete`","lastModifiedDate":"2024-04-05"},{"lineNumber":398,"author":{"gitId":"LifHoshi"},"content":"Delete a current existing CCA","lastModifiedDate":"2024-04-05"},{"lineNumber":399,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":400,"author":{"gitId":"LifHoshi"},"content":"Format: cca_delete c/CCA","lastModifiedDate":"2024-04-05"},{"lineNumber":401,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":402,"author":{"gitId":"LifHoshi"},"content":"### Remove or show CCA details: `cca display/cca remove`","lastModifiedDate":"2024-04-05"},{"lineNumber":403,"author":{"gitId":"LifHoshi"},"content":"Show the details of the current CCA and remove a current CCA","lastModifiedDate":"2024-04-05"},{"lineNumber":404,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":405,"author":{"gitId":"LifHoshi"},"content":"Format: cca display c/CCA ","lastModifiedDate":"2024-04-05"},{"lineNumber":406,"author":{"gitId":"LifHoshi"},"content":" cca remove c/CCA","lastModifiedDate":"2024-04-05"},{"lineNumber":407,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":408,"author":{"gitId":"LifHoshi"},"content":"### Charge a person with an amount of money: `charge`","lastModifiedDate":"2024-04-05"},{"lineNumber":409,"author":{"gitId":"LifHoshi"},"content":"Charge a person with an amount of money by CCA and role","lastModifiedDate":"2024-04-05"},{"lineNumber":410,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":411,"author":{"gitId":"LifHoshi"},"content":"Format: charge m/AMOUNT c/NUS CCA [r/ROLES]","lastModifiedDate":"2024-04-05"},{"lineNumber":412,"author":{"gitId":"LifHoshi"},"content":"`[]` - Denotes optional","lastModifiedDate":"2024-04-05"},{"lineNumber":413,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":414,"author":{"gitId":"LifHoshi"},"content":"### Filter by CCA and roles: `filter`","lastModifiedDate":"2024-04-05"},{"lineNumber":415,"author":{"gitId":"LifHoshi"},"content":"Filter the current list with CCA and roles","lastModifiedDate":"2024-04-05"},{"lineNumber":416,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":417,"author":{"gitId":"LifHoshi"},"content":"Format: filter c/CCA r/ROLES","lastModifiedDate":"2024-04-05"},{"lineNumber":418,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":419,"author":{"gitId":"LifHoshi"},"content":"### Track attendance: `setatt`","lastModifiedDate":"2024-04-05"},{"lineNumber":420,"author":{"gitId":"LifHoshi"},"content":"Set attendance for each person","lastModifiedDate":"2024-04-05"},{"lineNumber":421,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":422,"author":{"gitId":"LifHoshi"},"content":"Format: setatt INDEX att/NUMBER s/NUMBER","lastModifiedDate":"2024-04-05"},{"lineNumber":423,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2024-03-24"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2024-03-24"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2024-03-24"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"Fidget-Spinner"},"content":"CCA Manager data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-07"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":436,"author":{"gitId":"Fidget-Spinner"},"content":"CCA Manager data are saved automatically as a JSON file `[JAR file location]/data/\u003cTODO\u003e.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":438,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":440,"author":{"gitId":"Fidget-Spinner"},"content":"**Caution:**","lastModifiedDate":"2024-03-24"},{"lineNumber":441,"author":{"gitId":"Fidget-Spinner"},"content":"If your changes to the data file makes its format invalid, CCA Manager 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-24"},{"lineNumber":442,"author":{"gitId":"Fidget-Spinner"},"content":"Furthermore, certain edits can cause the CCA Manager 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-07"},{"lineNumber":443,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":445,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2024-03-24"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":447,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2024-03-24"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":449,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"JuliaPoo"},"content":"**A**: Install the app on the other computer and overwrite the empty data file it creates with the file that contains the data of your previous CCA Manager home folder.","lastModifiedDate":"2024-03-25"},{"lineNumber":455,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":456,"author":{"gitId":"JuliaPoo"},"content":"**Q**: My administrative information is sensitive and should not be made public. Is it safe to use CCA Manager for my purposes? \u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":457,"author":{"gitId":"JuliaPoo"},"content":"**A**: Yes. CCA Manager runs locally on your machine and does not connect to the internet nor does it have any functions to communicate outside of your computer. Your data will never leave your machine unless you want it to.","lastModifiedDate":"2024-03-25"},{"lineNumber":458,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":459,"author":{"gitId":"JuliaPoo"},"content":"**Q**: Is there a cost associated with using CCA Manager? \u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":460,"author":{"gitId":"JuliaPoo"},"content":"**A**: None! CCA Manager is free to use with no strings attached.","lastModifiedDate":"2024-03-25"},{"lineNumber":461,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":462,"author":{"gitId":"JuliaPoo"},"content":"**Q**: What should I do if I encounter technical issues with CCA Manager? \u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":463,"author":{"gitId":"JuliaPoo"},"content":"**A**: You can visit the [Common Issues](#common-issues) section if your problem is common. Otherwise, feel free to [open an issue](https://github.com/AY2324S2-CS2103T-W11-2/tp/issues). You would have to create a new [Github](https://github.com/) account to do so. This will allow us to maintain constant communication with you until the issue is addressed.","lastModifiedDate":"2024-03-25"},{"lineNumber":464,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":465,"author":{"gitId":"JuliaPoo"},"content":"**Q**: How can I provide feedback or suggest improvements for CCA Manager? \u003cbr\u003e","lastModifiedDate":"2024-03-25"},{"lineNumber":466,"author":{"gitId":"JuliaPoo"},"content":"**A**: Feel free to [open an issue](https://github.com/AY2324S2-CS2103T-W11-2/tp/issues), your feedback is very valuable to us. You would have to create a new [Github](https://github.com/) account to do so. This will allow us to maintain constant communication with you until the issue is addressed.","lastModifiedDate":"2024-03-25"},{"lineNumber":467,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":468,"author":{"gitId":"JuliaPoo"},"content":"## Common Issues","lastModifiedDate":"2024-03-25"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":474,"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":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":476,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":478,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"LifHoshi"},"content":"-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-21"},{"lineNumber":482,"author":{"gitId":"LifHoshi"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/ROLE] [c/CCA]…​ [d/MetaContact]` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 r/friend r/colleague c/CCA Cycling d/I love eating apples`","lastModifiedDate":"2024-04-05"},{"lineNumber":483,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` ","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"JuliaPoo"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [r/ROLE] [c/CCA]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-03-29"},{"lineNumber":486,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"LifHoshi"},"content":"**Filter** | `filter CCA1, CCA2, ...` e.g. `filter NUS Cycling` or `filter c/CCA r/ROLES` e.g. `filter c/CCA Cycling r/colleagues`","lastModifiedDate":"2024-04-05"},{"lineNumber":489,"author":{"gitId":"JuliaPoo"},"content":"**Assign** | `assign INDEX r/ROLE` e.g. `assign 2 r/ Member` or `assign 2 r/Member`","lastModifiedDate":"2024-03-29"},{"lineNumber":490,"author":{"gitId":"LifHoshi"},"content":"**Owe** | `owe INDEX m/AMOUNT` e.g. `owe 2 m/10.0`","lastModifiedDate":"2024-04-05"},{"lineNumber":491,"author":{"gitId":"LifHoshi"},"content":"**cca_delete** | `cca_delete c/CCA` e.g. `cca_delete c/NUS Cycling`","lastModifiedDate":"2024-04-05"},{"lineNumber":492,"author":{"gitId":"LifHoshi"},"content":"**charge** | `charge m/AMOUNT c/NUS CCA r/ROLES` e.g. `charge m/5.0 c/NUS Cycling r/member`","lastModifiedDate":"2024-04-05"},{"lineNumber":493,"author":{"gitId":"LifHoshi"},"content":"**setatt** | `setatt INDEX att/NUMBER s/NUMBER` e.g. `setatt 2 att/6 s/7`","lastModifiedDate":"2024-04-05"},{"lineNumber":494,"author":{"gitId":"LifHoshi"},"content":"**cca display** | `cca display c/CCA` e.g. `cca display c/NUS Greyhats`","lastModifiedDate":"2024-04-05"},{"lineNumber":495,"author":{"gitId":"LifHoshi"},"content":"**cca remove** | `cca remove c/CCA` e.g. `cca remove c/NUS Greyhats`","lastModifiedDate":"2024-04-05"},{"lineNumber":496,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"JuliaPoo":143,"chuahjiajie":74,"alphajae11":5,"-":161,"Fidget-Spinner":28,"LifHoshi":85}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eCCA Manager\u003c/a\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/form\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/li\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/header\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":"* Tutorials","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/nav\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" {{ content }}","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/nav\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cfooter\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"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":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/div\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/footer\u003e","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"Fidget-Spinner":67}},{"path":"docs/_markbind/variables.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cvariable name\u003d\"example\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"To inject this HTML segment in your markbind files, use {{ example }} where you want to place it.","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"More generally, surround the segment\u0027s id with double curly braces.","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/variable\u003e","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"Fidget-Spinner":4}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"AddressBook *-right-\u003e \"1\" UniqueRoleList","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"AddressBook *-right-\u003e \"1\" UniqueCcaList","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"UniqueRoleList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"UniqueRoleList -right-\u003e \"*\" Role","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"UniqueCcaList -right-\u003e \"*\" Cca","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"Person -up-\u003e \"*\" Role","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"Person -up-\u003e \"*\" Cca","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"JuliaPoo":7,"-":16}},{"path":"docs/diagrams/HalfBetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"!include style.puml","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"AddressBook *-right-\u003e \"1\" UniqueCcaList","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"UniqueCcaList -right-\u003e \"*\" Cca","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"Person -up-\u003e \"*\" Cca","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e Name","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e Phone","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e Email","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e Address","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e \"*\" Role","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":20}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"Class UniqueCcaList","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"Class Role","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"Class Cca","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":"AddressBook *--\u003e \"1\" UniqueCcaList","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":"UniqueCcaList *--\u003e \"*\" Cca","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"Person *--\u003e \"*\" Role","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"Person --\u003e \"*\" Cca","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":"Phone -[hidden]right-\u003e Cca","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":"Cca -[hidden]right-\u003e Address","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"JuliaPoo":7,"-":51,"Fidget-Spinner":2}},{"path":"docs/diagrams/NewUiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"@startuml","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"!include style.puml","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Class UiManager","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"Class MainWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"Class HelpWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"Class ResultDisplay","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"Class DisplayObjectListPanel","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"Class PersonCard","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"Class CcaCard","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"Class StatusBarFooter","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"Class CommandBox","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"MainWindow *-down-\u003e \"1\" DisplayObjectListPanel","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":"DisplayObjectListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":"DisplayObjectListPanel -down-\u003e \"0..1\" CcaCard","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":"DisplayObjectListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"CcaCard --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":"CcaCard ..\u003e Model","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":"DisplayObjectListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":"@enduml","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":64}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"skinparam arrowThickness 1.2","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"Class JsonAdaptedRole","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"Class JsonAdaptedCca","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedRole","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedCca","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"JuliaPoo":2,"chuahjiajie":3,"-":40}},{"path":"docs/diagrams/UndoRedoState0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title Initial state","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"hide State2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State1","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"delete 5\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":20,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"add n/David\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState3.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"undo\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState4.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"list\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm2:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":3}},{"path":"docs/diagrams/UndoRedoState5.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"clear\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm3:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":"note right on link: State ca2 deleted.","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":18,"LifHoshi":4}},{"path":"docs/diagrams/UndoRedoState6.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"@startuml","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"!include style.puml","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"title After command \"filter\"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":" class State1 as \"\u003cu\u003ecm0:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" class State2 as \"\u003cu\u003ecm1:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" class State3 as \"\u003cu\u003ecm3:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" class State4 as \"\u003cu\u003ecm4:CCA Manager\u003c/u\u003e\"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":"Pointer -up-\u003e State4","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":"@end","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"LifHoshi":22}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"# AddressBook Level-3","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"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":9,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","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":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":17,"Fidget-Spinner":4}},{"path":"docs/stylesheets/main.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"mark {","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" background-color: #ff0;","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 5px;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" padding-top: 0;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":" padding-bottom: 0;","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":".indented {","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":" padding-left: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":".theme-card img {","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":" width: 100%;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"/* Scrollbar */","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll::-webkit-scrollbar {","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":" width: 5px;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll::-webkit-scrollbar-thumb {","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" background: #808080;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll::-webkit-scrollbar-track {","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" background: transparent;","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll-blue::-webkit-scrollbar {","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" width: 5px;","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll-blue::-webkit-scrollbar-thumb {","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" background: #00b0ef;","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":".slim-scroll-blue::-webkit-scrollbar-track {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" background: transparent;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" border-radius: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":"/* Layout containers */","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":"#flex-body {","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" display: flex;","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" flex: 1;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" align-items: start;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":"#content-wrapper {","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" flex: 1;","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" margin: 0 auto;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" min-width: 0;","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" max-width: 1000px;","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" overflow-x: auto;","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" padding: 0.8rem 20px 0 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" transition: 0.4s;","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" -webkit-transition: 0.4s;","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":"#site-nav,","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":"#page-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" display: flex;","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":" flex-direction: column;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":" position: sticky;","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" top: var(--sticky-header-height);","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" flex: 0 0 auto;","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" max-width: 300px;","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" max-height: calc(100vh - var(--sticky-header-height));","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" width: 300px;","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":"#site-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" border-right: 1px solid lightgrey;","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" padding-bottom: 20px;","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" z-index: 999;","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":".site-nav-top {","lastModifiedDate":"2024-02-25"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" margin: 0.8rem 0;","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" padding: 0 12px 12px 12px;","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":".nav-component {","lastModifiedDate":"2024-02-25"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":" overflow-y: auto;","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":"#page-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":" border-left: 1px solid lightgrey;","lastModifiedDate":"2024-02-25"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":"@media screen and (max-width: 1299.98px) {","lastModifiedDate":"2024-02-25"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" #page-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":101,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":"/* Bootstrap medium(md) responsive breakpoint */","lastModifiedDate":"2024-02-25"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":"@media screen and (max-width: 991.98px) {","lastModifiedDate":"2024-02-25"},{"lineNumber":104,"author":{"gitId":"Fidget-Spinner"},"content":" #site-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":105,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":106,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":107,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":108,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":109,"author":{"gitId":"Fidget-Spinner"},"content":"/* Bootstrap small(sm) responsive breakpoint */","lastModifiedDate":"2024-02-25"},{"lineNumber":110,"author":{"gitId":"Fidget-Spinner"},"content":"@media (max-width: 767.98px) {","lastModifiedDate":"2024-02-25"},{"lineNumber":111,"author":{"gitId":"Fidget-Spinner"},"content":" .indented {","lastModifiedDate":"2024-02-25"},{"lineNumber":112,"author":{"gitId":"Fidget-Spinner"},"content":" padding-left: 10px;","lastModifiedDate":"2024-02-25"},{"lineNumber":113,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"Fidget-Spinner"},"content":" #content-wrapper {","lastModifiedDate":"2024-02-25"},{"lineNumber":116,"author":{"gitId":"Fidget-Spinner"},"content":" padding: 0 10px;","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"Fidget-Spinner"},"content":"/* Bootstrap extra small(xs) responsive breakpoint */","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"Fidget-Spinner"},"content":"@media screen and (max-width: 575.98px) {","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"Fidget-Spinner"},"content":" #site-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":126,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":127,"author":{"gitId":"Fidget-Spinner"},"content":"/* Hide site navigation when printing */","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"Fidget-Spinner"},"content":"@media print {","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"Fidget-Spinner"},"content":" #site-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":130,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"Fidget-Spinner"},"content":" #page-nav {","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"Fidget-Spinner"},"content":" display: none;","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":137,"author":{"gitId":"Fidget-Spinner"},"content":" /* Reduce font size when printing */","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"Fidget-Spinner"},"content":" h1 {","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 1.2rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"Fidget-Spinner"},"content":" h2 {","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 1.0rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"Fidget-Spinner"},"content":" h3 {","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.9rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":146,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"Fidget-Spinner"},"content":" h4 {","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.8rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"Fidget-Spinner"},"content":" h5 {","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.7rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"Fidget-Spinner"},"content":" body {","lastModifiedDate":"2024-02-25"},{"lineNumber":154,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.65rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":155,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":156,"author":{"gitId":"Fidget-Spinner"},"content":" .btn {","lastModifiedDate":"2024-02-25"},{"lineNumber":157,"author":{"gitId":"Fidget-Spinner"},"content":" font-size: 0.65rem !important;","lastModifiedDate":"2024-02-25"},{"lineNumber":158,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":159,"author":{"gitId":"Fidget-Spinner"},"content":" img {","lastModifiedDate":"2024-02-25"},{"lineNumber":160,"author":{"gitId":"Fidget-Spinner"},"content":" zoom: 0.8; /* might not work on some browsers */","lastModifiedDate":"2024-02-25"},{"lineNumber":161,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":162,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":163,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":164,"author":{"gitId":"Fidget-Spinner"},"content":"h2,","lastModifiedDate":"2024-02-25"},{"lineNumber":165,"author":{"gitId":"Fidget-Spinner"},"content":"h3,","lastModifiedDate":"2024-02-25"},{"lineNumber":166,"author":{"gitId":"Fidget-Spinner"},"content":"h4,","lastModifiedDate":"2024-02-25"},{"lineNumber":167,"author":{"gitId":"Fidget-Spinner"},"content":"h5,","lastModifiedDate":"2024-02-25"},{"lineNumber":168,"author":{"gitId":"Fidget-Spinner"},"content":"h6 {","lastModifiedDate":"2024-02-25"},{"lineNumber":169,"author":{"gitId":"Fidget-Spinner"},"content":" color: #e46c0a;","lastModifiedDate":"2024-02-25"},{"lineNumber":170,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-02-25"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":172,"author":{"gitId":"JuliaPoo"},"content":"p {","lastModifiedDate":"2024-03-27"},{"lineNumber":173,"author":{"gitId":"JuliaPoo"},"content":" margin-bottom: 1em;","lastModifiedDate":"2024-03-27"},{"lineNumber":174,"author":{"gitId":"JuliaPoo"},"content":" margin-top: 1em;","lastModifiedDate":"2024-03-27"},{"lineNumber":175,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":176,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":177,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e a {","lastModifiedDate":"2024-03-27"},{"lineNumber":178,"author":{"gitId":"JuliaPoo"},"content":" font-weight: bold;","lastModifiedDate":"2024-03-27"},{"lineNumber":179,"author":{"gitId":"JuliaPoo"},"content":" font-size: 1.5em;","lastModifiedDate":"2024-03-27"},{"lineNumber":180,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":181,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":182,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e a:after {","lastModifiedDate":"2024-03-27"},{"lineNumber":183,"author":{"gitId":"JuliaPoo"},"content":" content: \": \"","lastModifiedDate":"2024-03-27"},{"lineNumber":184,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":185,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":186,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav {","lastModifiedDate":"2024-03-27"},{"lineNumber":187,"author":{"gitId":"JuliaPoo"},"content":" margin: 2.5%;","lastModifiedDate":"2024-03-27"},{"lineNumber":188,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":189,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":190,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav \u003e a {","lastModifiedDate":"2024-03-27"},{"lineNumber":191,"author":{"gitId":"JuliaPoo"},"content":" font-weight: bold;","lastModifiedDate":"2024-03-27"},{"lineNumber":192,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":193,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":194,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav \u003e nav {","lastModifiedDate":"2024-03-27"},{"lineNumber":195,"author":{"gitId":"JuliaPoo"},"content":" flex-direction: row !important;","lastModifiedDate":"2024-03-27"},{"lineNumber":196,"author":{"gitId":"JuliaPoo"},"content":" flex-wrap: wrap;","lastModifiedDate":"2024-03-27"},{"lineNumber":197,"author":{"gitId":"JuliaPoo"},"content":" align-content: flex-start;","lastModifiedDate":"2024-03-27"},{"lineNumber":198,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":199,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":200,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav \u003e nav \u003e a {","lastModifiedDate":"2024-03-27"},{"lineNumber":201,"author":{"gitId":"JuliaPoo"},"content":" align-self: flex-start;","lastModifiedDate":"2024-03-27"},{"lineNumber":202,"author":{"gitId":"JuliaPoo"},"content":" padding-left: 0.3em;","lastModifiedDate":"2024-03-27"},{"lineNumber":203,"author":{"gitId":"JuliaPoo"},"content":" padding-right: 0em;","lastModifiedDate":"2024-03-27"},{"lineNumber":204,"author":{"gitId":"JuliaPoo"},"content":" flex-shrink: 3;","lastModifiedDate":"2024-03-27"},{"lineNumber":205,"author":{"gitId":"JuliaPoo"},"content":" display: inline-block;","lastModifiedDate":"2024-03-27"},{"lineNumber":206,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"},{"lineNumber":207,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":208,"author":{"gitId":"JuliaPoo"},"content":".page-nav-print \u003e nav \u003e nav \u003e nav \u003e a:not(:last-child):after {","lastModifiedDate":"2024-03-27"},{"lineNumber":209,"author":{"gitId":"JuliaPoo"},"content":" content: \" | \";","lastModifiedDate":"2024-03-27"},{"lineNumber":210,"author":{"gitId":"JuliaPoo"},"content":" color: black;","lastModifiedDate":"2024-03-27"},{"lineNumber":211,"author":{"gitId":"JuliaPoo"},"content":" font-weight: bold;","lastModifiedDate":"2024-03-27"},{"lineNumber":212,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"JuliaPoo":42,"Fidget-Spinner":170}},{"path":"docs/team/alphajae11.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Jae Geun\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/team/chuahjiajie.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Jia Jie\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/team/fidget-spinner.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Ken Jin\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/team/johndoe.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":44,"Fidget-Spinner":2}},{"path":"docs/team/juliapoo.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Jule\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/team/lifhoshi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" layout: default.md","lastModifiedDate":"2024-03-03"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" title: \"Lifu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-03"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"---","lastModifiedDate":"2024-03-03"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"### Project: CCA Manager","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"CCA Manager is a **desktop app for managing 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, CCA Manager can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their address book and edit it if required. The command should have the following format:","lastModifiedDate":"2020-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"We’ll assume that you have already set up the development environment as outlined in the Developer’s Guide.","lastModifiedDate":"2020-07-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Looking in the `logic.command` package, you will notice that each existing command have their own class. All the commands inherit from the abstract class `Command` which means that they must override `execute()`. Each `Command` returns an instance of `CommandResult` upon success and `CommandResult#feedbackToUser` is printed to the `ResultDisplay`.","lastModifiedDate":"2020-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/address/logic/command` directory.","lastModifiedDate":"2020-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"For now, let’s keep `RemarkCommand` as simple as possible and print some output. We accomplish that by returning a `CommandResult` with an accompanying message.","lastModifiedDate":"2020-07-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","lastModifiedDate":"2020-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Now that we have our `RemarkCommand` ready to be executed, we need to update `AddressBookParser#parseCommand()` to recognize the `remark` keyword. Add the new command to the `switch` block by creating a new `case` that returns a new instance of `RemarkCommand`.","lastModifiedDate":"2020-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"You can refer to the changes in this [diff](https://github.com/se-edu/addressbook-level3/commit/35eb7286f18a029d39cb7a29df8f172a001e4fd8#diff-399c284cb892c20b7c04a69116fcff6ccc0666c5230a1db8e4a9145def8fa4ee).","lastModifiedDate":"2022-01-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Run `Main#main` and try out your new `RemarkCommand`. If everything went well, you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"While we have successfully printed a message to `ResultDisplay`, the command does not do what it is supposed to do. Let’s change the command to throw a `CommandException` to accurately reflect that our command is still a work in progress.","lastModifiedDate":"2020-12-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.","lastModifiedDate":"2020-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Your code should look something like [this](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-a8e35af8f9c251525063fae36c9852922a7e7195763018eacec60f3a4d87c594) after you are done.","lastModifiedDate":"2022-01-02"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Now let’s move on to writing a parser that will extract the index and remark from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Create a `RemarkCommandParser` class in the `seedu.address.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2020-07-29"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Thankfully, `ArgumentTokenizer#tokenize()` makes it trivial to parse user input. Let’s take a look at the JavaDoc provided for the function to understand what it does.","lastModifiedDate":"2020-07-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"We can tell `ArgumentTokenizer#tokenize()` to look out for our new prefix `r/` and it will return us an instance of `ArgumentMultimap`. Now let’s find out what we need to do in order to obtain the Index and String that we need. Let’s look through `ArgumentMultimap` :","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"This appears to be what we need to get a String of the remark. But what about the Index? Let\u0027s take a quick peek at existing `Command` that uses an index to see how it is done.","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"There appears to be another utility class that obtains an `Index` from the input provided by the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Now that we have the know-how to extract the data that we need from the user’s input, we can parse the user command and create a new instance of `RemarkCommand`, as given below.","lastModifiedDate":"2020-07-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"Fidget-Spinner"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2024-02-25"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the `Person` model. Each field in a Person is implemented as a separate class (e.g. a `Name` object represents the person’s name). That means we should add a `Remark` class so that we can use a `Remark` object to represent a remark given to a person.","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"Create a new `Remark` in `seedu.address.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"A copy-paste and search-replace later, you should have something like [this](https://github.com/se-edu/addressbook-level3/commit/4516e099699baa9e2d51801bd26f016d812dedcc#diff-41bb13c581e280c686198251ad6cc337cd5e27032772f06ed9bf7f1440995ece). Note how `Remark` has no constrains and thus does not require input","lastModifiedDate":"2022-01-02"},{"lineNumber":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` class instead of plain `String`. These should be relatively simple changes.","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"`@FXML` is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Then insert the following into [`main/resources/view/PersonListCard.fxml`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-d44c4f51c24f6253c277a2bb9bc440b8064d9c15ad7cb7ceda280bca032efce9).","lastModifiedDate":"2022-01-02"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"Since `PersonCard` displays data from a `Person`, we need to update `Person` to get our `Remark` displayed!","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"We change the constructor of `Person` to take a `Remark`. We will also need to define new fields and accessors accordingly to store our new addition.","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"Unfortunately, a change to `Person` will cause other commands to break, you will have to modify these commands to use the updated `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"Fidget-Spinner"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2024-02-25"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Refer to [this commit](https://github.com/se-edu/addressbook-level3/commit/ce998c37e65b92d35c91d28c7822cd139c2c0a5c) and check that you have got everything in order!","lastModifiedDate":"2020-07-29"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"AddressBook stores data by serializing `JsonAdaptedPerson` into `json` with the help of an external library — Jackson. Let’s update `JsonAdaptedPerson` to work with our new `Person`!","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"While the changes to code may be minimal, the test data will have to be updated as well.","lastModifiedDate":"2020-07-29"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"Fidget-Spinner"},"content":"You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-02-25"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"Now that we have finalized the `Person` class and its dependencies, we can now bind the `Remark` field to the UI.","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"After the previous step, we notice a peculiar regression — we went from displaying something to nothing at all. However, this is expected behavior as we are yet to update the `RemarkCommand` to make use of the code we\u0027ve been adding in the last few steps.","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"In this last step, we modify `RemarkCommand#execute()` to change the `Remark` of a `Person`. Since all fields in a `Person` are immutable, we create a new instance of a `Person` with the values that we want and","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior.","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Of course you can simply add the test cases manually, like you\u0027ve been doing all along this tutorial. The result would be like the test cases in [here](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01). Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section.","lastModifiedDate":"2022-01-02"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"author":{"gitId":"-"},"content":"The goal is to write effective and efficient tests to ensure that `RemarkCommand#execute()` behaves as expected.","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"Let’s create a test for `RemarkCommand#execute()` to test that adding a remark works. On `IntelliJ IDEA` you can bring up the context menu and choose to `Go To` \\\u003e `Test` or use the appropriate keyboard shortcut.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Let’s use the utility functions provided in `CommandTestUtil`. The functions ensure that commands produce the expected `CommandResult` and output the correct message. In this case, `CommandTestUtil#assertCommandSuccess` is the best fit as we are testing that a `RemarkCommand` will successfully add a `Remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"author":{"gitId":"-"},"content":"You should end up with a test that looks something like [this](https://github.com/se-edu/addressbook-level3/commit/fac8f3fd855d55831ca0cc73313b5943d49d4d6e#diff-ff58f7c10338b34f76645df49b71ecb2bafaf7611b20e7ff59ebc98475538a01R36-R49).","lastModifiedDate":"2022-01-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"-":387,"Fidget-Spinner":15}},{"path":"docs/tutorials/RemovingFields.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Removing Fields\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Tutorial: Removing Fields","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003e Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e — Antoine de Saint-Exupery","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"When working on an existing code base, you will most likely find that some features that are no longer necessary.","lastModifiedDate":"2021-08-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `address` field from `Person` class.","lastModifiedDate":"2021-08-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"success\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**If you have done the [Add `remark` command tutorial](AddRemark.html) already**, you should know where the code had to be updated to add the field `remark`. From that experience, you can deduce where the code needs to be changed to _remove_ that field too. The removing of the `address` field can be done similarly.","lastModifiedDate":"2021-08-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003cbr\u003e","lastModifiedDate":"2021-08-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. **At least have a read even if you don\u0027t actually do the steps yourself.**","lastModifiedDate":"2021-08-01"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"## Safely deleting `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"IntelliJ IDEA provides a refactoring tool that can identify *most* parts of a removal easily. Let’s try to use it as much as we can.","lastModifiedDate":"2021-08-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"### Assisted refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.person.Address` class. Since removing the `Address` class will break the application, we start by identifying `Address`\u0027s usages. This allows us to see code that depends on `Address` to function properly and edit them on a case-by-case basis. Right-click the `Address` class and select `Refactor` \\\u003e `Safe Delete` through the menu.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \"name\": \"Person with invalid name field: Ha!ns Mu@ster\",","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \"phone\": \"9482424\",","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \"email\": \"hans@example.com\",","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \"address\": \"4th street\"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" } ]","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"You can go through each individual `json` file and manually remove the `address` field.","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":104,"Fidget-Spinner":11}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":" layout: default.md","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":" pageNav: 3","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2024-02-25"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","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":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","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":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":174,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":175,"author":{"gitId":"Fidget-Spinner"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2024-02-25"},{"lineNumber":176,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"1. As suspected, `command#execute()` does indeed make changes to the `model` object. Specifically,","lastModifiedDate":"2021-07-31"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the person data.","lastModifiedDate":"2021-07-31"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the `edit` command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":" To provide some context, given below is the class diagram of the `Model` component. See if you can figure out where the \u0027filtered list\u0027 of persons is being tracked.","lastModifiedDate":"2021-07-31"},{"lineNumber":214,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e\u003cbr\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Model` component section of the DG](../DeveloperGuide.html#model-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"1. As you step through the rest of the statements in the `EditCommand#execute()` method, you\u0027ll see that it creates a `CommandResult` object (containing information about the result of the execution) and returns it.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":218,"author":{"gitId":"-"},"content":" Advancing the debugger by one more step should take you back to the middle of the `LogicManager#execute()` method.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"1. Given that you have already seen quite a few classes in the `Logic` component in action, see if you can identify in this partial class diagram some of the classes you\u0027ve encountered so far, and see how they fit into the class structure of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":221,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":222,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Logic` component section of the DG](../DeveloperGuide.html#logic-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"1. Similar to before, you can step over/into statements in the `LogicManager#execute()` method to examine how the control is transferred to the `Storage` component and what happens inside that component.","lastModifiedDate":"2021-07-31"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":228,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":229,"author":{"gitId":"Fidget-Spinner"},"content":" **Intellij Tip:** When trying to step into a statement such as `storage.saveAddressBook(model.getAddressBook())` which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.","lastModifiedDate":"2024-02-25"},{"lineNumber":230,"author":{"gitId":"Fidget-Spinner"},"content":" \u003c/box\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"1. As you step through the code inside the `Storage` component, you will eventually arrive at the `JsonAddressBook#saveAddressBook()` method which calls the `JsonSerializableAddressBook` constructor, to create an object that can be _serialized_ (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):","lastModifiedDate":"2021-07-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":" **`JsonSerializableAddressBook` constructor:**","lastModifiedDate":"2021-07-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * {@code JsonSerializableAddressBook}.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" source.getPersonList()","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .stream()","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"1. It appears that a `JsonAdaptedPerson` is created for each `Person` and then added to the `JsonSerializableAddressBook`.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" This is because regular Java objects need to go through an _adaptation_ for them to be suitable to be saved in JSON format.","lastModifiedDate":"2021-07-31"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"1. While you are stepping through the classes in the `Storage` component, here is the component\u0027s class diagram to help you understand how those classes fit into the structure of the component.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":255,"author":{"gitId":"Fidget-Spinner"},"content":" \u003cpuml src\u003d\"../diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":256,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * :bulb: This may be a good time to read through the [`Storage` component section of the DG](../DeveloperGuide.html#storage-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"1. We can continue to step through until you reach the end of the `LogicManager#execute()` method and return to the `MainWindow#executeCommand()` method (the place where we put the original breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"1. Stepping into `resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());`, we end up in:","lastModifiedDate":"2021-07-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" **`ResultDisplay#setFeedbackToUser()`**","lastModifiedDate":"2021-07-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" public void setFeedbackToUser(String feedbackToUser) {","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" requireNonNull(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" resultDisplay.setText(feedbackToUser);","lastModifiedDate":"2020-05-23"},{"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":"1. Finally, you can step through until you reach the end of`MainWindow#executeCommand()`.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":272,"author":{"gitId":"-"},"content":" :bulb: This may be a good time to read through the [`UI` component section of the DG](../DeveloperGuide.html#ui-component)","lastModifiedDate":"2021-07-31"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"In this tutorial, we traced a valid edit command from raw user input to the result being displayed to the user. From this tutorial, you learned more about how the various components work together to produce a response to a user command.","lastModifiedDate":"2021-07-31"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"Here are some quick questions you can try to answer based on your execution path tracing. In some cases, you can do further tracing for the given commands to find exactly what happens.","lastModifiedDate":"2021-07-31"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"1. In this tutorial, we traced the \"happy path\" (i.e., no errors). What","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" do you think will happen if we traced the following commands","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" instead? What exceptions do you think will be thrown (if any), where","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" will the exceptions be thrown and where will they be handled?","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" 1. `redit 1 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" 2. `edit 0 n/Alice Yu`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" 3. `edit 1 n/Alex Yeoh`","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" 4. `edit 1`","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" 5. `edit 1 n/アリス ユー`","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" 6. `edit 1 t/one t/two t/three t/one`","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"2. What components will you have to modify to perform the following","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" enhancements to the application?","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" 1. Make command words case-insensitive","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" 2. Allow `delete` to remove more than one index at a time","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" 3. Save the address book in the CSV format instead","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":" 4. Add a new command","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" 5. Add a new field to `Person`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":" 6. Add a new entity to the address book","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":276,"Fidget-Spinner":35}},{"path":"src/main/java/seedu/address/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2023-05-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-05-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2016-09-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.ConsoleHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.FileHandler;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Level;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.SimpleFormatter;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Configures and manages loggers and handlers, including their logging level","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Named {@link Logger}s can be obtained from this class\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * These loggers have been configured to output messages to the console and a {@code .log} file by default,","lastModifiedDate":"2016-09-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log","lastModifiedDate":"2016-09-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * file reaches 5MB big, up to a maximum of 5 files.\u003cbr\u003e","lastModifiedDate":"2016-09-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class LogsCenter {","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_COUNT \u003d 5;","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final int MAX_FILE_SIZE_IN_BYTES \u003d (int) (Math.pow(2, 20) * 5); // 5MB","lastModifiedDate":"2016-09-28"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" private static final String LOG_FILE \u003d \"ccamanager.log\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger; // logger for this class","lastModifiedDate":"2023-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static Logger baseLogger; // to be used as the parent of all other loggers created by this class.","lastModifiedDate":"2023-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Level currentLogLevel \u003d Level.INFO;","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // This static block ensures essential loggers are created early","lastModifiedDate":"2023-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2023-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" setBaseLogger();","lastModifiedDate":"2023-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" logger \u003d LogsCenter.getLogger(LogsCenter.class);","lastModifiedDate":"2023-07-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created","lastModifiedDate":"2023-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set.","lastModifiedDate":"2023-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void init(Config config) {","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" currentLogLevel \u003d config.getLogLevel();","lastModifiedDate":"2016-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" logger.info(\"Log level will be set as: \" + currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // set the level of the baseLogger which will be inherited by other loggers","lastModifiedDate":"2023-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" baseLogger.setLevel(currentLogLevel);","lastModifiedDate":"2023-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a logger with the given name prefixed by the {@code baseLogger}\u0027s name so that the created logger","lastModifiedDate":"2023-07-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers","lastModifiedDate":"2023-07-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * as the {@code baseLogger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static Logger getLogger(String name) {","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Java organizes loggers into a hierarchy based on their names (using \u0027.\u0027 as a separator, similar to how Java","lastModifiedDate":"2023-07-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger.","lastModifiedDate":"2023-07-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // By prefixing names of all loggers with baseLogger\u0027s name + \".\", we make the baseLogger the parent of all","lastModifiedDate":"2023-07-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level.","lastModifiedDate":"2023-07-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Logger logger \u003d Logger.getLogger(baseLogger.getName() + \".\" + name);","lastModifiedDate":"2023-07-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" removeHandlers(logger);","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.setUseParentHandlers(true);","lastModifiedDate":"2023-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return logger;","lastModifiedDate":"2023-07-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Creates a Logger for the given class name.","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Logger getLogger(Class\u003cT\u003e clazz) {","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(clazz);","lastModifiedDate":"2023-05-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return getLogger(clazz.getSimpleName());","lastModifiedDate":"2017-01-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Removes all handlers from the {@code logger}.","lastModifiedDate":"2023-07-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" private static void removeHandlers(Logger logger) {","lastModifiedDate":"2016-09-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Arrays.stream(logger.getHandlers())","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .forEach(logger::removeHandler);","lastModifiedDate":"2018-01-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates a logger named \u0027ab3\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2023-07-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers.","lastModifiedDate":"2023-07-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static void setBaseLogger() {","lastModifiedDate":"2023-07-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" baseLogger \u003d Logger.getLogger(\"ab3\");","lastModifiedDate":"2023-07-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" baseLogger.setUseParentHandlers(false);","lastModifiedDate":"2023-07-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" removeHandlers(baseLogger);","lastModifiedDate":"2023-07-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level","lastModifiedDate":"2023-07-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // already; there is no need to control log message level of the handlers.","lastModifiedDate":"2023-07-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // add a ConsoleHandler to log to the console","lastModifiedDate":"2023-07-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ConsoleHandler consoleHandler \u003d new ConsoleHandler();","lastModifiedDate":"2023-07-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" consoleHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" baseLogger.addHandler(consoleHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // add a FileHandler to log to a file","lastModifiedDate":"2023-07-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FileHandler fileHandler \u003d new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true);","lastModifiedDate":"2023-07-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" fileHandler.setFormatter(new SimpleFormatter());","lastModifiedDate":"2023-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" fileHandler.setLevel(Level.ALL);","lastModifiedDate":"2023-07-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" baseLogger.addHandler(fileHandler);","lastModifiedDate":"2023-07-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.warning(\"Error adding file handler for logger.\");","lastModifiedDate":"2016-09-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":105,"Fidget-Spinner":1}},{"path":"src/main/java/seedu/address/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2016-09-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-06-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2016-12-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Utility methods related to Collections","lastModifiedDate":"2016-09-30"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class CollectionUtil {","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns true if {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" public static boolean isNotNull(Object... items) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).noneMatch(Objects::isNull);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alphajae11":4,"-":35}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" /** Returns an unmodifiable view of the filtered list of Cca */","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cCca\u003e getFilteredCcaList();","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"JuliaPoo":4,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getFilteredCcaList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" return model.getFilteredCcaList();","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"JuliaPoo":6,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" .append(\"; Roles: \");","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" person.getRoles().forEach(builder::append);","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" builder.append(\"; CCA: \");","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" person.getCcas().forEach(builder::append);","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" builder.append(\"; Amount: \")","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" .append(person.getAmount());","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" builder.append(\"; Attendance: \")","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" .append(person.getAtt())","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" .append(\"/\")","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" .append(person.getSess());","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" builder.append(\"; Metadata: \")","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":" .append(person.getMetadata());","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"JuliaPoo":4,"chuahjiajie":4,"alphajae11":2,"-":49,"LifHoshi":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE]...\\n\"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" + PREFIX_ROLE + \"friends \"","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" + PREFIX_ROLE + \"owesMoney \"","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" + PREFIX_METADATA + \"I have food allegeries - Egg and Peanuts \"","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" + PREFIX_CCA + \"NUS Cycling\";","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"JuliaPoo":4,"chuahjiajie":2,"alphajae11":2,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/AssignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" * Assigns role to the existing person in the CCA Manager","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":"public class AssignCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Assigns the details of the person identified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE]...\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" + \"Example: \" + COMMAND_WORD + \" 2 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" + PREFIX_ROLE + \"Head \";","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_ASSIGN_PERSON_SUCCESS \u003d \"Assigned Person: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_NOT_ASSIGNED \u003d \"Role should be provided here.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alphajae11"},"content":" private final Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"alphajae11"},"content":" private final AssignCommand.AssignPersonDescriptor assignPersonDescriptor;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" * @param index of the person to assign","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":" * @param assignPersonDescriptor details of the role to assign the person with","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"alphajae11"},"content":" public AssignCommand(Index index, AssignCommand.AssignPersonDescriptor assignPersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"alphajae11"},"content":" requireNonNull(assignPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alphajae11"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alphajae11"},"content":" this.assignPersonDescriptor \u003d new AssignCommand.AssignPersonDescriptor(assignPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"alphajae11"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"alphajae11"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"alphajae11"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"alphajae11"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"alphajae11"},"content":" Person personToAssign \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"alphajae11"},"content":" Person assignedPerson \u003d createAssignedPerson(personToAssign, assignPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"alphajae11"},"content":" if (!personToAssign.isSamePerson(assignedPerson) \u0026\u0026 model.hasPerson(assignedPerson)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"alphajae11"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"alphajae11"},"content":" model.setPerson(personToAssign, assignedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"alphajae11"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"alphajae11"},"content":" return new CommandResult(String.format(MESSAGE_ASSIGN_PERSON_SUCCESS, Messages.format(assignedPerson)));","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"alphajae11"},"content":" * Creates and returns an assigned person with details of the role","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"alphajae11"},"content":" * @param personToAssign person who will be assigned","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"alphajae11"},"content":" * @param assignPersonDescriptor details of the role to assign the person with","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"alphajae11"},"content":" * @return Person who is assigned with a role","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"alphajae11"},"content":" private static Person createAssignedPerson(Person personToAssign,","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor assignPersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"alphajae11"},"content":" assert personToAssign !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"alphajae11"},"content":" Name updatedName \u003d personToAssign.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"alphajae11"},"content":" Phone updatedPhone \u003d personToAssign.getPhone();","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"alphajae11"},"content":" Email updatedEmail \u003d personToAssign.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"alphajae11"},"content":" Address updatedAddress \u003d personToAssign.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"alphajae11"},"content":" Set\u003cCca\u003e updatedCcas \u003d personToAssign.getCcas();","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e updatedRoles \u003d assignPersonDescriptor.getRole().orElse(personToAssign.getRoles());","lastModifiedDate":"2024-03-29"},{"lineNumber":104,"author":{"gitId":"LifHoshi"},"content":" Amount updatedAmount \u003d personToAssign.getAmount();","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" Attendance updatedAttendance \u003d personToAssign.getAtt();","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" Sessions updatedSessions \u003d personToAssign.getSess();","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"alphajae11"},"content":" Metadata updatedMetadata \u003d personToAssign.getMetadata();","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"LifHoshi"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"chuahjiajie"},"content":" updatedRoles, updatedCcas, updatedAmount, updatedAttendance, updatedSessions, updatedMetadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"alphajae11"},"content":" * Stores the details of the role to assign the person with.","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"alphajae11"},"content":" public static class AssignPersonDescriptor {","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"JuliaPoo"},"content":" private Set\u003cRole\u003e role;","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptor() {}","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"alphajae11"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"JuliaPoo"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-03-29"},{"lineNumber":124,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptor(AssignCommand.AssignPersonDescriptor toCopy) {","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"alphajae11"},"content":" setRole(toCopy.role);","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"alphajae11"},"content":" * Returns true if at least all fields are edited.","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"alphajae11"},"content":" public boolean isAnyFieldNotEdited() {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"alphajae11"},"content":" return CollectionUtil.isNotNull(role);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" public void setRole(Set\u003cRole\u003e role) {","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"alphajae11"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" public Optional\u003cSet\u003cRole\u003e\u003e getRole() {","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"alphajae11"},"content":" return (role !\u003d null) ? Optional.of(Collections.unmodifiableSet(role)) : Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"alphajae11"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"alphajae11"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"alphajae11"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"alphajae11"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"alphajae11"},"content":" if (!(other instanceof AssignCommand.AssignPersonDescriptor)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"alphajae11"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor otherAssignDescriptor \u003d (AssignCommand.AssignPersonDescriptor) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"alphajae11"},"content":" return Objects.equals(role, otherAssignDescriptor.role);","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"alphajae11"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"alphajae11"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"alphajae11"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"alphajae11"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":6,"chuahjiajie":5,"alphajae11":150,"Fidget-Spinner":2,"LifHoshi":3}},{"path":"src/main/java/seedu/address/logic/commands/ChargeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":" * Owes the details of the person identified using the displayed index from the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"public class ChargeCommand extends Command {","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String COMMAND_WORD \u003d \"charge\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" // MESSAGE_USAGE below is modified from my Teammate\u0027s (AlphaJae) code","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" + \": Adds a certain amount to how much all matching CCA + optional role members owe.\"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" + \"[\" + PREFIX_AMOUNT + \"AMOUNT]...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" + \"[\" + PREFIX_CCA + \"AMOUNT] (more than one allowed)...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" + \"[\" + PREFIX_ROLE + \"AMOUNT] (more than one allowed)...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" + PREFIX_AMOUNT + \"10.00 \"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" + PREFIX_CCA + \"NUS Cycling \"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" + PREFIX_ROLE + \"friends\";","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_NO_AMOUNT \u003d \"An amount should be provided.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" private final Amount amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" private final CcaContainsKeywordPredicate ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" * @param amount The amount to charge.","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" * @param ccas The matching CCA and roles you want to charge.","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" public ChargeCommand(Amount amount, CcaContainsKeywordPredicate ccas) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(amount);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(ccas);","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" this.amount \u003d amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" this.ccas \u003d ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" public Amount getAmount() {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" return amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" // Solution below (equals method) is adapted from original AB3 author lzq.","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" || (other instanceof ChargeCommand // instanceof handles nulls","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" \u0026\u0026 ccas.equals(((ChargeCommand) other).ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" \u0026\u0026 amount.equals(((ChargeCommand) other).amount));","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" model.updateFilteredPersonList(this.ccas);","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" for (Person personToOwe : lastShownList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" Amount oldAmount \u003d personToOwe.getAmount();","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" Amount newAmount \u003d oldAmount.deduct(this.amount);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" Person owedPerson \u003d OweCommand.createOwedPerson(personToOwe, newAmount);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" model.setPerson(personToOwe, owedPerson);","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" result.append(String.format(\"Owed Person: $%s\\n\", owedPerson.getAmount().toString()));","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" return new CommandResult(result.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" public String toString() {","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" return new StringBuilder().append(\"ChargeCommand{ \")","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"amount: \").append(amount).append(\", \")","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"cca\u0026roles: \").append(ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"}\").toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"Fidget-Spinner":88}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCcaCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" * Owes the details of the person identified using the displayed index from the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"public class DeleteCcaCommand extends Command {","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String COMMAND_WORD \u003d \"cca_delete\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" // MESSAGE_USAGE below is modified from my Teammate\u0027s (AlphaJae) code","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" + \": Deletes a CCA and all its associated members from your contacts.\"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" + \"[\" + PREFIX_CCA + \"CCA]...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" + PREFIX_CCA + \"NUS Cycling \";","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_NO_CCA \u003d \"A CCA should be provided.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" private final CcaContainsKeywordPredicate ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" * @param ccas The matching CCA to delete.","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" public DeleteCcaCommand(CcaContainsKeywordPredicate ccas) {","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(ccas);","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" this.ccas \u003d ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" // Solution below (equals method) is adapted from original AB3 author lzq.","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" || (other instanceof DeleteCcaCommand // instanceof handles nulls","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" \u0026\u0026 ccas.equals(((DeleteCcaCommand) other).ccas));","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" model.updateFilteredPersonList(this.ccas);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" result.append(String.format(\"Deleting CCA(s) %s tags from all its members:\\n\", this.ccas));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" // We have to essentially clone the list","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" // because as `model.setPerson` is called,","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" // the ObservableList gets updated.","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" // This causes some people to be skipped.","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" List\u003cPerson\u003e affectedPeople \u003d model","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" .getFilteredPersonList()","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":" // Delete their roles","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" ArrayList\u003cCca\u003e removedCcas \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" affectedPeople","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" .forEach(affectedPerson -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e updatedCca \u003d affectedPerson","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" .getCcas()","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" .filter(c -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":" boolean isToDelete \u003d ccas.contains(c);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" if (isToDelete) {","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" removedCcas.add(c);","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":" return !isToDelete;","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" })","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" model.setPerson(affectedPerson, affectedPerson.replaceCca(updatedCca));","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" result.append(String.format(\"Person affected: $%s\\n\", affectedPerson.getName()));","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" // Remove Ccas","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" removedCcas.stream().distinct().forEach(model::deleteCca);","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" // Update filteredlist to display the same people","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":" model.updateFilteredPersonList(p -\u003e affectedPeople","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":" .anyMatch(p::isSamePerson)","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":" return new CommandResult(result.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":" public String toString() {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"Fidget-Spinner"},"content":" return new StringBuilder().append(\"DeleteCcaCommand{ \")","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"cca: \").append(ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":" .append(\"}\").toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"Fidget-Spinner":105}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE] \"","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" + \"[\" + PREFIX_CCA + \"CCA] \"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" + \"[\" + PREFIX_METADATA + \"Meta-data]...\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e updatedRoles \u003d editPersonDescriptor.getRoles().orElse(personToEdit.getRoles());","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"chuahjiajie"},"content":" Set\u003cCca\u003e updatedCcas \u003d editPersonDescriptor.getCcas().orElse(personToEdit.getCcas());","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"alphajae11"},"content":" Metadata updatedMetadata \u003d editPersonDescriptor.getMetadata().orElse(personToEdit.getMetadata());","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"LifHoshi"},"content":" Amount updatedAmount \u003d personToEdit.getAmount();","lastModifiedDate":"2024-03-31"},{"lineNumber":115,"author":{"gitId":"chuahjiajie"},"content":" Attendance updatedAttendance \u003d personToEdit.getAtt();","lastModifiedDate":"2024-04-05"},{"lineNumber":116,"author":{"gitId":"chuahjiajie"},"content":" Sessions updatedSessions \u003d personToEdit.getSess();","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"chuahjiajie"},"content":" updatedRoles, updatedCcas, updatedAmount, updatedAttendance, updatedSessions, updatedMetadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"JuliaPoo"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"chuahjiajie"},"content":" private Set\u003cCca\u003e ccas;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"alphajae11"},"content":" private Metadata metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"JuliaPoo"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":" setRoles(toCopy.roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" setCcas(toCopy.ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"alphajae11"},"content":" setMetadata(toCopy.metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"alphajae11"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, ccas, roles, metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":208,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"JuliaPoo"},"content":" * Sets {@code roles} to this object\u0027s {@code roles}.","lastModifiedDate":"2024-03-29"},{"lineNumber":217,"author":{"gitId":"JuliaPoo"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-03-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":219,"author":{"gitId":"JuliaPoo"},"content":" public void setRoles(Set\u003cRole\u003e roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":220,"author":{"gitId":"JuliaPoo"},"content":" this.roles \u003d (roles !\u003d null) ? new HashSet\u003c\u003e(roles) : null;","lastModifiedDate":"2024-03-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"JuliaPoo"},"content":" * Returns an unmodifiable roles set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"JuliaPoo"},"content":" * Returns {@code Optional#empty()} if {@code roles} is null.","lastModifiedDate":"2024-03-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":228,"author":{"gitId":"JuliaPoo"},"content":" public Optional\u003cSet\u003cRole\u003e\u003e getRoles() {","lastModifiedDate":"2024-03-29"},{"lineNumber":229,"author":{"gitId":"JuliaPoo"},"content":" return (roles !\u003d null) ? Optional.of(Collections.unmodifiableSet(roles)) : Optional.empty();","lastModifiedDate":"2024-03-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"chuahjiajie"},"content":" * Sets {@code CCAs} to this object\u0027s {@code CCAs}.","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"chuahjiajie"},"content":" * A defensive copy of {@code CCAs} is used internally.","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"chuahjiajie"},"content":" public void setCcas(Set\u003cCca\u003e ccas) {","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"chuahjiajie"},"content":" this.ccas \u003d (ccas !\u003d null) ? new HashSet\u003c\u003e(ccas) : null;","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"chuahjiajie"},"content":" * Returns an unmodifiable CCA set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"chuahjiajie"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"chuahjiajie"},"content":" * Returns {@code Optional#empty()} if {@code CCAs} is null.","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"chuahjiajie"},"content":" public Optional\u003cSet\u003cCca\u003e\u003e getCcas() {","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"chuahjiajie"},"content":" return (ccas !\u003d null) ? Optional.of(Collections.unmodifiableSet(ccas)) : Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"alphajae11"},"content":" * Sets {@code Metadata} to this object\u0027s {@code Metadata}.","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"alphajae11"},"content":" * A defensive copy of {@code Metadata} is used internally.","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"alphajae11"},"content":" public void setMetadata(Metadata metadata) {","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"alphajae11"},"content":" * Returns an unmodifiable Metadata set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"alphajae11"},"content":" * Returns {@code Optional#empty()} if {@code Metadata} is null.","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"alphajae11"},"content":" public Optional\u003cMetadata\u003e getMetadata() {","lastModifiedDate":"2024-04-04"},{"lineNumber":263,"author":{"gitId":"alphajae11"},"content":" return Optional.ofNullable(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":279,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":282,"author":{"gitId":"alphajae11"},"content":" \u0026\u0026 Objects.equals(roles, otherEditPersonDescriptor.roles)","lastModifiedDate":"2024-04-04"},{"lineNumber":283,"author":{"gitId":"alphajae11"},"content":" \u0026\u0026 Objects.equals(metadata, otherEditPersonDescriptor.metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":293,"author":{"gitId":"JuliaPoo"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-03-29"},{"lineNumber":294,"author":{"gitId":"JuliaPoo"},"content":" .add(\"CCAs\", ccas)","lastModifiedDate":"2024-03-29"},{"lineNumber":295,"author":{"gitId":"alphajae11"},"content":" .add(\"Metadata\", metadata)","lastModifiedDate":"2024-04-04"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"JuliaPoo":17,"chuahjiajie":27,"alphajae11":20,"-":232,"LifHoshi":3}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommand.java. All credits and thanks to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" * Filters all persons in address book by their cca (case-sensitive).","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":" * Serves the purpose of grouping people together..","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters a person by their CCA \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" + \"(case-sensitive) and optionally their roles.\"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Parameters: c/CCA c/[MORE CCAs]... r/ROLE /r[MORE ROLES]\\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" + \"Example: \" + COMMAND_WORD + \" c/NUS Cycling r/Member\";","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" public static final String MESSAGE_NOT_FILTER_CCA \u003d \"A CCA should be provided.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" private final CcaContainsKeywordPredicate cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" public FilterCommand(CcaContainsKeywordPredicate cca) {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" this.cca \u003d cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" model.updateFilteredPersonList(cca);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand otherFilterCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" return cca.equals(otherFilterCommand.cca);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" .add(\"cca\", cca)","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"JuliaPoo":1,"Fidget-Spinner":62}},{"path":"src/main/java/seedu/address/logic/commands/OweCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" * Owes the details of the person identified using the displayed index from the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":"public class OweCommand extends Command {","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" public static final String COMMAND_WORD \u003d \"owe\";","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" // MESSAGE_USAGE below is modified from my Teammate\u0027s (AlphaJae) code","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Owes the details of the person identified \"","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" + \"[\" + PREFIX_AMOUNT + \"AMOUNT]...\\n\"","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" + \"Example: \" + COMMAND_WORD + \" 2 \"","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" + PREFIX_AMOUNT + \"10.00 \";","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_OWE_PERSON_SUCCESS \u003d \"Owed Person: %1$s\";","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_NOT_OWE \u003d \"Amount should be provided here.\";","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" private final Index index;","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" private final Amount amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" * @param index of the person to assign","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" * @param amount details of the role to assign the person with","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" public OweCommand(Index index, Amount amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" this.amount \u003d amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" public Index getIndex() {","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" return index;","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" public Amount getAmount() {","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" return amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" // Solution below (equals method) is adapted from original AB3 author lzq.","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" || (other instanceof OweCommand // instanceof handles nulls","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" \u0026\u0026 index.equals(((OweCommand) other).index)","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" \u0026\u0026 amount.equals(((OweCommand) other).amount));","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"LifHoshi"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-31"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":83,"author":{"gitId":"LifHoshi"},"content":" Person personToOwe \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-31"},{"lineNumber":84,"author":{"gitId":"LifHoshi"},"content":" Person owedPerson \u003d createOwedPerson(personToOwe, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":86,"author":{"gitId":"LifHoshi"},"content":" model.setPerson(personToOwe, owedPerson);","lastModifiedDate":"2024-03-31"},{"lineNumber":87,"author":{"gitId":"LifHoshi"},"content":" return new CommandResult(String.format(\"Owed Person: $%s\", owedPerson.getAmount().toString()));","lastModifiedDate":"2024-03-31"},{"lineNumber":88,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" protected static Person createOwedPerson(Person personToOwe, Amount amount) {","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"LifHoshi"},"content":" assert personToOwe !\u003d null;","lastModifiedDate":"2024-03-31"},{"lineNumber":92,"author":{"gitId":"LifHoshi"},"content":" Name updatedName \u003d personToOwe.getName();","lastModifiedDate":"2024-03-31"},{"lineNumber":93,"author":{"gitId":"LifHoshi"},"content":" Phone updatedPhone \u003d personToOwe.getPhone();","lastModifiedDate":"2024-03-31"},{"lineNumber":94,"author":{"gitId":"LifHoshi"},"content":" Email updatedEmail \u003d personToOwe.getEmail();","lastModifiedDate":"2024-03-31"},{"lineNumber":95,"author":{"gitId":"LifHoshi"},"content":" Address updatedAddress \u003d personToOwe.getAddress();","lastModifiedDate":"2024-03-31"},{"lineNumber":96,"author":{"gitId":"LifHoshi"},"content":" Set\u003cRole\u003e updatedRoles \u003d personToOwe.getRoles();","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"LifHoshi"},"content":" Set\u003cCca\u003e updatedCcas \u003d personToOwe.getCcas();","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"LifHoshi"},"content":" Amount updatedAmount \u003d new Amount(amount.toString());","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" Attendance updatedAttendance \u003d personToOwe.getAtt();","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":" Sessions updatedSessions \u003d personToOwe.getSess();","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"alphajae11"},"content":" Metadata updatedMetadata \u003d personToOwe.getMetadata();","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRoles, updatedCcas,","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" updatedAmount, updatedAttendance, updatedSessions, updatedMetadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":108,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-03-31"},{"lineNumber":109,"author":{"gitId":"LifHoshi"},"content":" return new StringBuilder().append(\"OweCommand{ index: \").append(index).append(\", amount: \").append(amount)","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"LifHoshi"},"content":" .append(\"}\").toString();","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"chuahjiajie":6,"alphajae11":2,"LifHoshi":103,"Fidget-Spinner":1}},{"path":"src/main/java/seedu/address/logic/commands/SetAttCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import java.util.List;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Objects;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" * Assigns role to the existing person in the CCA Manager","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttCommand extends Command {","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" public static final String COMMAND_WORD \u003d \"setatt\";","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the attendance details of the person identified \"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" + \"[\" + PREFIX_ATTENDANCE + \"ATTENDANCE] \"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" + \"[\" + PREFIX_SESSIONS + \"SESSIONS] \"","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" + PREFIX_ATTENDANCE + \"3 \"","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" + PREFIX_SESSIONS + \"10\";","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_SETATT_PERSON_SUCCESS \u003d \"Set Attendance for Person: %1$s\";","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_ATT_NOT_SET \u003d \"Positive Integer has to be provided after /att and /s\";","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_ATT_TOO_LARGE \u003d \"Attendance number exceeds sessions number\";","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Attendance has already been set to that value\";","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" private final Index index;","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" private final SetAttCommand.SetAttDescriptor setAttDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" * @param setAttDescriptor attendance details to edit the person with","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":" public SetAttCommand(Index index, SetAttCommand.SetAttDescriptor setAttDescriptor) {","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(index);","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(setAttDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" this.index \u003d index;","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" this.setAttDescriptor \u003d new SetAttCommand.SetAttDescriptor(setAttDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chuahjiajie"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"chuahjiajie"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chuahjiajie"},"content":" Person personToSetAtt \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" Person setAttPerson \u003d createSetAttPerson(personToSetAtt, setAttDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"chuahjiajie"},"content":" if (!personToSetAtt.isSamePerson(setAttPerson) \u0026\u0026 model.hasPerson(setAttPerson)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"chuahjiajie"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chuahjiajie"},"content":" model.setPerson(personToSetAtt, setAttPerson);","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chuahjiajie"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"chuahjiajie"},"content":" return new CommandResult(String.format(MESSAGE_SETATT_PERSON_SUCCESS, Messages.format(setAttPerson)));","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chuahjiajie"},"content":" * Creates and returns an person with attendance details","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"chuahjiajie"},"content":" * @param personToAssign person who will be assigned","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chuahjiajie"},"content":" * @param setAttDescriptor details of the attendance to assign the person with","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" * @return Person who is assigned with attendance details","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" private static Person createSetAttPerson(Person personToAssign,","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor setAttDescriptor) {","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" assert personToAssign !\u003d null;","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" Name updatedName \u003d personToAssign.getName();","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":" Phone updatedPhone \u003d personToAssign.getPhone();","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"chuahjiajie"},"content":" Email updatedEmail \u003d personToAssign.getEmail();","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":" Address updatedAddress \u003d personToAssign.getAddress();","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" Set\u003cCca\u003e updatedCcas \u003d personToAssign.getCcas();","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" Set\u003cRole\u003e updatedRoles \u003d personToAssign.getRoles();","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" Amount updatedAmount \u003d personToAssign.getAmount();","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" Attendance updatedAttendance \u003d setAttDescriptor.getAtt().orElse(personToAssign.getAtt());","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"chuahjiajie"},"content":" Sessions updatedSessions \u003d setAttDescriptor.getSess().orElse(personToAssign.getSess());","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"chuahjiajie"},"content":" Metadata updatedMetaData \u003d personToAssign.getMetadata();","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"chuahjiajie"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"chuahjiajie"},"content":" updatedRoles, updatedCcas, updatedAmount, updatedAttendance, updatedSessions, updatedMetaData);","lastModifiedDate":"2024-04-05"},{"lineNumber":112,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":115,"author":{"gitId":"chuahjiajie"},"content":" * Stores the details of the role to assign the person with.","lastModifiedDate":"2024-04-05"},{"lineNumber":116,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"chuahjiajie"},"content":" public static class SetAttDescriptor {","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"chuahjiajie"},"content":" private Attendance attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"chuahjiajie"},"content":" private Sessions sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptor() {}","lastModifiedDate":"2024-04-05"},{"lineNumber":122,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"chuahjiajie"},"content":" * Copy constructor.","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"chuahjiajie"},"content":" * A defensive copy of {@code SetAtt} is used internally.","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":127,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptor(SetAttCommand.SetAttDescriptor toCopy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"chuahjiajie"},"content":" setAtt(toCopy.attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"chuahjiajie"},"content":" setSess(toCopy.sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":131,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":132,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"chuahjiajie"},"content":" * Returns true if at least all fields are edited.","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"chuahjiajie"},"content":" public boolean isAnyFieldNotEdited() {","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"chuahjiajie"},"content":" return CollectionUtil.isNotNull(attendance, sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chuahjiajie"},"content":" public void setAtt(Attendance attendance) {","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chuahjiajie"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chuahjiajie"},"content":" public Optional\u003cAttendance\u003e getAtt() {","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chuahjiajie"},"content":" return (attendance !\u003d null) ? Optional.of(attendance) : Optional.empty();","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chuahjiajie"},"content":" public void setSess(Sessions sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"chuahjiajie"},"content":" this.sessions \u003d sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"chuahjiajie"},"content":" public Optional\u003cSessions\u003e getSess() {","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"chuahjiajie"},"content":" return (attendance !\u003d null) ? Optional.of(sessions) : Optional.empty();","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chuahjiajie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chuahjiajie"},"content":" return true;","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":" if (!(other instanceof SetAttCommand.SetAttDescriptor)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" return false;","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor otherSetAttDescriptor \u003d (SetAttCommand.SetAttDescriptor) other;","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" return Objects.equals(attendance, otherSetAttDescriptor.attendance)","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 Objects.equals(sessions, otherSetAttDescriptor.sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":" .add(\"attendance\", attendance)","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":" .add(\"sessions\", sessions)","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":" .toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":180,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":180}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_ROLE,","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" PREFIX_CCA, PREFIX_METADATA);","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e roleList \u003d ParserUtil.parseRoles(argMultimap.getAllValues(PREFIX_ROLE));","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" Set\u003cCca\u003e ccaList \u003d ParserUtil.parseCcas(argMultimap.getAllValues(PREFIX_CCA));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" Metadata metadata \u003d ParserUtil.parseMetadata(argMultimap.getValue(PREFIX_METADATA).get());","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"0.0\");","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" Attendance attendance \u003d new Attendance(\"0\");","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" Sessions sessions \u003d new Sessions(\"0\");","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" Person person \u003d new Person(name, phone, email, address, roleList, ccaList, amount, attendance, sessions,","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"JuliaPoo":4,"chuahjiajie":9,"alphajae11":4,"-":56,"LifHoshi":2}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.ChargeCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.DeleteCcaCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.OweCommand;","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" case DeleteCcaCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" return new DeleteCcaCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" case ChargeCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" return new ChargeCommandParser().parse(arguments);","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":95,"author":{"gitId":"alphajae11"},"content":" case AssignCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"alphajae11"},"content":" return new AssignCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"LifHoshi"},"content":" case OweCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"LifHoshi"},"content":" return new OweCommandParser().parse(arguments);","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"chuahjiajie"},"content":" case SetAttCommand.COMMAND_WORD:","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":" return new SetAttCommandParser().parse(arguments);","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chuahjiajie":3,"alphajae11":4,"-":86,"Fidget-Spinner":11,"LifHoshi":4}},{"path":"src/main/java/seedu/address/logic/parser/AssignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" * Parses input arguments and creates a new AssignCommand Object","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":"public class AssignCommandParser implements Parser\u003cAssignCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" * Parses the given {@code String} of arguments in the context of the AssignCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" * and returns an AssignCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" public AssignCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_ROLE);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor assignPersonDescriptor \u003d new AssignCommand.AssignPersonDescriptor();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" parseRolesForAssign(argMultimap.getAllValues(PREFIX_ROLE)).ifPresent(assignPersonDescriptor::setRole);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" System.out.println(assignPersonDescriptor.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" if (!assignPersonDescriptor.isAnyFieldNotEdited()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" throw new ParseException(AssignCommand.MESSAGE_NOT_ASSIGNED);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alphajae11"},"content":" return new AssignCommand(index, assignPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e} if {@code roles} is non-empty.","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" * If {@code roles} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" * {@code Set\u003cRole\u003e} containing zero roles.","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" private Optional\u003cSet\u003cRole\u003e\u003e parseRolesForAssign(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" assert roles !\u003d null;","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"alphajae11"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" Collection\u003cString\u003e roleSet \u003d roles.size() \u003d\u003d 1 \u0026\u0026 roles.contains(\"\") ? Collections.emptySet() : roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" return Optional.of(ParserUtil.parseRoles(roleSet));","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":9,"alphajae11":59,"Fidget-Spinner":2}},{"path":"src/main/java/seedu/address/logic/parser/ChargeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommandParser.java. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.ChargeCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"public class ChargeCommandParser implements Parser\u003cChargeCommand\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" public ChargeCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_AMOUNT, PREFIX_CCA, PREFIX_ROLE);","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getValue(PREFIX_AMOUNT).isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ChargeCommand.MESSAGE_NO_AMOUNT)","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getValue(PREFIX_CCA).isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_NOT_FILTER_CCA)","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e ccas \u003d new HashSet\u003c\u003e(ParserUtil.parseCcas(argumentMultimap.getAllValues(PREFIX_CCA)));","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" Optional\u003cSet\u003cRole\u003e\u003e roles \u003d argumentMultimap.getAllValues(PREFIX_ROLE).isEmpty()","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" ? Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" : Optional.of(new HashSet\u003c\u003e(ParserUtil.parseRoles(argumentMultimap.getAllValues(PREFIX_ROLE))));","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(ccas, roles);","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" return new ChargeCommand(new Amount(argumentMultimap.getValue(PREFIX_AMOUNT).get()), predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"Fidget-Spinner":59}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" public static final Prefix PREFIX_CCA \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" public static final Prefix PREFIX_AMOUNT \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" public static final Prefix PREFIX_ATTENDANCE \u003d new Prefix(\"att/\");","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" public static final Prefix PREFIX_SESSIONS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":" public static final Prefix PREFIX_METADATA \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"JuliaPoo":1,"chuahjiajie":2,"alphajae11":2,"-":13,"LifHoshi":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCcaCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommandParser.java. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.DeleteCcaCommand;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"public class DeleteCcaCommandParser implements Parser\u003cDeleteCcaCommand\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" public DeleteCcaCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_CCA);","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getValue(PREFIX_CCA).isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCcaCommand.MESSAGE_NO_CCA)","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getAllValues(PREFIX_CCA).size() \u003e 1) {","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, \"Cannot delete more than one CCA.\"","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" )","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e ccas \u003d new HashSet\u003c\u003e(ParserUtil.parseCcas(argumentMultimap.getAllValues(PREFIX_CCA)));","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(ccas, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" return new DeleteCcaCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"Fidget-Spinner":53}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_ROLE,","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" PREFIX_CCA, PREFIX_METADATA);","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" parseRolesForEdit(argMultimap.getAllValues(PREFIX_ROLE)).ifPresent(editPersonDescriptor::setRoles);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" parseCcasForEdit(argMultimap.getAllValues(PREFIX_CCA)).ifPresent(editPersonDescriptor::setCcas);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"alphajae11"},"content":" if (argMultimap.getValue(PREFIX_METADATA).isPresent()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" editPersonDescriptor.setMetadata(ParserUtil.parseMetadata(argMultimap.getValue(PREFIX_METADATA).get()));","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003croles\u003e} if {@code roles} is non-empty.","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":" * If {@code roles} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" * {@code Set\u003cRole\u003e} containing zero roles.","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" private Optional\u003cSet\u003cRole\u003e\u003e parseRolesForEdit(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" assert roles !\u003d null;","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" Collection\u003cString\u003e roleSet \u003d roles.size() \u003d\u003d 1 \u0026\u0026 roles.contains(\"\") ? Collections.emptySet() : roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" return Optional.of(ParserUtil.parseRoles(roleSet));","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" * Parses {@code Collection\u003cString\u003e CCAs} into a {@code Set\u003cCCA\u003e} if {@code CCAs} is non-empty.","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" * If {@code CCAs} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" * {@code Set\u003cCCA\u003e} containing zero roles.","lastModifiedDate":"2024-03-29"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" private Optional\u003cSet\u003cCca\u003e\u003e parseCcasForEdit(Collection\u003cString\u003e ccas) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":" assert ccas !\u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":" if (ccas.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" Collection\u003cString\u003e ccaSet \u003d ccas.size() \u003d\u003d 1 \u0026\u0026 ccas.contains(\"\") ? Collections.emptySet() : ccas;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" return Optional.of(ParserUtil.parseCcas(ccaSet));","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"JuliaPoo":13,"chuahjiajie":16,"alphajae11":5,"-":74}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommandParser.java. All credits and thanks to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" ArgumentMultimap argumentMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_CCA, PREFIX_ROLE);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" if (argumentMultimap.getValue(PREFIX_CCA).isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_NOT_FILTER_CCA)","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e ccas \u003d new HashSet\u003c\u003e(ParserUtil.parseCcas(argumentMultimap.getAllValues(PREFIX_CCA)));","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" Optional\u003cSet\u003cRole\u003e\u003e roles \u003d argumentMultimap.getAllValues(PREFIX_ROLE).isEmpty()","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" ? Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" : Optional.of(new HashSet\u003c\u003e(ParserUtil.parseRoles(argumentMultimap.getAllValues(PREFIX_ROLE))));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(ccas, roles);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" return new FilterCommand(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Fidget-Spinner":52}},{"path":"src/main/java/seedu/address/logic/parser/OweCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Some of the code is inspired by the AddCommandParser.java. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.OweCommand;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" * Parses input arguments and creates a new OweCommand object","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" **/","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"public class OweCommandParser implements Parser\u003cOweCommand\u003e {","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" * Parses the given {@code String} of arguments in the context of the OweCommand","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" * and returns an OweCommand object for execution.","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" public OweCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" args \u003d args.toLowerCase();","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_AMOUNT);","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" Index index;","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, OweCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" if (argMultimap.getValue(PREFIX_AMOUNT).isEmpty()) {","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" throw new ParseException(OweCommand.MESSAGE_NOT_OWE);","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d ParserUtil.parseAmount(argMultimap.getValue(PREFIX_AMOUNT).get());","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" return new OweCommand(index, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":44}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" * Parses a {@code String roles} into a {@code Role}.","lastModifiedDate":"2024-03-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"JuliaPoo"},"content":" * @throws ParseException if the given {@code roles} is invalid.","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" if (!Role.isValidRoleName(trimmedRole)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"chuahjiajie"},"content":" * Parses a {@code String CCA} into a {@code CCA}.","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"chuahjiajie"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"chuahjiajie"},"content":" * @throws ParseException if the given {@code CCA} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"chuahjiajie"},"content":" public static Cca parseCca(String ccaString) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(ccaString);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"chuahjiajie"},"content":" String trimmedCca \u003d ccaString.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"chuahjiajie"},"content":" if (!Cca.isValidCcaName(trimmedCca)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(Cca.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"chuahjiajie"},"content":" return new Cca(trimmedCca);","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e}.","lastModifiedDate":"2024-03-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" public static Set\u003cRole\u003e parseRoles(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" final Set\u003cRole\u003e roleSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":" for (String roleName : roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" roleSet.add(parseRole(roleName));","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":142,"author":{"gitId":"JuliaPoo"},"content":" return roleSet;","lastModifiedDate":"2024-03-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":146,"author":{"gitId":"LifHoshi"},"content":" * Parses a {@code String amount} into a {@code Amount}.","lastModifiedDate":"2024-03-31"},{"lineNumber":147,"author":{"gitId":"LifHoshi"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-31"},{"lineNumber":148,"author":{"gitId":"LifHoshi"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":149,"author":{"gitId":"LifHoshi"},"content":" * @throws ParseException if the given {@code amount} is invalid.","lastModifiedDate":"2024-03-31"},{"lineNumber":150,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":151,"author":{"gitId":"LifHoshi"},"content":" public static Amount parseAmount(String amount) throws ParseException {","lastModifiedDate":"2024-03-31"},{"lineNumber":152,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"LifHoshi"},"content":" String trimmedAmount \u003d amount.trim();","lastModifiedDate":"2024-03-31"},{"lineNumber":154,"author":{"gitId":"LifHoshi"},"content":" if (!Amount.isValidAmount(trimmedAmount)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":155,"author":{"gitId":"LifHoshi"},"content":" throw new ParseException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":156,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":157,"author":{"gitId":"LifHoshi"},"content":" return new Amount(trimmedAmount);","lastModifiedDate":"2024-03-31"},{"lineNumber":158,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":159,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":160,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":" * Parses {@code Collection\u003cString\u003e CCAs} into a {@code Set\u003cCCA\u003e}.","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":" public static Set\u003cCca\u003e parseCcas(Collection\u003cString\u003e ccas) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":" final Set\u003cCca\u003e ccaSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":" for (String ccaName : ccas) {","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" ccaSet.add(parseCca(ccaName));","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":" return ccaSet;","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" * Parses a {@code String attendance} into an {@code attendance}.","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":" * @throws ParseException if the given {@code attendance} is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"chuahjiajie"},"content":" public static Attendance parseAtt(String attendance) throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":180,"author":{"gitId":"chuahjiajie"},"content":" String trimmedAtt \u003d attendance.trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"chuahjiajie"},"content":" if (!Attendance.isValidAttendance(trimmedAtt)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":182,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(Attendance.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"chuahjiajie"},"content":" return new Attendance(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":185,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chuahjiajie"},"content":" * Parses a {@code String sessions} into an {@code sessions}.","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"chuahjiajie"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":191,"author":{"gitId":"chuahjiajie"},"content":" * @throws ParseException if the given {@code sessions} is invalid.","lastModifiedDate":"2024-04-05"},{"lineNumber":192,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":193,"author":{"gitId":"chuahjiajie"},"content":" public static Sessions parseSess(String sessions) throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":194,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":195,"author":{"gitId":"chuahjiajie"},"content":" String trimmedSess \u003d sessions.trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":196,"author":{"gitId":"chuahjiajie"},"content":" if (!Sessions.isValidSessions(trimmedSess)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":197,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(Sessions.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":198,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":199,"author":{"gitId":"chuahjiajie"},"content":" return new Sessions(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":200,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":201,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":202,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":203,"author":{"gitId":"chuahjiajie"},"content":" * Parses a {@code String sessions} into an {@code sessions}.","lastModifiedDate":"2024-04-05"},{"lineNumber":204,"author":{"gitId":"chuahjiajie"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-05"},{"lineNumber":205,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":206,"author":{"gitId":"alphajae11"},"content":" * Parses {@code Metadata metadata} into a {@code Metadata}.","lastModifiedDate":"2024-04-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":208,"author":{"gitId":"alphajae11"},"content":" public static Metadata parseMetadata(String metadata) throws ParseException {","lastModifiedDate":"2024-04-04"},{"lineNumber":209,"author":{"gitId":"alphajae11"},"content":" requireNonNull(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":210,"author":{"gitId":"alphajae11"},"content":" String trimmedMetadata \u003d metadata.trim();","lastModifiedDate":"2024-04-04"},{"lineNumber":211,"author":{"gitId":"alphajae11"},"content":" if (!Metadata.isValidMetadata(trimmedMetadata)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":212,"author":{"gitId":"alphajae11"},"content":" throw new ParseException(Metadata.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":214,"author":{"gitId":"alphajae11"},"content":" return new Metadata(trimmedMetadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"JuliaPoo":16,"chuahjiajie":62,"alphajae11":10,"-":112,"LifHoshi":16}},{"path":"src/main/java/seedu/address/logic/parser/SetAttCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" * Parses input arguments and creates a new SetAttCommand Object","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttCommandParser implements Parser\u003cSetAttCommand\u003e {","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" * Parses the given {@code String} of arguments in the context of the SetAttCommand","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" * and returns an SetAttCommand object for execution.","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" public SetAttCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(args);","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_ATTENDANCE, PREFIX_SESSIONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_ATTENDANCE, PREFIX_SESSIONS)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SetAttCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" Index index;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" try {","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SetAttCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_ATTENDANCE, PREFIX_SESSIONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor setAttDescriptor \u003d new SetAttCommand.SetAttDescriptor();","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" setAttDescriptor.setAtt(ParserUtil.parseAtt(argMultimap.getValue(PREFIX_ATTENDANCE).get()));","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" setAttDescriptor.setSess(ParserUtil.parseSess(argMultimap.getValue(PREFIX_SESSIONS).get()));","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" int attendanceInt \u003d setAttDescriptor.getAtt().get().getValue();","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" int sessionsInt \u003d setAttDescriptor.getSess().get().getValue();","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" if (attendanceInt \u003e sessionsInt) {","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" throw new ParseException(SetAttCommand.MESSAGE_ATT_TOO_LARGE);","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" return new SetAttCommand(index, setAttDescriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":61}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.UniqueCcaList;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" private final UniqueCcaList ccas;","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" ccas \u003d new UniqueCcaList();","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" List\u003cPerson\u003e newPersons \u003d persons","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" .map(p -\u003e p.replaceCca(ccas.getUniqueCcas(p.getCcas())))","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" this.persons.setPersons(newPersons);","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" public void setCcas(List\u003cCca\u003e ccas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" this.ccas.setCcas(ccas);","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" setCcas(newData.getCcaList());","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" public boolean hasPerson(Person p) {","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(p);","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" return persons.contains(p);","lastModifiedDate":"2024-03-31"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if a cca with the same name as {@code cca} exists in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":" public boolean hasCca(Cca c) {","lastModifiedDate":"2024-03-31"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(c);","lastModifiedDate":"2024-03-31"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" return ccas.contains(c);","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" Person newPerson \u003d p","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" .replaceCca(ccas.getUniqueCcas(p.getCcas()));","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" persons.add(newPerson);","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":" * Adds a cca to the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":" * The cca must not already exist in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"JuliaPoo"},"content":" public void addCca(Cca c) {","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":" ccas.add(c);","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"Fidget-Spinner"},"content":" * Removes a cca to the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"Fidget-Spinner"},"content":" * The cca must not already exist in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"Fidget-Spinner"},"content":" public void removeCca(Cca c) {","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"Fidget-Spinner"},"content":" ccas.remove(c);","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"JuliaPoo"},"content":" Person newEditedPerson \u003d editedPerson","lastModifiedDate":"2024-03-31"},{"lineNumber":125,"author":{"gitId":"JuliaPoo"},"content":" .replaceCca(ccas.getUniqueCcas(editedPerson.getCcas()));","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":" persons.setPerson(target, newEditedPerson);","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":149,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":150,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getCcaList() {","lastModifiedDate":"2024-03-31"},{"lineNumber":151,"author":{"gitId":"JuliaPoo"},"content":" return ccas.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-31"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":43,"-":122,"Fidget-Spinner":8}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" * Deletes the given cca.","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" * The cca must exist in the address book.","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":" void deleteCca(Cca cca);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" /** Returns an unmodifable view of the filtered Cca list */","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cCca\u003e getFilteredCcaList();","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" * Updates the filter of the filtered cca list to filter by the given {@code predicate}.","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":" void updateFilteredCcaList(Predicate\u003cCca\u003e predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"JuliaPoo":10,"-":87,"Fidget-Spinner":6}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" private final FilteredList\u003cCca\u003e filteredCcas;","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" // Display all CCAs and Persons on startup.","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" filteredCcas \u003d new FilteredList\u003c\u003e(this.addressBook.getCcaList());","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":114,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"Fidget-Spinner"},"content":" public void deleteCca(Cca target) {","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"Fidget-Spinner"},"content":" addressBook.removeCca(target);","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":" * Returns an unmodifiable view of the list of {@code Cca} backed by the internal list of","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"JuliaPoo"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getFilteredCcaList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":" return filteredCcas;","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":144,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"JuliaPoo"},"content":" public void updateFilteredCcaList(Predicate\u003cCca\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"JuliaPoo"},"content":" filteredCcas.setPredicate(predicate);","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":171,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" return String.format(\"%s, %s, %s\", this.addressBook, this.userPrefs, this.filteredPersons);","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":19,"chuahjiajie":4,"-":147,"Fidget-Spinner":5}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" * Returns an unmodifiable view of the cca list.","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" * This list will not contain any duplicate cca.","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cCca\u003e getCcaList();","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":7,"-":17}},{"path":"src/main/java/seedu/address/model/amount/Amount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.model.amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import java.math.BigDecimal;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":" * Represents an Amount in the address book.","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":" * is valid as declared in {@link #isValidAmount(String)}","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"public class Amount {","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Amount should only contain correct numbers \"","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" + \"with no more than 2 decimal places\\n\"","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" + \"and it should not be blank or negative\";","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" public static final String MESSAGE_NUMBER_CONSTRAINTS \u003d \"Amount should not be negative\";","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" private static final String AMOUNT_VALIDATION_REGEX \u003d \"(?!0\\\\d)\\\\d+(\\\\.\\\\d{1,2})?\";","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" public final BigDecimal value;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" * Constructs a {@code Amount}.","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" * @param amount A valid amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" public Amount(String amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" requireNonNull(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" checkArgument(isValidAmount(amount), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" this.value \u003d new BigDecimal(amount);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" private Amount(BigDecimal value) {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" this.value \u003d value;","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" * Returns true if a given string is a valid amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" public static boolean isValidAmount(String test) {","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" boolean isValidAmount \u003d test.matches(AMOUNT_VALIDATION_REGEX);","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" return isValidAmount;","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" * Returns true if a given string is a negative amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" public static boolean isNegativeAmount(String test) {","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" boolean isNegativeAmount \u003d new BigDecimal(test).compareTo(new BigDecimal(0)) \u003c 0;","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" return isNegativeAmount;","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" * Returns a new Amount object with the given amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" public static Amount setAmount(String amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" return new Amount(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" public String toString() {","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" return value.toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":" || (other instanceof Amount // instanceof handles nulls","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" \u0026\u0026 value.equals(((Amount) other).value)); // state check","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" return value.hashCode();","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":" public int compareTo(Amount other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" return this.value.compareTo(other.value);","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" * Returns a new amount by deducting current amount with another amount.","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" * @param other The other amount to deduct by","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" * @return A new amount.","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" public Amount deduct(Amount other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" return new Amount(this.value.add(other.value));","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":69,"Fidget-Spinner":21}},{"path":"src/main/java/seedu/address/model/attendance/Attendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" * Represents an Attendance in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" * Guarantees: immutable; attendance is valid as declared in {@link #isValidAttendance(String)}","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"public class Attendance {","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Attendance should be a non-negative integer\";","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_LESS_THAN_CONSTRAINT \u003d \"Attendance should be less than sessions\";","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" public final String value;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" * Constructs a {@code Attendance}.","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" * @param attendance A valid attendance number.","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" public Attendance(String attendance) {","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" checkArgument(isValidAttendance(attendance), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" this.value \u003d attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" public int getValue() {","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" return Integer.parseInt(value);","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" * Returns true if a given string is a valid attendance number.","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" public static boolean isValidAttendance(String test) {","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" return true;","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" if (!(other instanceof Attendance)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" return false;","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" Attendance otherAtt \u003d (Attendance) other;","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" return value.equals(otherAtt.value);","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" return value;","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" public int hashCode() {","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" return value.hashCode();","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":66}},{"path":"src/main/java/seedu/address/model/attendance/Sessions.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" * Represents an Sessions in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" * Guarantees: immutable; attendance is valid as declared in {@link #isValidSessions(String)}","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"public class Sessions {","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Sessions should be a non-negative integer\";","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" public final String value;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" * Constructs a {@code Sessions}.","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" * @param sessions A valid session number.","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" public Sessions(String sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" checkArgument(isValidSessions(sessions), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" this.value \u003d sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" public int getValue() {","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" return Integer.parseInt(value);","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" * Returns true if a given string is a valid session number.","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" public static boolean isValidSessions(String test) {","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" return true;","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" if (!(other instanceof Sessions)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" return false;","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" Sessions otherSess \u003d (Sessions) other;","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" return value.equals(otherSess.value);","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" return value;","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" public int hashCode() {","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" return value.hashCode();","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":66}},{"path":"src/main/java/seedu/address/model/cca/Cca.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.model.cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" * Represents a CCA in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidCCAName(String)}","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"public class Cca {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"CCA names should be alphanumeric (but can include \"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" + \"whitespace)\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}\\\\s]+\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" public final String ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" * Constructs a {@code Cca}.","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" * @param CCAName A valid CCA name.","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" public Cca(String ccaName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" requireNonNull(ccaName);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" checkArgument(isValidCcaName(ccaName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" this.ccaName \u003d ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if a given string is a valid Cca name.","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" public static boolean isValidCcaName(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" * Checks if other is the same Cca by checking only the name.","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" * @param other","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" * @return","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" public boolean isSameCcaName(Cca other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(other);","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" return true;","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" return ccaName.equals(other.ccaName);","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" if (!(other instanceof Cca)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" Cca otherCca \u003d (Cca) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" return ccaName.equals(otherCca.ccaName);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" * hashCode() should ONLY hash ccaName!","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"chuahjiajie"},"content":" return ccaName.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"chuahjiajie"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"chuahjiajie"},"content":" return \"[CCA: \" + ccaName + \u0027]\u0027;","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":22,"chuahjiajie":58}},{"path":"src/main/java/seedu/address/model/person/CcaContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" * Tests that a {@code Person}\u0027s {@code Cca} matches any of the keywords given.","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"public class CcaContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":" private final Set\u003cCca\u003e ccas;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":" private final Optional\u003cSet\u003cRole\u003e\u003e roles;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" * Returns a CcaContainsKeywordsPredicate object by taking a list of the Cca names.","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" public CcaContainsKeywordPredicate(Set\u003cCca\u003e keywords, Optional\u003cSet\u003cRole\u003e\u003e roles) {","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" this.ccas \u003d keywords;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" this.roles \u003d roles;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean contains(Cca cca) {","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" return ccas.contains(cca);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e personCcas \u003d person.getCcas();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cRole\u003e personRoles \u003d person.getRoles();","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" boolean matchesCCa \u003d ccas.stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" .anyMatch(personCcas::contains);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" boolean matchesRole \u003d this.roles","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" .map(realRoles -\u003e realRoles.stream().anyMatch(personRoles::contains))","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" .orElse(true);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" return matchesCCa \u0026\u0026 matchesRole;","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" if (!(other instanceof CcaContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate otherNameContainsKeywordsPredicate \u003d (CcaContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":" return ccas.equals(otherNameContainsKeywordsPredicate.ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" \u0026\u0026 roles.equals(otherNameContainsKeywordsPredicate.roles);","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":" .add(\"ccas\", ccas)","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" .toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"JuliaPoo":2,"Fidget-Spinner":65}},{"path":"src/main/java/seedu/address/model/person/Metadata.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alphajae11"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":" * Represents a Person\u0027s meta-data in the CCA Manager","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMetadata(String)}","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"public class Metadata {","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":" \"Meta-data should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":" /*","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":" * A valid metadata is any string that does not contain a `/`.","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":" public static final String VALIDATION_REGEX \u003d \"[^/]+\";","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" public final String metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" * Constructs a {@code Metadata}.","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" * @param metadata A valid metadata.","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":" public Metadata(String metadata) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":" requireNonNull(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" checkArgument(isValidMetadata(metadata), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":" public static boolean isValidMetadata(String test) {","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" public String toString() {","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" return metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" return true;","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" if (!(other instanceof Metadata)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"alphajae11"},"content":" return false;","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"alphajae11"},"content":" Metadata otherMetadata \u003d (Metadata) other;","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" return metadata.equals(otherMetadata.metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"alphajae11"},"content":" public int hashCode() {","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"alphajae11"},"content":" return metadata.hashCode();","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"alphajae11":61}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" private final Set\u003cRole\u003e roles \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" private final Set\u003cCca\u003e ccas \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" private final Amount amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" private final Attendance attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" private final Sessions sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" private final Metadata metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cRole\u003e roles, Set\u003cCca\u003e ccas, Amount amount,","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" Attendance attendance, Sessions sessions, Metadata metadata) {","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" requireAllNonNull(name, phone, email, address, roles, ccas, amount, attendance, sessions, metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" this.ccas.addAll(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" this.amount \u003d amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" this.sessions \u003d sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" * Replaces {@code Person.ccas} with another {@code Set\u003cCca\u003e}","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" * by creating another Person with the new {@code Set\u003cCca\u003e}.","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" * This is used in AddressBook to replace {@code Person.ccas}","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" * with objects in AddressBook.ccas.","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" * @return new person","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" public Person replaceCca(Set\u003cCca\u003e newCcas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" return new Person(name, phone, email, address, roles, newCcas, amount, attendance, sessions, metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":" * Returns an immutable role set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" public Set\u003cRole\u003e getRoles() {","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" return Collections.unmodifiableSet(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" * Returns an immutable CCA set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" public Set\u003cCca\u003e getCcas() {","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" return Collections.unmodifiableSet(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"LifHoshi"},"content":" * Returns the amount owed by the person.","lastModifiedDate":"2024-03-31"},{"lineNumber":103,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"LifHoshi"},"content":" public Amount getAmount() {","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"LifHoshi"},"content":" return amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":108,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"alphajae11"},"content":" * Returns the Metadata of the person.","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"alphajae11"},"content":" public Metadata getMetadata() {","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"alphajae11"},"content":" return metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":116,"author":{"gitId":"LifHoshi"},"content":" * Returns a new Person object with the amount set to the given amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":117,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" public Amount setAmount(Amount amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"LifHoshi"},"content":" return amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":120,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":121,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":122,"author":{"gitId":"chuahjiajie"},"content":" public Attendance getAtt() {","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"chuahjiajie"},"content":" return attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":124,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":125,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":126,"author":{"gitId":"chuahjiajie"},"content":" public Sessions getSess() {","lastModifiedDate":"2024-04-05"},{"lineNumber":127,"author":{"gitId":"chuahjiajie"},"content":" return sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"JuliaPoo"},"content":" \u0026\u0026 roles.equals(otherPerson.roles)","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"LifHoshi"},"content":" \u0026\u0026 ccas.equals(otherPerson.ccas)","lastModifiedDate":"2024-03-31"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 otherPerson.getAmount().equals(getAmount())","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 attendance.equals(otherPerson.attendance)","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 sessions.equals(otherPerson.sessions)","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" \u0026\u0026 metadata.equals(otherPerson.metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" return Objects.hash(name, phone, email, address, roles, ccas, amount, attendance, sessions, metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"JuliaPoo"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"chuahjiajie"},"content":" .add(\"CCAs\", ccas)","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"LifHoshi"},"content":" .add(\"amount\", amount)","lastModifiedDate":"2024-03-31"},{"lineNumber":187,"author":{"gitId":"chuahjiajie"},"content":" .add(\"attendance\", attendance)","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chuahjiajie"},"content":" .add(\"sessions\", sessions)","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"alphajae11"},"content":" .add(\"metadata\", metadata)","lastModifiedDate":"2024-04-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"JuliaPoo":16,"chuahjiajie":36,"alphajae11":10,"-":112,"LifHoshi":19}},{"path":"src/main/java/seedu/address/model/person/UniqueCcaList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":" * This file is copied and modified from UniquePersonList.java","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import java.util.List;","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.exceptions.CcaNotFoundException;","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.exceptions.DuplicateCcaException;","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" * A list of ccas that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" * A cca is considered unique by comparing using {@code Cca#isSameCca(Cca)}. As such, adding and updating of","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" * ccas uses Cca#isSameCca(Cca) for equality so as to ensure that the cca being added or updated is","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" * unique in terms of identity in the UniqueCcaList. However, the removal of a cca uses Person#equals(Object) so","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" * as to ensure that the cca with exactly the same fields will be removed.","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" * @see Cca#isSameCcaName(Cca)","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":"public class UniqueCcaList implements Iterable\u003cCca\u003e {","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" private final ObservableList\u003cCca\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" private final ObservableList\u003cCca\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" * Gets the corresponding Cca in this.","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" * @param ccaName","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" * @return cca in list","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" public Cca getUniqueCca(String ccaName) {","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(ccaName);","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" return internalList","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" // Find cca in list.","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" .filter(c -\u003e c.ccaName.equals(ccaName))","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" .findFirst()","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":" // If it doesn\u0027t exist, create a new one.","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":" .orElseGet(() -\u003e {","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" Cca newCca \u003d new Cca(ccaName);","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":" internalList.add(newCca);","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" return newCca;","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" });","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" public Set\u003cCca\u003e getUniqueCcas(Set\u003cCca\u003e currentCcas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" return currentCcas","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" .map(c -\u003e this.getUniqueCca(c.ccaName))","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toCollection(HashSet::new));","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if the list contains an equivalent cca as the given argument.","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" public boolean contains(Cca toCheck) {","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":" return internalList.stream().anyMatch(toCheck::isSameCcaName);","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":" * Adds a cca to the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" * The cca must not already exist in the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" public void add(Cca toAdd) {","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":" throw new DuplicateCcaException();","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-31"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" * Replaces the cca {@code target} in the list with {@code editedCca}.","lastModifiedDate":"2024-03-31"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" * The cca name of {@code editedCca} must not be the same as another existing Cca in the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" public void setCca(Cca target, Cca editedCca) {","lastModifiedDate":"2024-03-31"},{"lineNumber":92,"author":{"gitId":"JuliaPoo"},"content":" requireAllNonNull(target, editedCca);","lastModifiedDate":"2024-03-31"},{"lineNumber":93,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":94,"author":{"gitId":"JuliaPoo"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-31"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-31"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" throw new CcaNotFoundException();","lastModifiedDate":"2024-03-31"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" if (!target.isSameCcaName(editedCca) \u0026\u0026 contains(editedCca)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" throw new DuplicateCcaException();","lastModifiedDate":"2024-03-31"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":103,"author":{"gitId":"JuliaPoo"},"content":" internalList.set(index, editedCca);","lastModifiedDate":"2024-03-31"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":105,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":107,"author":{"gitId":"JuliaPoo"},"content":" * Removes the equivalent cca from the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":" * The cca must exist in the list.","lastModifiedDate":"2024-03-31"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" public void remove(Cca toRemove) {","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" throw new CcaNotFoundException();","lastModifiedDate":"2024-03-31"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":116,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":117,"author":{"gitId":"JuliaPoo"},"content":" public void setCcas(UniqueCcaList replacement) {","lastModifiedDate":"2024-03-31"},{"lineNumber":118,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"JuliaPoo"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-31"},{"lineNumber":120,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":121,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":122,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":123,"author":{"gitId":"JuliaPoo"},"content":" * Replaces the contents of this list with {@code ccas}.","lastModifiedDate":"2024-03-31"},{"lineNumber":124,"author":{"gitId":"JuliaPoo"},"content":" * {@code ccas} must not contain duplicate ccas.","lastModifiedDate":"2024-03-31"},{"lineNumber":125,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":" public void setCcas(List\u003cCca\u003e ccas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"JuliaPoo"},"content":" requireAllNonNull(ccas);","lastModifiedDate":"2024-03-31"},{"lineNumber":128,"author":{"gitId":"JuliaPoo"},"content":" if (!ccasAreUnique(ccas)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"JuliaPoo"},"content":" throw new DuplicateCcaException();","lastModifiedDate":"2024-03-31"},{"lineNumber":130,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":131,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":132,"author":{"gitId":"JuliaPoo"},"content":" internalList.setAll(ccas);","lastModifiedDate":"2024-03-31"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":135,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-31"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-31"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-31"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":141,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":142,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":143,"author":{"gitId":"JuliaPoo"},"content":" public Iterator\u003cCca\u003e iterator() {","lastModifiedDate":"2024-03-31"},{"lineNumber":144,"author":{"gitId":"JuliaPoo"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-31"},{"lineNumber":145,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":146,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":147,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":148,"author":{"gitId":"JuliaPoo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-31"},{"lineNumber":149,"author":{"gitId":"JuliaPoo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-31"},{"lineNumber":150,"author":{"gitId":"JuliaPoo"},"content":" return true;","lastModifiedDate":"2024-03-31"},{"lineNumber":151,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-31"},{"lineNumber":154,"author":{"gitId":"JuliaPoo"},"content":" if (!(other instanceof UniqueCcaList)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":155,"author":{"gitId":"JuliaPoo"},"content":" return false;","lastModifiedDate":"2024-03-31"},{"lineNumber":156,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":157,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":158,"author":{"gitId":"JuliaPoo"},"content":" UniqueCcaList otherUniqueCcaList \u003d (UniqueCcaList) other;","lastModifiedDate":"2024-03-31"},{"lineNumber":159,"author":{"gitId":"JuliaPoo"},"content":" return internalList.equals(otherUniqueCcaList.internalList);","lastModifiedDate":"2024-03-31"},{"lineNumber":160,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":161,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":162,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":163,"author":{"gitId":"JuliaPoo"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-31"},{"lineNumber":164,"author":{"gitId":"JuliaPoo"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-31"},{"lineNumber":165,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":166,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":167,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":168,"author":{"gitId":"JuliaPoo"},"content":" public String toString() {","lastModifiedDate":"2024-03-31"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-31"},{"lineNumber":170,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":172,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":173,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if {@code ccas} contains only unique ccas.","lastModifiedDate":"2024-03-31"},{"lineNumber":174,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":175,"author":{"gitId":"JuliaPoo"},"content":" private boolean ccasAreUnique(List\u003cCca\u003e ccas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":176,"author":{"gitId":"JuliaPoo"},"content":" for (int i \u003d 0; i \u003c ccas.size() - 1; i++) {","lastModifiedDate":"2024-03-31"},{"lineNumber":177,"author":{"gitId":"JuliaPoo"},"content":" for (int j \u003d i + 1; j \u003c ccas.size(); j++) {","lastModifiedDate":"2024-03-31"},{"lineNumber":178,"author":{"gitId":"JuliaPoo"},"content":" if (ccas.get(i).isSameCcaName(ccas.get(j))) {","lastModifiedDate":"2024-03-31"},{"lineNumber":179,"author":{"gitId":"JuliaPoo"},"content":" return false;","lastModifiedDate":"2024-03-31"},{"lineNumber":180,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":181,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":182,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":183,"author":{"gitId":"JuliaPoo"},"content":" return true;","lastModifiedDate":"2024-03-31"},{"lineNumber":184,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":185,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"JuliaPoo":185}},{"path":"src/main/java/seedu/address/model/person/exceptions/CcaNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.person.exceptions;","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":" * Signals that the operation is unable to find the specified cca.","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"public class CcaNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"JuliaPoo":6}},{"path":"src/main/java/seedu/address/model/person/exceptions/DuplicateCcaException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.person.exceptions;","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":" * Signals that the operation will result in duplicate Cca (Cca are considered duplicates if they have the same","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":" * ccaName).","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"public class DuplicateCcaException extends RuntimeException {","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":" public DuplicateCcaException() {","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":" super(\"Multiple CCAs of the same name.\");","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"JuliaPoo":11}},{"path":"src/main/java/seedu/address/model/roles/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":" * Represents a Role in the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidRoleName(String)}","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"public class Role {","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Role names should be alphanumeric with whitespace\";","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}\\\\s]+\";","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":" public final String roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" * Constructs a {@code Role}.","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" * @param roleName A valid role name.","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" public Role(String roleName) {","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" requireNonNull(roleName);","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" checkArgument(isValidRoleName(roleName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" * Returns true if a given string is a valid role name.","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" public static boolean isValidRoleName(String test) {","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" Role otherRole \u003d (Role) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" return roleName.equals(otherRole.roleName);","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":" return roleName.hashCode();","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" return \u0027[\u0027 + roleName + \u0027]\u0027;","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":62}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"friends\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I have a sleeping disorder.\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"colleagues\", \"friends\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I have food allergies: Egg and peanuts\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"neighbours\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I like to sleep on the floor.\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"family\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I like to sleep on the floor.\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"classmates\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I have food allergies: Egg and peanuts\")),","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" getRoleSet(\"colleagues\"), getCcaSet(\"NUS Cycling\"), new Amount(\"0.0\"),","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" new Attendance(\"0\"), new Sessions(\"1\"),","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":" new Metadata(\"I like eating grapes.\"))","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" sampleAb.addCca(new Cca(\"NUS Cycling\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" * Returns a role set containing the list of strings given.","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" public static Set\u003cRole\u003e getRoleSet(String... strings) {","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" .map(Role::new)","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"chuahjiajie"},"content":" * Returns a CCA set containing the list of strings given.","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"chuahjiajie"},"content":" public static Set\u003cCca\u003e getCcaSet(String... strings) {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"chuahjiajie"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"chuahjiajie"},"content":" .map(Cca::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"chuahjiajie"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"JuliaPoo":5,"chuahjiajie":17,"alphajae11":13,"-":50,"LifHoshi":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAmount.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import com.fasterxml.jackson.databind.JsonNode;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":" * Jackson-friendly version of {@link Amount}.","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"public class JsonAdaptedAmount {","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Amount\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" private final String value;","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" * Constructs a {@code JsonAdaptedAmount} with the given amount details.","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" @JsonCreator","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" public JsonAdaptedAmount(JsonNode jsonNode) {","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" this.value \u003d jsonNode.get(\"value\").asText();","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" * Converts a given {@code Amount} into this class for Jackson use.","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" public JsonAdaptedAmount(Amount source) {","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" value \u003d source.value.toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" @JsonProperty(\"value\")","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" public String getValue() {","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" return value;","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" * Converts this Jackson-friendly adapted amount object into the model\u0027s","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" * {@code Amount} object.","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" *","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" * @throws IllegalValueException if there were any data constraints violated in","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" * the adapted amount.","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" public Amount toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" if (!Amount.isValidAmount(value)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" throw new IllegalValueException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" return new Amount(value);","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":53,"Fidget-Spinner":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedCCA.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" * Jackson-friendly version of {@link CCA}.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"class JsonAdaptedCca {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" private final String ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" * Constructs a {@code JsonAdaptedCCA} with the given {@code CCAName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" @JsonCreator","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" public JsonAdaptedCca(String ccaName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" this.ccaName \u003d ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" * Converts a given {@code CCA} into this class for Jackson use.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" public JsonAdaptedCca(Cca source) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" ccaName \u003d source.ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" @JsonValue","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" public String getCcaName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" return ccaName;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" * Converts this Jackson-friendly adapted Cca object into the model\u0027s {@code CCA} object.","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted CCA.","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" public Cca toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" if (!Cca.isValidCcaName(ccaName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(Cca.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" return new Cca(ccaName);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":1,"chuahjiajie":47}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" private final String metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" private final List\u003cJsonAdaptedRole\u003e roles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" private final List\u003cJsonAdaptedCca\u003e ccas \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" private final JsonAdaptedAmount amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" private final String attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" private final String sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"roles\") List\u003cJsonAdaptedRole\u003e roles,","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"CCAs\") List\u003cJsonAdaptedCca\u003e ccas,","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"amount\") JsonAdaptedAmount amount,","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"attendance\") String attendance,","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"sessions\") String sessions,","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" @JsonProperty(\"metadata\") String metadata) {","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" if (roles !\u003d null) {","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" if (ccas !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" this.ccas.addAll(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" this.amount \u003d amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"chuahjiajie"},"content":" this.attendance \u003d attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" this.sessions \u003d sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"alphajae11"},"content":" metadata \u003d source.getMetadata().metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"LifHoshi"},"content":" amount \u003d new JsonAdaptedAmount(source.getAmount());","lastModifiedDate":"2024-03-31"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" roles.addAll(source.getRoles().stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"chuahjiajie"},"content":" ccas.addAll(source.getCcas().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"chuahjiajie"},"content":" .map(JsonAdaptedCca::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"chuahjiajie"},"content":" attendance \u003d source.getAtt().value;","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chuahjiajie"},"content":" sessions \u003d source.getSess().value;","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" final List\u003cRole\u003e personRoles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" for (JsonAdaptedRole role : roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" personRoles.add(role.toModelType());","lastModifiedDate":"2024-03-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" final List\u003cCca\u003e personCcas \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" for (JsonAdaptedCca cca : ccas) {","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" personCcas.add(cca.toModelType());","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"LifHoshi"},"content":" if (amount \u003d\u003d null) {","lastModifiedDate":"2024-03-31"},{"lineNumber":140,"author":{"gitId":"LifHoshi"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Amount.class.getSimpleName()));","lastModifiedDate":"2024-03-31"},{"lineNumber":141,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":142,"author":{"gitId":"LifHoshi"},"content":" if (!Amount.isValidAmount(amount.getValue())) {","lastModifiedDate":"2024-03-31"},{"lineNumber":143,"author":{"gitId":"LifHoshi"},"content":" throw new IllegalValueException(Amount.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-31"},{"lineNumber":144,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":145,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":146,"author":{"gitId":"alphajae11"},"content":" if (metadata \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"alphajae11"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-04"},{"lineNumber":148,"author":{"gitId":"alphajae11"},"content":" Metadata.class.getSimpleName()));","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"alphajae11"},"content":" if (!Metadata.isValidMetadata(metadata)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"alphajae11"},"content":" throw new IllegalValueException(Metadata.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"alphajae11"},"content":" final Metadata modelMetadata \u003d new Metadata(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"LifHoshi"},"content":" final Amount modelAmount \u003d amount.toModelType();","lastModifiedDate":"2024-03-31"},{"lineNumber":156,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":" if (attendance \u003d\u003d null) {","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chuahjiajie"},"content":" Attendance.class.getSimpleName()));","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":" if (!Attendance.isValidAttendance(attendance)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(Attendance.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" final Attendance modelAtt \u003d new Attendance(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":" if (sessions \u003d\u003d null) {","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" Sessions.class.getSimpleName()));","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":" if (!Sessions.isValidSessions(sessions)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(Sessions.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" final Sessions modelSess \u003d new Sessions(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":" if (isMoreThanSess(modelAtt, modelSess)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":" throw new IllegalValueException(Attendance.MESSAGE_LESS_THAN_CONSTRAINT);","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-31"},{"lineNumber":179,"author":{"gitId":"JuliaPoo"},"content":" final Set\u003cRole\u003e modelRoles \u003d new HashSet\u003c\u003e(personRoles);","lastModifiedDate":"2024-03-29"},{"lineNumber":180,"author":{"gitId":"chuahjiajie"},"content":" final Set\u003cCca\u003e modelCcas \u003d new HashSet\u003c\u003e(personCcas);","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":182,"author":{"gitId":"chuahjiajie"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRoles, modelCcas, modelAmount,","lastModifiedDate":"2024-04-05"},{"lineNumber":183,"author":{"gitId":"chuahjiajie"},"content":" modelAtt, modelSess, modelMetadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":186,"author":{"gitId":"chuahjiajie"},"content":" public boolean isMoreThanSess(Attendance attendance, Sessions sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"chuahjiajie"},"content":" return attendance.getValue() \u003e sessions.getValue();","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"JuliaPoo":10,"chuahjiajie":51,"alphajae11":14,"-":103,"LifHoshi":11}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedRole.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":" * Jackson-friendly version of {@link Role}.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"class JsonAdaptedRole {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" private final String roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":" * Constructs a {@code JsonAdaptedRole} with the given {@code roleName}.","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" @JsonCreator","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" public JsonAdaptedRole(String roleName) {","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" * Converts a given {@code Role} into this class for Jackson use.","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" public JsonAdaptedRole(Role source) {","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" roleName \u003d source.roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" @JsonValue","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" public String getRoleName() {","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" return roleName;","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" * Converts this Jackson-friendly adapted rolex object into the model\u0027s {@code Role} object.","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted role.","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" public Role toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" if (!Role.isValidRoleName(roleName)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" return new Role(roleName);","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":48}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" public static final String MESSAGE_DUPLICATE_CCA \u003d \"Cca list contains duplicate cca(s).\";","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" private final List\u003cJsonAdaptedCca\u003e ccas \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" public JsonSerializableAddressBook(","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" @JsonProperty(\"ccas\") List\u003cJsonAdaptedCca\u003e ccas,","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" @JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" // The database can have an \"ccas\" field of length 0.","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" if (ccas !\u003d null) {","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" this.ccas.addAll(ccas);","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" ccas.addAll(source.getCcaList().stream().map(JsonAdaptedCca::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" for (JsonAdaptedCca jsonAdaptedCca : ccas) {","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" Cca cca \u003d jsonAdaptedCca.toModelType();","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" if (addressBook.hasCca(cca)) {","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CCA);","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" addressBook.addCca(cca);","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"JuliaPoo":18,"-":59}},{"path":"src/main/java/seedu/address/ui/CcaCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.IntStream;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"public class CcaCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" private static final String FXML \u003d \"CcaListCard.fxml\";","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" *","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" public final Cca cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" private HBox cardPane;","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" private Label ccaName;","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" private VBox ccaRoleList;","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" * Creates a {@code CcaCard} with the given {@code Cca} and index to display.","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" public CcaCard(Cca cca, ObservableList\u003cPerson\u003e allPersons) {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" super(FXML);","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" this.cca \u003d cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":" ccaName.setText(cca.ccaName);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" FilteredList\u003cPerson\u003e ccaPersonel \u003d allPersons.filtered(p -\u003e !p","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":" .getCcas()","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" .noneMatch(c -\u003e c.ccaName.equals(cca.ccaName))","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" List\u003cRole\u003e allRoles \u003d ccaPersonel","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":" .flatMap(p -\u003e p.getRoles().stream())","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" .distinct()","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" .sorted((a, b) -\u003e a.roleName.compareTo(b.roleName))","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" allRoles.forEach(r -\u003e ccaRoleList","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" .getChildren()","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" .add(generateRoleUi(r, ccaPersonel))","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" private HBox generateRoleListElementUi(int idx, Person p) {","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" Label pl \u003d new Label();","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" pl.getStyleClass().add(\"ccaRolePersonIndex\");","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":" pl.setText(Integer.valueOf(idx + 1).toString() + \". \");","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" Label nl \u003d new Label();","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":" nl.getStyleClass().add(\"ccaRolePersonName\");","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" nl.setText(p.getName().fullName);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" HBox hb \u003d new HBox();","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" hb.getChildren().add(pl);","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" hb.getChildren().add(nl);","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" return hb;","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" private VBox generateRoleUi(Role r, ObservableList\u003cPerson\u003e ccaPersonel) {","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" VBox rb \u003d new VBox();","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" rb.getStyleClass().add(\"ccaRoleListBox\");","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" // Add the role label","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" Label l \u003d new Label();","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" l.getStyleClass().add(\"ccaRoleName\");","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" l.setText(r.roleName + \":\");","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" rb.getChildren().add(l);","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"JuliaPoo"},"content":" // Get the people satisfying role","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"JuliaPoo"},"content":" List\u003cPerson\u003e rolePersonel \u003d ccaPersonel.filtered(p -\u003e !p","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" .getRoles()","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" .noneMatch(o -\u003e o.roleName.equals(r.roleName))","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" )","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" .sorted((a, b) -\u003e a.getName().fullName.compareTo(b.getName().fullName))","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"JuliaPoo"},"content":" // Create box for rolePersonel list","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" VBox b \u003d new VBox();","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"JuliaPoo"},"content":" b.getStyleClass().add(\"ccaRolePersonList\");","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":" IntStream","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"JuliaPoo"},"content":" .range(0, rolePersonel.size())","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":" .forEach(idx -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" Person p \u003d rolePersonel.get(idx);","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" b.getChildren().add(generateRoleListElementUi(idx, p));","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" rb.getChildren().add(b);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" return rb;","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"JuliaPoo":115}},{"path":"src/main/java/seedu/address/ui/DisplayObjectListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import java.util.List;","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.ListChangeListener;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" * Represents a union type of all displayable classes","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"class DisplayObject {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" // Only one of these fields should be non-empty","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" private final Optional\u003cPerson\u003e person;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" private final Optional\u003cCca\u003e cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" public DisplayObject(Person person) {","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" this.person \u003d Optional.of(person);","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":" this.cca \u003d Optional.empty();","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" public DisplayObject(Cca cca) {","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" this.person \u003d Optional.empty();","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" this.cca \u003d Optional.of(cca);","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" public boolean isPerson() {","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" return this.person.isPresent();","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" public boolean isCca() {","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" return this.cca.isPresent();","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" public Person getPerson() {","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"JuliaPoo"},"content":" return this.person.get();","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" public Cca getCca() {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" return this.cca.get();","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"JuliaPoo"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"JuliaPoo"},"content":"public class DisplayObjectListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"JuliaPoo"},"content":" private static final String FXML \u003d \"DisplayObjectListPanel.fxml\";","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" private ListView\u003cDisplayObject\u003e displayObjectListView;","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" * Creates a {@code DisplayObjectListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"JuliaPoo"},"content":" public DisplayObjectListPanel(","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cPerson\u003e personList,","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cCca\u003e ccaList,","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cPerson\u003e allPersons) {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" super(FXML);","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cDisplayObject\u003e displayObjects \u003d createDisplayObjectList(personList, ccaList)","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" .collect(Collectors.toCollection(FXCollections::observableArrayList));","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"JuliaPoo"},"content":" displayObjectListView.setItems(displayObjects);","lastModifiedDate":"2024-04-04"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" displayObjectListView.setCellFactory(lsitView -\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"JuliaPoo"},"content":" new DisplayObjectListViewCell(allPersons)","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"JuliaPoo"},"content":" // The ObservableList displayObject is no longer automatically","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" // updated on change of personList and ccaList,","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" // so we\u0027d have to do it manually.","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" personList.addListener(new ListChangeListener\u003cPerson\u003e() {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"JuliaPoo"},"content":" public void onChanged(Change\u003c? extends Person\u003e c) {","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" displayObjects.setAll(createDisplayObjectList(personList, ccaList));","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" ccaList.addListener(new ListChangeListener\u003cCca\u003e() {","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"JuliaPoo"},"content":" public void onChanged(Change\u003c? extends Cca\u003e c) {","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"JuliaPoo"},"content":" displayObjects.setAll(createDisplayObjectList(personList, ccaList));","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" private List\u003cDisplayObject\u003e createDisplayObjectList(","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"JuliaPoo"},"content":" ObservableList\u003cPerson\u003e personList, ObservableList\u003cCca\u003e ccaList) {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":" return Stream.concat(","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"JuliaPoo"},"content":" personList","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"JuliaPoo"},"content":" .map(p -\u003e new DisplayObject(p)),","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"JuliaPoo"},"content":" ccaList","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"JuliaPoo"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":" .map(c -\u003e new DisplayObject(c))","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" ).collect(Collectors.toList());","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" * Custom {@code ListCell} that displays the graphics of a","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" * {@code DisplayObject} using a {@code PersonCard} or a {@code CcaCard}.","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"JuliaPoo"},"content":" class DisplayObjectListViewCell extends ListCell\u003cDisplayObject\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"JuliaPoo"},"content":" private final ObservableList\u003cPerson\u003e allPersons;","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"JuliaPoo"},"content":" DisplayObjectListViewCell(ObservableList\u003cPerson\u003e allPersons) {","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"JuliaPoo"},"content":" super();","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"JuliaPoo"},"content":" this.allPersons \u003d allPersons;","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":" protected void updateItem(DisplayObject object, boolean empty) {","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"JuliaPoo"},"content":" super.updateItem(object, empty);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"JuliaPoo"},"content":" if (empty || object \u003d\u003d null) {","lastModifiedDate":"2024-04-04"},{"lineNumber":130,"author":{"gitId":"JuliaPoo"},"content":" setGraphic(null);","lastModifiedDate":"2024-04-04"},{"lineNumber":131,"author":{"gitId":"JuliaPoo"},"content":" setText(null);","lastModifiedDate":"2024-04-04"},{"lineNumber":132,"author":{"gitId":"JuliaPoo"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":133,"author":{"gitId":"JuliaPoo"},"content":" Region card;","lastModifiedDate":"2024-04-04"},{"lineNumber":134,"author":{"gitId":"JuliaPoo"},"content":" if (object.isPerson()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":135,"author":{"gitId":"JuliaPoo"},"content":" card \u003d new PersonCard(object.getPerson(), getIndex() + 1).getRoot();","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"JuliaPoo"},"content":" } else {","lastModifiedDate":"2024-04-04"},{"lineNumber":137,"author":{"gitId":"JuliaPoo"},"content":" card \u003d new CcaCard(object.getCca(), allPersons).getRoot();","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" card.getStyleClass().add((getIndex() % 2 \u003d\u003d 0) ? \"ccaEven\" : \"ccaOdd\");","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":140,"author":{"gitId":"JuliaPoo"},"content":" setGraphic(card);","lastModifiedDate":"2024-04-04"},{"lineNumber":141,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":143,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":144,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"JuliaPoo":144}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" private DisplayObjectListPanel displayObjectListPanel;","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" private StackPane displayObjectListPanelPlaceholder;","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"JuliaPoo"},"content":" displayObjectListPanel \u003d new DisplayObjectListPanel(","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" logic.getFilteredPersonList(),","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"JuliaPoo"},"content":" logic.getFilteredCcaList(),","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"JuliaPoo"},"content":" logic.getAddressBook().getPersonList());","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"JuliaPoo"},"content":" displayObjectListPanelPlaceholder.getChildren().add(displayObjectListPanel.getRoot());","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" public DisplayObjectListPanel getDisplayObjectListPanel() {","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"JuliaPoo"},"content":" return displayObjectListPanel;","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"JuliaPoo":9,"-":190}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" private Label metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" @FXML","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" private FlowPane roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" private FlowPane ccas;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" @FXML","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":" private Label owe;","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" @FXML","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" private Label attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" owe.setText(\"Owe: \" + \"$\" + person.getAmount().value);","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" attendance.setText(\"Attendance: \" + person.getAtt().value + \"/\" + person.getSess());","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"alphajae11"},"content":" metadata.setText(person.getMetadata().metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" person.getRoles().stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" .sorted(Comparator.comparing(role -\u003e role.roleName))","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" .forEach(role -\u003e roles.getChildren().add(new Label(role.roleName)));","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"chuahjiajie"},"content":" person.getCcas().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" .sorted(Comparator.comparing(cca -\u003e cca.ccaName))","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" .forEach(cca -\u003e ccas.getChildren().add(new Label(cca.ccaName)));","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"JuliaPoo":5,"chuahjiajie":7,"alphajae11":3,"-":55,"LifHoshi":4}},{"path":"src/main/resources/view/CcaListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"\u003cHBox id\u003d\"cardPaneCca\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" \u003cLabel fx:id\u003d\"ccaName\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" \u003cLabel id\u003d\"ccaRoleListLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Roles:\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" \u003cVBox fx:id\u003d\"ccaRoleList\" alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"JuliaPoo"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"JuliaPoo":29}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"JuliaPoo"},"content":"#roles {","lastModifiedDate":"2024-03-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"JuliaPoo"},"content":"#roles .label {","lastModifiedDate":"2024-03-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":354,"author":{"gitId":"JuliaPoo"},"content":"#ccas {","lastModifiedDate":"2024-03-22"},{"lineNumber":355,"author":{"gitId":"JuliaPoo"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-22"},{"lineNumber":356,"author":{"gitId":"JuliaPoo"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-22"},{"lineNumber":357,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":358,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":359,"author":{"gitId":"JuliaPoo"},"content":"#ccas .label {","lastModifiedDate":"2024-03-22"},{"lineNumber":360,"author":{"gitId":"JuliaPoo"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-22"},{"lineNumber":361,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-color: #913e68;","lastModifiedDate":"2024-03-22"},{"lineNumber":362,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-22"},{"lineNumber":363,"author":{"gitId":"JuliaPoo"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-22"},{"lineNumber":364,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-22"},{"lineNumber":365,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-22"},{"lineNumber":366,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":367,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":368,"author":{"gitId":"JuliaPoo"},"content":"#ccalabel #rolelabel {","lastModifiedDate":"2024-03-29"},{"lineNumber":369,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-22"},{"lineNumber":370,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":371,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":372,"author":{"gitId":"JuliaPoo"},"content":".ccaRoleListLabel {","lastModifiedDate":"2024-04-04"},{"lineNumber":373,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":374,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 16;","lastModifiedDate":"2024-04-04"},{"lineNumber":375,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":376,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":377,"author":{"gitId":"JuliaPoo"},"content":".ccaRoleList {","lastModifiedDate":"2024-04-04"},{"lineNumber":378,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 0 0 0 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":379,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":380,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":381,"author":{"gitId":"JuliaPoo"},"content":".ccaRoleName {","lastModifiedDate":"2024-04-04"},{"lineNumber":382,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":383,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 14;","lastModifiedDate":"2024-04-04"},{"lineNumber":384,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":385,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":386,"author":{"gitId":"JuliaPoo"},"content":".ccaRolePersonName {","lastModifiedDate":"2024-04-04"},{"lineNumber":387,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-04-04"},{"lineNumber":388,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-04-04"},{"lineNumber":389,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-color: #1d3741;","lastModifiedDate":"2024-04-04"},{"lineNumber":390,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-04-04"},{"lineNumber":391,"author":{"gitId":"JuliaPoo"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-04-04"},{"lineNumber":392,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-04-04"},{"lineNumber":393,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":394,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":395,"author":{"gitId":"JuliaPoo"},"content":".ccaRolePersonIndex {","lastModifiedDate":"2024-04-04"},{"lineNumber":396,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-04-04"},{"lineNumber":397,"author":{"gitId":"JuliaPoo"},"content":" -fx-font-size: 13;","lastModifiedDate":"2024-04-04"},{"lineNumber":398,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":399,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":400,"author":{"gitId":"JuliaPoo"},"content":".ccaRolePersonList {","lastModifiedDate":"2024-04-04"},{"lineNumber":401,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 0 0 0 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":402,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":403,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":404,"author":{"gitId":"JuliaPoo"},"content":".ccaRoleListBox {","lastModifiedDate":"2024-04-04"},{"lineNumber":405,"author":{"gitId":"JuliaPoo"},"content":" -fx-padding: 0 0 10 10;","lastModifiedDate":"2024-04-04"},{"lineNumber":406,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":407,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":408,"author":{"gitId":"JuliaPoo"},"content":".ccaEven {","lastModifiedDate":"2024-04-04"},{"lineNumber":409,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-color: rgb(15, 13, 27);","lastModifiedDate":"2024-04-04"},{"lineNumber":410,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":411,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":412,"author":{"gitId":"JuliaPoo"},"content":".ccaOdd {","lastModifiedDate":"2024-04-04"},{"lineNumber":413,"author":{"gitId":"JuliaPoo"},"content":" -fx-background-color: rgb(33, 28, 62);","lastModifiedDate":"2024-04-04"},{"lineNumber":414,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"JuliaPoo":64,"-":350}},{"path":"src/main/resources/view/DisplayObjectListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":" \u003cListView fx:id\u003d\"displayObjectListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":1,"-":7}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":" title\u003d\"CCA Manager App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"JuliaPoo"},"content":" \u003cVBox fx:id\u003d\"displayObjectList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" \u003cStackPane fx:id\u003d\"displayObjectListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"JuliaPoo":2,"-":57,"Fidget-Spinner":1}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" \u003cFlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"JuliaPoo"},"content":" \u003cLabel fx:id\u003d\"rolelabel\" text\u003d\"Roles: \"/\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"JuliaPoo"},"content":" \u003cFlowPane fx:id\u003d\"roles\"\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" \u003cFlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"JuliaPoo"},"content":" \u003cLabel fx:id\u003d\"ccalabel\" text\u003d\"CCAs: \"/\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" \u003cFlowPane fx:id\u003d\"ccas\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"JuliaPoo"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" \u003cLabel fx:id\u003d\"owe\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$owe\" /\u003e","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" \u003cLabel fx:id\u003d\"attendance\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$attendance\" /\u003e","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" \u003cLabel fx:id\u003d\"metadata\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$metadata\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"JuliaPoo":10,"chuahjiajie":1,"alphajae11":1,"-":35,"LifHoshi":1}},{"path":"src/main/resources/view/StatusBarFooter.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" style\u003d\"-fx-background-color: #E27c39;\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" /\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2016-08-26"}],"authorContributionMap":{"-":11,"LifHoshi":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CCA_DESC_DEFAULT;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.METADATA_DESC_DEFAULT;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"alphajae11"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CCA_DESC_DEFAULT + METADATA_DESC_DEFAULT;","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"JuliaPoo"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRoles().build();","lastModifiedDate":"2024-03-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"JuliaPoo":1,"chuahjiajie":1,"alphajae11":2,"-":173}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":158,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getFilteredCcaList() {","lastModifiedDate":"2024-04-04"},{"lineNumber":159,"author":{"gitId":"JuliaPoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":160,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":161,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":167,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":168,"author":{"gitId":"JuliaPoo"},"content":" public void updateFilteredCcaList(Predicate\u003cCca\u003e predicate) {","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":171,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":172,"author":{"gitId":"Fidget-Spinner"},"content":" @Override","lastModifiedDate":"2024-04-04"},{"lineNumber":173,"author":{"gitId":"Fidget-Spinner"},"content":" public void deleteCca(Cca cca) {","lastModifiedDate":"2024-04-04"},{"lineNumber":174,"author":{"gitId":"Fidget-Spinner"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-04-04"},{"lineNumber":175,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":210,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"JuliaPoo":10,"-":203,"Fidget-Spinner":5}},{"path":"src/test/java/seedu/address/logic/commands/AssignCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HEAD;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"import seedu.address.testutil.AssignPersonDescriptorBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" * Contains integration tests (interaction with the Model) and unit tests for AssignCommand.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":"public class AssignCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" public void execute_assignRole_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" Person assignedPerson \u003d personInList.withRoles(VALID_ROLE_HEAD).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor descriptor \u003d new AssignPersonDescriptorBuilder(VALID_ROLE_HEAD).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" AssignCommand assignCommand \u003d new AssignCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_ASSIGN_PERSON_SUCCESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" Messages.format(assignedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" expectedModel.setPerson(lastPerson, assignedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"alphajae11"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":" AssignCommand.AssignPersonDescriptor descriptor \u003d new AssignPersonDescriptorBuilder(VALID_ROLE_HEAD).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alphajae11"},"content":" AssignCommand assignCommand \u003d new AssignCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"alphajae11"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":1,"alphajae11":55,"Fidget-Spinner":2}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AMOUNT;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"JuliaPoo"},"content":" public static final String VALID_ROLE_HUSBAND \u003d \"husband\";","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" public static final String VALID_ROLE_HEAD \u003d \"Head\";","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" public static final String VALID_ROLE_FRIEND \u003d \"friend\";","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALID_CCA \u003d \"NUS Cycling\";","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" public static final String VALID_AMOUNT \u003d \"10.00\";","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALID_ATTENDANCE \u003d \"1\";","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" public static final String VALID_SESSIONS \u003d \"5\";","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" public static final String VALID_METADATA \u003d \"I like to do leetcode everyday.\";","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" public static final String ROLE_DESC_FRIEND \u003d \" \" + PREFIX_ROLE + VALID_ROLE_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" public static final String ROLE_DESC_HUSBAND \u003d \" \" + PREFIX_ROLE + VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"alphajae11"},"content":" public static final String ROLE_DESC_HEAD \u003d \" \" + PREFIX_ROLE + VALID_ROLE_HEAD;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" public static final String CCA_DESC_DEFAULT \u003d \" \" + PREFIX_CCA + VALID_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" public static final String AMOUNT_DESC_DEFAULT \u003d \" \" + PREFIX_AMOUNT + VALID_AMOUNT;","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" public static final String ATTENDANCE_DESC_DEFAULT \u003d \" \" + PREFIX_ATTENDANCE + VALID_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" public static final String SESSIONS_DESC_DEFAULT \u003d \" \" + PREFIX_SESSIONS + VALID_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"alphajae11"},"content":" public static final String METADATA_DESC_DEFAULT \u003d \" \" + PREFIX_METADATA + VALID_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"JuliaPoo"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \"hubby*\"; // \u0027*\u0027 not allowed in roles","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" public static final String INVALID_AMOUNT_DESC \u003d \" \" + PREFIX_AMOUNT + \"10.00.00\"; // extra decimal point","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"chuahjiajie"},"content":" public static final String INVALID_ATTENDANCE_DESC \u003d \" \" + PREFIX_ATTENDANCE + \"-1\"; // negative integer not allowed","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chuahjiajie"},"content":" public static final String INVALID_SESSIONS_DESC \u003d \" \" + PREFIX_SESSIONS + \"-1\"; // negative integer not allowed","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(VALID_ROLE_FRIEND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(VALID_ROLE_HUSBAND, VALID_ROLE_FRIEND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"JuliaPoo":7,"chuahjiajie":11,"alphajae11":6,"-":119,"LifHoshi":4}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" Person editedPerson \u003d new PersonBuilder().withAmount(\"10.00\").withAtt(\"0\").withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" .build();","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" .withPhone(VALID_PHONE_BOB).withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"JuliaPoo":3,"chuahjiajie":2,"-":180}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"JuliaPoo"},"content":" // different roles -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"JuliaPoo"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", roles\u003d\"","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" + editPersonDescriptor.getRoles().orElse(null) + \", CCAs\u003d\"","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" + editPersonDescriptor.getMetadata().orElse(null) + \", Metadata\u003d\"","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"}\";","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"JuliaPoo":6,"alphajae11":1,"-":66}},{"path":"src/test/java/seedu/address/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCommand.java. All credits and thanks to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" * Contains integration tests (interaction with the Model) for {@code FilterCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"first\")","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e secondPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"second\")","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" new CcaContainsKeywordPredicate(firstPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" new CcaContainsKeywordPredicate(secondPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand findFirstCommand \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand findSecondCommand \u003d new FilterCommand(secondPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand findFirstCommandCopy \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d preparePredicate(\"hi\");","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d preparePredicate(\"NUS Bakes, NUS Cycling\");","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, CARL, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e predicateKeywordsList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"friends\")","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":" predicateKeywordsList,","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand filterCommand \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Fidget-Spinner"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{cca\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Fidget-Spinner"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" * Parses {@code userInput} into a {@code CcaContainsKeywordPredicate}.","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"Fidget-Spinner"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"Fidget-Spinner"},"content":" private CcaContainsKeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"Fidget-Spinner"},"content":" return new CcaContainsKeywordPredicate(Arrays.stream(userInput.split(\",\"))","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Fidget-Spinner"},"content":" .map(String::trim).map(Cca::new).collect(Collectors.toSet()), Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"JuliaPoo":1,"Fidget-Spinner":116}},{"path":"src/test/java/seedu/address/logic/commands/OweCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":"/**","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" * OweCommand.","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":"public class OweCommandTest {","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"10.00\");","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" OweCommand oweCommand \u003d new OweCommand(outOfBoundIndex, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" assertCommandFailure(oweCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" public void equals() {","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"10.00\");","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" final OweCommand standardCommand \u003d new OweCommand(INDEX_FIRST_PERSON, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" OweCommand commandWithSameValues \u003d new OweCommand(INDEX_FIRST_PERSON, amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"LifHoshi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-31"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" assertTrue(!standardCommand.equals(null));","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" assertTrue(!standardCommand.equals(new OweCommand(INDEX_SECOND_PERSON, amount)));","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":55}},{"path":"src/test/java/seedu/address/logic/commands/SetAttCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ATTENDANCE;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SESSIONS;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.testutil.SetAttDescriptorBuilder;","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" * Contains integration tests (interaction with the Model) and unit tests for SetAttCommand.","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttCommandTest {","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" public void execute_assignRole_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" Person setAttPerson \u003d personInList.withAtt(VALID_ATTENDANCE).withSess(VALID_SESSIONS).build();","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor descriptor \u003d new SetAttDescriptorBuilder(VALID_ATTENDANCE, VALID_SESSIONS)","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" .build();","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand setAttCommand \u003d new SetAttCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d String.format(SetAttCommand.MESSAGE_SETATT_PERSON_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" Messages.format(setAttPerson));","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" expectedModel.setPerson(lastPerson, setAttPerson);","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" assertCommandSuccess(setAttCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand.SetAttDescriptor descriptor \u003d new SetAttDescriptorBuilder(VALID_ATTENDANCE, VALID_SESSIONS)","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" .build();","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" SetAttCommand setAttCommand \u003d new SetAttCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" assertCommandFailure(setAttCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":59}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CCA_DESC_DEFAULT;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.METADATA_DESC_DEFAULT;","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_FRIEND).withAmount(\"0.0\").build();","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"alphajae11"},"content":" + ADDRESS_DESC_BOB + ROLE_DESC_FRIEND + CCA_DESC_DEFAULT + METADATA_DESC_DEFAULT,","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"JuliaPoo"},"content":" // multiple roles - all accepted","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" Person expectedPersonMultipleRoles \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_FRIEND, VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" .withAmount(\"0.0\").build();","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"JuliaPoo"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + ROLE_DESC_HUSBAND","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"alphajae11"},"content":" + ROLE_DESC_FRIEND + CCA_DESC_DEFAULT + METADATA_DESC_DEFAULT,","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"JuliaPoo"},"content":" new AddCommand(expectedPersonMultipleRoles));","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"JuliaPoo"},"content":" public void parse_repeatedNonRoleValue_failure() {","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"JuliaPoo"},"content":" + ADDRESS_DESC_BOB + ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"JuliaPoo"},"content":" // zero roles","lastModifiedDate":"2024-03-29"},{"lineNumber":139,"author":{"gitId":"LifHoshi"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRoles().withAmount(\"0.0\").build();","lastModifiedDate":"2024-03-31"},{"lineNumber":140,"author":{"gitId":"chuahjiajie"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"alphajae11"},"content":" + CCA_DESC_DEFAULT + METADATA_DESC_DEFAULT,","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":178,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"JuliaPoo"},"content":" // invalid role","lastModifiedDate":"2024-03-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"JuliaPoo"},"content":" + INVALID_ROLE_DESC + VALID_ROLE_FRIEND, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":198,"author":{"gitId":"JuliaPoo"},"content":" + ADDRESS_DESC_BOB + ROLE_DESC_HUSBAND + ROLE_DESC_FRIEND,","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"JuliaPoo":20,"chuahjiajie":2,"alphajae11":5,"-":171,"LifHoshi":3}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.OweCommand;","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" Person person \u003d new PersonBuilder().withAmount(\"0.0\").build();","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":" public void parseCommand_filter() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" List\u003cString\u003e ccas \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e keywords \u003d ccas","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":" String cmd \u003d","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand.COMMAND_WORD + \" \" + ccas.stream().map(cca -\u003e \"c/\" + cca)","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.joining(\" \"));","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(cmd);","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(new FilterCommand(new CcaContainsKeywordPredicate(keywords, Optional.empty())), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"LifHoshi"},"content":" public void parseCommand_owe() throws Exception {","lastModifiedDate":"2024-03-31"},{"lineNumber":119,"author":{"gitId":"LifHoshi"},"content":" OweCommand command \u003d (OweCommand) parser.parseCommand(OweCommand.COMMAND_WORD + \" 1 m/10\");","lastModifiedDate":"2024-03-31"},{"lineNumber":120,"author":{"gitId":"LifHoshi"},"content":" assertEquals(new OweCommand(INDEX_FIRST_PERSON, new Amount(\"10\")), command);","lastModifiedDate":"2024-03-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"-":97,"Fidget-Spinner":19,"LifHoshi":7}},{"path":"src/test/java/seedu/address/logic/parser/AssignCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HEAD;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"public class AssignCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":" private AssignCommandParser parser \u003d new AssignCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":" // no index specified","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" assertParseFailure(parser, VALID_ROLE_HEAD, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" // no role specified","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" assertParseFailure(parser, \"1\", AssignCommand.MESSAGE_NOT_ASSIGNED);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":" // no index and no role specified","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"alphajae11":30,"Fidget-Spinner":2}},{"path":"src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-07-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-07-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Contains helper methods for testing command parsers.","lastModifiedDate":"2017-07-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class CommandParserTestUtil {","lastModifiedDate":"2017-07-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2017-07-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * equals to {@code expectedCommand}.","lastModifiedDate":"2017-07-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static void assertParseSuccess(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2022-02-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Command expectedCommand) {","lastModifiedDate":"2022-02-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" System.out.println(command.equals(expectedCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-08-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"alphajae11":1,"-":39}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" private static final String ROLE_EMPTY \u003d \" \" + PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":90,"author":{"gitId":"JuliaPoo"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROLE_DESC, Role.MESSAGE_CONSTRAINTS); // invalid role","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" // while parsing {@code PREFIX_ROLE} alone will reset the roles of the {@code Person} being edited,","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" // parsing it together with a valid role results in error","lastModifiedDate":"2024-03-29"},{"lineNumber":97,"author":{"gitId":"JuliaPoo"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_FRIEND + ROLE_DESC_HUSBAND + ROLE_EMPTY, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_FRIEND + ROLE_EMPTY + ROLE_DESC_HUSBAND, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"JuliaPoo"},"content":" assertParseFailure(parser, \"1\" + ROLE_EMPTY + ROLE_DESC_FRIEND + ROLE_DESC_HUSBAND, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + ROLE_DESC_HUSBAND","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(VALID_ROLE_HUSBAND, VALID_ROLE_FRIEND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"JuliaPoo"},"content":" // roles","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"JuliaPoo"},"content":" userInput \u003d targetIndex.getOneBased() + ROLE_DESC_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"JuliaPoo"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRoles(VALID_ROLE_FRIEND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" // AddCommandParserTest#parse_repeatedNonRoleValue_failure()","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"JuliaPoo"},"content":" + ROLE_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + ROLE_DESC_FRIEND","lastModifiedDate":"2024-03-29"},{"lineNumber":185,"author":{"gitId":"JuliaPoo"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"JuliaPoo":23,"-":174}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from FindCOmmandParserTest.java. Full credits to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// authors and CS2103T teaching team.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.person.CcaContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Fidget-Spinner"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_NOT_FILTER_CCA));","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e keywords \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"Alice\", \"Bob\")","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" FilterCommand expectedFilterCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" new FilterCommand(new CcaContainsKeywordPredicate(keywords, Optional.empty()));","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" assertParseSuccess(parser, \" c/Alice c/Bob\", expectedFilterCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":" assertParseSuccess(parser, \" \\n c/Alice \\n \\t c/Bob \\t\", expectedFilterCommand);","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Fidget-Spinner":46}},{"path":"src/test/java/seedu/address/logic/parser/OweCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HEAD;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.logic.commands.OweCommand;","lastModifiedDate":"2024-03-31"},{"lineNumber":12,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"public class OweCommandParserTest {","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":" OweCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":" private OweCommandParser parser \u003d new OweCommandParser();","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" // no index specified","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":" assertParseFailure(parser, VALID_ROLE_HEAD, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" // no role specified","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" assertParseFailure(parser, \"1\", OweCommand.MESSAGE_NOT_OWE);","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" // no index and no role specified","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" public void parse_invalidIndex_failure() {","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" // invalid index","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":" assertParseFailure(parser, \"a\" + VALID_ROLE_HEAD, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":37}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":" private static final String INVALID_ROLE \u003d \"#friend\";","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" private static final String VALID_ROLE_1 \u003d \"friend\";","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"JuliaPoo"},"content":" private static final String VALID_ROLE_2 \u003d \"neighbour\";","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"JuliaPoo"},"content":" public void parseRole_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRole(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"JuliaPoo"},"content":" public void parseRole_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRole(INVALID_ROLE));","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"JuliaPoo"},"content":" public void parseRole_validValueWithoutWhitespace_returnsRole() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"JuliaPoo"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"JuliaPoo"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(VALID_ROLE_1));","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"JuliaPoo"},"content":" public void parseRole_validValueWithWhitespace_returnsTrimmedRole() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"JuliaPoo"},"content":" String roleWithWhitespace \u003d WHITESPACE + VALID_ROLE_1 + WHITESPACE;","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"JuliaPoo"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"JuliaPoo"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(roleWithWhitespace));","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"JuliaPoo"},"content":" public void parseRoles_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":176,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoles(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":180,"author":{"gitId":"JuliaPoo"},"content":" public void parseRoles_collectionWithInvalidRoles_throwsParseException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":181,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, INVALID_ROLE)));","lastModifiedDate":"2024-03-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"JuliaPoo"},"content":" public void parseRoles_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":186,"author":{"gitId":"JuliaPoo"},"content":" assertTrue(ParserUtil.parseRoles(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"JuliaPoo"},"content":" public void parseRoles_collectionWithValidRoles_returnsRoleSet() throws Exception {","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e actualRoleSet \u003d ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, VALID_ROLE_2));","lastModifiedDate":"2024-03-29"},{"lineNumber":192,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e expectedRoleSet \u003d new HashSet\u003cRole\u003e(Arrays.asList(new Role(VALID_ROLE_1), new Role(VALID_ROLE_2)));","lastModifiedDate":"2024-03-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"JuliaPoo"},"content":" assertEquals(expectedRoleSet, actualRoleSet);","lastModifiedDate":"2024-03-29"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"JuliaPoo":25,"-":171}},{"path":"src/test/java/seedu/address/logic/parser/SetAttCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ATTENDANCE_DESC_DEFAULT;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SESSIONS_DESC_DEFAULT;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttCommandParserTest {","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SetAttCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" private SetAttCommandParser parser \u003d new SetAttCommandParser();","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" // no index specified","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" assertParseFailure(parser, ATTENDANCE_DESC_DEFAULT + SESSIONS_DESC_DEFAULT, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" // no role specified","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" // no index and no role specified","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":31}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"JuliaPoo"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"JuliaPoo"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"JuliaPoo"},"content":" private final ObservableList\u003cCca\u003e ccas \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-31"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" @Override","lastModifiedDate":"2024-03-31"},{"lineNumber":110,"author":{"gitId":"JuliaPoo"},"content":" public ObservableList\u003cCca\u003e getCcaList() {","lastModifiedDate":"2024-03-31"},{"lineNumber":111,"author":{"gitId":"JuliaPoo"},"content":" return ccas;","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"JuliaPoo":10,"-":105}},{"path":"src/test/java/seedu/address/model/amount/AmountTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LifHoshi"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-03-31"},{"lineNumber":2,"author":{"gitId":"LifHoshi"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-03-31"},{"lineNumber":3,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":4,"author":{"gitId":"LifHoshi"},"content":"package seedu.address.model.amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":5,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-31"},{"lineNumber":8,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-31"},{"lineNumber":9,"author":{"gitId":"LifHoshi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-31"},{"lineNumber":10,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.math.BigDecimal;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"LifHoshi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-31"},{"lineNumber":14,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":15,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.storage.JsonAdaptedAmount;","lastModifiedDate":"2024-03-31"},{"lineNumber":16,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":17,"author":{"gitId":"LifHoshi"},"content":"public class AmountTest {","lastModifiedDate":"2024-03-31"},{"lineNumber":18,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":19,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":20,"author":{"gitId":"LifHoshi"},"content":" public void isValidAmount() {","lastModifiedDate":"2024-03-31"},{"lineNumber":21,"author":{"gitId":"LifHoshi"},"content":" // null amount","lastModifiedDate":"2024-03-31"},{"lineNumber":22,"author":{"gitId":"LifHoshi"},"content":" assertThrows(NullPointerException.class, () -\u003e Amount.isValidAmount(null));","lastModifiedDate":"2024-03-31"},{"lineNumber":23,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":24,"author":{"gitId":"LifHoshi"},"content":" // invalid amount","lastModifiedDate":"2024-03-31"},{"lineNumber":25,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\"\")); // empty string","lastModifiedDate":"2024-03-31"},{"lineNumber":26,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\" \")); // spaces only","lastModifiedDate":"2024-03-31"},{"lineNumber":27,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\"phone\")); // non-numeric","lastModifiedDate":"2024-03-31"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" assertFalse(Amount.isValidAmount(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" // valid amount","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"LifHoshi"},"content":" assertTrue(Amount.isValidAmount(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-03-31"},{"lineNumber":33,"author":{"gitId":"LifHoshi"},"content":" assertTrue(Amount.isValidAmount(\"93121534\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":34,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":35,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":36,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":37,"author":{"gitId":"LifHoshi"},"content":" public void testHashCode() {","lastModifiedDate":"2024-03-31"},{"lineNumber":38,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"30\");","lastModifiedDate":"2024-03-31"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" int expectedHashCode \u003d new BigDecimal(30).hashCode();","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" assertEquals(expectedHashCode, amount.hashCode());","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":42,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":43,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":44,"author":{"gitId":"LifHoshi"},"content":" public void testToString() {","lastModifiedDate":"2024-03-31"},{"lineNumber":45,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(amount.toString(), amount.value.toString());","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":49,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":50,"author":{"gitId":"LifHoshi"},"content":" public void testEquals() {","lastModifiedDate":"2024-03-31"},{"lineNumber":51,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":52,"author":{"gitId":"LifHoshi"},"content":" Amount amount2 \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":53,"author":{"gitId":"LifHoshi"},"content":" Amount amount3 \u003d new Amount(\"200\");","lastModifiedDate":"2024-03-31"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" assertTrue(amount.equals(amount2));","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"LifHoshi"},"content":" assertFalse(amount.equals(amount3));","lastModifiedDate":"2024-03-31"},{"lineNumber":56,"author":{"gitId":"LifHoshi"},"content":" assertFalse(amount.equals(null));","lastModifiedDate":"2024-03-31"},{"lineNumber":57,"author":{"gitId":"LifHoshi"},"content":" assertFalse(amount.equals(\"100\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":58,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":59,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"LifHoshi"},"content":" public void testCompareTo() {","lastModifiedDate":"2024-03-31"},{"lineNumber":62,"author":{"gitId":"LifHoshi"},"content":" Amount amount \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" Amount amount2 \u003d new Amount(\"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"LifHoshi"},"content":" Amount amount3 \u003d new Amount(\"200\");","lastModifiedDate":"2024-03-31"},{"lineNumber":65,"author":{"gitId":"LifHoshi"},"content":" assertEquals(amount.compareTo(amount2), 0);","lastModifiedDate":"2024-03-31"},{"lineNumber":66,"author":{"gitId":"LifHoshi"},"content":" assertEquals(amount.compareTo(amount3), -1);","lastModifiedDate":"2024-03-31"},{"lineNumber":67,"author":{"gitId":"LifHoshi"},"content":" assertEquals(amount3.compareTo(amount), 1);","lastModifiedDate":"2024-03-31"},{"lineNumber":68,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":69,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" @Test","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"LifHoshi"},"content":" public void testJsonAdaptedAmount() {","lastModifiedDate":"2024-03-31"},{"lineNumber":72,"author":{"gitId":"LifHoshi"},"content":" JsonAdaptedAmount jsonAdaptedAmount \u003d new JsonAdaptedAmount(new Amount(\"100\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":73,"author":{"gitId":"LifHoshi"},"content":" assertEquals(jsonAdaptedAmount.getValue(), \"100\");","lastModifiedDate":"2024-03-31"},{"lineNumber":74,"author":{"gitId":"LifHoshi"},"content":" try {","lastModifiedDate":"2024-03-31"},{"lineNumber":75,"author":{"gitId":"LifHoshi"},"content":" assertEquals(jsonAdaptedAmount.toModelType(), new Amount(\"100\"));","lastModifiedDate":"2024-03-31"},{"lineNumber":76,"author":{"gitId":"LifHoshi"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-31"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":79,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":80,"author":{"gitId":"LifHoshi"},"content":"}","lastModifiedDate":"2024-03-31"}],"authorContributionMap":{"LifHoshi":76,"Fidget-Spinner":4}},{"path":"src/test/java/seedu/address/model/cca/CcaTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.model.cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"public class CcaTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(NullPointerException.class, () -\u003e new Cca(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":" public void constructor_invalidCcaName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" String invalidCcaName \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Cca(invalidCcaName));","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" public void isValidCcaName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" // null cca name","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(NullPointerException.class, () -\u003e Cca.isValidCcaName(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":2,"chuahjiajie":24}},{"path":"src/test/java/seedu/address/model/person/MetadataTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alphajae11"},"content":"// Part of the code is adpatated from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"alphajae11"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-04-04"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-04"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import seedu.address.testutil.Assert;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"public class MetadataTest {","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":" public void isValidMetadata() {","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":" // null metadata","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e Metadata.isValidMetadata(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":" // invalid metadata","lastModifiedDate":"2024-04-04"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" assertFalse(Metadata.isValidMetadata(\"/\")); // contains slash","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" assertFalse(Metadata.isValidMetadata(\"peter/a\")); // contains slash","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":" // valid metadata","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" assertTrue(Metadata.isValidMetadata(\"I love to get drink every day\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" assertTrue(Metadata.isValidMetadata(\"I sleep on the floor\"));","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" assertTrue(Metadata.isValidMetadata(\"I like to play soccer 2 times a week\")); // alphanumeric characters","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" public void equals() {","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" Metadata metadata \u003d new Metadata(\"I love to eat pear\");","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"alphajae11"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" assertTrue(metadata.equals(new Metadata(\"I love to eat pear\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" assertTrue(metadata.equals(metadata));","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":" assertFalse(metadata.equals(null));","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" assertFalse(metadata.equals(5.0f));","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"alphajae11"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" assertFalse(metadata.equals(new Metadata(\"I love to eat grape\")));","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"alphajae11":48}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getRoles().remove(0));","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" .withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" // different roles -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRoles(VALID_ROLE_HUSBAND).build();","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"JuliaPoo"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", roles\u003d\" + ALICE.getRoles()","lastModifiedDate":"2024-03-29"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" + \", CCAs\u003d\" + ALICE.getCcas() + \", amount\u003d\" + ALICE.getAmount() + \", attendance\u003d\" + ALICE.getAtt()","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" + \", sessions\u003d\" + ALICE.getSess() + \", metadata\u003d\" + ALICE.getMetadata() + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"JuliaPoo":6,"chuahjiajie":2,"-":93}},{"path":"src/test/java/seedu/address/model/person/RoleContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// This file is adapted from NameContainsKeywordsPredicateTest.java. Full credits to the original","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// authors and CS2103T teaching team.","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Fidget-Spinner"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Fidget-Spinner"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Optional;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.Set;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"Fidget-Spinner"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Fidget-Spinner"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Fidget-Spinner"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":"public class RoleContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Fidget-Spinner"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"first\")","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e secondPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"first\", \"second\")","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate firstPredicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"Fidget-Spinner"},"content":" firstPredicateKeywordList,","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate secondPredicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":40,"author":{"gitId":"Fidget-Spinner"},"content":" secondPredicateKeywordList,","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Fidget-Spinner"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Fidget-Spinner"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate firstPredicateCopy \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"Fidget-Spinner"},"content":" firstPredicateKeywordList,","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Fidget-Spinner"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Fidget-Spinner"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Fidget-Spinner"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Fidget-Spinner"},"content":" public void test_ccaContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"Fidget-Spinner"},"content":" // One keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"friends\")","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"Fidget-Spinner"},"content":" firstPredicateKeywordList,","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withCcas(\"friends\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Fidget-Spinner"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Fidget-Spinner"},"content":" firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"friends\", \"classmates\")","lastModifiedDate":"2024-04-04"},{"lineNumber":81,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"Fidget-Spinner"},"content":" predicate \u003d new CcaContainsKeywordPredicate(firstPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withCcas(\"friends\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Fidget-Spinner"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"Fidget-Spinner"},"content":" predicate \u003d new CcaContainsKeywordPredicate(firstPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"Fidget-Spinner"},"content":" assertTrue(predicate.test(","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"Fidget-Spinner"},"content":" new PersonBuilder().withName(\"Alice Carol\").withCcas(\"friends\", \"classmates\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"Fidget-Spinner"},"content":" public void test_ccaDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"Fidget-Spinner"},"content":" // Zero keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"Fidget-Spinner"},"content":" Collections.emptySet(),","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"Fidget-Spinner"},"content":" Optional.empty()","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"Fidget-Spinner"},"content":" );","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"Fidget-Spinner"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Fidget-Spinner"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e firstPredicateKeywordList \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"Friends\")","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"Fidget-Spinner"},"content":" predicate \u003d new CcaContainsKeywordPredicate(firstPredicateKeywordList, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"JuliaPoo"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withRoles(\"Friend\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"Fidget-Spinner"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"Fidget-Spinner"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"Fidget-Spinner"},"content":" Set\u003cCca\u003e keywords \u003d Arrays","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"Fidget-Spinner"},"content":" .asList(\"keyword1\", \"keyword2\")","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"Fidget-Spinner"},"content":" .stream()","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"Fidget-Spinner"},"content":" .map(Cca::new)","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"Fidget-Spinner"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"Fidget-Spinner"},"content":" CcaContainsKeywordPredicate predicate \u003d new CcaContainsKeywordPredicate(keywords, Optional.empty());","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"Fidget-Spinner"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"Fidget-Spinner"},"content":" String expected \u003d CcaContainsKeywordPredicate.class.getCanonicalName() + \"{ccas\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Fidget-Spinner"},"content":" + keywords + \", roles\u003d\" + Optional.empty() + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"Fidget-Spinner"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"Fidget-Spinner"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"Fidget-Spinner"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"JuliaPoo":2,"Fidget-Spinner":124}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"JuliaPoo"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND)","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"JuliaPoo":3,"-":172}},{"path":"src/test/java/seedu/address/model/role/RoleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"JuliaPoo"},"content":"package seedu.address.model.role;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"JuliaPoo"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"public class RoleTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(NullPointerException.class, () -\u003e new Role(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":" public void constructor_invalidRoleName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"JuliaPoo"},"content":" String invalidRoleName \u003d \"\";","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Role(invalidRoleName));","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"JuliaPoo"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"JuliaPoo"},"content":" public void isValidRoleName() {","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"JuliaPoo"},"content":" // null role name","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"JuliaPoo"},"content":" assertThrows(NullPointerException.class, () -\u003e Role.isValidRoleName(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"JuliaPoo"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"JuliaPoo"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"JuliaPoo":28}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"JuliaPoo"},"content":" private static final String INVALID_ROLE \u003d \"#friend\";","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_CCA \u003d \"#NUS Cycling\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"LifHoshi"},"content":" private static final String INVALID_AMOUNT \u003d \"10.00.00\";","lastModifiedDate":"2024-03-31"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_ATTENDANCE_N \u003d \"-1\";","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_ATTENDANCE \u003d \"5\";","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_SESSIONS_N \u003d \"-1\";","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" private static final String INVALID_SESSIONS \u003d \"4\";","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"alphajae11"},"content":" private static final String INVALID_METADATA \u003d \"#MIENIV\";","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" private static final JsonAdaptedAmount VALID_AMOUNT \u003d new JsonAdaptedAmount(BENSON.getAmount());","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" private static final String VALID_ATTENDANCE \u003d BENSON.getAtt().toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" private static final String VALID_SESSIONS \u003d BENSON.getSess().toString();","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"JuliaPoo"},"content":" private static final List\u003cJsonAdaptedRole\u003e VALID_ROLES \u003d BENSON.getRoles().stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"JuliaPoo"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" private static final List\u003cJsonAdaptedCca\u003e VALID_CCAS \u003d BENSON.getCcas().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" .map(JsonAdaptedCca::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"alphajae11"},"content":" private static final String VALID_METADATA \u003d BENSON.getMetadata().toString();","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-31"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" VALID_ROLES, VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-31"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-31"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"JuliaPoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-29"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-03-31"},{"lineNumber":112,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"JuliaPoo"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_ROLES,","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"JuliaPoo"},"content":" public void toModelType_invalidRoles_throwsIllegalValueException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":127,"author":{"gitId":"JuliaPoo"},"content":" List\u003cJsonAdaptedRole\u003e invalidRoles \u003d new ArrayList\u003c\u003e(VALID_ROLES);","lastModifiedDate":"2024-03-29"},{"lineNumber":128,"author":{"gitId":"JuliaPoo"},"content":" invalidRoles.add(new JsonAdaptedRole(INVALID_ROLE));","lastModifiedDate":"2024-03-29"},{"lineNumber":129,"author":{"gitId":"chuahjiajie"},"content":" List\u003cJsonAdaptedCca\u003e invalidCcas \u003d new ArrayList\u003c\u003e(VALID_CCAS);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"JuliaPoo"},"content":" invalidRoles.add(new JsonAdaptedRole(INVALID_CCA));","lastModifiedDate":"2024-03-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"LifHoshi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidRoles,","lastModifiedDate":"2024-03-31"},{"lineNumber":133,"author":{"gitId":"chuahjiajie"},"content":" invalidCcas, VALID_AMOUNT, VALID_ATTENDANCE, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_invalidAttendance_throwsIllegalValueException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chuahjiajie"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, INVALID_ATTENDANCE_N, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d Attendance.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_nullAttendance_throwsIllegalValueException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"chuahjiajie"},"content":" VALID_ROLES, VALID_CCAS, VALID_AMOUNT, null, VALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Attendance.class.getSimpleName());","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_invalidSessions_throwsIllegalValueException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, INVALID_SESSIONS_N, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d Sessions.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_nullSessions_throwsIllegalValueException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"chuahjiajie"},"content":" VALID_ROLES, VALID_CCAS, VALID_AMOUNT, VALID_ATTENDANCE, null, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":167,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Sessions.class.getSimpleName());","lastModifiedDate":"2024-04-05"},{"lineNumber":168,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":169,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":170,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":171,"author":{"gitId":"chuahjiajie"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"chuahjiajie"},"content":" public void toModelType_invalidSetAtt_throwsParseException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":173,"author":{"gitId":"chuahjiajie"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-04-05"},{"lineNumber":174,"author":{"gitId":"chuahjiajie"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_ROLES,","lastModifiedDate":"2024-04-05"},{"lineNumber":175,"author":{"gitId":"chuahjiajie"},"content":" VALID_CCAS, VALID_AMOUNT, INVALID_ATTENDANCE, INVALID_SESSIONS, VALID_METADATA);","lastModifiedDate":"2024-04-05"},{"lineNumber":176,"author":{"gitId":"chuahjiajie"},"content":" String expectedMessage \u003d Attendance.MESSAGE_LESS_THAN_CONSTRAINT;","lastModifiedDate":"2024-04-05"},{"lineNumber":177,"author":{"gitId":"chuahjiajie"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-04-05"},{"lineNumber":178,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"JuliaPoo":10,"chuahjiajie":65,"alphajae11":2,"-":95,"LifHoshi":7}},{"path":"src/test/java/seedu/address/testutil/AssignPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Fidget-Spinner"},"content":"// Part of the code is adapted from original AB3 Code. All credits and thanks to the original","lastModifiedDate":"2024-04-04"},{"lineNumber":2,"author":{"gitId":"Fidget-Spinner"},"content":"// CS2103T teaching team for this.","lastModifiedDate":"2024-04-04"},{"lineNumber":3,"author":{"gitId":"alphajae11"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alphajae11"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alphajae11"},"content":"import seedu.address.logic.commands.AssignCommand.AssignPersonDescriptor;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alphajae11"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alphajae11"},"content":" * A utility class to help with building AssignPersonDescriptor objects.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alphajae11"},"content":"public class AssignPersonDescriptorBuilder {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alphajae11"},"content":" private AssignPersonDescriptor descriptor;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptorBuilder() {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alphajae11"},"content":" this.descriptor \u003d new AssignPersonDescriptor();","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptorBuilder(AssignCommand.AssignPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alphajae11"},"content":" this.descriptor \u003d new AssignCommand.AssignPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alphajae11"},"content":" * Returns an {@code AssignPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" public AssignPersonDescriptorBuilder(String role) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":" descriptor \u003d new AssignPersonDescriptor();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e roleSet \u003d Stream.of(role).map(Role::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"JuliaPoo"},"content":" descriptor.setRole(roleSet);","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alphajae11"},"content":" public AssignCommand.AssignPersonDescriptor build() {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alphajae11"},"content":" return descriptor;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alphajae11"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"JuliaPoo":3,"alphajae11":35,"Fidget-Spinner":2}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" descriptor.setRoles(person.getRoles());","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" descriptor.setCcas(person.getCcas());","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alphajae11"},"content":" descriptor.setMetadata(person.getMetadata());","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"JuliaPoo"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"JuliaPoo"},"content":" public EditPersonDescriptorBuilder withRoles(String... roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e roleSet \u003d Stream.of(roles).map(Role::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"JuliaPoo"},"content":" descriptor.setRoles(roleSet);","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"JuliaPoo"},"content":" * Parses the {@code cca} into a {@code Set\u003cCCA\u003e} and","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"chuahjiajie"},"content":" * set it to the {@code EditPersonDescriptorBuilder}","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"JuliaPoo"},"content":" * @param cca","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"chuahjiajie"},"content":" * @return","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"JuliaPoo"},"content":" public EditPersonDescriptorBuilder withCcas(String... cca) {","lastModifiedDate":"2024-03-29"},{"lineNumber":95,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cCca\u003e ccaSet \u003d Stream.of(cca).map(Cca::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" descriptor.setCcas(ccaSet);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"alphajae11"},"content":" * Parses the {@code metadata} into a {@code Metadata} and","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"alphajae11"},"content":" * set it to the {@code EditPersonDescriptorBuilder}","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"alphajae11"},"content":" * @param metadata","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"alphajae11"},"content":" * @return","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" public EditPersonDescriptorBuilder withMetadata(String metadata) {","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"alphajae11"},"content":" descriptor.setMetadata(new Metadata(metadata));","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"JuliaPoo":10,"chuahjiajie":11,"alphajae11":9,"-":84}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"LifHoshi"},"content":"import seedu.address.model.amount.Amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"alphajae11"},"content":"import seedu.address.model.person.Metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"LifHoshi"},"content":" public static final String DEFAULT_AMOUNT \u003d \"0.0\";","lastModifiedDate":"2024-03-31"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" public static final String DEFAULT_ATTENDANCE \u003d \"0\";","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" public static final String DEFAULT_SESSIONS \u003d \"0\";","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"alphajae11"},"content":" public static final String DEFAULT_METADATA \u003d \"I like peaches\";","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"JuliaPoo"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" private Set\u003cCca\u003e ccas;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"LifHoshi"},"content":" private Amount amount;","lastModifiedDate":"2024-03-31"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" private Attendance attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" private Sessions sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"alphajae11"},"content":" private Metadata metadata;","lastModifiedDate":"2024-04-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"JuliaPoo"},"content":" roles \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" ccas \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" amount \u003d new Amount(DEFAULT_AMOUNT);","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" attendance \u003d new Attendance(DEFAULT_ATTENDANCE);","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" sessions \u003d new Sessions(DEFAULT_SESSIONS);","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"alphajae11"},"content":" metadata \u003d new Metadata(DEFAULT_METADATA);","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"JuliaPoo"},"content":" roles \u003d new HashSet\u003c\u003e(personToCopy.getRoles());","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" ccas \u003d new HashSet\u003c\u003e(personToCopy.getCcas());","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"LifHoshi"},"content":" amount \u003d personToCopy.getAmount();","lastModifiedDate":"2024-03-31"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" attendance \u003d personToCopy.getAtt();","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":" sessions \u003d personToCopy.getSess();","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"alphajae11"},"content":" metadata \u003d personToCopy.getMetadata();","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"JuliaPoo"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"JuliaPoo"},"content":" public PersonBuilder withRoles(String... roles) {","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"JuliaPoo"},"content":" this.roles \u003d SampleDataUtil.getRoleSet(roles);","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" * Parses the {@code CCA} into a {@code Set\u003cCCA\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" public PersonBuilder withCcas(String... ccas) {","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" this.ccas \u003d SampleDataUtil.getCcaSet(ccas);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"LifHoshi"},"content":" /**","lastModifiedDate":"2024-03-31"},{"lineNumber":125,"author":{"gitId":"LifHoshi"},"content":" * Sets the {@code Amount} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-31"},{"lineNumber":126,"author":{"gitId":"LifHoshi"},"content":" */","lastModifiedDate":"2024-03-31"},{"lineNumber":127,"author":{"gitId":"LifHoshi"},"content":" public PersonBuilder withAmount(String amount) {","lastModifiedDate":"2024-03-31"},{"lineNumber":128,"author":{"gitId":"LifHoshi"},"content":" this.amount \u003d new Amount(amount);","lastModifiedDate":"2024-03-31"},{"lineNumber":129,"author":{"gitId":"LifHoshi"},"content":" return this;","lastModifiedDate":"2024-03-31"},{"lineNumber":130,"author":{"gitId":"LifHoshi"},"content":" }","lastModifiedDate":"2024-03-31"},{"lineNumber":131,"author":{"gitId":"LifHoshi"},"content":"","lastModifiedDate":"2024-03-31"},{"lineNumber":132,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"chuahjiajie"},"content":" * Sets the {@code Attendance} of the {@code Person} that we are building.","lastModifiedDate":"2024-04-05"},{"lineNumber":134,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"chuahjiajie"},"content":" public PersonBuilder withAtt(String attendance) {","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"chuahjiajie"},"content":" this.attendance \u003d new Attendance(attendance);","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"chuahjiajie"},"content":" return this;","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chuahjiajie"},"content":" * Sets the {@code Sessions} of the {@code Person} that we are building.","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chuahjiajie"},"content":" public PersonBuilder withSess(String sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chuahjiajie"},"content":" this.sessions \u003d new Sessions(sessions);","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chuahjiajie"},"content":" return this;","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"alphajae11"},"content":" /**","lastModifiedDate":"2024-04-04"},{"lineNumber":149,"author":{"gitId":"alphajae11"},"content":" * Sets the {@code Metadata} of the {@code Person} that we are building.","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"alphajae11"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"alphajae11"},"content":" public PersonBuilder withMetadata(String metadata) {","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"alphajae11"},"content":" this.metadata \u003d new Metadata(metadata);","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"alphajae11"},"content":" return this;","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"alphajae11"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"alphajae11"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":157,"author":{"gitId":"chuahjiajie"},"content":" return new Person(name, phone, email, address, roles, ccas, amount, attendance, sessions, metadata);","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"JuliaPoo":7,"chuahjiajie":36,"alphajae11":13,"-":91,"LifHoshi":13}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CCA;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.cca.Cca;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"JuliaPoo"},"content":"import seedu.address.model.roles.Role;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"JuliaPoo"},"content":" person.getRoles().stream().forEach(","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"JuliaPoo"},"content":" s -\u003e sb.append(PREFIX_ROLE + s.roleName + \" \")","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" person.getCcas().stream().forEach(","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" c -\u003e sb.append(PREFIX_CCA + c.ccaName + \" \")","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" );","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alphajae11"},"content":" sb.append(PREFIX_METADATA + person.getMetadata().metadata + \" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"JuliaPoo"},"content":" if (descriptor.getRoles().isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cRole\u003e roles \u003d descriptor.getRoles().get();","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"JuliaPoo"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"JuliaPoo"},"content":" sb.append(PREFIX_ROLE);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"JuliaPoo"},"content":" sb.append(PREFIX_ROLE);","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"JuliaPoo"},"content":" roles.forEach(s -\u003e sb.append(PREFIX_ROLE).append(s.roleName).append(\" \"));","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" sb.append(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" if (descriptor.getCcas().isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"JuliaPoo"},"content":" Set\u003cCca\u003e roles \u003d descriptor.getCcas().get();","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"JuliaPoo"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":" sb.append(PREFIX_CCA);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"JuliaPoo"},"content":" roles.forEach(s -\u003e sb.append(PREFIX_CCA).append(s.ccaName).append(\" \"));","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"alphajae11"},"content":" sb.append(\" \");","lastModifiedDate":"2024-04-04"},{"lineNumber":78,"author":{"gitId":"alphajae11"},"content":" descriptor.getMetadata().ifPresent(metadata -\u003e sb.append(PREFIX_METADATA)","lastModifiedDate":"2024-04-04"},{"lineNumber":79,"author":{"gitId":"alphajae11"},"content":" .append(metadata.metadata).append(\" \"));","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"JuliaPoo":13,"chuahjiajie":8,"alphajae11":5,"-":56}},{"path":"src/test/java/seedu/address/testutil/SetAttDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-04-05"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.logic.commands.SetAttCommand.SetAttDescriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":"import seedu.address.model.attendance.Sessions;","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" * A utility class to help with building SetAttDescriptor objects.","lastModifiedDate":"2024-04-05"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"public class SetAttDescriptorBuilder {","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" private SetAttDescriptor descriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptorBuilder() {","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" this.descriptor \u003d new SetAttDescriptor();","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptorBuilder(SetAttCommand.SetAttDescriptor descriptor) {","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" this.descriptor \u003d new SetAttCommand.SetAttDescriptor(descriptor);","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" * Returns an {@code AssignPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" public SetAttDescriptorBuilder(String attendance, String sessions) {","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" descriptor \u003d new SetAttDescriptor();","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" descriptor.setAtt(new Attendance(attendance));","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" descriptor.setSess(new Sessions(sessions));","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" public SetAttCommand.SetAttDescriptor build() {","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" return descriptor;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-04-05"}],"authorContributionMap":{"chuahjiajie":35}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"alphajae11"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_METADATA;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_FRIEND;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"JuliaPoo"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_HUSBAND;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(\"friends\")","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"LifHoshi"},"content":" .withCcas(\"NUS Cycling\")","lastModifiedDate":"2024-03-31"},{"lineNumber":32,"author":{"gitId":"alphajae11"},"content":" .withAmount(\"10.00\")","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"alphajae11"},"content":" .withMetadata(\"I like to eat apples.\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"JuliaPoo"},"content":" .withRoles(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"LifHoshi"},"content":" .withCcas(\"NUS Cycling\", \"NUS Bakes\")","lastModifiedDate":"2024-03-31"},{"lineNumber":41,"author":{"gitId":"alphajae11"},"content":" .withAmount(\"20.00\")","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"alphajae11"},"content":" .withMetadata(\"I like to eat oranges.\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"LifHoshi"},"content":" .withCcas(\"NUS Cycling\")","lastModifiedDate":"2024-03-31"},{"lineNumber":48,"author":{"gitId":"alphajae11"},"content":" .withAmount(\"30.00\")","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"alphajae11"},"content":" .withMetadata(\"I like to eat apples.\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"JuliaPoo"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withRoles(\"friends\")","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"LifHoshi"},"content":" .withCcas(\"NUS Cycling\")","lastModifiedDate":"2024-03-31"},{"lineNumber":55,"author":{"gitId":"alphajae11"},"content":" .withAmount(\"40.00\")","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"alphajae11"},"content":" .withMetadata(\"I like to play basketball.\").build();","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"alphajae11"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withMetadata(\"I support Manchester United.\")","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"alphajae11"},"content":" .build();","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"LifHoshi"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-31"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" .withAmount(\"50.00\")","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" .withAtt(\"0\")","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" .withSess(\"1\")","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chuahjiajie"},"content":" .withMetadata(\"I support Manchester United.\").build();","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"alphajae11"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withMetadata(\"I support Manchester United.\")","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"alphajae11"},"content":" .build();","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"JuliaPoo"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withRoles(VALID_ROLE_FRIEND)","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"alphajae11"},"content":" .withCcas(\"NUS Cycling\").withMetadata(VALID_METADATA).build();","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":83,"author":{"gitId":"JuliaPoo"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withRoles(VALID_ROLE_HUSBAND, VALID_ROLE_FRIEND)","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"alphajae11"},"content":" .withCcas(\"NUS Cycling\").withMetadata(VALID_METADATA)","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"JuliaPoo":7,"chuahjiajie":13,"alphajae11":15,"-":65,"LifHoshi":5}}] diff --git a/AY2324S2-CS2103T-W11-2_tp_master/commits.json b/AY2324S2-CS2103T-W11-2_tp_master/commits.json index 67033753..886c8974 100644 --- a/AY2324S2-CS2103T-W11-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-W11-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"JuliaPoo":[{"date":"2024-03-03","commitResults":[{"hash":"929e75f1a864428141dc8315d6e6818e344dd1cb","isMergeCommit":false,"messageTitle":"Updated AboutUs.md and added portfolios for each member (#15)","messageBody":"* Docs: Updated AboutUs.md\r\n\r\nUpdated according to https://nus-cs2103-ay2324s2.github.io/website/schedule/week7/project.html\r\nIt is not completed, we require other members to add their profile pictures.\r\n\r\n* Update AboutUs.md","fileTypesAndContributionMap":{"docs":{"insertions":80,"deletions":23}}}]},{"date":"2024-03-07","commitResults":[{"hash":"abd771c93a28918f4ad29e305cab259478e9ac9d","isMergeCommit":false,"messageTitle":"Docs: Updated glossary (#16)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"7b29ee45f34b02114bade29e804ba3119999b723","isMergeCommit":false,"messageTitle":"Update non-functional requirements. (#17)","messageBody":"* Docs: Update non-functional requirements.\r\n\r\n* Fix spacing\r\n\r\n---------\r\n\r\nCo-authored-by: Ken Jin \u003ckenjin4096@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":3}}}]},{"date":"2024-03-22","commitResults":[{"hash":"b6e4c3cda1f61e15fcc2350a4057ad303b9952d0","isMergeCommit":false,"messageTitle":"Fixes 2 puml files (#54)","messageBody":"1. BetterModelClassDiagram.puml now allows multiple Cca to be referenced by Person\r\n2. ModelClassDiagram.puml now uses Cca instead of CCA","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"8626b46df8dec69b1a78f4583b536d8562b77454","isMergeCommit":false,"messageTitle":"Implements Role and CCA labels in PersonCard (#52)","messageBody":"* Implements Role and CCA labels in PersonCard\r\n\r\n* Fixes checkstyle violations","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":7}}}]},{"date":"2024-03-25","commitResults":[{"hash":"e86664b53ff3bdd10ed201645a3f8ee45e214646","isMergeCommit":false,"messageTitle":"Add an introduction to the UG (#74)","messageBody":"* Add an introduction to the UG\r\n\r\n* Update UserGuide.md","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":1}}},{"hash":"53f7738d9b882e09eb1d3fc28b07eeb230a90524","isMergeCommit":false,"messageTitle":"Adds FAQ questions in UG (#75)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":1}}}]},{"date":"2024-03-27","commitResults":[{"hash":"a583dbccd9e58fb08ceebc6f9f2bb9df3348bd79","isMergeCommit":false,"messageTitle":"Edits the UG up till Tutorials (#82)","messageBody":"* Edits the UG up till Tutorials\r\n\r\n* Renames section in UG\r\n\r\n* Fix `edit` reference in UG","fileTypesAndContributionMap":{"other":{"insertions":11,"deletions":0},"docs":{"insertions":87,"deletions":51}}},{"hash":"79bf7d59c98bc1fe64e616be55687486004164b5","isMergeCommit":false,"messageTitle":"Style print navbar in UG (#84)","messageBody":"* Style print navbar in UG\r\n\r\n* Update main.css","fileTypesAndContributionMap":{"other":{"insertions":37,"deletions":0},"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-29","commitResults":[{"hash":"1871c82bed8d3776134128b9964961678ff3d485","isMergeCommit":false,"messageTitle":"Refactor from tag to role and fix many issues (#93)","messageBody":"1. Fixed `edit` command not being able to edit CCAs only\r\n2. Fixed `Role`s not being able to have spaces (contradicts examples in the UG)\r\n2. Fixed `edit` command example is malformed\r\n3. Wrong `assign` documentation\r\n4. A bunch of string builders were missing CCA field\r\n - Also fixed the serialising tests to include the CCA field\r\n5. A bunch of code that is `Cca` object adjacent has documentation that mentions `tag` instead of `cca`.","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":243},"other":{"insertions":2,"deletions":2},"docs":{"insertions":27,"deletions":27},"test-code":{"insertions":190,"deletions":188}}},{"hash":"b81a63d81022baeacd4c908aa4a32a7d5c027697","isMergeCommit":false,"messageTitle":"Documents the Proposed Better CCA-level Actions Meta-feature (#100)","messageBody":"Also fixed DG styling.\r\n\r\nCo-authored-by: chuahjiajie \u003c122253924+chuahjiajie@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":6},"docs":{"insertions":152,"deletions":1}}}]},{"date":"2024-03-31","commitResults":[{"hash":"62205c918db698648e388259969e176c969640bb","isMergeCommit":false,"messageTitle":"Implement UniqueCcaList and updated the DG (#104)","messageBody":"* Implement UniqueCcaList and updated the DG\r\n\r\n1. When Person gets added/editted in the AddressBook, a new Person\r\nis created uses Cca objects from AddressBook.ccas (of type UniqueCcaList).\r\nThis ensures that Person objects from AddressBook has the same Cca objects.\r\nThis allows us to store meta-data in Cca objects that is immediately shared\r\nacross all Person objects that has the same Cca. At the same time, no\r\nmodifications to Command is needed, as everything is performed at the\r\nAddressBook level.\r\n\r\n2. The serialiser for AddressBook is modified to also serialise a list of\r\nCca objects. Do delete your addressbook.json before testing this new code.\r\n\r\n3. In the future, UniqueCcaList will be made up of CcaFull objects, which\r\nare derived from Cca class but contain metadata. Person will still use Cca\r\nobjects.\r\n\r\n* Update UniqueCcaList.java\r\n\r\n* Fix bug caused by merge with master","fileTypesAndContributionMap":{"functional-code":{"insertions":301,"deletions":9},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"3b851cf2b44b8e4a1c0f759a4abb30dd915fba81","isMergeCommit":false,"messageTitle":"Implement displaying of CCA (#109)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":385,"deletions":56},"other":{"insertions":1,"deletions":1},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":11,"deletions":0}}}]}],"chuahjiajie":[{"date":"2024-03-07","commitResults":[{"hash":"aca1d6a0a9a6e7e2d5b8f4c2f01acd7eeeebc7ad","isMergeCommit":false,"messageTitle":"Update AboutUs (#27)","messageBody":"* Comply with .png format\r\n\r\nChange the names of the following images:\r\nchuahjiajie.jpg -\u003e chuahjiajie.png\r\n\r\nAdditionally, the image source for the \"Lifu\"\r\nprofile was adjusted to the .png file instead\r\nof the .jpg file.\r\n\r\n* Remove \"title:\"\r\n\r\nIncluding \"title:\" was evoking an error.\r\n\r\n* Add Deliverables and Deadlines Role\r\n\r\nAppended \"Deliverables and Deadlines\" role to\r\nprofile of Chuah Jia Jie.\r\n\r\n---------\r\n\r\nCo-authored-by: chuahjiajie \u003cjiajiechuah@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}},{"hash":"298e536bc5527abf8934ca49379a8c69cc4cbde1","isMergeCommit":false,"messageTitle":"Add \"title:\" Back to Heading (#32)","messageBody":"* Comply with .png format\r\n\r\nChange the names of the following images:\r\nchuahjiajie.jpg -\u003e chuahjiajie.png\r\n\r\nAdditionally, the image source for the \"Lifu\"\r\nprofile was adjusted to the .png file instead\r\nof the .jpg file.\r\n\r\n* Remove \"title:\"\r\n\r\nIncluding \"title:\" was evoking an error.\r\n\r\n* Add Deliverables and Deadlines Role\r\n\r\nAppended \"Deliverables and Deadlines\" role to\r\nprofile of Chuah Jia Jie.\r\n\r\n* Add \"title:\" Back\r\n\r\nAdded the \"title:\" portion back to the\r\nAboutUs file.\r\n\r\n---------\r\n\r\nCo-authored-by: chuahjiajie \u003cjiajiechuah@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"f5f67df896a4cc307699bfef4c588491966d938f","isMergeCommit":false,"messageTitle":"Add CCA Label (#47)","messageBody":"* Add CCA CLI Syntax\r\n\r\n* Add CCA Object\r\n\r\n* Edit Person to Include CCA\r\n\r\n* Add ParseUtil Compliance with CCA\r\n\r\n* Edit Add Command\r\n\r\nMade Add Command comply with\r\nCCA.\r\n\r\n* Edit Edit Command\r\n\r\n* Edit Edit Parser\r\n\r\n* Create JsonAdaptedCCA\r\n\r\n* Edit JsonAdaptedPerson\r\n\r\n* Edit SampleDataUtil\r\n\r\n* Fix CLI Prefix\r\n\r\n* Edit Json Files and Fix Issue\r\n\r\nEdited Json Files to comply with new\r\n\"CCA\" parameter.\r\n\r\nAdditionally, fixed an issue with CCA\r\nclass. Issue was that validation regex\r\nwas incorrect and did not accept\r\nwhitespace.\r\n\r\n* Add CCA to UI\r\n\r\n* Fix JsonAdaptedPerson\r\n\r\nNeglected to add a few lines to\r\nthe constructor.\r\n\r\n* Fix Add Command Error\r\n\r\n* Fix Existing Tests\r\n\r\n* Add CCA Test\r\n\r\n* fix tests\r\n\r\n* Refactor to follow checkstyle.xml\r\n\r\n* Rename appropriate files\r\n\r\n* Refactor to pass checkstyle check\r\n\r\n---------\r\n\r\nCo-authored-by: Ken Jin \u003c28750310+Fidget-Spinner@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":17},"test-code":{"insertions":112,"deletions":21}}}]},{"date":"2024-03-22","commitResults":[{"hash":"66944d15ed756e97f9effe4f0a56c52ddaa8619b","isMergeCommit":false,"messageTitle":"Fix StorageClassDiagram.puml (#57)","messageBody":"","tags":["v1.2"],"fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-25","commitResults":[{"hash":"5ddd2edbeef90b879a212847b0adb99d3195dbb0","isMergeCommit":false,"messageTitle":"Add Basics Section to UG (#76)","messageBody":"* Add Images\r\n\r\n* Add Clear Command Example\r\n\r\n* Update UserGuide.md\r\n\r\n* Update UserGuide.md","fileTypesAndContributionMap":{"docs":{"insertions":88,"deletions":1}}},{"hash":"3b7a8e181ae25318b3315eefc2fb8c5b60091d19","isMergeCommit":false,"messageTitle":"Fix UserGuide.md (#77)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-29","commitResults":[{"hash":"24e6094d897c3a900d4ce65e4cb058accc152baf","isMergeCommit":false,"messageTitle":"Update DG (#99)","messageBody":"Added proposed implementation for\r\nAttendance Tracking feature.","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":0}}}]},{"date":"2024-04-05","commitResults":[{"hash":"8de5f05a51c5290ab84d74409349c83b1832f5d4","isMergeCommit":false,"messageTitle":"Add a set attendance feature (#111)","messageBody":"Co-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","tags":["v1.3"],"fileTypesAndContributionMap":{"functional-code":{"insertions":519,"deletions":16},"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":239,"deletions":19}}}]}],"alphajae11":[{"date":"2024-03-04","commitResults":[{"hash":"78165e32e484b6fe123719efe72ab877688d848d","isMergeCommit":false,"messageTitle":"Add Use Cases, Target user profile, value proposition, and user stories documentation (#14)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":21}}}]},{"date":"2024-03-07","commitResults":[{"hash":"ce31a923536e34de5f6c27c75ee1c687fef88c0e","isMergeCommit":false,"messageTitle":"Add Jae Geun\u0027s Profile Picture (#26)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n* Add my profile picture in AboutUs.md\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"bda69b0725039b3223eb93149b6c41f8f69c2d4e","isMergeCommit":false,"messageTitle":"Add assign command (#45)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n* Add my profile picture in AboutUs.md\r\n\r\n* Add Assign Command as a part of v1.2\r\n\r\n* Adhere to code standards\r\n\r\n* Adhere to java checkstyle\r\n\r\n* Adhere to java checkstyle standard\r\n\r\n* Adhere to java checkstyle standard for AssignCommandParser\r\n\r\n* Add some test for AssignCommand\r\n\r\n* Add some test for AssignCommandParserTest\r\n\r\n* Updated AssignCommand with CCAs\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e\r\nCo-authored-by: Ken Jin \u003ckenjin4096@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":233,"deletions":0},"test-code":{"insertions":128,"deletions":11}}}]},{"date":"2024-03-26","commitResults":[{"hash":"0a87ef8ffacbcdf3e6724e246dd21669436a20ce","isMergeCommit":false,"messageTitle":"Add Mini intro with general format of the commands (#80)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n* Add my profile picture in AboutUs.md\r\n\r\n* Add Mini-Intro with general formats of commands\r\n\r\nAdd mini intro to the (very few) GUI elements we have\r\n\r\nAdd a section on the general format of the commands for people who might not have much experience with commands\r\n\r\n* Make minor edits to UserGuide.md as requested\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}}]},{"date":"2024-03-31","commitResults":[{"hash":"cf0ff997f9c760f57faee68fef9a1bd0e00f6bc2","isMergeCommit":false,"messageTitle":"Update dev guide - Proposed feature of feedback (#105)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n* Add my profile picture in AboutUs.md\r\n\r\n* Adding on my input in developerGuide\r\n\r\n* Change according to the feedback received\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"32a0234aa9e5e05b8237859ca4fc37d022b33882","isMergeCommit":false,"messageTitle":"Add metacontact to the CCA manager (#107)","messageBody":"* Add metacontact to the CCA manager\r\n\r\n* Edit the TypicalPersons with details about Amy and Bob\r\n\r\n* Solve the issue of checks on github\r\n\r\n* Edit the editcommand and typicalPersonalsAddressBook.json according to the comments\r\n\r\n* Fix all tests and a bunch of bugs\r\n\r\n* Remove debugging statement\r\n\r\n---------\r\n\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":179,"deletions":22},"test-code":{"insertions":120,"deletions":24}}}]}],"LifHoshi":[{"date":"2024-03-02","commitResults":[{"hash":"1213e981f70f26c45c5bed5b02fbc628e3ed12a2","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":101,"deletions":64}}},{"hash":"0a224865b7ab76ed2483f285223f63ea4fcdd6b0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from LifHoshi/branch-UserGuide","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"9b05cc46a6c47ca893294f9651edb5c8c45004bd","isMergeCommit":true,"messageTitle":"Merge pull request #13 from LifHoshi/master","messageBody":"Update User Guide And Upload Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"0cd417f2e96639b4797916ef0fa57c165d224375","isMergeCommit":false,"messageTitle":"Update small change on UserGuide.md to meet with tp Dashboard (#24)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"e724e1a176faf7bd8cac9289c8feef233eb40e13","isMergeCommit":false,"messageTitle":"Update UserGuide.md about milestone v1.2 new feature (#48)","messageBody":"* Update small change on UserGuide.md to meet with tp Dashboard\r\n\r\n* Update UserGuide.md relate to filter tags\r\n\r\n* Update UserGuide.md in milestone v1.2\r\n\r\nDescribe the new feature function in UserGuide and provide the format of the command. Images examples will be provided when the final version is done.","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":17}}},{"hash":"46989bfc03c3645448fc7e5cefab7ad9b12eabf7","isMergeCommit":false,"messageTitle":"Update CCA class into diagram (#50)","messageBody":"* Update CCA class into diagram\r\n\r\n* Update CCA class into diagram","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"ea52d0f76c39d49b283d5feac98852b4fd248740","isMergeCommit":false,"messageTitle":"Update UndoRedoState from addressbook to CCA Manager (#58)","messageBody":"* Delete docs/images/lifhoshi.jpg\r\n\r\nWrong photo format\r\n\r\n* Change the photo format from jpg to png\r\n\r\n* Update new UndoRedoState6 relate to filter\r\n\r\n* Update all the UndoRedoState to CCA Manager\r\n\r\n* Update UndoRedoState6.puml\r\n\r\nUpdateRedoState0 to UpdateRedoState6 all the original address book have been replaced with our own CCA Manager. \r\n\r\nMeanwhile change a new line in some file to pass the test.","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":41,"deletions":19}}}]},{"date":"2024-03-28","commitResults":[{"hash":"f36ec4ca936a3fb2990128f723e30a519637337c","isMergeCommit":false,"messageTitle":"Update UserGuide.md about wrong command in UG (#86)","messageBody":"fix the wrong command described in issue","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-31","commitResults":[{"hash":"a9c7e08f084bcb2933fd49b44f9862e0613a0653","isMergeCommit":false,"messageTitle":"Update v1.3 feature about new command owe (#101)","messageBody":"* Update CCA Manager\u0027s new feature about Owe command\r\n\r\n* Fix some stupid format problem\r\n\r\n* Modify some credits and check changes\r\n\r\n* Modify nuance of white space errors\r\n\r\n* Modify further nuance of errors\r\n\r\n* Modify again about checkstyle\r\n\r\n* Fix the format issue in the test","fileTypesAndContributionMap":{"functional-code":{"insertions":364,"deletions":21},"docs":{"insertions":17,"deletions":17},"test-code":{"insertions":227,"deletions":27}}}]}],"Fidget-Spinner":[{"date":"2024-02-25","commitResults":[{"hash":"528aca17076c7442fdb249e5ae1fdbed7bda7154","isMergeCommit":false,"messageTitle":"Use MarkBind instead of Jekyll for project website","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":170,"deletions":0},"docs":{"insertions":311,"deletions":190}}},{"hash":"970018e28966596eb65633fd658a0b8fb7290a27","isMergeCommit":false,"messageTitle":"Rename AB3 to CCA Manager in docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"68f8adaedfae409bcf3a1f2bf93f07fdde2a0d54","isMergeCommit":false,"messageTitle":"Add Ken Jin\u0027s profile picture (#22)","messageBody":"* Add Ken Jin\u0027s profile picture\r\n\r\n* Use correct naming style","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c30058aa5c19f5b1607462783e24c81f91544715","isMergeCommit":false,"messageTitle":"Remove Lifu\u0027s JPG photo (#21)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f5fbbe4d776377d0b7b822108b3a088dd7df25c6","isMergeCommit":false,"messageTitle":"Rename Ken Jin\u0027s JPG to PNG (#28)","messageBody":"Part of https://github.com/AY2324S2-CS2103T-W11-2/tp/issues/5","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5035617542963494a3c61870c36f2884ea49618e","isMergeCommit":false,"messageTitle":"Update README for CCA Manager details (#23)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":11}}},{"hash":"d8732f88cf017ed11259b0833b52e4cf2ffdb6de","isMergeCommit":false,"messageTitle":"Remove AB3 from user guide (#31)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":14}}}]},{"date":"2024-03-17","commitResults":[{"hash":"e5ce4c156ccdaf20c412e84f9a1c0e22e1f3ce91","isMergeCommit":false,"messageTitle":"Rename user-facing parts to CCA Manager (#41)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"0ef52b845cb5b00ef5478fbea1187b3c4af6d2ee","isMergeCommit":false,"messageTitle":"Add a filter by tag/group command (#43)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":152,"deletions":0},"test-code":{"insertions":222,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"c34128de4129ddb1dc73108f4be74dc206723b22","isMergeCommit":false,"messageTitle":"Filter by cca (#49)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":13},"other":{"insertions":12,"deletions":12},"test-code":{"insertions":38,"deletions":35}}}]},{"date":"2024-03-23","commitResults":[{"hash":"0e304d9eea33bf2a9ffe96ec4d7c5ed99934c782","isMergeCommit":false,"messageTitle":"Update UniqueCcaList in model class diagram (#60)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"6652f72ba2861fc71bcf48940ef75d5bba85caed","isMergeCommit":false,"messageTitle":"Partially revert 1213e98 (#71)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":64,"deletions":102}}}]},{"date":"2024-03-25","commitResults":[{"hash":"a6ec7a40160b66da07b8f424234f536e6961d6f0","isMergeCommit":false,"messageTitle":"Explain target audience prerequisite knowledge (#73)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}}]},{"date":"2024-03-26","commitResults":[{"hash":"bf5d0b84d88c5be3f79b747f23913e41d7b235f2","isMergeCommit":false,"messageTitle":"Add small gloassary and os-specific info (#81)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}}]},{"date":"2024-03-29","commitResults":[{"hash":"6dfdfe9da2f30aca5c93b030ef9af69002a8c013","isMergeCommit":false,"messageTitle":"Enable assertions in build.gradle (#96)","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":6,"deletions":0}}},{"hash":"dec0b65c31d7cc9b3a9f2f50cd679b55f4437d67","isMergeCommit":false,"messageTitle":"Update DeveloperGuide with payment splitting (#98)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"ff2c9f1b0ba04ff713abdb272ddb7e401c4fea77","isMergeCommit":false,"messageTitle":"Add ability to filer by CCA and roles (#113)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":20},"test-code":{"insertions":118,"deletions":29}}},{"hash":"654f033b9f9d44175bcfbb457067b669fabd0cca","isMergeCommit":false,"messageTitle":"Add a charge command (#115)","messageBody":"* Add ability to filer by CCA and roles\r\n\r\n* Add a charge command","fileTypesAndContributionMap":{"functional-code":{"insertions":175,"deletions":9},"test-code":{"insertions":4,"deletions":2}}},{"hash":"72cd1ba75d344698df93c743d21d2dbc94154897","isMergeCommit":false,"messageTitle":"Implement delete cca command (#117)","messageBody":"Co-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":187,"deletions":2},"test-code":{"insertions":5,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"JuliaPoo":{"docs":407,"functional-code":929,"test-code":198,"other":42},"chuahjiajie":{"docs":109,"functional-code":730,"test-code":300},"alphajae11":{"docs":96,"functional-code":366,"test-code":227},"LifHoshi":{"docs":57,"functional-code":337,"test-code":207},"Fidget-Spinner":{"docs":308,"functional-code":543,"test-code":320,"other":175}},"authorContributionVariance":{"JuliaPoo":32861.465,"chuahjiajie":18036.947,"alphajae11":5807.5522,"LifHoshi":10844.4375,"Fidget-Spinner":21054.615},"authorDisplayNameMap":{"JuliaPoo":"CS2103T-W11-2 POON..LIAN","chuahjiajie":"CS2103T-W11-2 CHUA.. JIE","alphajae11":"CS2103T-W11-2 LEE ..GEUN","LifHoshi":"CS2103T-W11-2 WANG..LIFU","Fidget-Spinner":"CS2103T-W11-2 OOI .. JIN"}} +{"authorDailyContributionsMap":{"JuliaPoo":[{"date":"2024-03-03","commitResults":[{"hash":"929e75f1a864428141dc8315d6e6818e344dd1cb","isMergeCommit":false,"messageTitle":"Updated AboutUs.md and added portfolios for each member (#15)","messageBody":"* Docs: Updated AboutUs.md\r\n\r\nUpdated according to https://nus-cs2103-ay2324s2.github.io/website/schedule/week7/project.html\r\nIt is not completed, we require other members to add their profile pictures.\r\n\r\n* Update AboutUs.md","fileTypesAndContributionMap":{"docs":{"insertions":80,"deletions":23}}}]},{"date":"2024-03-07","commitResults":[{"hash":"abd771c93a28918f4ad29e305cab259478e9ac9d","isMergeCommit":false,"messageTitle":"Docs: Updated glossary (#16)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"7b29ee45f34b02114bade29e804ba3119999b723","isMergeCommit":false,"messageTitle":"Update non-functional requirements. (#17)","messageBody":"* Docs: Update non-functional requirements.\r\n\r\n* Fix spacing\r\n\r\n---------\r\n\r\nCo-authored-by: Ken Jin \u003ckenjin4096@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":3}}}]},{"date":"2024-03-22","commitResults":[{"hash":"b6e4c3cda1f61e15fcc2350a4057ad303b9952d0","isMergeCommit":false,"messageTitle":"Fixes 2 puml files (#54)","messageBody":"1. BetterModelClassDiagram.puml now allows multiple Cca to be referenced by Person\r\n2. ModelClassDiagram.puml now uses Cca instead of CCA","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"8626b46df8dec69b1a78f4583b536d8562b77454","isMergeCommit":false,"messageTitle":"Implements Role and CCA labels in PersonCard (#52)","messageBody":"* Implements Role and CCA labels in PersonCard\r\n\r\n* Fixes checkstyle violations","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":7}}}]},{"date":"2024-03-25","commitResults":[{"hash":"e86664b53ff3bdd10ed201645a3f8ee45e214646","isMergeCommit":false,"messageTitle":"Add an introduction to the UG (#74)","messageBody":"* Add an introduction to the UG\r\n\r\n* Update UserGuide.md","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":1}}},{"hash":"53f7738d9b882e09eb1d3fc28b07eeb230a90524","isMergeCommit":false,"messageTitle":"Adds FAQ questions in UG (#75)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":1}}}]},{"date":"2024-03-27","commitResults":[{"hash":"a583dbccd9e58fb08ceebc6f9f2bb9df3348bd79","isMergeCommit":false,"messageTitle":"Edits the UG up till Tutorials (#82)","messageBody":"* Edits the UG up till Tutorials\r\n\r\n* Renames section in UG\r\n\r\n* Fix `edit` reference in UG","fileTypesAndContributionMap":{"other":{"insertions":11,"deletions":0},"docs":{"insertions":87,"deletions":51}}},{"hash":"79bf7d59c98bc1fe64e616be55687486004164b5","isMergeCommit":false,"messageTitle":"Style print navbar in UG (#84)","messageBody":"* Style print navbar in UG\r\n\r\n* Update main.css","fileTypesAndContributionMap":{"other":{"insertions":37,"deletions":0},"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-29","commitResults":[{"hash":"1871c82bed8d3776134128b9964961678ff3d485","isMergeCommit":false,"messageTitle":"Refactor from tag to role and fix many issues (#93)","messageBody":"1. Fixed `edit` command not being able to edit CCAs only\r\n2. Fixed `Role`s not being able to have spaces (contradicts examples in the UG)\r\n2. Fixed `edit` command example is malformed\r\n3. Wrong `assign` documentation\r\n4. A bunch of string builders were missing CCA field\r\n - Also fixed the serialising tests to include the CCA field\r\n5. A bunch of code that is `Cca` object adjacent has documentation that mentions `tag` instead of `cca`.","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":243},"other":{"insertions":2,"deletions":2},"docs":{"insertions":27,"deletions":27},"test-code":{"insertions":190,"deletions":188}}},{"hash":"b81a63d81022baeacd4c908aa4a32a7d5c027697","isMergeCommit":false,"messageTitle":"Documents the Proposed Better CCA-level Actions Meta-feature (#100)","messageBody":"Also fixed DG styling.\r\n\r\nCo-authored-by: chuahjiajie \u003c122253924+chuahjiajie@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":6},"docs":{"insertions":152,"deletions":1}}}]},{"date":"2024-03-31","commitResults":[{"hash":"62205c918db698648e388259969e176c969640bb","isMergeCommit":false,"messageTitle":"Implement UniqueCcaList and updated the DG (#104)","messageBody":"* Implement UniqueCcaList and updated the DG\r\n\r\n1. When Person gets added/editted in the AddressBook, a new Person\r\nis created uses Cca objects from AddressBook.ccas (of type UniqueCcaList).\r\nThis ensures that Person objects from AddressBook has the same Cca objects.\r\nThis allows us to store meta-data in Cca objects that is immediately shared\r\nacross all Person objects that has the same Cca. At the same time, no\r\nmodifications to Command is needed, as everything is performed at the\r\nAddressBook level.\r\n\r\n2. The serialiser for AddressBook is modified to also serialise a list of\r\nCca objects. Do delete your addressbook.json before testing this new code.\r\n\r\n3. In the future, UniqueCcaList will be made up of CcaFull objects, which\r\nare derived from Cca class but contain metadata. Person will still use Cca\r\nobjects.\r\n\r\n* Update UniqueCcaList.java\r\n\r\n* Fix bug caused by merge with master","fileTypesAndContributionMap":{"functional-code":{"insertions":301,"deletions":9},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"3b851cf2b44b8e4a1c0f759a4abb30dd915fba81","isMergeCommit":false,"messageTitle":"Implement displaying of CCA (#109)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":385,"deletions":56},"other":{"insertions":1,"deletions":1},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":11,"deletions":0}}}]}],"chuahjiajie":[{"date":"2024-03-07","commitResults":[{"hash":"aca1d6a0a9a6e7e2d5b8f4c2f01acd7eeeebc7ad","isMergeCommit":false,"messageTitle":"Update AboutUs (#27)","messageBody":"* Comply with .png format\r\n\r\nChange the names of the following images:\r\nchuahjiajie.jpg -\u003e chuahjiajie.png\r\n\r\nAdditionally, the image source for the \"Lifu\"\r\nprofile was adjusted to the .png file instead\r\nof the .jpg file.\r\n\r\n* Remove \"title:\"\r\n\r\nIncluding \"title:\" was evoking an error.\r\n\r\n* Add Deliverables and Deadlines Role\r\n\r\nAppended \"Deliverables and Deadlines\" role to\r\nprofile of Chuah Jia Jie.\r\n\r\n---------\r\n\r\nCo-authored-by: chuahjiajie \u003cjiajiechuah@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}},{"hash":"298e536bc5527abf8934ca49379a8c69cc4cbde1","isMergeCommit":false,"messageTitle":"Add \"title:\" Back to Heading (#32)","messageBody":"* Comply with .png format\r\n\r\nChange the names of the following images:\r\nchuahjiajie.jpg -\u003e chuahjiajie.png\r\n\r\nAdditionally, the image source for the \"Lifu\"\r\nprofile was adjusted to the .png file instead\r\nof the .jpg file.\r\n\r\n* Remove \"title:\"\r\n\r\nIncluding \"title:\" was evoking an error.\r\n\r\n* Add Deliverables and Deadlines Role\r\n\r\nAppended \"Deliverables and Deadlines\" role to\r\nprofile of Chuah Jia Jie.\r\n\r\n* Add \"title:\" Back\r\n\r\nAdded the \"title:\" portion back to the\r\nAboutUs file.\r\n\r\n---------\r\n\r\nCo-authored-by: chuahjiajie \u003cjiajiechuah@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"f5f67df896a4cc307699bfef4c588491966d938f","isMergeCommit":false,"messageTitle":"Add CCA Label (#47)","messageBody":"* Add CCA CLI Syntax\r\n\r\n* Add CCA Object\r\n\r\n* Edit Person to Include CCA\r\n\r\n* Add ParseUtil Compliance with CCA\r\n\r\n* Edit Add Command\r\n\r\nMade Add Command comply with\r\nCCA.\r\n\r\n* Edit Edit Command\r\n\r\n* Edit Edit Parser\r\n\r\n* Create JsonAdaptedCCA\r\n\r\n* Edit JsonAdaptedPerson\r\n\r\n* Edit SampleDataUtil\r\n\r\n* Fix CLI Prefix\r\n\r\n* Edit Json Files and Fix Issue\r\n\r\nEdited Json Files to comply with new\r\n\"CCA\" parameter.\r\n\r\nAdditionally, fixed an issue with CCA\r\nclass. Issue was that validation regex\r\nwas incorrect and did not accept\r\nwhitespace.\r\n\r\n* Add CCA to UI\r\n\r\n* Fix JsonAdaptedPerson\r\n\r\nNeglected to add a few lines to\r\nthe constructor.\r\n\r\n* Fix Add Command Error\r\n\r\n* Fix Existing Tests\r\n\r\n* Add CCA Test\r\n\r\n* fix tests\r\n\r\n* Refactor to follow checkstyle.xml\r\n\r\n* Rename appropriate files\r\n\r\n* Refactor to pass checkstyle check\r\n\r\n---------\r\n\r\nCo-authored-by: Ken Jin \u003c28750310+Fidget-Spinner@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":17},"test-code":{"insertions":112,"deletions":21}}}]},{"date":"2024-03-22","commitResults":[{"hash":"66944d15ed756e97f9effe4f0a56c52ddaa8619b","isMergeCommit":false,"messageTitle":"Fix StorageClassDiagram.puml (#57)","messageBody":"","tags":["v1.2"],"fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-25","commitResults":[{"hash":"5ddd2edbeef90b879a212847b0adb99d3195dbb0","isMergeCommit":false,"messageTitle":"Add Basics Section to UG (#76)","messageBody":"* Add Images\r\n\r\n* Add Clear Command Example\r\n\r\n* Update UserGuide.md\r\n\r\n* Update UserGuide.md","fileTypesAndContributionMap":{"docs":{"insertions":88,"deletions":1}}},{"hash":"3b7a8e181ae25318b3315eefc2fb8c5b60091d19","isMergeCommit":false,"messageTitle":"Fix UserGuide.md (#77)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-29","commitResults":[{"hash":"24e6094d897c3a900d4ce65e4cb058accc152baf","isMergeCommit":false,"messageTitle":"Update DG (#99)","messageBody":"Added proposed implementation for\r\nAttendance Tracking feature.","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":0}}}]},{"date":"2024-04-05","commitResults":[{"hash":"8de5f05a51c5290ab84d74409349c83b1832f5d4","isMergeCommit":false,"messageTitle":"Add a set attendance feature (#111)","messageBody":"Co-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","tags":["v1.3"],"fileTypesAndContributionMap":{"functional-code":{"insertions":519,"deletions":16},"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":239,"deletions":19}}}]}],"alphajae11":[{"date":"2024-03-04","commitResults":[{"hash":"78165e32e484b6fe123719efe72ab877688d848d","isMergeCommit":false,"messageTitle":"Add Use Cases, Target user profile, value proposition, and user stories documentation (#14)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":21}}}]},{"date":"2024-03-07","commitResults":[{"hash":"ce31a923536e34de5f6c27c75ee1c687fef88c0e","isMergeCommit":false,"messageTitle":"Add Jae Geun\u0027s Profile Picture (#26)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n* Add my profile picture in AboutUs.md\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"bda69b0725039b3223eb93149b6c41f8f69c2d4e","isMergeCommit":false,"messageTitle":"Add assign command (#45)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n* Add my profile picture in AboutUs.md\r\n\r\n* Add Assign Command as a part of v1.2\r\n\r\n* Adhere to code standards\r\n\r\n* Adhere to java checkstyle\r\n\r\n* Adhere to java checkstyle standard\r\n\r\n* Adhere to java checkstyle standard for AssignCommandParser\r\n\r\n* Add some test for AssignCommand\r\n\r\n* Add some test for AssignCommandParserTest\r\n\r\n* Updated AssignCommand with CCAs\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e\r\nCo-authored-by: Ken Jin \u003ckenjin4096@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":233,"deletions":0},"test-code":{"insertions":128,"deletions":11}}}]},{"date":"2024-03-26","commitResults":[{"hash":"0a87ef8ffacbcdf3e6724e246dd21669436a20ce","isMergeCommit":false,"messageTitle":"Add Mini intro with general format of the commands (#80)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n* Add my profile picture in AboutUs.md\r\n\r\n* Add Mini-Intro with general formats of commands\r\n\r\nAdd mini intro to the (very few) GUI elements we have\r\n\r\nAdd a section on the general format of the commands for people who might not have much experience with commands\r\n\r\n* Make minor edits to UserGuide.md as requested\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}}]},{"date":"2024-03-31","commitResults":[{"hash":"cf0ff997f9c760f57faee68fef9a1bd0e00f6bc2","isMergeCommit":false,"messageTitle":"Update dev guide - Proposed feature of feedback (#105)","messageBody":"* Accomplish 2 tasks given regarding Developer Guide\r\n\r\n* Fixed minor typo\r\n\r\nRealised you\u0027ve enabled others to edit so yay\r\n\r\n* Docs: Formatting\r\n\r\n1. Standardised `EXCO Member` by replacing references to `CCA Organiser` with `EXCO Member`\r\n2. Replaced Use Case documentation with verbatim code blocks so that it looks somewhat nicer in markbind\r\n3. Backticked glossary terms\r\n\r\n* Add my profile picture in AboutUs.md\r\n\r\n* Adding on my input in developerGuide\r\n\r\n* Change according to the feedback received\r\n\r\n---------\r\n\r\nCo-authored-by: alphajae11 \u003cleejaegeun20#gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"32a0234aa9e5e05b8237859ca4fc37d022b33882","isMergeCommit":false,"messageTitle":"Add metacontact to the CCA manager (#107)","messageBody":"* Add metacontact to the CCA manager\r\n\r\n* Edit the TypicalPersons with details about Amy and Bob\r\n\r\n* Solve the issue of checks on github\r\n\r\n* Edit the editcommand and typicalPersonalsAddressBook.json according to the comments\r\n\r\n* Fix all tests and a bunch of bugs\r\n\r\n* Remove debugging statement\r\n\r\n---------\r\n\r\nCo-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e\r\nCo-authored-by: Jules \u003c57632293+JuliaPoo@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":179,"deletions":22},"test-code":{"insertions":120,"deletions":24}}}]}],"LifHoshi":[{"date":"2024-03-02","commitResults":[{"hash":"1213e981f70f26c45c5bed5b02fbc628e3ed12a2","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":101,"deletions":64}}},{"hash":"0a224865b7ab76ed2483f285223f63ea4fcdd6b0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from LifHoshi/branch-UserGuide","messageBody":"Update UserGuide.md","fileTypesAndContributionMap":{}},{"hash":"9b05cc46a6c47ca893294f9651edb5c8c45004bd","isMergeCommit":true,"messageTitle":"Merge pull request #13 from LifHoshi/master","messageBody":"Update User Guide And Upload Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"0cd417f2e96639b4797916ef0fa57c165d224375","isMergeCommit":false,"messageTitle":"Update small change on UserGuide.md to meet with tp Dashboard (#24)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"e724e1a176faf7bd8cac9289c8feef233eb40e13","isMergeCommit":false,"messageTitle":"Update UserGuide.md about milestone v1.2 new feature (#48)","messageBody":"* Update small change on UserGuide.md to meet with tp Dashboard\r\n\r\n* Update UserGuide.md relate to filter tags\r\n\r\n* Update UserGuide.md in milestone v1.2\r\n\r\nDescribe the new feature function in UserGuide and provide the format of the command. Images examples will be provided when the final version is done.","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":17}}},{"hash":"46989bfc03c3645448fc7e5cefab7ad9b12eabf7","isMergeCommit":false,"messageTitle":"Update CCA class into diagram (#50)","messageBody":"* Update CCA class into diagram\r\n\r\n* Update CCA class into diagram","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"ea52d0f76c39d49b283d5feac98852b4fd248740","isMergeCommit":false,"messageTitle":"Update UndoRedoState from addressbook to CCA Manager (#58)","messageBody":"* Delete docs/images/lifhoshi.jpg\r\n\r\nWrong photo format\r\n\r\n* Change the photo format from jpg to png\r\n\r\n* Update new UndoRedoState6 relate to filter\r\n\r\n* Update all the UndoRedoState to CCA Manager\r\n\r\n* Update UndoRedoState6.puml\r\n\r\nUpdateRedoState0 to UpdateRedoState6 all the original address book have been replaced with our own CCA Manager. \r\n\r\nMeanwhile change a new line in some file to pass the test.","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":41,"deletions":19}}}]},{"date":"2024-03-28","commitResults":[{"hash":"f36ec4ca936a3fb2990128f723e30a519637337c","isMergeCommit":false,"messageTitle":"Update UserGuide.md about wrong command in UG (#86)","messageBody":"fix the wrong command described in issue","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-31","commitResults":[{"hash":"a9c7e08f084bcb2933fd49b44f9862e0613a0653","isMergeCommit":false,"messageTitle":"Update v1.3 feature about new command owe (#101)","messageBody":"* Update CCA Manager\u0027s new feature about Owe command\r\n\r\n* Fix some stupid format problem\r\n\r\n* Modify some credits and check changes\r\n\r\n* Modify nuance of white space errors\r\n\r\n* Modify further nuance of errors\r\n\r\n* Modify again about checkstyle\r\n\r\n* Fix the format issue in the test","fileTypesAndContributionMap":{"functional-code":{"insertions":364,"deletions":21},"docs":{"insertions":17,"deletions":17},"test-code":{"insertions":227,"deletions":27}}}]},{"date":"2024-04-05","commitResults":[{"hash":"4b9a8d74b065aedbf6916b9abfcbe08784b9d7a8","isMergeCommit":false,"messageTitle":"Update UG relate to v1.3 (#120)","messageBody":"Co-authored-by: Ken Jin \u003ckenjin4096@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":4}}}]}],"Fidget-Spinner":[{"date":"2024-02-25","commitResults":[{"hash":"528aca17076c7442fdb249e5ae1fdbed7bda7154","isMergeCommit":false,"messageTitle":"Use MarkBind instead of Jekyll for project website","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":170,"deletions":0},"docs":{"insertions":311,"deletions":190}}},{"hash":"970018e28966596eb65633fd658a0b8fb7290a27","isMergeCommit":false,"messageTitle":"Rename AB3 to CCA Manager in docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"68f8adaedfae409bcf3a1f2bf93f07fdde2a0d54","isMergeCommit":false,"messageTitle":"Add Ken Jin\u0027s profile picture (#22)","messageBody":"* Add Ken Jin\u0027s profile picture\r\n\r\n* Use correct naming style","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c30058aa5c19f5b1607462783e24c81f91544715","isMergeCommit":false,"messageTitle":"Remove Lifu\u0027s JPG photo (#21)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f5fbbe4d776377d0b7b822108b3a088dd7df25c6","isMergeCommit":false,"messageTitle":"Rename Ken Jin\u0027s JPG to PNG (#28)","messageBody":"Part of https://github.com/AY2324S2-CS2103T-W11-2/tp/issues/5","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5035617542963494a3c61870c36f2884ea49618e","isMergeCommit":false,"messageTitle":"Update README for CCA Manager details (#23)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":11}}},{"hash":"d8732f88cf017ed11259b0833b52e4cf2ffdb6de","isMergeCommit":false,"messageTitle":"Remove AB3 from user guide (#31)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":14}}}]},{"date":"2024-03-17","commitResults":[{"hash":"e5ce4c156ccdaf20c412e84f9a1c0e22e1f3ce91","isMergeCommit":false,"messageTitle":"Rename user-facing parts to CCA Manager (#41)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"0ef52b845cb5b00ef5478fbea1187b3c4af6d2ee","isMergeCommit":false,"messageTitle":"Add a filter by tag/group command (#43)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":152,"deletions":0},"test-code":{"insertions":222,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"c34128de4129ddb1dc73108f4be74dc206723b22","isMergeCommit":false,"messageTitle":"Filter by cca (#49)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":13},"other":{"insertions":12,"deletions":12},"test-code":{"insertions":38,"deletions":35}}}]},{"date":"2024-03-23","commitResults":[{"hash":"0e304d9eea33bf2a9ffe96ec4d7c5ed99934c782","isMergeCommit":false,"messageTitle":"Update UniqueCcaList in model class diagram (#60)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"6652f72ba2861fc71bcf48940ef75d5bba85caed","isMergeCommit":false,"messageTitle":"Partially revert 1213e98 (#71)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":64,"deletions":102}}}]},{"date":"2024-03-25","commitResults":[{"hash":"a6ec7a40160b66da07b8f424234f536e6961d6f0","isMergeCommit":false,"messageTitle":"Explain target audience prerequisite knowledge (#73)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}}]},{"date":"2024-03-26","commitResults":[{"hash":"bf5d0b84d88c5be3f79b747f23913e41d7b235f2","isMergeCommit":false,"messageTitle":"Add small gloassary and os-specific info (#81)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":3}}}]},{"date":"2024-03-29","commitResults":[{"hash":"6dfdfe9da2f30aca5c93b030ef9af69002a8c013","isMergeCommit":false,"messageTitle":"Enable assertions in build.gradle (#96)","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":6,"deletions":0}}},{"hash":"dec0b65c31d7cc9b3a9f2f50cd679b55f4437d67","isMergeCommit":false,"messageTitle":"Update DeveloperGuide with payment splitting (#98)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":0}}}]},{"date":"2024-04-04","commitResults":[{"hash":"ff2c9f1b0ba04ff713abdb272ddb7e401c4fea77","isMergeCommit":false,"messageTitle":"Add ability to filer by CCA and roles (#113)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":20},"test-code":{"insertions":118,"deletions":29}}},{"hash":"654f033b9f9d44175bcfbb457067b669fabd0cca","isMergeCommit":false,"messageTitle":"Add a charge command (#115)","messageBody":"* Add ability to filer by CCA and roles\r\n\r\n* Add a charge command","fileTypesAndContributionMap":{"functional-code":{"insertions":175,"deletions":9},"test-code":{"insertions":4,"deletions":2}}},{"hash":"72cd1ba75d344698df93c743d21d2dbc94154897","isMergeCommit":false,"messageTitle":"Implement delete cca command (#117)","messageBody":"Co-authored-by: Jules \u003cjulia.poo.poo.poo@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":187,"deletions":2},"test-code":{"insertions":5,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"JuliaPoo":{"docs":408,"functional-code":929,"test-code":198,"other":42},"chuahjiajie":{"docs":108,"functional-code":730,"test-code":300},"alphajae11":{"docs":96,"functional-code":366,"test-code":227},"LifHoshi":{"docs":126,"functional-code":337,"test-code":207},"Fidget-Spinner":{"docs":307,"functional-code":543,"test-code":320,"other":175}},"authorContributionVariance":{"JuliaPoo":32861.465,"chuahjiajie":18036.947,"alphajae11":5807.5522,"LifHoshi":10900.963,"Fidget-Spinner":21054.615},"authorDisplayNameMap":{"JuliaPoo":"CS2103T-W11-2 POON..LIAN","chuahjiajie":"CS2103T-W11-2 CHUA.. JIE","alphajae11":"CS2103T-W11-2 LEE ..GEUN","LifHoshi":"CS2103T-W11-2 WANG..LIFU","Fidget-Spinner":"CS2103T-W11-2 OOI .. JIN"}} diff --git a/AY2324S2-CS2103T-W13-4_tp_master/authorship.json b/AY2324S2-CS2103T-W13-4_tp_master/authorship.json index 8f531282..e02454f4 100644 --- a/AY2324S2-CS2103T-W13-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W13-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W13-4/tp/actions)","lastModifiedDate":"2024-03-06"},{"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":"chin-herng"},"content":"# TeamTracker","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"## Description","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"TeamTracker is a productivity app designed for leaders managing teams, aimed at reducing the stress of task management and team coordination. It helps keep track of team members\u0027 contact info, roles, tasks, deadlines, and meetings, offering leaders a clearer overview of their team\u0027s structure and responsibilities.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"## Table of Contents","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"- [TeamTracker](#teamtracker)","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":" - [Description](#description)","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" - [Table of Contents](#table-of-contents)","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" - [Installation](#installation)","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" - [Usage](#usage)","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" - [Credits](#credits)","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"## Installation","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"Download the latest `teamtracker.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-4/tp/releases).","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"## Usage","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"1. Ensure you have Java `11` or above installed in your computer.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"2. Copy `teamtracker.jar` to the folder you want to use as the _home folder_ for TeamTracker.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"3. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar teamtracker.jar` command to run the application.","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"## Credits","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"This project is evolved from the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"chin-herng":25,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" String jUnitVersion \u003d \u00275.10.0\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" archiveFileName \u003d \u0027TeamTracker.jar\u0027","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":"run {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Yskie":3,"nobodyishappy":1,"-":72}},{"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":"breezetall"},"content":"### Abdul Khaliq","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/breezetall.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"[[github](https://github.com/breezetall)]","lastModifiedDate":"2024-03-06"},{"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":"chin-herng"},"content":"### Chong Chin Herng","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"\u003cimg src\u003d\"images/chin-herng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"[[github](http://github.com/chin-herng)]","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"### Dinh Tran Hai Chien","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"\u003cimg src\u003d\"images/kaya3842.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"[[github](http://github.com/Kaya3842)]","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"### Tang Hao Liang","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/nobodyishappy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"[[github](http://github.com/nobodyishappy)]","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"* Responsibilities: Mark/Unmark Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":"### Yong Shi Kang","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/yskie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"[[github](http://github.com/yskie)]","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"* Responsibilities: Deletion Feature","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Kaya3842":3,"Yskie":2,"chin-herng":3,"nobodyishappy":6,"-":42,"breezetall":3}},{"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":"Kaya3842"},"content":"# TeamTracker Developer Guide","lastModifiedDate":"2024-03-07"},{"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":"breezetall"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter`, `TaskListPanel` 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":"2024-03-30"},{"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":"Yskie"},"content":"**Note:** The lifeline for `DeleteTaskCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-03-29"},{"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":"Yskie"},"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., `DeleteTaskCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-29"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteTaskCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2024-03-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a task).\u003cbr\u003e","lastModifiedDate":"2024-03-29"},{"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":"Yskie"},"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., `AddTaskCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddTaskCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":"* All `XYZCommandParser` classes (e.g., `AddTaskCommandParser`, `DeleteTaskCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":"**API** : [`Model.java`](https://github.com/AY2324S2-CS2103T-W13-4/tp/blob/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"675\" /\u003e","lastModifiedDate":"2024-03-30"},{"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":"chin-herng"},"content":"* stores the task list data i.e., all `Task` objects (which are contained in a `TaskList` object).","lastModifiedDate":"2024-03-30"},{"lineNumber":129,"author":{"gitId":"chin-herng"},"content":"* stores the currently \u0027selected\u0027 `Task` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cTask\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":"2024-03-30"},{"lineNumber":130,"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":131,"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":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. `TaskList` implements the `ReadOnlyTaskList` interface, and has a `UniqueTaskList` that contains all `Task`s. This allows `TaskList` to be implemented in a way that is consistent to how `AddressBook` is implemented, thus any benefits arising from the design decisions of `Person` also applies to `Task`. We are currently not adopting this model due to time constraints and the benefits are not immediately obvious.\u003cbr\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"chin-herng"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"562.5\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"Kaya3842"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"850\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"Kaya3842"},"content":"* can save address book data, task list data and user preference data in JSON format, and read ","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":"them back into corresponding objects.","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"Kaya3842"},"content":"* inherits from AddressBookStorage, TaskListStorage and UserPrefStorage, which means it can be ","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"Kaya3842"},"content":"treated as one of the three classes (if only the functionality of only one is needed).","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"Kaya3842"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to ","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"Kaya3842"},"content":"save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"nobodyishappy"},"content":"### \\[Proposed\\] Grouping Feature","lastModifiedDate":"2024-03-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"nobodyishappy"},"content":"The proposed grouping mechanism is facilitated by `GroupedUniquePersonList`. It extends `UniquePersonList` with task that are linked between the people of the same group. Additionally, it implements the following operations:","lastModifiedDate":"2024-03-30"},{"lineNumber":171,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":172,"author":{"gitId":"nobodyishappy"},"content":"* `GroupedUniquePersonList#assignTask(Task)` - Add task to everyone in the group","lastModifiedDate":"2024-03-30"},{"lineNumber":173,"author":{"gitId":"nobodyishappy"},"content":"* `GroupedAddressBook#markTask(Index)` - Mark task of everyone in the group","lastModifiedDate":"2024-03-30"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":"* `GroupedAddressBook#unmarkTask(Index)` - Unmark task of everyone in the group","lastModifiedDate":"2024-03-30"},{"lineNumber":175,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":"These operations are exposed in the `Model` interface as `Model#assignTaskToGroup(String, Task)`, `Model#markTaskOfGroup(String, Index)` and `Model#unmarkTaskofGroup(String, Index)` respectively.","lastModifiedDate":"2024-03-30"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":"`GroupedUniquePersonList` adds a new string called `groupName` to label each of their groups.","lastModifiedDate":"2024-03-30"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":"A new list of `GroupedUniquePersonList` will be added to the `Model` interface.","lastModifiedDate":"2024-03-30"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":"To add to the list of `GroupedUniquePersonList`, the Model interface includes `Model#addGroup(String, List\u003cPerson\u003e)` and `Model#addListOfGroups(List\u003cGroup\u003e)`.","lastModifiedDate":"2024-03-30"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":"To remove to the list of `GroupedUniquePersonList`, the Model interface includes `Model#removeGroup(String)`.","lastModifiedDate":"2024-03-30"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":186,"author":{"gitId":"nobodyishappy"},"content":"New operation are exposed in the `Model` interface are `Model#addPersonToGroup(String, Person)`, `Model#removePersonFromGroup(String, Person)` and `Model#deleteAssignedTaskGroup(String, Task)` which would call `UniquePersonList#add(Person)`, `UniquePersonList#remove(Person)` and `UniquePersonList#deleteAssignedTask(Person)`respectively.","lastModifiedDate":"2024-03-30"},{"lineNumber":187,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":188,"author":{"gitId":"nobodyishappy"},"content":"Given below is an example usage scenario and how the grouping mechanism behaves at each step.","lastModifiedDate":"2024-03-30"},{"lineNumber":189,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":190,"author":{"gitId":"nobodyishappy"},"content":"Step 1. The user launches the application for the first time. The list of the `GroupedUniquePersonList` will be empty if there are no groups stored in the storage.","lastModifiedDate":"2024-03-30"},{"lineNumber":191,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":192,"author":{"gitId":"nobodyishappy"},"content":"\u003cpuml src\u003d\"diagrams/GroupingState0.puml\" alt\u003d\"GroupingState0\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":193,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":194,"author":{"gitId":"nobodyishappy"},"content":"Step 2. The user executes `group gn/2103T gp/Ivan gp/Greg gp/Dave` command to group Ivan, Greg and Dave from the displayed person list to one group. The `group` command calls `Model#addGroup(String, List\u003cPerson\u003e)`, which creates a new group with that contains the list of people that was indicated by the user.","lastModifiedDate":"2024-03-30"},{"lineNumber":195,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":196,"author":{"gitId":"nobodyishappy"},"content":"\u003cpuml src\u003d\"diagrams/GroupingState1.puml\" alt\u003d\"GroupingState1\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":197,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":198,"author":{"gitId":"nobodyishappy"},"content":"Step 3. The user executes `assigngroup gn/2103T gt/Task 1` command to assign a task named \"Task 1\" to the group named \"2103T\" from the group list. The `assigngroup` command calls `Model#assignTaskToGroup(String, Task)`, which finds the group with the same name and assign that task to everyone that is in the group.","lastModifiedDate":"2024-03-30"},{"lineNumber":199,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":200,"author":{"gitId":"nobodyishappy"},"content":"\u003cpuml src\u003d\"diagrams/GroupingState2.puml\" alt\u003d\"GroupingState2\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":201,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":202,"author":{"gitId":"nobodyishappy"},"content":"Step 4. The user executes `addpersontogroup gn/2103T gp/Bob` command to add Bob to the group named \"2103T\" from the group list. The `addpersontogroup` command calls `Model#addPersonToGroup(String, Person)`, which finds the group with the same name and add the person to the group.","lastModifiedDate":"2024-03-30"},{"lineNumber":203,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":204,"author":{"gitId":"nobodyishappy"},"content":"Step 5. The user executes `removepersonfromgroup gn/2103T gp/4` command to remove Bob from the group named \"2103T\" from the group list. The `removepersonfromgroup` command calls `Model#removePersonFromGroup(String, Person)`, which finds the group with the same name and remove the person to the group.","lastModifiedDate":"2024-03-30"},{"lineNumber":205,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":206,"author":{"gitId":"nobodyishappy"},"content":"Step 6. The user executes `deletetaskgroup gn/2103T gt/Task 1` command to remove a task named \"Task 1\" from the group named \"2103T\" from the group list. The `deletetaskgroup` command calls `Model#deleteAssignedTaskGroup(String, Task)`, which finds the group with the same name and remove that task from everyone that is in the group.","lastModifiedDate":"2024-03-30"},{"lineNumber":207,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":208,"author":{"gitId":"nobodyishappy"},"content":"Step 7. The user executes `deletegroup gn/2103T` command to remove the group from the list. The `deletegroup` command calls `Model#removeGroup(String)`, which finds the group with the same name and remove that group from the list.","lastModifiedDate":"2024-03-30"},{"lineNumber":209,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":210,"author":{"gitId":"nobodyishappy"},"content":"### \\[Proposed\\] Undo/Redo Feature","lastModifiedDate":"2024-03-30"},{"lineNumber":211,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":212,"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":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"Yskie"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book and task list state in its history.","lastModifiedDate":"2024-03-30"},{"lineNumber":215,"author":{"gitId":"Yskie"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book and task list state from its history.","lastModifiedDate":"2024-03-30"},{"lineNumber":216,"author":{"gitId":"Yskie"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book and task list state from its history.","lastModifiedDate":"2024-03-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"Yskie"},"content":"These operations are exposed in the `Model` interface as `Model#commit()`, `Model#undo()` and `Model#redo()` respectively.","lastModifiedDate":"2024-03-30"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"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":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"Yskie"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book and task list state, with the `addressBookStatePointer` and `taskListStatePointer`.","lastModifiedDate":"2024-03-30"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"Yskie"},"content":"Step 2. The user executes `add n/task 1 …​` to add a new task. The `addtask` command also calls `Model#commit()`, causing another modified task kust state to be saved into the `taskListStateList`.","lastModifiedDate":"2024-03-30"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"Yskie"},"content":"**Note:** If a command fails its execution, it will not call `Model#commit()`, so the state will not be saved.","lastModifiedDate":"2024-03-30"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"Yskie"},"content":"Step 3. 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#undo()`, which will shift the `taskListStatePointer` once to the left, pointing it to the previous task list state, and restores the task list to that state.","lastModifiedDate":"2024-03-30"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"Yskie"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"Yskie"},"content":"**Note:** If the pointers are at index 0, pointing to the initial state, then there are no previous states to restore. The `undo` command uses `Model#canUndo()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo.","lastModifiedDate":"2024-03-30"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"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":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":255,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":261,"author":{"gitId":"Yskie"},"content":"The `redo` command does the opposite — it calls `Model#redo()`, which shifts the pointers once to the right, pointing to the previously undone state, and restores the address book or task list to that state.","lastModifiedDate":"2024-03-30"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":265,"author":{"gitId":"Yskie"},"content":"**Note:** If the `addressBookStatePointer` is at index `addressBookStateList.size() - 1` or `taskListStatePointer` is at index `taskListStateList.size() - 1`, pointing to the latest state, then there are no undone states to restore for the respective commands. The `redo` command uses `Model#canRedo()` 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":"2024-03-30"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"Yskie"},"content":"Step 4. The user then decides to execute the command `listtask`. Commands that do not modify the task list, such as `listtask`, will usually not call `Model#commit()`, `Model#undo()` or `Model#redo()`. Thus, the `taskListStateList` and `taskListStatePointer` remains unchanged.","lastModifiedDate":"2024-03-30"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"Yskie"},"content":" * Pros: Will use less memory (e.g. for `deletetask`, just save the task being deleted).","lastModifiedDate":"2024-03-30"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":295,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":296,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":298,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":312,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"nobodyishappy"},"content":"* are currently managing people for groups","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"nobodyishappy"},"content":"* has a tendency to forget tasks to complete","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"nobodyishappy"},"content":"**Value proposition**: This app aims to help leaders to keep track of members of formed groups and their contact information. This app helps to keep track of individual and group tasks, deadlines and meetings, thus allowing them to have a better overview of the structure.","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"nobodyishappy"},"content":"|----------|--------------------------------------------|-------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | add personal tasks | keep up to date with the different tasks to complete |","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | delete tasks | |","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | mark/unmark the tasks as done/not done | keep track of tasks that are completed |","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | group leader | assign tasks to individuals within the group | manage individual tasks |","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | busy group leader | see an overview of all the saved task | save time |","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | student | set deadline for my tasks | see which task need to be done earlier |","lastModifiedDate":"2024-03-30"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"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":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"breezetall"},"content":"**Use case: Assigns a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"breezetall"},"content":"1. User requests to list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"breezetall"},"content":"2. TeamTracker shows a list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":344,"author":{"gitId":"breezetall"},"content":"3. User requests to assign a task to a contact","lastModifiedDate":"2024-03-06"},{"lineNumber":345,"author":{"gitId":"breezetall"},"content":"4. TeamTracker assigns the task to the contact","lastModifiedDate":"2024-03-06"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":349,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"breezetall"},"content":"* 4a. The task given does not exist.","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"breezetall"},"content":"* 4a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"breezetall"},"content":"**Use case: Delete a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"breezetall"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"breezetall"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"breezetall"},"content":"2. TeamTracker shows a list of tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"breezetall"},"content":"3. User requests to delete a specific task in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":367,"author":{"gitId":"breezetall"},"content":"4. TeamTracker deletes the task","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"breezetall"},"content":"* 3a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"breezetall"},"content":"**Use case: Add a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":383,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":384,"author":{"gitId":"breezetall"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":385,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":386,"author":{"gitId":"breezetall"},"content":"1. User requests to add a task to the list of tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":387,"author":{"gitId":"breezetall"},"content":"2. TeamTracker adds to the list","lastModifiedDate":"2024-03-06"},{"lineNumber":388,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":389,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"breezetall"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"breezetall"},"content":"* 2a. The given parameters is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"breezetall"},"content":"* 2a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"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":402,"author":{"gitId":"Yskie"},"content":"2. Should be able to be used for long periods without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"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":404,"author":{"gitId":"Yskie"},"content":"4. Should respond within one seconds.","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"Yskie"},"content":"5. Documentation should be easy for users that are inexperienced in command line to follow.","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"Kaya3842"},"content":"6. User Interface should be straightforward and intuitive to navigate even for first-time users.","lastModifiedDate":"2024-03-07"},{"lineNumber":407,"author":{"gitId":"Yskie"},"content":"7. Should be able to store more than 10,000 tasks.","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"Yskie"},"content":"8. Should lose no more than 1 command worth of work in case of an app crash.","lastModifiedDate":"2024-03-08"},{"lineNumber":409,"author":{"gitId":"Yskie"},"content":"9. Should work without internet access.","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":414,"author":{"gitId":"Kaya3842"},"content":"* **System admin commands**: commands or instructions that are used through a command-line interface (CLI)","lastModifiedDate":"2024-03-07"},{"lineNumber":415,"author":{"gitId":"Kaya3842"},"content":"or a terminal window","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"Kaya3842"},"content":"* **Action**: The AddressBook processing a user command","lastModifiedDate":"2024-03-07"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":426,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":427,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"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":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"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":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"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":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"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":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"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":461,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","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"}],"authorContributionMap":{"Kaya3842":12,"Yskie":26,"chin-herng":6,"nobodyishappy":53,"-":339,"breezetall":35}},{"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":"nobodyishappy"},"content":"# TeamTracker User Guide","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"TeamTracker is a **desktop app for managing contacts and tasks, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you need help with managing tasks, TeamTracker can help to track your task so that you would not have trouble remembering your tasks.","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"1. Download the latest `TeamTracker.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-4/tp/releases).","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your TeamTracker.","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar TeamTracker.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"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":26,"author":{"gitId":"nobodyishappy"},"content":" ![Ui](images/UI_v1.3a.png)","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" * `add n/Task 1 d/Do homework` : Add a task named `Task 1`","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","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":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" e.g `n/NAME [by/DEADLINE]` can be used as `n/Task 1 by/23-12-2024 23:59` or as `n/Task 1`.","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"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":63,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":"![help message](images/helpMessage_v1.3a.PNG)","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS​`","lastModifiedDate":"2024-03-29"},{"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":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"nobodyishappy"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567`","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"nobodyishappy"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS]`","lastModifiedDate":"2024-03-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":"* `edit 2 n/Betsy Crower` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult_v1.3a.PNG)","lastModifiedDate":"2024-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"breezetall"},"content":"### Adding a task: `addtask`","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"nobodyishappy"},"content":"* Adds a task to the task list with three levels of priority (LOW, MEDIUM, HIGH).","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"nobodyishappy"},"content":"* Priority can also be in integers (1-Low, 2-Medium, 3-High).","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"nobodyishappy"},"content":"* The deadline is optional for the adding of tasks.","lastModifiedDate":"2024-03-29"},{"lineNumber":155,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"nobodyishappy"},"content":"Format: `addtask n/NAME d/DESCRIPTION p/PRIORITY [by/DEADLINE]​`","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"nobodyishappy"},"content":"* `addtask n/Task 1 d/Do homework p/HIGH`","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"nobodyishappy"},"content":"* `addtask n/Task 1 d/Do homework p/1`","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"nobodyishappy"},"content":"* `addtask n/Task 1 d/Do homework p/HIGH by/12-12-2024 23:59`","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"breezetall"},"content":"### Assigning a task: `assign`","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"chin-herng"},"content":"Assigns a task to a person.","lastModifiedDate":"2024-03-30"},{"lineNumber":166,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"chin-herng"},"content":"Format: `assign TASK_INDEX to/PERSON_INDEX`","lastModifiedDate":"2024-03-30"},{"lineNumber":168,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"breezetall"},"content":"* `assign 1 to/1`","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"chin-herng"},"content":"### Unassigning a task: `unassign`","lastModifiedDate":"2024-03-30"},{"lineNumber":173,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":174,"author":{"gitId":"chin-herng"},"content":"Unassigns a task to a person.","lastModifiedDate":"2024-03-30"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":176,"author":{"gitId":"chin-herng"},"content":"Format: `unassign TASK_INDEX to/PERSON_INDEX`","lastModifiedDate":"2024-03-30"},{"lineNumber":177,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":178,"author":{"gitId":"chin-herng"},"content":"Examples:","lastModifiedDate":"2024-03-30"},{"lineNumber":179,"author":{"gitId":"chin-herng"},"content":"* `unassign 1 to/1`","lastModifiedDate":"2024-03-30"},{"lineNumber":180,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":181,"author":{"gitId":"chin-herng"},"content":"### Clearing the tasks of a person: `cleartask`","lastModifiedDate":"2024-03-30"},{"lineNumber":182,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":183,"author":{"gitId":"chin-herng"},"content":"Clears the tasks of a person.","lastModifiedDate":"2024-03-30"},{"lineNumber":184,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":185,"author":{"gitId":"chin-herng"},"content":"Format: `cleartask PERSON_INDEX`","lastModifiedDate":"2024-03-30"},{"lineNumber":186,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":187,"author":{"gitId":"chin-herng"},"content":"Examples","lastModifiedDate":"2024-03-30"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":"* `cleartask 1`","lastModifiedDate":"2024-03-30"},{"lineNumber":189,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":190,"author":{"gitId":"breezetall"},"content":"### Marking a task: `marktask`","lastModifiedDate":"2024-03-26"},{"lineNumber":191,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":192,"author":{"gitId":"breezetall"},"content":"Marks a task to the task list as done.","lastModifiedDate":"2024-03-26"},{"lineNumber":193,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":194,"author":{"gitId":"breezetall"},"content":"Format: `marktask TASK_INDEX`","lastModifiedDate":"2024-03-26"},{"lineNumber":195,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":196,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":197,"author":{"gitId":"breezetall"},"content":"* `marktask 1`","lastModifiedDate":"2024-03-26"},{"lineNumber":198,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":199,"author":{"gitId":"breezetall"},"content":"### Unmarking a task: `unmarktask`","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"breezetall"},"content":"Marks a task to the task list as not done.","lastModifiedDate":"2024-03-26"},{"lineNumber":202,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":203,"author":{"gitId":"breezetall"},"content":"Format: `unmarktask TASK_INDEX`","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":205,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"breezetall"},"content":"* `unmarktask 1`","lastModifiedDate":"2024-03-26"},{"lineNumber":207,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":208,"author":{"gitId":"breezetall"},"content":"### Deleting a task: `deletetask`","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":210,"author":{"gitId":"Yskie"},"content":"Deletes the specified task from the task list.","lastModifiedDate":"2024-04-03"},{"lineNumber":211,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":212,"author":{"gitId":"breezetall"},"content":"Format: `deletetask TASK_INDEX`","lastModifiedDate":"2024-03-26"},{"lineNumber":213,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":214,"author":{"gitId":"Yskie"},"content":"* Deletes the task at the specified `TASK_INDEX`.","lastModifiedDate":"2024-04-03"},{"lineNumber":215,"author":{"gitId":"Yskie"},"content":"* The index refers to the index number shown in the displayed task list.","lastModifiedDate":"2024-04-03"},{"lineNumber":216,"author":{"gitId":"Yskie"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":219,"author":{"gitId":"Yskie"},"content":"* `listtask` followed by `deletetask 1` deletes the 1st task in the task list.","lastModifiedDate":"2024-04-03"},{"lineNumber":220,"author":{"gitId":"Yskie"},"content":"* `findtask today` followed by `deletetask 2` deletes the 2nd task in the results of the `findtask` command.","lastModifiedDate":"2024-04-03"},{"lineNumber":221,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":222,"author":{"gitId":"Yskie"},"content":"### Editing a task: `edittask`","lastModifiedDate":"2024-04-03"},{"lineNumber":223,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":224,"author":{"gitId":"Yskie"},"content":"Edits an existing task in the task listx.","lastModifiedDate":"2024-04-03"},{"lineNumber":225,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":226,"author":{"gitId":"Yskie"},"content":"Format: `edittask TASK_INDEX [n/TASK_NAME] [d/TASK_DESCRIPTION] [p/TASK_PRIORITY] [by/TASK_DEADLINE]​`","lastModifiedDate":"2024-04-03"},{"lineNumber":227,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":228,"author":{"gitId":"Yskie"},"content":"* Edits the task at the specified `TASK_INDEX`. The index refers to the index number shown in the displayed task list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-03"},{"lineNumber":229,"author":{"gitId":"Yskie"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2024-04-03"},{"lineNumber":230,"author":{"gitId":"Yskie"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2024-04-03"},{"lineNumber":231,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":232,"author":{"gitId":"Yskie"},"content":"Examples:","lastModifiedDate":"2024-04-03"},{"lineNumber":233,"author":{"gitId":"Yskie"},"content":"* `edittask 1 p/high`","lastModifiedDate":"2024-04-03"},{"lineNumber":234,"author":{"gitId":"Yskie"},"content":"* `edittask 2 d/new description by/04-04-2024 10:33`","lastModifiedDate":"2024-04-03"},{"lineNumber":235,"author":{"gitId":"Yskie"},"content":"* `edittask 3 n/new task d/new description p/low by/04-04-2024 10:33`","lastModifiedDate":"2024-04-03"},{"lineNumber":236,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":237,"author":{"gitId":"breezetall"},"content":"### Listing the tasks: `listtask`","lastModifiedDate":"2024-03-26"},{"lineNumber":238,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":239,"author":{"gitId":"Yskie"},"content":"Shows a list of all tasks in the task list.","lastModifiedDate":"2024-04-03"},{"lineNumber":240,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":241,"author":{"gitId":"breezetall"},"content":"Format: `listtask`","lastModifiedDate":"2024-03-26"},{"lineNumber":242,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":243,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":244,"author":{"gitId":"breezetall"},"content":"* `listtask`","lastModifiedDate":"2024-03-26"},{"lineNumber":245,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":246,"author":{"gitId":"Kaya3842"},"content":"### Finding a task or tasks by task name: `findtask`","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"Kaya3842"},"content":"Finds tasks which names contain any of the given keywords.","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"Kaya3842"},"content":"Format `findtask KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"Kaya3842"},"content":"* The search is case-insensitive. e.g `2103t` will match `2103T`","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"Kaya3842"},"content":"* The order of the keywords does not matter. e.g. `findpriority implement` will match `implement findpriority`","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"Kaya3842"},"content":"* Only the task name is searched.","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"Kaya3842"},"content":"* Only full words will be matched e.g. `prio` will not match `priority`","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"Kaya3842"},"content":"* Tasks matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"Kaya3842"},"content":" e.g. `2103t 2101` will return `2101 CA3`, `2103t milestone`","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"Kaya3842"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"Kaya3842"},"content":"* `findtask implement` returns `implement findpriority` and `implement mass ops`","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"Kaya3842"},"content":"* `findtask cs2103t cs2101` returns `CS2101 CA3`, `CS2103T developer guide`","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"nobodyishappy"},"content":"AddressBook and TaskList data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":274,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":275,"author":{"gitId":"nobodyishappy"},"content":"TaskList data are saved automatically as a JSON file `[JAR file location]/data/tasklist.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":277,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":279,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":280,"author":{"gitId":"nobodyishappy"},"content":"If your changes to the data file makes its format invalid, TeamTracker 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-29"},{"lineNumber":281,"author":{"gitId":"nobodyishappy"},"content":"Furthermore, certain edits can cause the TeamTracker 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-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"nobodyishappy"},"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 TeamTracker home folder.","lastModifiedDate":"2024-03-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":299,"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":300,"author":{"gitId":"-"},"content":"","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":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":307,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"nobodyishappy"},"content":"**Add Task** | `addtask n/NAME d/DESCRIPTION p/PRIORITY [by/DEADLINE]`","lastModifiedDate":"2024-03-29"},{"lineNumber":315,"author":{"gitId":"breezetall"},"content":"**Delete Task** | `deletetask TASK_INDEX`","lastModifiedDate":"2024-03-26"},{"lineNumber":316,"author":{"gitId":"Yskie"},"content":"**Edit Task** | `edittask TASK_INDEX [n/TASK_NAME] [d/TASK_DESCRIPTION] [p/TASK_PRIORITY] [by/TASK_DEADLINE]​`","lastModifiedDate":"2024-04-03"},{"lineNumber":317,"author":{"gitId":"breezetall"},"content":"**Assign Task** | `assign TASK_INDEX to/PERSON_INDEX​`","lastModifiedDate":"2024-03-26"},{"lineNumber":318,"author":{"gitId":"breezetall"},"content":"**Mark Task** | `marktask TASK_INDEX​`","lastModifiedDate":"2024-03-26"},{"lineNumber":319,"author":{"gitId":"breezetall"},"content":"**Unmark Task** | `unmarktask TASK_INDEX​`","lastModifiedDate":"2024-03-26"},{"lineNumber":320,"author":{"gitId":"Kaya3842"},"content":"**Find Task** | `findtask KEYWORD [MORE_KEYWORDS]` \u003cbr\u003e e.g., `findtask 2101 2103t`","lastModifiedDate":"2024-04-04"},{"lineNumber":321,"author":{"gitId":"breezetall"},"content":"**List Task** | `listtask​`","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"Yskie":26,"Kaya3842":17,"chin-herng":20,"nobodyishappy":26,"-":181,"breezetall":51}},{"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":"nobodyishappy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eTeamTracker\u003c/a\u003e","lastModifiedDate":"2024-03-06"},{"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":{"nobodyishappy":1,"-":66}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"TaskList -up-|\u003e ReadOnlyTaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"TaskList *-right-\u003e \"1\" UniqueTaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"UniqueTaskList -right-\u003e \"*\" Task : all","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskName","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskDescription","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskPriority","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskStatus","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskDeadline","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"chin-herng":8,"-":9}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"participant \":DeleteTaskCommandParser\" as DeleteTaskCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"participant \"d:DeleteTaskCommand\" as DeleteTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"[-\u003e LogicManager : execute(\"deletetask 1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"deletetask 1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"create DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"AddressBookParser -\u003e DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"activate DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":"deactivate DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"AddressBookParser -\u003e DeleteTaskCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":"activate DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":"create DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommandParser -\u003e DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"activate DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommand --\u003e DeleteTaskCommandParser :","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"deactivate DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":"deactivate DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":"destroy DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":"LogicManager -\u003e DeleteTaskCommand : execute(m)","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"activate DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":"Model --\u003e DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommand -\u003e CommandResult","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"CommandResult --\u003e DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":"deactivate DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":28,"-":42}},{"path":"docs/diagrams/GroupingState0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"@startuml","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"!include style.puml","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"title Model","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"package Groups {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"nobodyishappy":12}},{"path":"docs/diagrams/GroupingState1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"@startuml","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"!include style.puml","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"title Model","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"package Groups {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" class Group1 as \"\u003cu\u003e2103T:GroupedUniquePersonList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"package Persons {","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" class Person1 as \"\u003cu\u003eIvan:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" class Person2 as \"\u003cu\u003eGreg:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" class Person3 as \"\u003cu\u003eDave:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"Person1 -[hidden]right-\u003e Person2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"Person2 -[hidden]right-\u003e Person3","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"Person1 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"Person2 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"Person3 -up-\u003e Group1","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"nobodyishappy":24}},{"path":"docs/diagrams/GroupingState2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"@startuml","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"!include style.puml","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"title Model","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"package Groups {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" class Group1 as \"\u003cu\u003e2103T:GroupedUniquePersonList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"package Persons {","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" class Person1 as \"\u003cu\u003eIvan:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" class Person2 as \"\u003cu\u003eGreg:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" class Person3 as \"\u003cu\u003eDave:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"Person1 -[hidden]right-\u003e Person2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"Person2 -[hidden]right-\u003e Person3","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"Person1 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"Person2 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"Person3 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"package TaskList_Ivan {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" class Task1 as \"\u003cu\u003eTask 1:Task\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"package TaskList_Greg {","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" class Task2 as \"\u003cu\u003eTask 1:Task\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"package TaskList_Dave {","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" class Task3 as \"\u003cu\u003eTask 1:Task\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"Task1 -up-\u003e Person1","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"Task2 -up-\u003e Person2","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"Task3 -up-\u003e Person3","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"nobodyishappy":40}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"Class TaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"Class Task","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"Class TaskName","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"Class TaskDescription","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"Class TaskPriority","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"Class TaskStatus","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"Class TaskDeadline","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"HiddenOutside .left.\u003e Model","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":"AddressBook .left.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"ModelManager .left.|\u003e Model","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"Model .right.\u003e TaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"ModelManager --\u003e \"1\" TaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"UniquePersonList --\u003e \"~*\" Person : all","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"Person *--\u003e \"*\" Task","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":"TaskList --\u003e \"~*\" Task : all","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskName","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskDescription","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskPriority","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskStatus","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskDeadline","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"ModelManager --\u003e \"~*\" Person : filtered","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"ModelManager --\u003e \"~*\" Task : filtered","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"chin-herng":24,"-":41}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"package \"TaskList Storage\" #F4F6F6{","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nTaskListStorage\" as TaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"Class JsonTaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"Class JsonSerializableTaskList","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"Class JsonAdaptedTask","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"StorageManager -up-\u003e \"1\" TaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":"Storage -down-|\u003e TaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"JsonTaskListStorage .up.|\u003e TaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":"JsonTaskListStorage ..\u003e JsonSerializableTaskList","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":"JsonSerializableTaskList --\u003e \"*\" JsonAdaptedTask","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"Storage .[hidden]down. StorageManager","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":"StorageManager .[hidden]down. UserPrefsStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Kaya3842":18,"-":43}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"Class TaskListPanel","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"Class TaskCard","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"MainWindow *-down-\u003e \"1\" TaskListPanel","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":"TaskListPanel -down-\u003e \"*\" TaskCard","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":"TaskCard --|\u003e UiPart","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":"TaskCard ..\u003e Model","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":"TaskListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":60,"breezetall":7}},{"path":"docs/diagrams/UndoRedoState0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title Initial state","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":13,"-":12}},{"path":"docs/diagrams/UndoRedoState1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"title after command \"addtask n/task1\"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"package States {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":15,"-":10}},{"path":"docs/diagrams/UndoRedoState2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"title after command \"undo\"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"package States {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":15,"-":10}},{"path":"docs/diagrams/UndoRedoState3.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"title after command \"addtask n/task1\"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"package States {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":15,"-":10}},{"path":"docs/diagrams/UndoRedoState4.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"title after command \"listtask\"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"package States {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":15,"-":10}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"UndoCommand --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : u","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":"UndoCommand -\u003e Model : undo()","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":1,"-":45}},{"path":"docs/diagrams/UndoSequenceDiagram-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2024-02-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2024-02-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-02-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-02-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":VersionedAddressBook\" as VersionedAddressBook MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"[-\u003e Model : undo()","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Model -\u003e VersionedAddressBook : undo()","lastModifiedDate":"2024-02-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"activate VersionedAddressBook","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"VersionedAddressBook -\u003e VersionedAddressBook :resetData(ReadOnlyAddressBook)","lastModifiedDate":"2024-02-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"VersionedAddressBook --\u003e Model :","lastModifiedDate":"2024-02-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"deactivate VersionedAddressBook","lastModifiedDate":"2024-02-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[\u003c-- Model","lastModifiedDate":"2024-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2024-02-09"}],"authorContributionMap":{"Yskie":1,"-":22}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.TaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public static final Version VERSION \u003d new Version(1, 3, 1, true);","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing TeamTracker ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" TaskListStorage taskListStorage \u003d new JsonTaskListStorage(userPrefs.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath() + \", \"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" + storage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e taskListOptional;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" TaskList initialTasks;","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" taskListOptional \u003d storage.readTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" if (!taskListOptional.isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" initialTasks \u003d taskListOptional.orElseGet(SampleDataUtil::getSampleTaskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" logger.warning(\"Data file at \" + storage.getTaskListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" + \" Will be starting with an empty task list.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" initialTasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" return new ModelManager(initialData, initialTasks, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":173,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"nobodyishappy"},"content":" logger.info(\"Starting TeamTracker \" + MainApp.VERSION);","lastModifiedDate":"2024-03-30"},{"lineNumber":193,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"nobodyishappy"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping TeamTracker ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-30"},{"lineNumber":199,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":201,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":22,"nobodyishappy":4,"-":179}},{"path":"src/main/java/seedu/address/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a zero-based or one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * {@code Index} should be used right from the start (when parsing in a new user input), so that if the current","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * component wants to communicate with another component, it can send an {@code Index} to avoid having to know what","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * base the other component is using for its index. However, after receiving the {@code Index}, that component can","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * convert it back to an int if the index will not be passed to a different component again.","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Index {","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private int zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Index can only be created by calling {@link Index#fromZeroBased(int)} or","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * {@link Index#fromOneBased(int)}.","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Index(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (zeroBasedIndex \u003c 0) {","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.zeroBasedIndex \u003d zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public int getZeroBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public int getOneBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return zeroBasedIndex + 1;","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a zero-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static Index fromZeroBased(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new Index(zeroBasedIndex);","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Index fromOneBased(int oneBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new Index(oneBasedIndex - 1);","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof Index)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index otherIndex \u003d (Index) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return zeroBasedIndex \u003d\u003d otherIndex.zeroBasedIndex;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return Objects.hash(zeroBasedIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"zeroBasedIndex\", zeroBasedIndex).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"chin-herng":7,"-":69}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" /** Returns an unmodifiable view of the filtered list of tasks */","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"-":50,"breezetall":4}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" storage.saveTaskList(model.getTaskList());","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Kaya3842":1,"-":88,"breezetall":6}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"The task index provided is invalid\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_TASKS_LISTED_OVERVIEW \u003d \"%1$d tasks listed!\";","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" .append(\"; Tasks: \");","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" person.getTasks().forEach(builder::append);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" * Formats the {@code people} for display to the user.","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" public static String format(Person[] people) {","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" return Arrays.stream(people).map(person -\u003e person.getName().toString())","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" public static String format(Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" return task.getName().taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" * Formats the {@code tasks} for display to the user.","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" public static String format(Task[] tasks) {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" return Arrays.stream(tasks).map(task -\u003e task.getName().toString())","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kaya3842":7,"chin-herng":21,"nobodyishappy":1,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" + PREFIX_ADDRESS + \"ADDRESS\\n \"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chin-herng":2,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DEADLINE;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task to the task list. \"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + \"Parameter: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" + PREFIX_NAME + \"TASK_NAME \"","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_DESCRIPTION + \"TASK_DESCRIPTION \"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_PRIORITY + \"TASK_PRIORITY\"","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_TASK_DEADLINE + \"TASK_DEADLINE]\";","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New task added: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"This task already exists in the task list.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" private final Task toAdd;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" * Creates an AddTaskCommand to add the specified {@code Task}","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" public AddTaskCommand(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" toAdd \u003d task;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" if (model.hasTask(toAdd)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" model.addTask(toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand otherAddTaskCommand \u003d (AddTaskCommand) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" return toAdd.equals(otherAddTaskCommand.toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":69,"Yskie":4,"chin-herng":1,"nobodyishappy":5,"breezetall":1}},{"path":"src/main/java/seedu/address/logic/commands/AssignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * Assigns the task identified using its displayed index to","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * the people identified using their displayed index in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"public class AssignCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" + \": Assigns the task identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last task listing \"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" + \"to the people identified \"","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" + \"by the index numbers used in the last person listing. \"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" + \"Does nothing if the task is already assigned to a person.\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: TASK_INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" + \"to/ PERSON_INDEX [MORE_PERSON_INDICES] (must be distinct positive integers)\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" + \"to/ 1 2\";","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been assigned to %2$s.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" private final Index[] personIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" * @param taskIndex of the task in the filtered task list to be assigned to the person","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" * @param personIndices of the people in the filtered person list to be assigned the task","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" public AssignCommand(Index taskIndex, Index[] personIndices) {","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(taskIndex, personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" this.personIndices \u003d personIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" private void verifyAllTaskIndicesWithinRange(Index[] taskIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(taskIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" private void verifyAllPersonIndicesWithinRange(Index[] personIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(personIndices).anyMatch(personIndex -\u003e personIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" private Task getTaskToAssign(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" // Use filtered list","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" List\u003cTask\u003e lastShownTaskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" verifyAllTaskIndicesWithinRange(new Index[] { taskIndex }, lastShownTaskList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return lastShownTaskList.get(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" private Person[] getPeopleToBeAssigned(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" List\u003cPerson\u003e lastShownPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" verifyAllPersonIndicesWithinRange(personIndices, lastShownPersonList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" return Arrays.stream(personIndices).distinct()","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownPersonList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .toArray(Person[]::new);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d getTaskToAssign(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToBeAssigned \u003d getPeopleToBeAssigned(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToBeAssigned).forEach(personToBeAssigned -\u003e model.setPerson(","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" personToBeAssigned, personToBeAssigned.addTask(taskToAssign)));","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(taskToAssign),","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" Messages.format(peopleToBeAssigned)));","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof AssignCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" AssignCommand e \u003d (AssignCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" return taskIndex.equals(e.taskIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 Arrays.equals(personIndices, e.personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Kaya3842":2,"chin-herng":110}},{"path":"src/main/java/seedu/address/logic/commands/ClearTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Unassigns all tasks assigned to an existing person in the address book.","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"public class ClearTaskCommand extends Command {","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" public static final String COMMAND_WORD \u003d \"cleartask\";","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Unassigns all tasks assigned to the person identified \"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last person listing.\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: PERSON_INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Tasks for %1$s has been cleared.\";","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" private final Index index;","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" public ClearTaskCommand(Index index) {","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(index);","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" private Person getPersonToBeUnassigned(Model model) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" List\u003cPerson\u003e lastShownPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" if (index.getZeroBased() \u003e\u003d lastShownPersonList.size()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" return lastShownPersonList.get(index.getZeroBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" Person personToBeUnassigned \u003d getPersonToBeUnassigned(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" Person unassignedPerson \u003d new Person(personToBeUnassigned.getName(), personToBeUnassigned.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" personToBeUnassigned.getEmail(), personToBeUnassigned.getAddress(), new HashSet\u003c\u003e());","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" model.setPerson(personToBeUnassigned, unassignedPerson);","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, unassignedPerson.getName()));","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof ClearTaskCommand)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand e \u003d (ClearTaskCommand) other;","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" return index.equals(e.index);","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"chin-herng":78}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Deletes the people identified using their displayed index from the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Deletes the people identified by the index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: INDEX [MORE_INDICES] (must be distinct positive integers)\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_DELETE_PEOPLE_SUCCESS \u003d \"Deleted people: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" private final Index[] targetIndices;","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" public DeleteCommand(Index[] targetIndices) {","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" this.targetIndices \u003d targetIndices;","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" private void verifyAllWithinRange(Index[] targetIndices, int range) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(targetIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" verifyAllWithinRange(targetIndices, lastShownList.size());","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToDelete \u003d Arrays.stream(targetIndices).distinct()","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" .toArray(Person[]::new);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToDelete).forEach(model::deletePerson);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PEOPLE_SUCCESS, Messages.format(peopleToDelete)));","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return Arrays.equals(targetIndices, otherDeleteCommand.targetIndices);","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" .add(\"targetIndices\", Arrays.toString(targetIndices))","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chin-herng":23,"-":55}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Deletes the tasks identified using their displayed index from the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Deletes the tasks identified by the index numbers used in the displayed task list.\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: INDEX [MORE_INDICES] (must be distinct positive integers)\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_DELETE_TASKS_SUCCESS \u003d \"Deleted tasks: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" private final Index[] targetIndices;","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" * Creates an DeleteTaskCommand to delete the specified {@code targetIndices}","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public DeleteTaskCommand(Index[] targetIndices) {","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" this.targetIndices \u003d targetIndices;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" private void verifyAllWithinRange(Index[] targetIndices, int range) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(targetIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" verifyAllWithinRange(targetIndices, lastShownList.size());","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToDelete \u003d Arrays.stream(targetIndices).distinct()","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" .toArray(Task[]::new);","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToDelete).forEach(model::deleteTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASKS_SUCCESS, Messages.format(tasksToDelete)));","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" return Arrays.equals(targetIndices, otherDeleteCommand.targetIndices);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .add(\"targetIndices\", Arrays.toString(targetIndices))","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Yskie":50,"Kaya3842":1,"chin-herng":27,"nobodyishappy":3}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS]\\n \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e updatedTasks \u003d personToEdit.getTasks(); // edit command does not allow editing tasks","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":203,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"chin-herng":6,"-":210}},{"path":"src/main/java/seedu/address/logic/commands/EditTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DEADLINE;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" * Edits the details of an existing task in the task list.","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":"public class EditTaskCommand extends Command {","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" public static final String COMMAND_WORD \u003d \"edittask\";","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the task identified \"","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" + \"by the index number used in the displayed task list. \"","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" + \"Parameters: TASK_INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_NAME + \"TASK_NAME] \"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_TASK_DESCRIPTION + \"TASK_DESCRIPTION] \"","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_TASK_PRIORITY + \"TASK_PRIORITY] \"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_TASK_DEADLINE + \"TASK_DEADLINE] \"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" + \"\\nExample: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" + PREFIX_NAME + \"name \"","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_DESCRIPTION + \"new description \"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_PRIORITY + \"HIGH \"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_DEADLINE + \"30-03-2024 10:00\";","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_EDIT_TASK_SUCCESS \u003d \"Edited Task: %1$s\";","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Duplicate task exists in the task list.\";","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" private final Index index;","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" private final EditTaskDescriptor editTaskDescriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" * @param index of the task in the task list to edit.","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" * @param editTaskDescriptor details to edit the task with.","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" public EditTaskCommand(Index index, EditTaskDescriptor editTaskDescriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" requireNonNull(editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" this.editTaskDescriptor \u003d new EditTaskDescriptor(editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" Task taskToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" Task editedTask \u003d createEditedTask(taskToEdit, editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" if (!taskToEdit.equals(editedTask) \u0026\u0026 model.hasTask(editedTask)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" // Updates the task list.","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" model.setTask(taskToEdit, editedTask);","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_TASK_SUCCESS, Messages.format(taskToEdit)));","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" * Creates and returns a {@code Task} with the details of {@code taskToEdit}","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" * edited with {@code editTaskDescriptor}.","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" private static Task createEditedTask(Task taskToEdit, EditTaskDescriptor editTaskDescriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" assert taskToEdit !\u003d null;","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" TaskName updatedName \u003d editTaskDescriptor.getName().orElse(taskToEdit.getName());","lastModifiedDate":"2024-03-29"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" TaskDescription updatedDescription \u003d editTaskDescriptor.getDescription().orElse(taskToEdit.getDescription());","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":" TaskPriority updatedPriority \u003d editTaskDescriptor.getPriority().orElse(taskToEdit.getPriority());","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":" TaskDeadline updatedDeadline \u003d editTaskDescriptor.getDeadline().orElse(taskToEdit.getDeadline());","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" return new Task(updatedName, updatedDescription, updatedPriority, taskToEdit.getStatus(), updatedDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" if (!(other instanceof EditTaskCommand)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" EditTaskCommand otherEditCommand \u003d (EditTaskCommand) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-03-29"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 editTaskDescriptor.equals(otherEditCommand.editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-29"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" .add(\"editTaskDescriptor\", editTaskDescriptor)","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" .toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" * Stores the details to edit the task with. Each non-empty field value will","lastModifiedDate":"2024-03-29"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" * replace the corresponding field value of the task.","lastModifiedDate":"2024-04-03"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" public static class EditTaskDescriptor {","lastModifiedDate":"2024-03-29"},{"lineNumber":131,"author":{"gitId":"Yskie"},"content":" private TaskName taskName;","lastModifiedDate":"2024-03-29"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" private TaskDescription taskDescription;","lastModifiedDate":"2024-03-29"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" private TaskPriority taskPriority;","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":" private TaskDeadline taskDeadline;","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":136,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptor() {","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":139,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":142,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptor(EditTaskDescriptor toCopy) {","lastModifiedDate":"2024-03-29"},{"lineNumber":143,"author":{"gitId":"Yskie"},"content":" setName(toCopy.taskName);","lastModifiedDate":"2024-03-29"},{"lineNumber":144,"author":{"gitId":"Yskie"},"content":" setDescription(toCopy.taskDescription);","lastModifiedDate":"2024-03-29"},{"lineNumber":145,"author":{"gitId":"Yskie"},"content":" setPriority(toCopy.taskPriority);","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"Yskie"},"content":" setDeadline(toCopy.taskDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":148,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":149,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":150,"author":{"gitId":"Yskie"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-29"},{"lineNumber":151,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" return CollectionUtil.isAnyNonNull(taskName, taskDescription, taskPriority, taskDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":155,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"Yskie"},"content":" public void setName(TaskName taskName) {","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"Yskie"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"Yskie"},"content":" public Optional\u003cTaskName\u003e getName() {","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"Yskie"},"content":" return Optional.ofNullable(taskName);","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"Yskie"},"content":" public void setDescription(TaskDescription taskDescription) {","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"Yskie"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2024-03-29"},{"lineNumber":166,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"Yskie"},"content":" public Optional\u003cTaskDescription\u003e getDescription() {","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"Yskie"},"content":" return Optional.ofNullable(taskDescription);","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"Yskie"},"content":" public void setPriority(TaskPriority taskPriority) {","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"Yskie"},"content":" this.taskPriority \u003d taskPriority;","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"Yskie"},"content":" public Optional\u003cTaskPriority\u003e getPriority() {","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"Yskie"},"content":" return Optional.ofNullable(taskPriority);","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"Yskie"},"content":" public void setDeadline(TaskDeadline taskDeadline) {","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"Yskie"},"content":" this.taskDeadline \u003d taskDeadline;","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"Yskie"},"content":" public Optional\u003cTaskDeadline\u003e getDeadline() {","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"Yskie"},"content":" return Optional.ofNullable(taskDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":189,"author":{"gitId":"Yskie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":190,"author":{"gitId":"Yskie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":192,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":193,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":194,"author":{"gitId":"Yskie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":195,"author":{"gitId":"Yskie"},"content":" if (!(other instanceof EditTaskDescriptor)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":196,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":197,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":198,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor otherEditTaskDescriptor \u003d (EditTaskDescriptor) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":200,"author":{"gitId":"Yskie"},"content":" return Objects.equals(taskName, otherEditTaskDescriptor.taskName)","lastModifiedDate":"2024-03-29"},{"lineNumber":201,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 Objects.equals(taskDescription, otherEditTaskDescriptor.taskDescription)","lastModifiedDate":"2024-04-02"},{"lineNumber":202,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 Objects.equals(taskPriority, otherEditTaskDescriptor.taskPriority)","lastModifiedDate":"2024-04-02"},{"lineNumber":203,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 Objects.equals(taskDeadline, otherEditTaskDescriptor.taskDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":204,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":206,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":207,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":208,"author":{"gitId":"Yskie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-29"},{"lineNumber":209,"author":{"gitId":"Yskie"},"content":" .add(\"name\", taskName)","lastModifiedDate":"2024-03-29"},{"lineNumber":210,"author":{"gitId":"Yskie"},"content":" .add(\"description\", taskDescription)","lastModifiedDate":"2024-03-29"},{"lineNumber":211,"author":{"gitId":"Yskie"},"content":" .add(\"priority\", taskPriority)","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"Yskie"},"content":" .add(\"deadline\", taskDeadline)","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"Yskie"},"content":" .toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":214,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":215,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":216,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Yskie":215,"chin-herng":1}},{"path":"src/main/java/seedu/address/logic/commands/FindTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" * Finds and lists all tasks in storage whose names contain any of the argument keywords.","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class FindTaskCommand extends Command {","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" public static final String COMMAND_WORD \u003d \"findtask\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all tasks whose names contain any of \"","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" + \"Example: \" + COMMAND_WORD + \" 2101 2103t\";","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final TaskNameContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public FindTaskCommand(TaskNameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" model.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, model.getFilteredTaskList().size()));","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" if (!(other instanceof FindTaskCommand)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand otherFindTaskCommand \u003d (FindTaskCommand) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" return predicate.equals(otherFindTaskCommand.predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" .toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":65}},{"path":"src/main/java/seedu/address/logic/commands/ListTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" * Lists all tasks in the tasklist to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"public class ListTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" public static final String COMMAND_WORD \u003d \"listtask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all tasks\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"breezetall":24}},{"path":"src/main/java/seedu/address/logic/commands/MarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Mark the tasks identified using their displayed index from the task list as done.","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public static final String COMMAND_WORD \u003d \"marktask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Marks the tasks identified by the index numbers used in the displayed task list as done. \\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"Parameter: INDEX [MORE_INDICES] (must be distinct positive integers) \\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Tasks have been marked as done: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" private final Index[] targetIndices;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" public MarkTaskCommand(Index[] targetIndices) {","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" this.targetIndices \u003d targetIndices;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" private void verifyAllWithinRange(Index[] targetIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(targetIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" verifyAllWithinRange(targetIndices, lastShownList.size());","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToMark \u003d Arrays.stream(targetIndices).distinct()","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" .toArray(Task[]::new);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToMark).forEach(taskToMark -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToMark);","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"breezetall"},"content":" editedTask.getStatus().setAsDone();","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"breezetall"},"content":" model.setTask(taskToMark, editedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, Messages.format(tasksToMark)));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof MarkTaskCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand otherMarkTaskCommand \u003d (MarkTaskCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" return Arrays.equals(targetIndices, otherMarkTaskCommand.targetIndices);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" .add(\"targetIndices\", Arrays.toString(targetIndices))","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Kaya3842":1,"chin-herng":28,"nobodyishappy":51,"breezetall":2}},{"path":"src/main/java/seedu/address/logic/commands/UnassignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * Unassigns the task identified using its displayed index to","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * the people identified using their displayed index in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"public class UnassignCommand extends Command {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" public static final String COMMAND_WORD \u003d \"unassign\";","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" + \": Unassigns the task identified \"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last task listing \"","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" + \"to the people identified \"","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" + \"by the index numbers used in the last person listing. \"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" + \"Does nothing if the task not assigned to a person.\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: TASK_INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" + \"to/ PERSON_INDEX [MORE_PERSON_INDICES] (must be distinct positive integers)\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" + \"to/ 1 2\";","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been unassigned to %2$s.\";","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" private final Index[] personIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" * @param taskIndex of the task in the filtered task list to be unassigned to the person","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" * @param personIndices of the people in the filtered person list to be unassigned the task","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" public UnassignCommand(Index taskIndex, Index[] personIndices) {","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(taskIndex, personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" this.personIndices \u003d personIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" private void verifyAllTaskIndicesWithinRange(Index[] taskIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(taskIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" private void verifyAllPersonIndicesWithinRange(Index[] personIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(personIndices).anyMatch(personIndex -\u003e personIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" private Task getTaskToUnassign(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" // Use filtered list","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" List\u003cTask\u003e lastShownTaskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" verifyAllTaskIndicesWithinRange(new Index[] { taskIndex }, lastShownTaskList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return lastShownTaskList.get(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" private Person[] getPeopleToBeUnassigned(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" List\u003cPerson\u003e lastShownPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" verifyAllPersonIndicesWithinRange(personIndices, lastShownPersonList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" return Arrays.stream(personIndices).distinct()","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownPersonList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .toArray(Person[]::new);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d getTaskToUnassign(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToBeUnassigned \u003d getPeopleToBeUnassigned(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToBeUnassigned).forEach(personToBeAssigned -\u003e model.setPerson(","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" personToBeAssigned, personToBeAssigned.deleteTask(taskToUnassign)));","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(taskToUnassign),","lastModifiedDate":"2024-03-31"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" Messages.format(peopleToBeUnassigned)));","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof UnassignCommand)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" UnassignCommand e \u003d (UnassignCommand) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" return taskIndex.equals(e.taskIndex)","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 Arrays.equals(personIndices, e.personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Kaya3842":2,"chin-herng":110}},{"path":"src/main/java/seedu/address/logic/commands/UnmarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Mark the tasks identified using their displayed index from the task list as undone.","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public static final String COMMAND_WORD \u003d \"unmarktask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Marks the tasks identified by the index numbers used in the displayed task list as undone. \\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"Parameter: INDEX [MORE_INDICES] (must be distinct positive integers) \\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_UNMARK_TASK_SUCCESS \u003d \"Tasks have been marked as undone: %1$s\";","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" private final Index[] targetIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" public UnmarkTaskCommand(Index[] targetIndices) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" this.targetIndices \u003d targetIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" private void verifyAllWithinRange(Index[] targetIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(targetIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" verifyAllWithinRange(targetIndices, lastShownList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToUnmark \u003d Arrays.stream(targetIndices).distinct()","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" .toArray(Task[]::new);","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToUnmark).forEach(taskToUnmark -\u003e {","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToUnmark);","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" editedTask.getStatus().setAsUndone();","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" model.setTask(taskToUnmark, editedTask);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_UNMARK_TASK_SUCCESS, Messages.format(tasksToUnmark)));","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof UnmarkTaskCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand otherUnmarkTaskCommand \u003d (UnmarkTaskCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" return Arrays.equals(targetIndices, otherUnmarkTaskCommand.targetIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .add(\"targetIndices\", Arrays.toString(targetIndices))","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":30,"nobodyishappy":51}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e taskList \u003d new HashSet\u003c\u003e(); // add command does not allow assigning tasks straight away","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Person person \u003d new Person(name, phone, email, address, taskList);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"chin-herng":5,"-":56}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" * Parses input arguments and creates a new AddTaskCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" * Parses {@code args} into a command and returns it.","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" * @param args","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if {@code args} does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" PREFIX_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY, PREFIX_TASK_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" TaskName name \u003d ParserUtil.parseTaskName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription description \u003d ParserUtil.parseTaskDescription(","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" argMultimap.getValue(PREFIX_TASK_DESCRIPTION).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" TaskPriority priority \u003d ParserUtil.parseTaskPriority(","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" argMultimap.getValue(PREFIX_TASK_PRIORITY).get());","lastModifiedDate":"2024-04-01"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus status \u003d new TaskStatus();","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" Task task;","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" if (argMultimap.getValue(PREFIX_TASK_DEADLINE).isPresent()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline deadline \u003d ParserUtil.parseTaskDeadline(argMultimap.getValue(PREFIX_TASK_DEADLINE).get());","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" task \u003d new Task(name, description, priority, status, deadline);","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" task \u003d new Task(name, description, priority, status);","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" return new AddTaskCommand(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":23,"nobodyishappy":35,"breezetall":13}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.ClearTaskCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.FindTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.ListTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.UnassignCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" // Note to developers: Change the log level in config.json to enable lower level","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" // (i.e., FINE, FINER and lower)","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" case EditTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" return new EditTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" case FindTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" return new FindTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" case ListTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":" return new ListTaskCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" case AssignCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" return new AssignCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" case UnassignCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" return new UnassignCommandParser().parse(arguments);","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" case ClearTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" return new ClearTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":" return new MarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"nobodyishappy"},"content":" case UnmarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"nobodyishappy"},"content":" return new UnmarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kaya3842":9,"Yskie":9,"chin-herng":12,"nobodyishappy":8,"-":84,"breezetall":4}},{"path":"src/main/java/seedu/address/logic/parser/AssignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" * Parses input arguments and creates a new {@code AssignCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"public class AssignCommandParser implements Parser\u003cAssignCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the {@code AssignCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * and returns a {@code AssignCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" public AssignCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" PREFIX_TO);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TO);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" Index taskIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d argMultimap.getValue(PREFIX_TO).orElse(\"\").trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" String[] stringPersonIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" Index[] personIndices \u003d new Index[stringPersonIndices.length];","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringPersonIndices.length; i++) {","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" personIndices[i] \u003d ParserUtil.parseIndex(stringPersonIndices[i]);","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" return new AssignCommand(taskIndex, personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" AssignCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"chin-herng":48}},{"path":"src/main/java/seedu/address/logic/parser/ClearTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.ClearTaskCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":" * Parses input arguments and creates a new {@code ClearTaskCommand} object","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"public class ClearTaskCommandParser implements Parser\u003cClearTaskCommand\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ClearTaskCommand}","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * and returns a {@code ClearTaskCommand} object for execution.","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" public ClearTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" Index index;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" try {","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ClearTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" return new ClearTaskCommand(index);","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"chin-herng":33}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" public static final Prefix PREFIX_TASK_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" public static final Prefix PREFIX_TASK_DEADLINE \u003d new Prefix(\"by/\");","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" public static final Prefix PREFIX_TASK_PRIORITY \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":2,"-":16,"breezetall":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" String[] stringIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" Index[] indices \u003d new Index[stringIndices.length];","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringIndices.length; i++) {","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" indices[i] \u003d ParserUtil.parseIndex(stringIndices[i]);","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" return new DeleteCommand(indices);","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chin-herng":13,"-":27}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteTaskCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * and returns a DeleteTaskCommand object for execution.","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" String[] stringIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" Index[] indices \u003d new Index[stringIndices.length];","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringIndices.length; i++) {","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" indices[i] \u003d ParserUtil.parseIndex(stringIndices[i]);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" return new DeleteTaskCommand(indices);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Yskie":22,"chin-herng":19}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chin-herng":1,"-":60}},{"path":"src/main/java/seedu/address/logic/parser/EditTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DEADLINE;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * Parses input arguments and creates a new EditTaskCommand object","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"public class EditTaskCommandParser implements Parser\u003cEditTaskCommand\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" * Parses the given {@code String} of arguments in the context of the","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * EditTaskCommand returns an EditTaskCommand object for execution.","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" public EditTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TASK_DESCRIPTION,","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" PREFIX_TASK_PRIORITY, PREFIX_TASK_DEADLINE);","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" Index index;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY,","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" PREFIX_TASK_DEADLINE);","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor editTaskDescriptor \u003d new EditTaskDescriptor();","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" editTaskDescriptor.setName(ParserUtil.parseTaskName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" if (argMultimap.getValue(PREFIX_TASK_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" editTaskDescriptor.setDescription(","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" ParserUtil.parseTaskDescription(argMultimap.getValue(PREFIX_TASK_DESCRIPTION).get()));","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" if (argMultimap.getValue(PREFIX_TASK_PRIORITY).isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" editTaskDescriptor.setPriority(","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" ParserUtil.parseTaskPriority(argMultimap.getValue(PREFIX_TASK_PRIORITY).get()));","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" if (argMultimap.getValue(PREFIX_TASK_DEADLINE).isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" editTaskDescriptor.setDeadline(","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" ParserUtil.parseTaskDeadline(argMultimap.getValue(PREFIX_TASK_DEADLINE).get()));","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" if (!editTaskDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" throw new ParseException(EditTaskCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" return new EditTaskCommand(index, editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Yskie":65}},{"path":"src/main/java/seedu/address/logic/parser/FindTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.FindTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" * Parses input arguments and creates a new FindTaskCommand object","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"public class FindTaskCommandParser implements Parser\u003cFindTaskCommand\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Parses {@code userInput} in the context of FindTaskCommand and returns","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * a FindTaskCommand object for execution.","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" * @param userInput The input to parse into a command object.","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public FindTaskCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" String trimmedInput \u003d userInput.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" if (trimmedInput.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" String[] taskNameKeywords \u003d trimmedInput.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" return new FindTaskCommand(new TaskNameContainsKeywordsPredicate(Arrays.asList(taskNameKeywords)));","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":34}},{"path":"src/main/java/seedu/address/logic/parser/MarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Parses input arguments and creates a new MarkTaskCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandParser implements Parser\u003cMarkTaskCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * Parses the given {@code String} of arguments in the context of the MarkTaskCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * and returns a MarkTaskCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public MarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" String[] stringIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" Index[] indices \u003d new Index[stringIndices.length];","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringIndices.length; i++) {","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" indices[i] \u003d ParserUtil.parseIndex(stringIndices[i]);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" return new MarkTaskCommand(indices);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":14,"nobodyishappy":25}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskName} into an {@code TaskName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskName} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"nobodyishappy"},"content":" public static TaskName parseTaskName(String taskName) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskName \u003d taskName.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskName.isValidTaskName(trimmedTaskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"nobodyishappy"},"content":" return new TaskName(trimmedTaskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskDescription} into an {@code TaskDescription}.","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskDescription} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"nobodyishappy"},"content":" public static TaskDescription parseTaskDescription(String taskDescription) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskDescription \u003d taskDescription.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDescription.isValidTaskDescription(trimmedTaskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"nobodyishappy"},"content":" return new TaskDescription(trimmedTaskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":160,"author":{"gitId":"breezetall"},"content":" * Parses a {@code String taskPriority} into an {@code taskPriority}.","lastModifiedDate":"2024-04-01"},{"lineNumber":161,"author":{"gitId":"breezetall"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-01"},{"lineNumber":162,"author":{"gitId":"breezetall"},"content":" *","lastModifiedDate":"2024-04-01"},{"lineNumber":163,"author":{"gitId":"breezetall"},"content":" * @throws ParseException if the given {@code taskPriority} is invalid.","lastModifiedDate":"2024-04-01"},{"lineNumber":164,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":165,"author":{"gitId":"breezetall"},"content":" public static TaskPriority parseTaskPriority(String taskPriority) throws ParseException {","lastModifiedDate":"2024-04-01"},{"lineNumber":166,"author":{"gitId":"breezetall"},"content":" requireNonNull(taskPriority);","lastModifiedDate":"2024-04-01"},{"lineNumber":167,"author":{"gitId":"breezetall"},"content":" String trimmedTaskPriority \u003d taskPriority.trim();","lastModifiedDate":"2024-04-01"},{"lineNumber":168,"author":{"gitId":"breezetall"},"content":" if (!TaskPriority.isValidTaskPriority(trimmedTaskPriority)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":169,"author":{"gitId":"breezetall"},"content":" throw new ParseException(TaskPriority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-01"},{"lineNumber":170,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":171,"author":{"gitId":"breezetall"},"content":" return new TaskPriority(trimmedTaskPriority);","lastModifiedDate":"2024-04-01"},{"lineNumber":172,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":173,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":175,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskDeadline} into an {@code TaskDeadline}.","lastModifiedDate":"2024-03-26"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-26"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskDeadline} is invalid.","lastModifiedDate":"2024-03-26"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":" public static TaskDeadline parseTaskDeadline(String taskDeadline) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskDeadline \u003d taskDeadline.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDeadline.isValidTaskDeadline(trimmedTaskDeadline)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskDeadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"nobodyishappy"},"content":" return new TaskDeadline(trimmedTaskDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"nobodyishappy":48,"-":124,"breezetall":16}},{"path":"src/main/java/seedu/address/logic/parser/UnassignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.UnassignCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" * Parses input arguments and creates a new {@code UnassignCommand} object","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"public class UnassignCommandParser implements Parser\u003cUnassignCommand\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the {@code UnassignCommand}","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * and returns a {@code UnassignCommand} object for execution.","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" public UnassignCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" PREFIX_TO);","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TO);","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" Index taskIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d argMultimap.getValue(PREFIX_TO).orElse(\"\").trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnassignCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" String[] stringPersonIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" Index[] personIndices \u003d new Index[stringPersonIndices.length];","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringPersonIndices.length; i++) {","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" personIndices[i] \u003d ParserUtil.parseIndex(stringPersonIndices[i]);","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" return new UnassignCommand(taskIndex, personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" UnassignCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"chin-herng":48}},{"path":"src/main/java/seedu/address/logic/parser/UnmarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Parses input arguments and creates a new UnmarkTaskCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandParser implements Parser\u003cUnmarkTaskCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * Parses the given {@code String} of arguments in the context of the UnmarkTaskCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * and returns a UnmarkTaskCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public UnmarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" String[] stringIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" Index[] indices \u003d new Index[stringIndices.length];","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringIndices.length; i++) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" indices[i] \u003d ParserUtil.parseIndex(stringIndices[i]);","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" return new UnmarkTaskCommand(indices);","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":14,"nobodyishappy":25}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block,","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * sometimes used to avoid duplication","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" * between constructors. See","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" * https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" * Note that non-static init blocks are not recommended to use. There are other","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" * ways to avoid duplication","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public AddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" * Returns true if a person with the same identity as {@code person} exists in","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" * the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" * Replaces the given person {@code target} in the list with","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" * {@code editedPerson}.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" * existing person in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" * Replaces the given task {@code target} with {@code editedTask}.","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" * {@code target} must exist to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" * {@code editedTask} must exist to be updated.","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" persons.setTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" * Removes {@code task} from the {@code person} in {@code AddressBook}.","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" * {@code task} must exist in the task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" public void deleteAssignedTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":" persons.deleteAssignedTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Yskie":33,"-":123}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" * Returns true if a person with the same identity as {@code person} exists in","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" * the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" * existing person in the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" void setTaskListFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":" static void setTaskList(TaskList taskList) {","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" TaskList getTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" * {@code task} must not already exist in the task list.","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" void addTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" * Deletes the given task.","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" * {@code task} the task must exist in the task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" void deleteTask(Task task);","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" * Sets the given task in the task list.","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":" * {@code target} must exist to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" * {@code editedTask} must exist to be updated.","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" void setTask(Task target, Task editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" * Replaces the given task {@code target} with {@code editedTask}.","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" * {@code target} must exist to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" * {@code editedTask} must exist to be updated.","lastModifiedDate":"2024-03-29"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" void setPersonTask(Task target, Task editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" * Returns true if a task has the same description as a {@code task} in the task","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":" * list.","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"Kaya3842"},"content":" boolean hasTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"Yskie"},"content":" * Updates the filter of the filtered task list to filter by the given","lastModifiedDate":"2024-03-29"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" * {@code predicate}.","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"breezetall"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"breezetall"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"breezetall"},"content":" /** Returns an unmodifiable view of the filtered task list */","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" * Updates the filter of the filtered person list to filter by the given","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" * {@code predicate}.","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Kaya3842":30,"Yskie":31,"-":84,"breezetall":12}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" private final FilteredList\u003cTask\u003e filteredTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, TaskList taskList, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" requireAllNonNull(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \", task list: \" + taskList","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" filteredTasks \u003d new FilteredList\u003c\u003e(this.taskList.getSerializeTaskList());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" this(new AddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" return userPrefs.getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" * @param taskListFilePath File path to task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" userPrefs.setTaskListFilePath(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"Yskie"},"content":" public void setPersonTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":144,"author":{"gitId":"Yskie"},"content":" addressBook.setTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":146,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":147,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Task Manager","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"Yskie"},"content":" addressBook.deleteAssignedTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"Yskie"},"content":" taskList.deleteTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"Yskie"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":165,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"Yskie"},"content":" taskList.setTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"Yskie"},"content":" setPersonTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"Yskie"},"content":" taskList.sortByPriority();","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" return taskList.hasTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":" * @param tasks Instance of the tasklist.","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"Kaya3842"},"content":" public void setTaskList(TaskList tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"Kaya3842"},"content":" taskList.setTaskList(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"Kaya3842"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"Yskie"},"content":" * Returns an modifiable view of the list of {@code Task}.","lastModifiedDate":"2024-04-03"},{"lineNumber":196,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"breezetall"},"content":" return filteredTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"breezetall"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"breezetall"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"breezetall"},"content":" taskList.sortByPriority();","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"breezetall"},"content":" filteredTasks.setPredicate(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":213,"author":{"gitId":"Yskie"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"Yskie"},"content":" * internal list of","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":222,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":224,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":239,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":241,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 taskList.equals(otherModelManager.taskList)","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":243,"author":{"gitId":"breezetall"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-03-26"},{"lineNumber":244,"author":{"gitId":"breezetall"},"content":" \u0026\u0026 filteredTasks.equals(otherModelManager.filteredTasks);","lastModifiedDate":"2024-03-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":54,"Yskie":33,"chin-herng":1,"nobodyishappy":2,"-":137,"breezetall":19}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"Kaya3842":2,"-":16}},{"path":"src/main/java/seedu/address/model/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" * A class that stores the tasks from users.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class TaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" // private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" private ObservableList\u003cTask\u003e observableList;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" * Constructor of the class.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public TaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" observableList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" * Creates a TaskList using the Tasks in the {@code toBeCopied}","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" public TaskList(TaskList toBeCopied) {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" this();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" requireNonNull(toBeCopied);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" setTaskList(toBeCopied);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" public void setTaskList(TaskList tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" observableList.setAll(tasks.observableList);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * Adds a task to the end of list.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" * @param task The task to be added to the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" observableList.add(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" * Deletes a task based on the index of list.","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" * @param task The task to be deleted.","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" observableList.remove(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" public ObservableList\u003cTask\u003e getSerializeTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" return observableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" * Replaces the given task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" * {@code target} must exist in the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" * The task of {@code editedTask} must not be the same as another","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" * existing task in the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"breezetall"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"breezetall"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" int index \u003d observableList.indexOf(target);","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":" observableList.set(index, editedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" return observableList.contains(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" * Sorts tasks based on the task priority.","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"breezetall"},"content":" public void sortByPriority() {","lastModifiedDate":"2024-04-01"},{"lineNumber":83,"author":{"gitId":"breezetall"},"content":" observableList.sort(new Comparator\u003cTask\u003e() {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" public int compare(Task o1, Task o2) {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" // Sort by status","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" if (o1.getStatus().compareTo(o2.getStatus()) !\u003d 0) {","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" return o1.getStatus().getTaskStatus() ? 1 : -1;","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" // Sort by priority","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" if (o2.getPriority().getValue() - o1.getPriority().getValue() !\u003d 0) {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" return o2.getPriority().getValue() - o1.getPriority().getValue();","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":" // Sort by deadline","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":" if (o1.getDeadline().taskDeadline !\u003d null \u0026\u0026 o2.getDeadline().taskDeadline !\u003d null) {","lastModifiedDate":"2024-04-01"},{"lineNumber":99,"author":{"gitId":"breezetall"},"content":" return o1.getDeadline().taskDeadline.compareTo(o2.getDeadline().taskDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":" // Sort by tasks with deadline","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"breezetall"},"content":" if (o1.getDeadline() !\u003d null) {","lastModifiedDate":"2024-04-01"},{"lineNumber":104,"author":{"gitId":"breezetall"},"content":" return -1;","lastModifiedDate":"2024-04-01"},{"lineNumber":105,"author":{"gitId":"breezetall"},"content":" } else if (o2.getDeadline() !\u003d null) {","lastModifiedDate":"2024-04-01"},{"lineNumber":106,"author":{"gitId":"breezetall"},"content":" return 1;","lastModifiedDate":"2024-04-01"},{"lineNumber":107,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":108,"author":{"gitId":"breezetall"},"content":" return 0;","lastModifiedDate":"2024-04-01"},{"lineNumber":109,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":110,"author":{"gitId":"breezetall"},"content":" });","lastModifiedDate":"2024-04-01"},{"lineNumber":111,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof TaskList)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" TaskList otherTaskList \u003d (TaskList) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" return observableList.equals(otherTaskList.observableList);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":33,"Yskie":26,"chin-herng":23,"nobodyishappy":8,"breezetall":37}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" private Path taskListFilePath \u003d Paths.get(\"data\", \"tasklist.json\");","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" setTaskListFilePath(newUserPrefs.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" return taskListFilePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" this.taskListFilePath \u003d taskListFilePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath)","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" \u0026\u0026 taskListFilePath.equals(otherUserPrefs.taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" return Objects.hash(guiSettings, addressBookFilePath, taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" sb.append(\"\\nLocal address book file location : \" + addressBookFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" sb.append(\"\\nLocal task list file location : \" + taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":16,"-":85}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * Guarantees: details are present and not null, field values are validated,","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * immutable.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" private final Set\u003cTask\u003e tasks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(name, phone, email, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" * Returns an immutable task set, which throws","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" public Set\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" return Collections.unmodifiableSet(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" * @param task to be assigned to {@code this}","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of assigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" public Person addTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(tasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, editedTasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" * @param task to be unassigned from {@code this}","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of unassigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" if (task.equals(t)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" * @param task to be unassigned from {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of unassigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" public Person deleteTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(tasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, editedTasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 tasks.equals(otherPerson.tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" return Objects.hash(name, phone, email, address, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"chin-herng"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Yskie":22,"chin-herng":26,"-":107}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * A list of persons that enforces uniqueness between its elements and does not","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * allow nulls.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" * A person is considered unique by comparing using","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" * {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" * the person being added or updated is","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * a person uses Person#equals(Object) so","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d FXCollections","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" .unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" * existing person in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" * Sets the assigned task for a {@code person}.","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" * {@code target} must exist to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" * {@code editedTask} must exist to be updated.","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" if (person.hasTask(target)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" Person updatedPerson \u003d person.deleteTask(target).addTask(editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" setPerson(person, updatedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" * Deletes the assigned task for a {@code person}.","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" * Assigned {@code task} to be deleted.","lastModifiedDate":"2024-03-29"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" public void deleteAssignedTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" if (person.hasTask(task)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" Person taskDeletePerson \u003d person.deleteTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" setPerson(person, taskDeletePerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Yskie":42,"-":143}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" * The representation of a task added by the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"public class Task {","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":" private TaskName name;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" private TaskDescription description;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":" private TaskPriority priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" private TaskStatus status;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" private TaskDeadline deadline;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * The constructor of the class.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * @param name Name of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" * @param status Status of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" public Task(TaskName name, TaskDescription description, TaskPriority priority, TaskStatus status) {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" this.deadline \u003d new TaskDeadline();","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" * The constructor of the class.","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" * @param name Name of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" * @param status Status of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" * @param deadline Deadline of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" public Task(TaskName name,","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" TaskDescription description,","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" TaskPriority priority,","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" TaskStatus status,","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" TaskDeadline deadline) {","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code Task}.","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code Task} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" public Task(Task copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" this.name \u003d new TaskName(copy.getName());","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" this.description \u003d new TaskDescription(copy.getDescription());","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" this.priority \u003d new TaskPriority(copy.getPriority());","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" this.status \u003d new TaskStatus(copy.getStatus());","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" this.deadline \u003d new TaskDeadline(copy.getDeadline());","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" * Gets the name of a task.","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" * @return The name of the task.","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" public TaskName getName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return name;","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" * Gets the description of a task.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" * @return The description of the task.","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" public TaskDescription getDescription() {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" return description;","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" * Gets the status of a task.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" * @return The status of the task.","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus getStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" return status;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" * Gets the priority of a task.","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" * @return The priority of the task.","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":" public TaskPriority getPriority() {","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"breezetall"},"content":" return priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":" * Gets the deadline of a task.","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" * @return The deadline of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":" public TaskDeadline getDeadline() {","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"nobodyishappy"},"content":" return deadline;","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles null","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" Task otherTask \u003d (Task) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"nobodyishappy"},"content":" return this.name.equals(otherTask.name)","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"nobodyishappy"},"content":" \u0026\u0026 this.description.equals(otherTask.description)","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 this.priority.equals(otherTask.priority)","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"nobodyishappy"},"content":" \u0026\u0026 this.deadline.equals(otherTask.deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"nobodyishappy"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" return Objects.hash(name, description, priority, deadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" * Compare with other tasks for sorting in tags.","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"nobodyishappy"},"content":" * @param otherTask Task to be compared to","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":" * @return Value of the comparison","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" public int compare(Task otherTask) {","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" if (this.getName().taskName.compareTo(otherTask.getName().taskName) \u003d\u003d 0) {","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" return this.getDescription().taskDescription.compareTo(otherTask.getDescription().taskDescription);","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":" return this.getName().taskName.compareTo(otherTask.getName().taskName);","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":35,"Yskie":5,"chin-herng":17,"nobodyishappy":63,"breezetall":17}},{"path":"src/main/java/seedu/address/model/task/TaskDeadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s deadline in the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDeadline {","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" \"Task deadline should be in dd-MM-yyyy HH:mm format, and it should not be blank\";","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" public static final String EMPTY_DEADLINE \u003d \"Empty\";","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the deadline must not be a whitespace,","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public static final DateTimeFormatter VALIDATION_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" private static final DateTimeFormatter OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public final LocalDateTime taskDeadline;","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" private boolean isEmpty;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskDeadline}.","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" public TaskDeadline() {","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d null;","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" isEmpty \u003d true;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskDeadline}.","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" * @param deadline A valid deadline.","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public TaskDeadline(String deadline) {","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" if (deadline.equals(EMPTY_DEADLINE)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" isEmpty \u003d true;","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(isValidTaskDeadline(deadline), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d LocalDateTime.parse(deadline, VALIDATION_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" isEmpty \u003d false;","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskDeadline}.","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskDeadline} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" public TaskDeadline(TaskDeadline copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" this.taskDeadline \u003d copy.taskDeadline;","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" this.isEmpty \u003d copy.isEmpty;","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid deadline.","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskDeadline(String deadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" if (deadline.equals(EMPTY_DEADLINE)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" VALIDATION_FORMAT.parse(deadline);","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" if (isEmpty) {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":" return \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"nobodyishappy"},"content":" return taskDeadline.format(OUTPUT_FORMAT);","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"nobodyishappy"},"content":" * Returns a string to save to json file.","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" public String toJsonSave() {","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" if (isEmpty) {","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":" return EMPTY_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" return taskDeadline.format(VALIDATION_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskDeadline)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline otherTaskDeadline \u003d (TaskDeadline) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"nobodyishappy"},"content":" return this.toJsonSave().equals(otherTaskDeadline.toJsonSave());","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"nobodyishappy"},"content":" if (isEmpty) {","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"nobodyishappy"},"content":" return EMPTY_DEADLINE.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":" return taskDeadline.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":12,"nobodyishappy":114}},{"path":"src/main/java/seedu/address/model/task/TaskDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s description in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDescription {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" \"Task descriptions can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the description must not be a whitespace,","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public final String taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskDescription}.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" public TaskDescription(String description) {","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" requireNonNull(description);","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" checkArgument(isValidTaskDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" taskDescription \u003d description;","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskDescription}.","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskDescription} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" public TaskDescription(TaskDescription copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" this.taskDescription \u003d copy.taskDescription;","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid description.","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskDescription(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription otherTaskDescription \u003d (TaskDescription) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription.equals(otherTaskDescription.taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"chin-herng":11,"nobodyishappy":61,"breezetall":4}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s name in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskName {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Task name can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public final String taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" * @param name A valid name.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public TaskName(String name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(isValidTaskName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskName}.","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskName} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" public TaskName(TaskName copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" this.taskName \u003d copy.taskName;","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskName(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" TaskName otherTaskName \u003d (TaskName) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" return taskName.equals(otherTaskName.taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" return taskName.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"chin-herng":11,"nobodyishappy":63}},{"path":"src/main/java/seedu/address/model/task/TaskNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" * Tests that a {@code Task}\u0027s {@code TaskName} matches any of the keywords given.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class TaskNameContainsKeywordsPredicate implements Predicate\u003cTask\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public TaskNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" * Evaluates this predicate on the given argument.","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" * @param task The input argument","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" * @return {@code true} if the input argument matches the predicate, otherwise {@code false}","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" public boolean test(Task task) {","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(task.getName().toString(), keyword));","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" if (!(other instanceof TaskNameContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate otherTaskNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" (TaskNameContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" return keywords.equals(otherTaskNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":52}},{"path":"src/main/java/seedu/address/model/task/TaskPriority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.util.Priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" * Represents a Task\u0027s priority in the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"public class TaskPriority {","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Task priority can take either an integer or low, medium, high, \"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" private Priority taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" * Constructs an {@code TaskPriority}.","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" public TaskPriority() {","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" taskPriority \u003d Priority.LOW;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskPriority}.","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskPriority} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" public TaskPriority(TaskPriority copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" this.taskPriority \u003d copy.taskPriority;","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" * Constructs an {@code TaskPriority}.","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" public TaskPriority(String priority) {","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" requireNonNull(priority);","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" checkArgument(isValidTaskPriority(priority), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" priority \u003d priority.toLowerCase();","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" if (priority.equals(\"low\") || priority.equals(\"1\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d Priority.LOW;","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" } else if (priority.equals(\"medium\") || priority.equals(\"2\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d Priority.MEDIUM;","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" } else if (priority.equals(\"high\") || priority.equals(\"3\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d Priority.HIGH;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"breezetall"},"content":" * Returns an int of {@code TaskPriority}.","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":" public int getValue() {","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":" return taskPriority.getValue();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" * Returns true if a given string is a valid priority.","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" public static boolean isValidTaskPriority(String test) {","lastModifiedDate":"2024-04-01"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" test \u003d test.toLowerCase();","lastModifiedDate":"2024-04-01"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" if (test.equals(\"low\") || test.equals(\"medium\") || test.equals(\"high\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":68,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":69,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":" if (test.equals(\"1\") || test.equals(\"2\") || test.equals(\"3\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":73,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":" return false;","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" if (taskPriority.equals(Priority.LOW)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" return \"LOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"breezetall"},"content":" } else if (taskPriority.equals(Priority.MEDIUM)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"breezetall"},"content":" return \"MEDIUM\";","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"breezetall"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"breezetall"},"content":" return \"HIGH\";","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"breezetall"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"breezetall"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"breezetall"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"breezetall"},"content":" if (!(other instanceof TaskPriority)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"breezetall"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"breezetall"},"content":" TaskPriority otherPriority \u003d (TaskPriority) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"breezetall"},"content":" return taskPriority \u003d\u003d otherPriority.taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":103,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":104,"author":{"gitId":"breezetall"},"content":" public int hashCode() {","lastModifiedDate":"2024-04-01"},{"lineNumber":105,"author":{"gitId":"breezetall"},"content":" return taskPriority.hashCode();","lastModifiedDate":"2024-04-01"},{"lineNumber":106,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":107,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"Yskie":3,"chin-herng":11,"breezetall":93}},{"path":"src/main/java/seedu/address/model/task/TaskStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s status in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskStatus {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" \"Task status should be either Done or Not Done\";","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" private static final String STATUS_DONE \u003d \"Done\";","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private static final String STATUS_NOTDONE \u003d \"Not Done\";","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" private boolean taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskStatus}.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskStatus}.","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskStatus} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" public TaskStatus(TaskStatus copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" this.taskStatus \u003d copy.taskStatus;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskStatus}.","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" * @param status A valid status from json.","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus(String status) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" if (status.equals(STATUS_DONE)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" } else if (status.equals(STATUS_NOTDONE)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(false, MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" public boolean getTaskStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" public void setAsDone() {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" public void setAsUndone() {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" if (taskStatus) {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return STATUS_DONE;","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" return STATUS_NOTDONE;","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskStatus)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus otherStatus \u003d (TaskStatus) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" return taskStatus \u003d\u003d otherStatus.taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" public int compareTo(TaskStatus other) {","lastModifiedDate":"2024-04-01"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" return (other.getTaskStatus() \u003d\u003d taskStatus ? 0 : (taskStatus ? 1 : -1));","lastModifiedDate":"2024-04-01"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":90,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"chin-herng":12,"nobodyishappy":74,"breezetall":4}},{"path":"src/main/java/seedu/address/model/util/Priority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":" * Contains enumeration for TaskPriority.","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"public enum Priority {","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":" LOW(1),","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":" MEDIUM(2),","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" HIGH(3);","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":" private int value;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":" private Priority(int value) {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" * Returns an int of {@code TaskPriority}.","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" public int getValue() {","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" return value;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"breezetall":22}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" getTaskSet(getSampleTasks()[0])),","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" getTaskSet(getSampleTasks()[0], getSampleTasks()[1]))","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" };","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" public static Task[] getSampleTasks() {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" return new Task[] {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" new Task(new TaskName(\"Implement find for task\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Find task has to be done\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus()),","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" new Task(new TaskName(\"Implement remind for task\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Remind task has to be done\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus())","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" public static TaskList getSampleTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" for (Task sampleTask : getSampleTasks()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" tasks.addTask(sampleTask);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" return tasks;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" * Returns a task set containing the list of strings given.","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" public static Set\u003cTask\u003e getTaskSet(Task... tasks) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" return Arrays.stream(tasks)","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Kaya3842":6,"chin-herng":1,"nobodyishappy":18,"-":41,"breezetall":8}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" @JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" if (tasks !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" tasks.addAll(source.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" .map(JsonAdaptedTask::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" final List\u003cTask\u003e personTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" for (JsonAdaptedTask task : tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" personTasks.add(task.toModelType());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" final Set\u003cTask\u003e modelTasks \u003d new HashSet\u003c\u003e(personTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chin-herng":12,"-":97}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"public class JsonAdaptedTask {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" private final String taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" private final String taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" private final String taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" private final String taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" private final String taskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" public JsonAdaptedTask(@JsonProperty(\"taskName\") String taskName,","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskDescription\") String taskDescription,","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" @JsonProperty(\"taskPriority\") String taskPriority,","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskStatus\") String taskStatus,","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskDeadline\") String taskDeadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" this.taskStatus \u003d taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" this.taskDeadline \u003d taskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d source.getName().taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d source.getDescription().taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" taskPriority \u003d source.getPriority().toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" taskStatus \u003d source.getStatus().toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d source.getDeadline().toJsonSave();","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" * Converts this Jackson-friendly adapted task object into the model\u0027s {@code Task} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" if (taskName \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" TaskName.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskName.isValidTaskName(taskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" final TaskName modelTaskName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" if (taskDescription \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDescription.isValidTaskDescription(taskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" final TaskDescription modelTaskDescription \u003d new TaskDescription(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" if (taskStatus \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" final TaskStatus modelTaskStatus \u003d new TaskStatus(taskStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"breezetall"},"content":" if (taskPriority \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" TaskPriority.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" final TaskPriority modelTaskPriority \u003d new TaskPriority(taskPriority);","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"nobodyishappy"},"content":" if (taskDeadline \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDeadline.isValidTaskDeadline(taskDeadline)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskDeadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":" final TaskDeadline modelTaskDeadline \u003d new TaskDeadline(taskDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" return new Task(modelTaskName, modelTaskDescription, modelTaskPriority, modelTaskStatus, modelTaskDeadline);","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":36,"nobodyishappy":49,"breezetall":16}},{"path":"src/main/java/seedu/address/storage/JsonSerializableTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * An Immutable TaskList that is serializable to JSON format.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"@JsonRootName(value \u003d \"tasklist\")","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"class JsonSerializableTaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Task list contains duplicate task(s).\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" * Constructs a {@code JsonSerializableTaskList} with the given persons.","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" public JsonSerializableTaskList(@JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * Converts a given {@code TaskList} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" * {@code JsonSerializableTaskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" public JsonSerializableTaskList(TaskList source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" tasks.addAll(source.getSerializeTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" * Converts this address book into the model\u0027s {@code TaskList} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public TaskList toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" if (taskList.hasTask(task)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":60}},{"path":"src/main/java/seedu/address/storage/JsonTaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * A class to access TaskList data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"public class JsonTaskListStorage implements TaskListStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonTaskListStorage.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" private Path filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" public JsonTaskListStorage(Path filePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" return filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return readTaskList(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" * Similar to {@link #readTaskList()}.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cJsonSerializableTaskList\u003e jsonTaskList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" filePath, JsonSerializableTaskList.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" if (!jsonTaskList.isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" return Optional.of(jsonTaskList.get().toModelType());","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" saveTaskList(taskList, filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" * Similar to {@link #saveTaskList(TaskList)}.","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" JsonUtil.saveJsonFile(new JsonSerializableTaskList(taskList), filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":80}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"public interface Storage extends AddressBookStorage, TaskListStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Kaya3842":11,"-":31}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private TaskListStorage taskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public StorageManager(AddressBookStorage addressBookStorage, TaskListStorage taskListStorage,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" this.taskListStorage \u003d taskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" return taskListStorage.getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" * Returns TaskList data.","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" return readTaskList(taskListStorage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" return taskListStorage.readTaskList(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" * Saves the given {@link TaskList} to the storage.","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"Kaya3842"},"content":" saveTaskList(taskList, taskListStorage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"Kaya3842"},"content":" * @see #saveTaskList(TaskList)","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"Kaya3842"},"content":" taskListStorage.saveTaskList(taskList, filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":56,"-":77}},{"path":"src/main/java/seedu/address/storage/TaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" * Represents a storage for {@link seedu.address.model.TaskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public interface TaskListStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" * Returns TaskList data.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * Saves the given {@link TaskList} to the storage.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * @see #saveTaskList(TaskList)","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList, Path filePath) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":44}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w13-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"nobodyishappy":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" private TaskListPanel taskListPanel;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" private StackPane taskListPanelPlaceholder;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"breezetall"},"content":" taskListPanel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"breezetall"},"content":" taskListPanelPlaceholder.getChildren().add(taskListPanel.getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":176,"author":{"gitId":"breezetall"},"content":" public TaskListPanel getTaskListPanel() {","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"breezetall"},"content":" return taskListPanel;","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":196,"breezetall":10}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" private FlowPane tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" person.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" .sorted((t1, t2) -\u003e t1.compare(t2))","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" .forEach(task -\u003e tasks.getChildren().add(new Label(task.getName().taskName)));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chin-herng":2,"nobodyishappy":2,"-":53}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" public final Task task;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" private Label name;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" private Label id;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" private Label priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" private Label status;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" private Label description;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" private Label deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" * Creates a {@code TaskCode} with the given {@code Task} and index to display.","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" public TaskCard(Task task, int displayedIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" name.setText(task.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" priority.setText(task.getPriority().toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" status.setText(task.getStatus().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" description.setText(task.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" deadline.setText(task.getDeadline().toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" String settings \u003d \"-fx-padding: 1 3 1 3; -fx-border-radius: 2; -fx-background-radius: 2; -fx-font-size: 12;\";","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" if (task.getPriority().toString().equalsIgnoreCase(\"low\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" priority.setStyle(\"-fx-background-color: #00ff00;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" } else if (task.getPriority().toString().equalsIgnoreCase(\"medium\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" priority.setStyle(\"-fx-background-color: #ffae00;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" } else if (task.getPriority().toString().equalsIgnoreCase(\"high\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" priority.setStyle(\"-fx-background-color: #ff0000;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" if (task.getStatus().toString().equalsIgnoreCase(\"Done\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" status.setStyle(\"-fx-background-color: #00ff00;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" } else if (task.getStatus().toString().equalsIgnoreCase(\"Not Done\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" status.setStyle(\"-fx-background-color: #ff0000;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":24,"breezetall":47}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TaskListPanel.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListViewCell());","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" setText(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" setGraphic(new TaskCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"breezetall":49}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":".cell_head_label {","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"nobodyishappy"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":190,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":281,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":294,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"chin-herng"},"content":"#tasks {","lastModifiedDate":"2024-03-17"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"chin-herng"},"content":"#tasks .label {","lastModifiedDate":"2024-03-17"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"chin-herng":2,"nobodyishappy":7,"-":350}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"780.0\" onCloseRequest\u003d\"#handleExit\" title\u003d\"TeamTracker\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100\" minHeight\u003d\"100\" prefHeight\u003d\"100\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" \u003cHBox prefWidth\u003d\"200.0\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"340.0\" styleClass\u003d\"pane-with-border\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" \u003cVBox fx:id\u003d\"taskList\" minWidth\u003d\"340.0\" styleClass\u003d\"pane-with-border\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"taskListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"nobodyishappy":4,"-":51,"breezetall":16}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" \u003cFlowPane fx:id\u003d\"tasks\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chin-herng":1,"-":35}},{"path":"src/main/resources/view/PersonListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"listname\" text\u003d\"List of Person\" styleClass\u003d\"cell_head_label\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cListView fx:id\u003d\"personListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"nobodyishappy":2,"-":8}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5.0\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" \u003cGridPane\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" \u003cRowConstraints minHeight\u003d\"10.0\" vgrow\u003d\"SOMETIMES\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$id\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$name\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"status\" alignment\u003d\"TOP_CENTER\" contentDisplay\u003d\"RIGHT\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$status\" textAlignment\u003d\"RIGHT\" GridPane.columnIndex\u003d\"1\" GridPane.halignment\u003d\"RIGHT\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"priority\" styleClass\u003d\"cell_medium_label\" text\u003d\"\\$priority\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"deadline\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$deadline\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"breezetall"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"breezetall"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":29,"breezetall":30}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"listname\" text\u003d\"List of Task\" styleClass\u003d\"cell_head_label\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":2,"breezetall":8}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" new JsonTaskListStorage(temporaryFolder.resolve(\"tasklist.json\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"breezetall"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"breezetall"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredTaskList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":" // Inject LogicManager with a TaskListStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(prefPath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath)","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" throw e;","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" };","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTasks().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Kaya3842":16,"chin-herng":1,"-":171,"breezetall":5}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Kaya3842":3,"-":46}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" * A default model stub that have all methods failing.","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"Yskie"},"content":" public void setPersonTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"Yskie"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"Yskie"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":160,"author":{"gitId":"Yskie"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" * @param addressBookFilePath","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"Kaya3842"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"Kaya3842"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"Kaya3842"},"content":" * {@code task} must not already exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"Kaya3842"},"content":" * @param task","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"Yskie"},"content":" * Deletes a task based on the index of list.","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Yskie"},"content":" * @param task The task to be deleted in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"Yskie"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Yskie"},"content":" * Returns true if a task has the same description as a {@code task} in the task","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"Yskie"},"content":" * list.","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"Kaya3842"},"content":" * @param task","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":219,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"breezetall"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"breezetall"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"breezetall"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":233,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":238,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":243,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":245,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":253,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":254,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":261,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":262,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":263,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":273,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":275,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":279,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Kaya3842":49,"Yskie":22,"-":203,"breezetall":10}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"class AddTaskCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private ModelManager model;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" @BeforeEach","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public void setUp() {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public void constructor_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" public void execute_taskAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" Task validTask \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" CommandResult commandResult \u003d new AddTaskCommand(validTask).execute(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" assertTrue(model.hasTask(validTask));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public void execute_duplicateTask_throwsCommandException() throws CommandException {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" Task validTask \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" new AddTaskCommand(validTask).execute(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand.MESSAGE_DUPLICATE_TASK, () -\u003e new AddTaskCommand(validTask).execute(model));","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" void testEquals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" Task testTask1 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" Task testTask2 \u003d new Task(new TaskName(\"Implement test2\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" Task testTask3 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Second test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" Task testTask4 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus(),","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" new TaskDeadline(\"12-12-2024 16:00\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" Task testTask5 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus(),","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" new TaskDeadline(\"12-12-2024 18:00\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand1 \u003d new AddTaskCommand(testTask1);","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand2 \u003d new AddTaskCommand(testTask2);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" AddTaskCommand addTaskCommand3 \u003d new AddTaskCommand(testTask3);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":" AddTaskCommand addTaskCommand4 \u003d new AddTaskCommand(testTask4);","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"nobodyishappy"},"content":" AddTaskCommand addTaskCommand5 \u003d new AddTaskCommand(testTask5);","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" assertTrue(addTaskCommand1.equals(addTaskCommand1));","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommandCopy1 \u003d new AddTaskCommand(testTask1);","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(addTaskCommandCopy1.equals(addTaskCommand1));","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" // different tasks -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(addTaskCommand2));","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"nobodyishappy"},"content":" // different description -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(addTaskCommand1.equals(addTaskCommand3));","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"nobodyishappy"},"content":" // different deadline -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(addTaskCommand1.equals(addTaskCommand4));","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":" // different deadline -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(addTaskCommand4.equals(addTaskCommand5));","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" void testToString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"nobodyishappy"},"content":" Task test \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(test);","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"Kaya3842"},"content":" String expected \u003d AddTaskCommand.class.getCanonicalName() + \"{toAdd\u003d\" + test + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expected, addTaskCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":72,"nobodyishappy":41,"breezetall":13}},{"path":"src/test/java/seedu/address/logic/commands/AssignCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"class AssignCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public void execute_assignTaskUnfilteredListSingleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" Person personToBeAssigned \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToAssign), Messages.format(new Person[] { personToBeAssigned }));","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeAssigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeAssigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeAssigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" public void execute_assignTaskUnfilteredListMultipleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToBeAssigned \u003d new Person[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToAssign), Messages.format(peopleToBeAssigned));","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToBeAssigned).forEach(personToBeAssigned -\u003e {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeAssigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeAssigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeAssigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" public void execute_assignTaskUnfilteredListDuplicateValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Person personToBeAssigned \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToAssign), Messages.format(new Person[] { personToBeAssigned }));","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeAssigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeAssigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeAssigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(firstPerson.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withTasks(editedTasks).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS, Messages.format(taskToAssign),","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"nobodyishappy"},"content":" editedPerson.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidTaskIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(outOfBoundIndex, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 1),","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 2)","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"chin-herng"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"chin-herng"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"chin-herng"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"chin-herng"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignOneToOneCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignOneToTwoCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignTwoToOneCommand \u003d new AssignCommand(INDEX_SECOND, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"chin-herng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"chin-herng"},"content":" assertEquals(assignOneToOneCommand, assignOneToOneCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"chin-herng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommandCopy \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":194,"author":{"gitId":"chin-herng"},"content":" assertEquals(assignOneToOneCommand, assignCommandCopy);","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"chin-herng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"chin-herng"},"content":" // different indices -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, assignOneToTwoCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, assignTwoToOneCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"chin-herng":202,"nobodyishappy":1}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"Kaya3842":3,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/ClearTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" * {@code ClearTaskCommand}.","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"public class ClearTaskCommandTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" Person personToUnassign \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new Person(personToUnassign.getName(), personToUnassign.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" personToUnassign.getEmail(), personToUnassign.getAddress(), new HashSet\u003c\u003e());","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskCommand \u003d new ClearTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(ClearTaskCommand.MESSAGE_SUCCESS, personToUnassign.getName());","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToUnassign, editedPerson);","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(clearTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskCommand \u003d new ClearTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(clearTaskCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" Person personToUnassign \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new Person(personToUnassign.getName(), personToUnassign.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" personToUnassign.getEmail(), personToUnassign.getAddress(), new HashSet\u003c\u003e());","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskCommand \u003d new ClearTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(ClearTaskCommand.MESSAGE_SUCCESS, personToUnassign.getName());","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToUnassign, editedPerson);","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(clearTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskCommand \u003d new ClearTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(clearTaskCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskFirstCommand \u003d new ClearTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskSecondCommand \u003d new ClearTaskCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" assertEquals(clearTaskFirstCommand, clearTaskFirstCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskFirstCommandCopy \u003d new ClearTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" assertEquals(clearTaskFirstCommand, clearTaskFirstCommandCopy);","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(clearTaskFirstCommand, null);","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(clearTaskFirstCommand, clearTaskSecondCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"chin-herng":108}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskName VALID_TASK_NAME_FIRST \u003d new TaskName(\"Implement Testing 1\");","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskName VALID_TASK_NAME_SECOND \u003d new TaskName(\"Implement Testing 2\");","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" public static final TaskDescription VALID_TASK_DESCRIPTION_FIRST \u003d new TaskDescription(","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" \"Code for testing of test 1\");","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" public static final TaskDescription VALID_TASK_DESCRIPTION_SECOND \u003d new TaskDescription(","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" \"Code for testing of test 2\");","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskStatus VALID_TASK_STATUS \u003d new TaskStatus();","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" public static final TaskPriority VALID_TASK_PRIORITY \u003d new TaskPriority();","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public static final Task VALID_TASK_FIRST \u003d new Task(VALID_TASK_NAME_FIRST,","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":" VALID_TASK_DESCRIPTION_FIRST, VALID_TASK_PRIORITY, VALID_TASK_STATUS);","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" public static final Task VALID_TASK_SECOND \u003d new Task(VALID_TASK_NAME_SECOND,","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"breezetall"},"content":" VALID_TASK_DESCRIPTION_SECOND, VALID_TASK_PRIORITY, VALID_TASK_STATUS);","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult}","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" * \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" * Convenience wrapper to","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" * {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" * - the address book, filtered person list and selected person in","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" * {@code actualModel} remain unchanged","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" * {@code targetIndex} in the {@code model}\u0027s address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Yskie":13,"chin-herng":2,"nobodyishappy":6,"-":113,"breezetall":8}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void execute_singleValidIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PEOPLE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" Messages.format(new Person[] { personToDelete }));","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" public void execute_multipleValidIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToDelete \u003d new Person[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PEOPLE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" Messages.format(peopleToDelete));","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" expectedModel.deletePerson(peopleToDelete[0]);","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" expectedModel.deletePerson(peopleToDelete[1]);","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateValidIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST, INDEX_FIRST});","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PEOPLE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" Messages.format(new Person[] { personToDelete }));","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 1),","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 2)","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PEOPLE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" Messages.format(new Person[] { personToDelete }));","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":152,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"chin-herng"},"content":" Index[] targetIndices \u003d new Index[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(1),","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(2)","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndices);","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"chin-herng"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndices\u003d\"","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"chin-herng"},"content":" + Arrays.toString(targetIndices) + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":180,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":181,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Kaya3842":4,"chin-herng":87,"-":94}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" * {@code DeleteTaskCommand}.","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void execute_singleValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" Task taskToDelete \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASKS_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToDelete));","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" public void execute_multipleValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToDelete \u003d new Task[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASKS_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" Messages.format(tasksToDelete));","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" expectedModel.deleteTask(tasksToDelete[0]);","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" expectedModel.deleteTask(tasksToDelete[1]);","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" Task taskToDelete \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASKS_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToDelete));","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1),","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 2)","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"Yskie"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" Index[] targetIndices \u003d new Index[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":142,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(1),","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(2)","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(targetIndices);","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{targetIndices\u003d\"","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"chin-herng"},"content":" + Arrays.toString(targetIndices) + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":148,"author":{"gitId":"Yskie"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Yskie":59,"chin-herng":90,"nobodyishappy":1}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder().withTasks(model.getFilteredPersonList().get(0).getTasks()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST, new EditPersonDescriptor());","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST,","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST,","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST, DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST, copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND, DESC_AMY)));","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"chin-herng"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST, DESC_BOB)));","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Kaya3842":16,"chin-herng":22,"-":153}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"chin-herng":1,"-":64}},{"path":"src/test/java/seedu/address/logic/commands/EditTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"import seedu.address.testutil.EditTaskDescriptorBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"public class EditTaskCommandTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" Task target \u003d model.getFilteredTaskList().get(0);","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" Task editedTask \u003d new TaskBuilder().withTaskName(\"task4\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder(editedTask).build();","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(INDEX_FIRST, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" String expectedMessage \u003d String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS,","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Messages.format(target));","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" expectedModel.setTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(editTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" Index indexLastTask \u003d Index.fromOneBased(model.getFilteredTaskList().size());","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" Task lastTask \u003d model.getFilteredTaskList().get(indexLastTask.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" TaskBuilder taskInList \u003d new TaskBuilder(lastTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" Task editedTask \u003d taskInList.withTaskName(\"Task 10\").withTaskPriority(\"medium\")","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" .build();","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder().withName(\"Task 10\")","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" .withPriority(\"medium\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(indexLastTask, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" String expectedMessage \u003d String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS,","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" Messages.format(lastTask));","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" expectedModel.setTask(lastTask, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(editTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(INDEX_FIRST, new EditTaskDescriptor());","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" Task editedTask \u003d model.getFilteredTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" String expectedMessage \u003d String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS,","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" Messages.format(editedTask));","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(editTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" Task firstTask \u003d model.getFilteredTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder(firstTask).build();","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(INDEX_SECOND, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" assertCommandFailure(editTaskCommand, model, EditTaskCommand.MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder().withName(\"task 11\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":" assertCommandFailure(editTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":" public void equals() {","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" Task task4 \u003d new TaskBuilder().withTaskName(\"task4\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" Task task5 \u003d new TaskBuilder().withTaskName(\"task5\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder(task4).build();","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor2 \u003d new EditTaskDescriptorBuilder(task5).build();","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" final EditTaskCommand standardCommand \u003d new EditTaskCommand(INDEX_FIRST, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor copyDescriptor \u003d new EditTaskDescriptor(descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" EditTaskCommand commandWithSameValues \u003d new EditTaskCommand(INDEX_FIRST, copyDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" assertFalse(standardCommand.equals(new EditTaskCommand(INDEX_SECOND, descriptor)));","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" assertFalse(standardCommand.equals(new EditTaskCommand(INDEX_FIRST, descriptor2)));","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"Yskie":127,"chin-herng":3}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Kaya3842":3,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/FindTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_TASKS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_1;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_2;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_3;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTaskCommand}.","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"class FindTaskCommandTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" private Model expectedModel \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" * Parses {@code userInput} into a {@code TaskNameContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" private TaskNameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return new TaskNameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" public void execute_zeroKeywords_noTaskFound() {","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand command \u003d new FindTaskCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" assertEquals(Collections.emptyList(), model.getFilteredTaskList());","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" public void execute_multipleKeywords_multipleTasksFound() throws CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\"task1 task2 task3\");","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand command \u003d new FindTaskCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expectedMessage, command.execute(expectedModel).getFeedbackToUser());","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" assertEquals(Arrays.asList(TASK_1, TASK_2, TASK_3), model.getFilteredTaskList());","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" public void testEquals() {","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand findFirstCommand \u003d new FindTaskCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand findSecondCommand \u003d new FindTaskCommand(secondPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand findFirstCommandCopy \u003d new FindTaskCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" void testToString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand findTaskCommand \u003d new FindTaskCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" String expected \u003d FindTaskCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expected, findTaskCommand.toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":92}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Kaya3842":3,"chin-herng":2,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/ListTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"public class ListTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" private Model model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(new ListTaskCommand(), model, ListTaskCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" /* Test for find method */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" /*","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"breezetall":41}},{"path":"src/test/java/seedu/address/logic/commands/MarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" * {@code MarkTaskCommand}.","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public void execute_singleValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToMark.getName(), taskToMark.getDescription(), taskToMark.getPriority(),","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(), taskToMark.getDeadline());","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" editedTask.getStatus().setAsDone();","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" public void execute_multipleValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToMark \u003d new Task[] {","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" Messages.format(tasksToMark));","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToMark).forEach(taskToMark -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToMark.getName(),","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" taskToMark.getDescription(),","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" taskToMark.getPriority(),","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(),","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" taskToMark.getDeadline());","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" editedTask.getStatus().setAsDone();","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" Task taskToMark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToMark.getName(), taskToMark.getDescription(), taskToMark.getPriority(),","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(), taskToMark.getDeadline());","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" editedTask.getStatus().setAsDone();","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(expectedModel.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" editedTask);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] {","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1),","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 2)","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":134,"author":{"gitId":"breezetall"},"content":" public void execute_taskWithoutDeadline() {","lastModifiedDate":"2024-04-01"},{"lineNumber":135,"author":{"gitId":"breezetall"},"content":" Task taskWithoutDeadline \u003d new TaskBuilder().withTaskName(\"Task 1\").withTaskDeadline(\"Empty\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":136,"author":{"gitId":"breezetall"},"content":" model.addTask(taskWithoutDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":137,"author":{"gitId":"chin-herng"},"content":" Index noDeadlineTask \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { noDeadlineTask });","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":140,"author":{"gitId":"breezetall"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-01"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskWithoutDeadline));","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":143,"author":{"gitId":"breezetall"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":144,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":145,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-01"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":147,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":148,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":149,"author":{"gitId":"breezetall"},"content":" public void execute_taskWithDeadline() {","lastModifiedDate":"2024-04-01"},{"lineNumber":150,"author":{"gitId":"breezetall"},"content":" Task taskWithDeadline \u003d new TaskBuilder()","lastModifiedDate":"2024-04-01"},{"lineNumber":151,"author":{"gitId":"breezetall"},"content":" .withTaskName(\"Task 1\")","lastModifiedDate":"2024-04-01"},{"lineNumber":152,"author":{"gitId":"breezetall"},"content":" .withTaskDeadline(\"10-10-2020 10:00\")","lastModifiedDate":"2024-04-01"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":" .build();","lastModifiedDate":"2024-04-01"},{"lineNumber":154,"author":{"gitId":"breezetall"},"content":" model.addTask(taskWithDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":155,"author":{"gitId":"breezetall"},"content":" Index noDeadlineTask \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size());","lastModifiedDate":"2024-04-01"},{"lineNumber":156,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { noDeadlineTask });","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":158,"author":{"gitId":"breezetall"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-01"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskWithDeadline));","lastModifiedDate":"2024-04-04"},{"lineNumber":160,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":161,"author":{"gitId":"breezetall"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":162,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":163,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-01"},{"lineNumber":164,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":165,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":166,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskFirstCommand \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskSecondCommand \u003d new MarkTaskCommand(new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(markTaskFirstCommand.equals(markTaskFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskFirstCommandCopy \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(markTaskFirstCommand.equals(markTaskFirstCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(markTaskSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"nobodyishappy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"chin-herng"},"content":" Index[] targetIndices \u003d new Index[] {","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(1),","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(2)","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(targetIndices);","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"chin-herng"},"content":" String expected \u003d MarkTaskCommand.class.getCanonicalName() + \"{targetIndices\u003d\"","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"chin-herng"},"content":" + Arrays.toString(targetIndices) + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expected, markTaskCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":107,"nobodyishappy":64,"breezetall":29}},{"path":"src/test/java/seedu/address/logic/commands/UnassignCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"class UnassignCommandTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public void execute_unassignTaskUnfilteredListSingleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" Person personToBeUnassigned \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnassignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnassign), Messages.format(new Person[] { personToBeUnassigned }));","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeUnassigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(taskToUnassign);","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeUnassigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeUnassigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unassignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" public void execute_unassignTaskUnfilteredListMultipleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToBeUnassigned \u003d new Person[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnassignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnassign), Messages.format(peopleToBeUnassigned));","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToBeUnassigned).forEach(personToBeUnassigned -\u003e {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeUnassigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(taskToUnassign);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeUnassigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeUnassigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unassignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" public void execute_unassignTaskUnfilteredListDuplicateValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Person personToBeUnassigned \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnassignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnassign), Messages.format(new Person[] {personToBeUnassigned}));","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeUnassigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(taskToUnassign);","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeUnassigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeUnassigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unassignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(firstPerson.getTasks());","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(taskToUnassign);","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withTasks(editedTasks).build();","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnassignCommand.MESSAGE_SUCCESS, Messages.format(taskToUnassign),","lastModifiedDate":"2024-03-31"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":" editedPerson.getName());","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unassignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidTaskIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(outOfBoundIndex, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST,","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST,","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"chin-herng"},"content":" new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 1),","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 2)","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"chin-herng"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"chin-herng"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"chin-herng"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"chin-herng"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"chin-herng"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignOneToTwoCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignTwoToOneCommand \u003d new UnassignCommand(INDEX_SECOND, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"chin-herng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"chin-herng"},"content":" assertEquals(unassignCommand, unassignCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"chin-herng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommandCopy \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":196,"author":{"gitId":"chin-herng"},"content":" assertEquals(unassignCommand, unassignCommandCopy);","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"chin-herng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(unassignCommand, null);","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"chin-herng"},"content":" // different indices -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(unassignCommand, unassignOneToTwoCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(unassignCommand, unassignTwoToOneCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":205,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"chin-herng":205}},{"path":"src/test/java/seedu/address/logic/commands/UnmarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" * {@code UnmarkTaskCommand}.","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public void execute_singleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Task taskToUnmark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnmark));","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(taskToUnmark, new Task(","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getName(), taskToUnmark.getDescription(), taskToUnmark.getPriority(),","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(), taskToUnmark.getDeadline()));","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" public void execute_multipleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToUnmark \u003d new Task[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" Messages.format(tasksToUnmark));","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToUnmark).forEach(taskToUnmark -\u003e expectedModel.setTask(taskToUnmark, new Task(","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getName(),","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getDescription(),","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getPriority(),","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(),","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getDeadline())));","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" Task taskToUnmark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnmark));","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(taskToUnmark, new Task(","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getName(), taskToUnmark.getDescription(), taskToUnmark.getPriority(),","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(), taskToUnmark.getDeadline()));","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1),","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 2)","lastModifiedDate":"2024-04-05"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":128,"author":{"gitId":"breezetall"},"content":" public void execute_taskWithoutDeadline() {","lastModifiedDate":"2024-04-01"},{"lineNumber":129,"author":{"gitId":"breezetall"},"content":" Task taskWithoutDeadline \u003d new TaskBuilder().withTaskName(\"Task 1\").withTaskDeadline(\"Empty\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":130,"author":{"gitId":"breezetall"},"content":" model.addTask(taskWithoutDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":131,"author":{"gitId":"breezetall"},"content":" Index noDeadlineTask \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size());","lastModifiedDate":"2024-04-01"},{"lineNumber":132,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { noDeadlineTask });","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":134,"author":{"gitId":"breezetall"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-01"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskWithoutDeadline));","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":137,"author":{"gitId":"breezetall"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":138,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":139,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-01"},{"lineNumber":140,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":141,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":142,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":143,"author":{"gitId":"breezetall"},"content":" public void execute_taskWithDeadline() {","lastModifiedDate":"2024-04-01"},{"lineNumber":144,"author":{"gitId":"breezetall"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-04-01"},{"lineNumber":145,"author":{"gitId":"breezetall"},"content":" Model m \u003d new ModelManager(new AddressBook(), taskList, new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" Task taskWithDeadline \u003d new TaskBuilder()","lastModifiedDate":"2024-04-01"},{"lineNumber":147,"author":{"gitId":"breezetall"},"content":" .withTaskName(\"Task 1\")","lastModifiedDate":"2024-04-01"},{"lineNumber":148,"author":{"gitId":"breezetall"},"content":" .withTaskDeadline(\"12-12-2024 16:00\")","lastModifiedDate":"2024-04-01"},{"lineNumber":149,"author":{"gitId":"breezetall"},"content":" .build();","lastModifiedDate":"2024-04-01"},{"lineNumber":150,"author":{"gitId":"breezetall"},"content":" m.addTask(taskWithDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":151,"author":{"gitId":"breezetall"},"content":" Index deadlineTask \u003d Index.fromOneBased(m.getTaskList().getSerializeTaskList().size());","lastModifiedDate":"2024-04-01"},{"lineNumber":152,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { deadlineTask });","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":154,"author":{"gitId":"breezetall"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-01"},{"lineNumber":155,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskWithDeadline));","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":157,"author":{"gitId":"breezetall"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), m.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":158,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":159,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(unmarkTaskCommand, m, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-01"},{"lineNumber":160,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":161,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":162,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskFirstCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskSecondCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(unmarkTaskFirstCommand.equals(unmarkTaskFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskFirstCommandCopy \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(unmarkTaskFirstCommand.equals(unmarkTaskFirstCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(unmarkTaskSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"chin-herng"},"content":" Index[] targetIndices \u003d new Index[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(1),","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(2)","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(targetIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":191,"author":{"gitId":"chin-herng"},"content":" String expected \u003d UnmarkTaskCommand.class.getCanonicalName() + \"{targetIndices\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":192,"author":{"gitId":"chin-herng"},"content":" + Arrays.toString(targetIndices) + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":193,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expected, unmarkTaskCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":100,"nobodyishappy":62,"breezetall":33}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTasks().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"chin-herng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"chin-herng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":166,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"chin-herng":13,"-":156}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" String userInput \u003d \" \" + PREFIX_NAME + \"test 1 \"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" + PREFIX_TASK_DESCRIPTION + \"test 1 \"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" + PREFIX_TASK_PRIORITY + \"LOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" Task task \u003d new TaskBuilder().withTaskName(\"test 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" .withTaskDescription(\"test 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" .withTaskPriority(\"LOW\").build();","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" assertParseSuccess(parser, userInput, new AddTaskCommand(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public void parse_emptyInput_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":24,"nobodyishappy":3,"breezetall":9}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.ClearTaskCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.ListTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.UnassignCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.TaskUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" public void parseCommand_addtask() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand command \u003d (AddTaskCommand) parser.parseCommand(TaskUtil.getAddTaskCommand(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(command);","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" public void parseCommand_deletetask() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":" parser.parseCommand(\"addtask n/ test d/ test description p/ LOW\");","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand command \u003d (DeleteTaskCommand) parser.parseCommand(TaskUtil.getDeleteTaskCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" Index.fromOneBased(1)));","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" assertEquals(new DeleteTaskCommand(new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" assertEquals(new DeleteCommand(new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" + INDEX_FIRST.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" assertEquals(new EditCommand(INDEX_FIRST, descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_assign() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" AssignCommand command \u003d (AssignCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" AssignCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased() + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" + PREFIX_TO + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" assertEquals(new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" public void parseCommand_unassign() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" UnassignCommand command \u003d (UnassignCommand) parser.parseCommand(","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" UnassignCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased() + \" \"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" + PREFIX_TO + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" assertEquals(new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" public void parseCommand_cleartask() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand command \u003d (ClearTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" assertEquals(new ClearTaskCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_markTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand command \u003d (MarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" assertEquals(new MarkTaskCommand(new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_unmarkTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand command \u003d (UnmarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"chin-herng"},"content":" assertEquals(new UnmarkTaskCommand(new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":163,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"breezetall"},"content":" public void parseCommand_listTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"breezetall"},"content":" assertTrue(parser.parseCommand(ListTaskCommand.COMMAND_WORD) instanceof ListTaskCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"breezetall"},"content":" assertTrue(parser.parseCommand(ListTaskCommand.COMMAND_WORD + \" 3\") instanceof ListTaskCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":171,"author":{"gitId":"Yskie"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), (","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"Yskie"},"content":" ) -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Kaya3842":9,"Yskie":10,"chin-herng":32,"nobodyishappy":19,"-":96,"breezetall":13}},{"path":"src/test/java/seedu/address/logic/parser/AssignCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"public class AssignCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" private static final String INVALID_TO \u003d \" \" + PREFIX_TO + \"a\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" private static final String TO_ONE \u003d \" \" + PREFIX_TO + \"1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" private static final String TO_TWO \u003d \" \" + PREFIX_TO + \"2\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" private AssignCommandParser parser \u003d new AssignCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1\" + TO_ONE + \" 2\", new AssignCommand(","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedTo_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + TO_TWO,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + INVALID_TO + TO_ONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + INVALID_TO,","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" // no task index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" // no person index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" // no task index and no person index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \" \", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"-1\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"0\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 i/ a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidTo_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"-1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"0\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as to","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + TO_ONE + \" a\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"chin-herng":87}},{"path":"src/test/java/seedu/address/logic/parser/ClearTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.ClearTaskCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"public class ClearTaskCommandParserTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" private ClearTaskCommandParser parser \u003d new ClearTaskCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" public void parse_validArgs_returnsClearTaskCommand() {","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1\", new ClearTaskCommand(INDEX_FIRST));","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"a\", String.format(","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, ClearTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"chin-herng":25}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1 2\", new DeleteCommand(new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"chin-herng":4,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1 2\", new DeleteTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Yskie":31,"chin-herng":3}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_THIRD;","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" // AddCommandParserTest#parse_repeatedValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"chin-herng"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"chin-herng":14,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/EditTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"import seedu.address.testutil.EditTaskDescriptorBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"public class EditTaskCommandParserTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" EditTaskCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" private EditTaskCommandParser parser \u003d new EditTaskCommandParser();","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" // no index specified","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"Task 1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" // no field specified","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"1\", EditTaskCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" // no index and no field specified","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" String userInput \u003d \"1 n/Task 7 d/new description p/HIGH by/10-10-2023 10:00\";","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder().withName(\"Task 7\")","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" .withDescription(\"new description\").withPriority(\"high\").withDeadline(\"10-10-2023 10:00\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" EditTaskCommand expectedCommand \u003d new EditTaskCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" // negative index","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" // zero index","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"Yskie":60}},{"path":"src/test/java/seedu/address/logic/parser/FindTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.FindTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"class FindTaskCommandParserTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" private FindTaskCommandParser parser \u003d new FindTaskCommandParser();","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand expectedFindTaskCommand \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" new FindTaskCommand(new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2101\", \"2103\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" assertParseSuccess(parser, \"2101 2103\", expectedFindTaskCommand);","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" assertParseSuccess(parser, \" \\n 2101 \\n \\t 2103 \\t\", expectedFindTaskCommand);","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":33}},{"path":"src/test/java/seedu/address/logic/parser/MarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * outside of the MarkTaskCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * same path through the MarkTaskCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" private MarkTaskCommandParser parser \u003d new MarkTaskCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" public void parse_validArgs_returnsMarkTaskCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1 2\", new MarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":3,"nobodyishappy":30}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_NAME \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" private static final String INVALID_TASK_PRIORITY \u003d \"0\";","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_DATE \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_TASK_NAME \u003d \"Task 1\";","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_TASK_DESCRIPTION \u003d \"Description 1\";","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" private static final String VALID_TASK_PRIORITY \u003d \"low\";","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_TASK_DATE \u003d \"12-12-2024 16:00\";","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" assertEquals(INDEX_FIRST, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" assertEquals(INDEX_FIRST, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":182,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":210,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskName_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":211,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTaskName((String) null));","lastModifiedDate":"2024-03-26"},{"lineNumber":212,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":213,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":214,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":215,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":216,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskName(INVALID_TASK_NAME));","lastModifiedDate":"2024-03-26"},{"lineNumber":217,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":218,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":219,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":220,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskName_validValueWithoutWhitespace_returnsTaskName() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":221,"author":{"gitId":"nobodyishappy"},"content":" TaskName expectedTaskName \u003d new TaskName(VALID_TASK_NAME);","lastModifiedDate":"2024-03-26"},{"lineNumber":222,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskName, ParserUtil.parseTaskName(VALID_TASK_NAME));","lastModifiedDate":"2024-03-26"},{"lineNumber":223,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":224,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":225,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":226,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskName_validValueWithWhitespace_returnsTrimmedTaskName() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":227,"author":{"gitId":"nobodyishappy"},"content":" String taskNameWithWhitespace \u003d WHITESPACE + VALID_TASK_NAME + WHITESPACE;","lastModifiedDate":"2024-03-26"},{"lineNumber":228,"author":{"gitId":"nobodyishappy"},"content":" TaskName expectedTaskName \u003d new TaskName(VALID_TASK_NAME);","lastModifiedDate":"2024-03-26"},{"lineNumber":229,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskName, ParserUtil.parseTaskName(taskNameWithWhitespace));","lastModifiedDate":"2024-03-26"},{"lineNumber":230,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":231,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":232,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":233,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDescription_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":234,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTaskDescription((String) null));","lastModifiedDate":"2024-03-26"},{"lineNumber":235,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":236,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":237,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":238,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDescription_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":239,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskDescription(INVALID_TASK_DESCRIPTION));","lastModifiedDate":"2024-03-26"},{"lineNumber":240,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":241,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":242,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":243,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDescription_validValueWithoutWhitespace_returnsTaskDescription() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":244,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription expectedTaskDescription \u003d new TaskDescription(VALID_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-26"},{"lineNumber":245,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskDescription, ParserUtil.parseTaskDescription(VALID_TASK_DESCRIPTION));","lastModifiedDate":"2024-03-26"},{"lineNumber":246,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":247,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":248,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":249,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDescription_validValueWithWhitespace_returnsTrimmedTaskDescription() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":250,"author":{"gitId":"nobodyishappy"},"content":" String taskDescriptionWithWhitespace \u003d WHITESPACE + VALID_TASK_DESCRIPTION + WHITESPACE;","lastModifiedDate":"2024-03-26"},{"lineNumber":251,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription expectedTaskDescription \u003d new TaskDescription(VALID_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-26"},{"lineNumber":252,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskDescription, ParserUtil.parseTaskDescription(taskDescriptionWithWhitespace));","lastModifiedDate":"2024-03-26"},{"lineNumber":253,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":254,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":255,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":256,"author":{"gitId":"breezetall"},"content":" public void parseTaskPriority_null_throwsNullPointerException() {","lastModifiedDate":"2024-04-01"},{"lineNumber":257,"author":{"gitId":"breezetall"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTaskPriority((String) null));","lastModifiedDate":"2024-04-01"},{"lineNumber":258,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":259,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":260,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":261,"author":{"gitId":"breezetall"},"content":" public void parseTaskPriority_invalidValue_throwsParseException() {","lastModifiedDate":"2024-04-01"},{"lineNumber":262,"author":{"gitId":"breezetall"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskPriority(INVALID_TASK_PRIORITY));","lastModifiedDate":"2024-04-01"},{"lineNumber":263,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":264,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":265,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":266,"author":{"gitId":"breezetall"},"content":" public void parseTaskPriority_validValueWithoutWhitespace_returnsTaskPriority() throws Exception {","lastModifiedDate":"2024-04-01"},{"lineNumber":267,"author":{"gitId":"breezetall"},"content":" TaskPriority expectedTaskPriority \u003d new TaskPriority(VALID_TASK_PRIORITY);","lastModifiedDate":"2024-04-01"},{"lineNumber":268,"author":{"gitId":"breezetall"},"content":" assertEquals(expectedTaskPriority, ParserUtil.parseTaskPriority(VALID_TASK_PRIORITY));","lastModifiedDate":"2024-04-01"},{"lineNumber":269,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":270,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":271,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":272,"author":{"gitId":"breezetall"},"content":" public void parseTaskPriority_validValueWithWhitespace_returnsTrimmedTaskPriority() throws Exception {","lastModifiedDate":"2024-04-01"},{"lineNumber":273,"author":{"gitId":"breezetall"},"content":" String taskPriorityWithWhitespace \u003d WHITESPACE + VALID_TASK_PRIORITY + WHITESPACE;","lastModifiedDate":"2024-04-01"},{"lineNumber":274,"author":{"gitId":"breezetall"},"content":" TaskPriority expectedTaskPriority \u003d new TaskPriority(VALID_TASK_PRIORITY);","lastModifiedDate":"2024-04-01"},{"lineNumber":275,"author":{"gitId":"breezetall"},"content":" assertEquals(expectedTaskPriority, ParserUtil.parseTaskPriority(taskPriorityWithWhitespace));","lastModifiedDate":"2024-04-01"},{"lineNumber":276,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":277,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":278,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":279,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDeadline_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":280,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTaskDeadline((String) null));","lastModifiedDate":"2024-03-26"},{"lineNumber":281,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":282,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":283,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":284,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDeadline_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":285,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskDeadline(INVALID_TASK_DATE));","lastModifiedDate":"2024-03-26"},{"lineNumber":286,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":287,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":288,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":289,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDeadline_validValueWithoutWhitespace_returnsTaskDeadline() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":290,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline expectedTaskDeadline \u003d new TaskDeadline(VALID_TASK_DATE);","lastModifiedDate":"2024-03-26"},{"lineNumber":291,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskDeadline, ParserUtil.parseTaskDeadline(VALID_TASK_DATE));","lastModifiedDate":"2024-03-26"},{"lineNumber":292,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":293,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":294,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":295,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDeadline_validValueWithWhitespace_returnsTrimmedTaskDeadline() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":296,"author":{"gitId":"nobodyishappy"},"content":" String taskDeadlineWithWhitespace \u003d WHITESPACE + VALID_TASK_DATE + WHITESPACE;","lastModifiedDate":"2024-03-26"},{"lineNumber":297,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline expectedTaskDeadline \u003d new TaskDeadline(VALID_TASK_DATE);","lastModifiedDate":"2024-03-26"},{"lineNumber":298,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskDeadline, ParserUtil.parseTaskDeadline(taskDeadlineWithWhitespace));","lastModifiedDate":"2024-03-26"},{"lineNumber":299,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"chin-herng":3,"nobodyishappy":78,"-":193,"breezetall":26}},{"path":"src/test/java/seedu/address/logic/parser/UnassignCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.UnassignCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"public class UnassignCommandParserTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" private static final String INVALID_TO \u003d \" \" + PREFIX_TO + \"a\";","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" private static final String TO_ONE \u003d \" \" + PREFIX_TO + \"1\";","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" private static final String TO_TWO \u003d \" \" + PREFIX_TO + \"2\";","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnassignCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" private UnassignCommandParser parser \u003d new UnassignCommandParser();","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1\" + TO_ONE + \" 2\", new UnassignCommand(","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedTo_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + TO_TWO,","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + INVALID_TO + TO_ONE,","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + INVALID_TO,","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" // no task index specified","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" // no person index specified","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" // no task index and no person index specified","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \" \", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"-1\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"0\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 i/ a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidTo_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"-1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"0\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as to","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + TO_ONE + \" a\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"chin-herng":87}},{"path":"src/test/java/seedu/address/logic/parser/UnmarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private UnmarkTaskCommandParser parser \u003d new UnmarkTaskCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public void parse_validArgs_returnsUnmarkTaskCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1 2\", new UnmarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":3,"nobodyishappy":22}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"nobodyishappy":3,"-":105}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_1;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.TypicalTasks;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setTaskListFilePath(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath_validPath_setTaskListFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" Path path \u003d Paths.get(\"task/list/file/path\");","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" modelManager.setTaskListFilePath(path);","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" assertEquals(path, modelManager.getTaskListFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasTask(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_taskNotInTaskList_returnsFalse() {","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.hasTask(TASK_1));","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_taskInTaskList_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" modelManager.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" assertTrue(modelManager.hasTask(TASK_1));","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d TypicalTasks.getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":" TaskList differentTaskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"Kaya3842"},"content":" modelManager \u003d new ModelManager(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, taskList, userPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"breezetall"},"content":" // different taskList -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentTaskList, userPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, taskList, userPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":161,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, taskList, differentUserPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Kaya3842":38,"-":128,"breezetall":2}},{"path":"src/test/java/seedu/address/model/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"public class TaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private TaskList taskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" private TaskList sortedList;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" private TaskList toSortList;","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" private Task task1;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" private Task task2;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" private Task task3;","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" private Task task4;","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" @BeforeEach","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public void setUp() {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" sortedList \u003d new TaskList();","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" toSortList \u003d new TaskList();","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" task3 \u003d new TaskBuilder().withTaskName(\"Task 3\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" task4 \u003d new TaskBuilder().withTaskName(\"Task 4\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" public void addTask_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" assertTrue(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" assertTrue(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" assertFalse(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" public void getSerializeTaskList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task2);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" assertEquals(2, taskList.getSerializeTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" public void isValidPrioritySort() {","lastModifiedDate":"2024-04-01"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":" task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").withTaskPriority(\"low\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").withTaskPriority(\"medium\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" task3 \u003d new TaskBuilder().withTaskName(\"Task 3\").withTaskPriority(\"high\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task3);","lastModifiedDate":"2024-04-01"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task2);","lastModifiedDate":"2024-04-01"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task1);","lastModifiedDate":"2024-04-01"},{"lineNumber":68,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":69,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task2);","lastModifiedDate":"2024-04-01"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task1);","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task3);","lastModifiedDate":"2024-04-01"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":73,"author":{"gitId":"breezetall"},"content":" assertNotEquals(toSortList, sortedList);","lastModifiedDate":"2024-04-01"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" toSortList.sortByPriority();","lastModifiedDate":"2024-04-01"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" assertEquals(toSortList, sortedList);","lastModifiedDate":"2024-04-01"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":81,"author":{"gitId":"breezetall"},"content":" public void isValidDeadlineSort() {","lastModifiedDate":"2024-04-01"},{"lineNumber":82,"author":{"gitId":"breezetall"},"content":" task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").withTaskDeadline(\"10-10-2024 10:00\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":83,"author":{"gitId":"breezetall"},"content":" task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").withTaskDeadline(\"11-10-2024 10:00\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":84,"author":{"gitId":"breezetall"},"content":" task3 \u003d new TaskBuilder().withTaskName(\"Task 3\").withTaskDeadline(\"12-10-2024 10:00\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" task4 \u003d new TaskBuilder().withTaskName(\"Task 4\").withTaskDeadline(\"12-10-2024 10:00\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task1);","lastModifiedDate":"2024-04-01"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task2);","lastModifiedDate":"2024-04-01"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task3);","lastModifiedDate":"2024-04-01"},{"lineNumber":90,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task4);","lastModifiedDate":"2024-04-01"},{"lineNumber":91,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":92,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task3);","lastModifiedDate":"2024-04-01"},{"lineNumber":93,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task2);","lastModifiedDate":"2024-04-01"},{"lineNumber":94,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task1);","lastModifiedDate":"2024-04-01"},{"lineNumber":95,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task4);","lastModifiedDate":"2024-04-01"},{"lineNumber":96,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" assertNotEquals(toSortList, sortedList);","lastModifiedDate":"2024-04-01"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":99,"author":{"gitId":"breezetall"},"content":" toSortList.sortByPriority();","lastModifiedDate":"2024-04-01"},{"lineNumber":100,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":101,"author":{"gitId":"breezetall"},"content":" assertEquals(toSortList, sortedList);","lastModifiedDate":"2024-04-01"},{"lineNumber":102,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":46,"nobodyishappy":3,"breezetall":54}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTasks().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" public void deleteTask() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" Person person \u003d new PersonBuilder().withTasks(task).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(new PersonBuilder().build(), person.deleteTask(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" public void hasTask() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" Person person \u003d new PersonBuilder().withTasks(task).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(person.hasTask(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" .withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":105,"author":{"gitId":"nobodyishappy"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTasks(VALID_TASK_FIRST).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" + \", tasks\u003d\" + ALICE.getTasks() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Yskie":2,"chin-herng":8,"nobodyishappy":10,"-":96}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" public void deletes_assignedTask_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" Task test \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" ALICE.addTask(test);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" uniquePersonList.deleteAssignedTask(test);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(ALICE.hasTask(test));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Yskie":6,"nobodyishappy":8,"-":172}},{"path":"src/test/java/seedu/address/model/task/TaskDeadlineTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDeadlineTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" public static final DateTimeFormatter VALIDATION_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final DateTimeFormatter OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskDeadline((TaskDeadline) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_invalidTaskDeadline_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" String invalidTaskDeadline \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskDeadline(invalidTaskDeadline));","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" String date \u003d \"12-12-2024 16:00\";","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(date, VALIDATION_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline taskDeadline \u003d new TaskDeadline(date);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(dateTime.format(OUTPUT_FORMAT), taskDeadline.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" public void toJsonSaveTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" String date \u003d \"12-12-2024 16:00\";","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(date, VALIDATION_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline taskDeadline \u003d new TaskDeadline(date);","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(dateTime.format(VALIDATION_FORMAT), taskDeadline.toJsonSave());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" public void isValidTaskDeadline() {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" // null deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskDeadline.isValidTaskDeadline(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" // invalid deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\"\")); // empty string","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\" \")); // spaces only","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\"12/12/2024 16:00\")); // Wrong format","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\"12-12-2024\")); // Missing time","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\"12-12-2024 6:00\")); // Missing digits for time","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" // valid deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDeadline.isValidTaskDeadline(\"12-12-2024 16:00\")); // Valid format","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline taskDeadline \u003d new TaskDeadline(\"12-12-2024 16:00\");","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskDeadline.equals(new TaskDeadline(\"12-12-2024 16:00\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskDeadline.equals(taskDeadline));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDeadline.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDeadline.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDeadline.equals(new TaskDeadline(\"12-12-2024 18:00\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline taskDeadline \u003d new TaskDeadline(\"12-12-2024 16:00\");","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(taskDeadline.hashCode(), taskDeadline.taskDeadline.hashCode());","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":85}},{"path":"src/test/java/seedu/address/model/task/TaskDescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDescriptionTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskDescription((TaskDescription) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_invalidTaskDescription_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" String invalidTaskDescription \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskDescription(invalidTaskDescription));","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void isValidTaskDescription() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" // null description","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskDescription.isValidTaskDescription(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" // invalid description","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDescription.isValidTaskDescription(\"\")); // empty string","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDescription.isValidTaskDescription(\" \")); // spaces only","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" // valid description","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"12345\")); // numbers only","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"David Roger Jackson Ray Jr 2nd\")); // long description","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription taskDescription \u003d new TaskDescription(\"Valid Description\");","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Valid Description\", taskDescription.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription taskDescription \u003d new TaskDescription(\"Valid Description\");","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskDescription.equals(new TaskDescription(\"Valid Description\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskDescription.equals(taskDescription));","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDescription.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDescription.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDescription.equals(new TaskDescription(\"Other Valid Description\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription taskDescription \u003d new TaskDescription(\"Valid Description\");","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(taskDescription.hashCode(), taskDescription.taskDescription.hashCode());","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":70}},{"path":"src/test/java/seedu/address/model/task/TaskNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"class TaskNameContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" void test_taskNameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" // One keyword","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"2101\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" assertTrue(predicate.test(new TaskBuilder().withTaskName(\"2101\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2101\", \"2103t\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" assertTrue(predicate.test(new TaskBuilder().withTaskName(\"2101 2103t\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2101\", \"2103\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertTrue(predicate.test(new TaskBuilder().withTaskName(\"2101 2103t\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2109S\", \"2103T\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" assertTrue(predicate.test(new TaskBuilder().withTaskName(\"2103t 2109s\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" public void test_taskNameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" // Zero keyword","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" assertFalse(predicate.test(new TaskBuilder().withTaskName(\"2103t\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2101\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" assertFalse(predicate.test(new TaskBuilder().withTaskName(\"2103t\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" // Keywords match description, but does not match name","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"dummy\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" assertFalse(predicate.test(new TaskBuilder().withTaskName(\"2103t\")","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" .withTaskDescription(\"dummy\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" void testEquals() {","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" void testToString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" String expected \u003d TaskNameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":89}},{"path":"src/test/java/seedu/address/model/task/TaskNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"public class TaskNameTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskName((TaskName) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_invalidTaskName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" String invalidTaskName \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskName(invalidTaskName));","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void isValidTaskName() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" // null name","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskName.isValidTaskName(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" // invalid name","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskName.isValidTaskName(\"\")); // empty string","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskName.isValidTaskName(\" \")); // spaces only","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" // valid name","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"12345\")); // numbers only","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" TaskName taskName \u003d new TaskName(\"Valid Name\");","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Valid Name\", taskName.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" TaskName taskName \u003d new TaskName(\"Valid Name\");","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskName.equals(new TaskName(\"Valid Name\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskName.equals(taskName));","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskName.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskName.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskName.equals(new TaskName(\"Other Valid Name\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" TaskName taskName \u003d new TaskName(\"Valid Name\");","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(taskName.hashCode(), taskName.taskName.hashCode());","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":70}},{"path":"src/test/java/seedu/address/model/task/TaskPriorityTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"public class TaskPriorityTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskPriority((TaskPriority) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" public void isValidTaskPriority() {","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" // null description","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskDescription.isValidTaskDescription(null));","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" // invalid description","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" assertFalse(TaskPriority.isValidTaskPriority(\"\")); // empty string","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" assertFalse(TaskPriority.isValidTaskPriority(\" \")); // spaces only","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" // valid description","lastModifiedDate":"2024-04-01"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" assertTrue(TaskPriority.isValidTaskPriority(\"low\")); // alphabets only","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" assertTrue(TaskPriority.isValidTaskPriority(\"1\")); // numbers only","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" assertTrue(TaskPriority.isValidTaskPriority(\"HIGH\")); // Capital letters","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" assertTrue(TaskPriority.isValidTaskPriority(\"High\")); // Mix of upper and lowercase letters","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" TaskPriority taskPriority1 \u003d new TaskPriority(\"1\");","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" TaskPriority taskPriority2 \u003d new TaskPriority(\"LOW\");","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" assertEquals(\"LOW\", taskPriority1.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" assertEquals(\"LOW\", taskPriority2.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" TaskPriority taskPriority \u003d new TaskPriority(\"1\");","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" assertTrue(taskPriority.equals(new TaskPriority(\"1\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" assertTrue(taskPriority.equals(taskPriority));","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"breezetall"},"content":" assertFalse(taskPriority.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"breezetall"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":" assertFalse(taskPriority.equals(5.0f));","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" assertFalse(taskPriority.equals(new TaskPriority(\"HIGH\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"chin-herng":1,"breezetall":60}},{"path":"src/test/java/seedu/address/model/task/TaskStatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"public class TaskStatusTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskStatus((TaskStatus) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_invalidTaskStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" String invalidTaskStatus \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskStatus(invalidTaskStatus));","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_newTaskStatus_assertfalse() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(new TaskStatus().getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_validTaskStatus_done() {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(new TaskStatus(\"Done\").getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_validTaskStatus_notDone() {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(new TaskStatus(\"Not Done\").getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" public void setAsDone_checkMarkStatus_true() {","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus();","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" taskStatus.setAsDone();","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskStatus.getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" public void setAsUndone_checkUnmarkStatus_false() {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus();","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" taskStatus.setAsUndone();","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskStatus.getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest_done() {","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus(\"Done\");","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Done\", taskStatus.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest_notDone() {","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus();","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Not Done\", taskStatus.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus();","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskStatus.equals(new TaskStatus()));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskStatus.equals(taskStatus));","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskStatus.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskStatus.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskStatus.equals(new TaskStatus(\"Done\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":81}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"public class TaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" public void constructor_validInput_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().withTaskName(\"Test\").withTaskDescription(\"Test\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Test\", task.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Test\", task.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task.getStatus().getTaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public void equals_sameObject_true() {","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" assertTrue(task.equals(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void equals_differentObjectSameName_true() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(task1.equals(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public void equals_differentObjectDifferentName_false() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskName(\"Test Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskName(\"Test Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectSameDescription_true() {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" assertTrue(task1.equals(task2));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectDifferentDescription_false() {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskDescription(\"Test Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskDescription(\"Test Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectDifferentType_false() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" assertFalse(task.equals(new Object()));","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" public void compare_differentName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(-1, task1.compare(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" public void compare_differentDescription() {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskDescription(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskDescription(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(-1, task1.compare(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":" public void compare_differentPriority() {","lastModifiedDate":"2024-04-01"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" Task task1 \u003d new TaskBuilder().withTaskPriority(\"1\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" Task task2 \u003d new TaskBuilder().withTaskPriority(\"2\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-04-01"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":34,"nobodyishappy":40,"breezetall":7}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_NAME \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" private static final String TASK_STATUS \u003d \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" private static final String TASK_DEADLINE \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" private static final String TASK_PRIORITY \u003d \"LOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" private static final List\u003cJsonAdaptedTask\u003e VALID_TASKS \u003d BENSON.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" .map(JsonAdaptedTask::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" public void toModelType_invalidTasks_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" List\u003cJsonAdaptedTask\u003e invalidTasks \u003d new ArrayList\u003c\u003e(VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"breezetall"},"content":" invalidTasks.add(new JsonAdaptedTask(","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"breezetall"},"content":" INVALID_TASK_NAME, INVALID_TASK_DESCRIPTION, TASK_PRIORITY, TASK_STATUS, TASK_DEADLINE));","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chin-herng":13,"nobodyishappy":5,"-":96,"breezetall":3}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_NAME \u003d \"Valid Task Name\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final String EMPTY_NAME \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private static final String VALID_DESCRIPTION \u003d \"Valid Task Description\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" private static final String EMPTY_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" private static final String PRIORITY \u003d \"LOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" private static final String STATUS \u003d \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_DEADLINE \u003d \"23-12-2024 16:00\";","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_DEADLINE \u003d \"23-12-2024\";","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" private static final Task VALID_TASK \u003d new TaskBuilder().withTaskName(VALID_NAME)","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" .withTaskDescription(VALID_DESCRIPTION)","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" .withTaskDeadline(VALID_DEADLINE)","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" .build();","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_validTask_success() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" Task modelTask \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(VALID_TASK, modelTask);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_emptyName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(EMPTY_NAME, VALID_DESCRIPTION, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_emptyDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, EMPTY_DESCRIPTION, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_invalidDeadline_throwsIllegalValueException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, PRIORITY, STATUS, INVALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(null, VALID_DESCRIPTION, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, null, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" public void toModelType_nullPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, null, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, PRIORITY, null, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullDeadline_throwsIllegalValueException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, PRIORITY, STATUS , null);","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":23,"nobodyishappy":43,"breezetall":24}},{"path":"src/test/java/seedu/address/storage/JsonSerializableTaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public class JsonSerializableTaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final Task TASK_1 \u003d new TaskBuilder().withTaskName(\"Test 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" private static final Task TASK_2 \u003d new TaskBuilder().withTaskName(\"Test 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public void toModelType_validTaskList_success() throws IllegalValueException {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_2);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" JsonSerializableTaskList jsonSerializableTaskList \u003d new JsonSerializableTaskList(taskList);","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" TaskList modelTaskList \u003d jsonSerializableTaskList.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" assertEquals(taskList.getSerializeTaskList(), modelTaskList.getSerializeTaskList());","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1); // Duplicate task","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" JsonSerializableTaskList jsonSerializableTaskList \u003d new JsonSerializableTaskList(taskList);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" assertThrows(IllegalValueException.class, jsonSerializableTaskList::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":36,"nobodyishappy":3}},{"path":"src/test/java/seedu/address/storage/JsonTaskListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.Assert;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"public class JsonTaskListStorageTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonTaskListStorageTest\");","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" @TempDir","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public void readTaskList_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertFalse(readTaskList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskList(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" : null;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" private Optional\u003cTaskList\u003e readTaskList(String filePath) throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" return new JsonTaskListStorage(Paths.get(filePath)).readTaskList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" private void saveTaskList(TaskList taskList, String filePath) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" new JsonTaskListStorage(Paths.get(filePath)).saveTaskList(taskList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" public void readAndSaveTaskList_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" Path filePath \u003d testFolder.resolve(\"TempTaskList.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" TaskList sample \u003d getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage jsonTaskListStorage \u003d new JsonTaskListStorage(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" jsonTaskListStorage.saveTaskList(sample, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" TaskList readBack \u003d jsonTaskListStorage.readTaskList(filePath).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(readBack);","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveTaskList(new TaskList(), null));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" private static TaskList getTypicalTaskList() {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 1\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 2\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 3\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":72,"nobodyishappy":4}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(getTempFilePath(\"samples\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" storageManager \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" public void taskListSaveTest() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" TaskList testList \u003d getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" Path testPath \u003d getTempFilePath(\"test\");","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" storageManager.saveTaskList(testList, testPath);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(testList);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" public void getTaskListFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(storageManager.getTaskListFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":17,"-":67}},{"path":"src/test/java/seedu/address/testutil/EditTaskDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" * A utility class to help with building EditTaskDescriptor objects.","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"public class EditTaskDescriptorBuilder {","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" private EditTaskDescriptor descriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder() {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" descriptor \u003d new EditTaskDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder(EditTaskDescriptor descriptor) {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" this.descriptor \u003d new EditTaskDescriptor(descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" * Returns an {@code EditTaskDescriptor} with fields containing {@code task}\u0027s","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" * details.","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder(Task task) {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" descriptor \u003d new EditTaskDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" descriptor.setName(task.getName());","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" descriptor.setDescription(task.getDescription());","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" descriptor.setPriority(task.getPriority());","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" descriptor.setDeadline(task.getDeadline());","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" * Sets the {@code Name} of the {@code EditTaskDescriptor} that we are building.","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" descriptor.setName(new TaskName(name));","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" * Sets the {@code Description} of the {@code EditTaskDescriptor} that we are","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" * building.","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder withDescription(String description) {","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" descriptor.setDescription(new TaskDescription(description));","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" * Sets the {@code Priority} of the {@code EditTaskDescriptor} that we are","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" * building.","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder withPriority(String priority) {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" descriptor.setPriority(new TaskPriority(priority));","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" * Sets the {@code Deadline} of the {@code EditTaskDescriptor} that we are","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" * building.","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder withDeadline(String deadline) {","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" descriptor.setDeadline(new TaskDeadline(deadline));","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptor build() {","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" return descriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"Yskie":74}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" private Set\u003cTask\u003e tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" tasks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" tasks \u003d new HashSet\u003c\u003e(personToCopy.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" * Sets the {@code Set\u003cTask\u003e} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" public PersonBuilder withTasks(Set\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" * Parses the {@code tasks} into a {@code Set\u003cTask\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" public PersonBuilder withTasks(Task ... tasks) {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" this.tasks \u003d SampleDataUtil.getTaskSet(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"chin-herng":15,"nobodyishappy":1,"-":88}},{"path":"src/test/java/seedu/address/testutil/TaskBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" * A utility class to help with building Task objects.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"public class TaskBuilder {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_NAME \u003d \"Implement Test\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_DESCRIPTION \u003d \"Test to test the code\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_DEADLINE \u003d \"Empty\";","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" public static final String DEFAULT_TASK_PRIORITY \u003d \"low\";","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" private TaskName taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" private TaskDescription taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" private TaskPriority taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" private TaskDeadline taskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" * Creates a {@code TaskBuilder} with the default details.","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d new TaskName(DEFAULT_TASK_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d new TaskDescription(DEFAULT_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" taskPriority \u003d new TaskPriority(DEFAULT_TASK_PRIORITY);","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" taskDeadline \u003d new TaskDeadline(DEFAULT_TASK_DEADLINE);","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" * Initializes the TaskBuilder with the data of {@code taskToCopy}.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder(Task taskToCopy) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d taskToCopy.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d taskToCopy.getDescription();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" taskPriority \u003d taskToCopy.getPriority();","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d taskToCopy.getDeadline();","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskName} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskName(String taskName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" this.taskName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskDescription} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskDescription(String taskDescription) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" this.taskDescription \u003d new TaskDescription(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" * Sets the {@code TaskPriority} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" public TaskBuilder withTaskPriority(String taskPriority) {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d new TaskPriority(taskPriority);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskDeadline} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskDeadline(String taskDeadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" this.taskDeadline \u003d new TaskDeadline(taskDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":" return this;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" public Task build() {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" return new Task(taskName, taskDescription, taskPriority, new TaskStatus(), taskDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":60,"breezetall":20}},{"path":"src/test/java/seedu/address/testutil/TaskUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" * A utility class for Task.","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class TaskUtil {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public static String getAddTaskCommand(Task task) {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" return AddTaskCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_NAME + task.getName() + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" + PREFIX_TASK_DESCRIPTION + task.getDescription() + \" \"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" + PREFIX_TASK_PRIORITY + task.getPriority();","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" * Returns an delete command string for adding the {@code person}.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" public static String getDeleteTaskCommand(Index index) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" return DeleteTaskCommand.COMMAND_WORD + \" \" + index.getOneBased();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":16,"Yskie":9,"nobodyishappy":2,"breezetall":6}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_FIRST \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_SECOND \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_THIRD \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"chin-herng":3,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_SECOND;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing\").build()).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing 1\").build(),","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" new TaskBuilder().withTaskName(\"Testing 2\").build()).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing\").build()).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTasks(VALID_TASK_SECOND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST, VALID_TASK_SECOND)","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"nobodyishappy":9,"-":69}},{"path":"src/test/java/seedu/address/testutil/TypicalTasks.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" * A utility class containing a list of {@code Task} objects to be used in tests.","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"public class TypicalTasks {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_1 \u003d new TaskBuilder().withTaskName(\"task1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_2 \u003d new TaskBuilder().withTaskName(\"task2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_3 \u003d new TaskBuilder().withTaskName(\"task3\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" private TypicalTasks() {}","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Returns an {@code TaskList} with all the sample tasks.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public static TaskList getTypicalTaskList() {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_2);","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_3);","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":23,"nobodyishappy":3}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W13-4/tp/actions)","lastModifiedDate":"2024-03-06"},{"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":"chin-herng"},"content":"# TeamTracker","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"## Description","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"TeamTracker is a productivity app designed for leaders managing teams, aimed at reducing the stress of task management and team coordination. It helps keep track of team members\u0027 contact info, roles, tasks, deadlines, and meetings, offering leaders a clearer overview of their team\u0027s structure and responsibilities.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"## Table of Contents","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"- [TeamTracker](#teamtracker)","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":" - [Description](#description)","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" - [Table of Contents](#table-of-contents)","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" - [Installation](#installation)","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" - [Usage](#usage)","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" - [Credits](#credits)","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"## Installation","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"Download the latest `teamtracker.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-4/tp/releases).","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"## Usage","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"1. Ensure you have Java `11` or above installed in your computer.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"2. Copy `teamtracker.jar` to the folder you want to use as the _home folder_ for TeamTracker.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"3. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar teamtracker.jar` command to run the application.","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"## Credits","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"This project is evolved from the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"chin-herng":25,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_11","lastModifiedDate":"2019-02-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" String jUnitVersion \u003d \u00275.10.0\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" archiveFileName \u003d \u0027TeamTracker.jar\u0027","lastModifiedDate":"2024-03-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":"run {","lastModifiedDate":"2024-04-03"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-04-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-04-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Yskie":3,"nobodyishappy":1,"-":72}},{"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":"breezetall"},"content":"### Abdul Khaliq","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/breezetall.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"[[github](https://github.com/breezetall)]","lastModifiedDate":"2024-03-06"},{"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":"chin-herng"},"content":"### Chong Chin Herng","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"\u003cimg src\u003d\"images/chin-herng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"[[github](http://github.com/chin-herng)]","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"### Dinh Tran Hai Chien","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"\u003cimg src\u003d\"images/kaya3842.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"[[github](http://github.com/Kaya3842)]","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"### Tang Hao Liang","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/nobodyishappy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"[[github](http://github.com/nobodyishappy)]","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"* Responsibilities: Mark/Unmark Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":"### Yong Shi Kang","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/yskie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"[[github](http://github.com/yskie)]","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"* Responsibilities: Deletion Feature","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Kaya3842":3,"Yskie":2,"chin-herng":3,"nobodyishappy":6,"-":42,"breezetall":3}},{"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":"Kaya3842"},"content":"# TeamTracker Developer Guide","lastModifiedDate":"2024-03-07"},{"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":"breezetall"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter`, `TaskListPanel` 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":"2024-03-30"},{"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":"Yskie"},"content":"**Note:** The lifeline for `DeleteTaskCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-03-29"},{"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":"Yskie"},"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., `DeleteTaskCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-29"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteTaskCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2024-03-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a task).\u003cbr\u003e","lastModifiedDate":"2024-03-29"},{"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":"Yskie"},"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., `AddTaskCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddTaskCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":"* All `XYZCommandParser` classes (e.g., `AddTaskCommandParser`, `DeleteTaskCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":"**API** : [`Model.java`](https://github.com/AY2324S2-CS2103T-W13-4/tp/blob/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"675\" /\u003e","lastModifiedDate":"2024-03-30"},{"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":"chin-herng"},"content":"* stores the task list data i.e., all `Task` objects (which are contained in a `TaskList` object).","lastModifiedDate":"2024-03-30"},{"lineNumber":129,"author":{"gitId":"chin-herng"},"content":"* stores the currently \u0027selected\u0027 `Task` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cTask\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":"2024-03-30"},{"lineNumber":130,"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":131,"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":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. `TaskList` implements the `ReadOnlyTaskList` interface, and has a `UniqueTaskList` that contains all `Task`s. This allows `TaskList` to be implemented in a way that is consistent to how `AddressBook` is implemented, thus any benefits arising from the design decisions of `Person` also applies to `Task`. We are currently not adopting this model due to time constraints and the benefits are not immediately obvious.\u003cbr\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"chin-herng"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"562.5\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"Kaya3842"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"850\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"Kaya3842"},"content":"* can save address book data, task list data and user preference data in JSON format, and read ","lastModifiedDate":"2024-04-04"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":"them back into corresponding objects.","lastModifiedDate":"2024-04-04"},{"lineNumber":151,"author":{"gitId":"Kaya3842"},"content":"* inherits from AddressBookStorage, TaskListStorage and UserPrefStorage, which means it can be ","lastModifiedDate":"2024-04-04"},{"lineNumber":152,"author":{"gitId":"Kaya3842"},"content":"treated as one of the three classes (if only the functionality of only one is needed).","lastModifiedDate":"2024-04-04"},{"lineNumber":153,"author":{"gitId":"Kaya3842"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to ","lastModifiedDate":"2024-04-04"},{"lineNumber":154,"author":{"gitId":"Kaya3842"},"content":"save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2024-04-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"nobodyishappy"},"content":"### \\[Proposed\\] Grouping Feature","lastModifiedDate":"2024-03-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"nobodyishappy"},"content":"The proposed grouping mechanism is facilitated by `GroupedUniquePersonList`. It extends `UniquePersonList` with task that are linked between the people of the same group. Additionally, it implements the following operations:","lastModifiedDate":"2024-03-30"},{"lineNumber":171,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":172,"author":{"gitId":"nobodyishappy"},"content":"* `GroupedUniquePersonList#assignTask(Task)` - Add task to everyone in the group","lastModifiedDate":"2024-03-30"},{"lineNumber":173,"author":{"gitId":"nobodyishappy"},"content":"* `GroupedAddressBook#markTask(Index)` - Mark task of everyone in the group","lastModifiedDate":"2024-03-30"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":"* `GroupedAddressBook#unmarkTask(Index)` - Unmark task of everyone in the group","lastModifiedDate":"2024-03-30"},{"lineNumber":175,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":"These operations are exposed in the `Model` interface as `Model#assignTaskToGroup(String, Task)`, `Model#markTaskOfGroup(String, Index)` and `Model#unmarkTaskofGroup(String, Index)` respectively.","lastModifiedDate":"2024-03-30"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":"`GroupedUniquePersonList` adds a new string called `groupName` to label each of their groups.","lastModifiedDate":"2024-03-30"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":"A new list of `GroupedUniquePersonList` will be added to the `Model` interface.","lastModifiedDate":"2024-03-30"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":"To add to the list of `GroupedUniquePersonList`, the Model interface includes `Model#addGroup(String, List\u003cPerson\u003e)` and `Model#addListOfGroups(List\u003cGroup\u003e)`.","lastModifiedDate":"2024-03-30"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":"To remove to the list of `GroupedUniquePersonList`, the Model interface includes `Model#removeGroup(String)`.","lastModifiedDate":"2024-03-30"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":186,"author":{"gitId":"nobodyishappy"},"content":"New operation are exposed in the `Model` interface are `Model#addPersonToGroup(String, Person)`, `Model#removePersonFromGroup(String, Person)` and `Model#deleteAssignedTaskGroup(String, Task)` which would call `UniquePersonList#add(Person)`, `UniquePersonList#remove(Person)` and `UniquePersonList#deleteAssignedTask(Person)`respectively.","lastModifiedDate":"2024-03-30"},{"lineNumber":187,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":188,"author":{"gitId":"nobodyishappy"},"content":"Given below is an example usage scenario and how the grouping mechanism behaves at each step.","lastModifiedDate":"2024-03-30"},{"lineNumber":189,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":190,"author":{"gitId":"nobodyishappy"},"content":"Step 1. The user launches the application for the first time. The list of the `GroupedUniquePersonList` will be empty if there are no groups stored in the storage.","lastModifiedDate":"2024-03-30"},{"lineNumber":191,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":192,"author":{"gitId":"nobodyishappy"},"content":"\u003cpuml src\u003d\"diagrams/GroupingState0.puml\" alt\u003d\"GroupingState0\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":193,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":194,"author":{"gitId":"nobodyishappy"},"content":"Step 2. The user executes `group gn/2103T gp/Ivan gp/Greg gp/Dave` command to group Ivan, Greg and Dave from the displayed person list to one group. The `group` command calls `Model#addGroup(String, List\u003cPerson\u003e)`, which creates a new group with that contains the list of people that was indicated by the user.","lastModifiedDate":"2024-03-30"},{"lineNumber":195,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":196,"author":{"gitId":"nobodyishappy"},"content":"\u003cpuml src\u003d\"diagrams/GroupingState1.puml\" alt\u003d\"GroupingState1\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":197,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":198,"author":{"gitId":"nobodyishappy"},"content":"Step 3. The user executes `assigngroup gn/2103T gt/Task 1` command to assign a task named \"Task 1\" to the group named \"2103T\" from the group list. The `assigngroup` command calls `Model#assignTaskToGroup(String, Task)`, which finds the group with the same name and assign that task to everyone that is in the group.","lastModifiedDate":"2024-03-30"},{"lineNumber":199,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":200,"author":{"gitId":"nobodyishappy"},"content":"\u003cpuml src\u003d\"diagrams/GroupingState2.puml\" alt\u003d\"GroupingState2\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":201,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":202,"author":{"gitId":"nobodyishappy"},"content":"Step 4. The user executes `addpersontogroup gn/2103T gp/Bob` command to add Bob to the group named \"2103T\" from the group list. The `addpersontogroup` command calls `Model#addPersonToGroup(String, Person)`, which finds the group with the same name and add the person to the group.","lastModifiedDate":"2024-03-30"},{"lineNumber":203,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":204,"author":{"gitId":"nobodyishappy"},"content":"Step 5. The user executes `removepersonfromgroup gn/2103T gp/4` command to remove Bob from the group named \"2103T\" from the group list. The `removepersonfromgroup` command calls `Model#removePersonFromGroup(String, Person)`, which finds the group with the same name and remove the person to the group.","lastModifiedDate":"2024-03-30"},{"lineNumber":205,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":206,"author":{"gitId":"nobodyishappy"},"content":"Step 6. The user executes `deletetaskgroup gn/2103T gt/Task 1` command to remove a task named \"Task 1\" from the group named \"2103T\" from the group list. The `deletetaskgroup` command calls `Model#deleteAssignedTaskGroup(String, Task)`, which finds the group with the same name and remove that task from everyone that is in the group.","lastModifiedDate":"2024-03-30"},{"lineNumber":207,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":208,"author":{"gitId":"nobodyishappy"},"content":"Step 7. The user executes `deletegroup gn/2103T` command to remove the group from the list. The `deletegroup` command calls `Model#removeGroup(String)`, which finds the group with the same name and remove that group from the list.","lastModifiedDate":"2024-03-30"},{"lineNumber":209,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":210,"author":{"gitId":"nobodyishappy"},"content":"### \\[Proposed\\] Undo/Redo Feature","lastModifiedDate":"2024-03-30"},{"lineNumber":211,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":212,"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":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"Yskie"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book and task list state in its history.","lastModifiedDate":"2024-03-30"},{"lineNumber":215,"author":{"gitId":"Yskie"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book and task list state from its history.","lastModifiedDate":"2024-03-30"},{"lineNumber":216,"author":{"gitId":"Yskie"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book and task list state from its history.","lastModifiedDate":"2024-03-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"Yskie"},"content":"These operations are exposed in the `Model` interface as `Model#commit()`, `Model#undo()` and `Model#redo()` respectively.","lastModifiedDate":"2024-03-30"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"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":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"Yskie"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book and task list state, with the `addressBookStatePointer` and `taskListStatePointer`.","lastModifiedDate":"2024-03-30"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"Yskie"},"content":"Step 2. The user executes `add n/task 1 …​` to add a new task. The `addtask` command also calls `Model#commit()`, causing another modified task kust state to be saved into the `taskListStateList`.","lastModifiedDate":"2024-03-30"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"Yskie"},"content":"**Note:** If a command fails its execution, it will not call `Model#commit()`, so the state will not be saved.","lastModifiedDate":"2024-03-30"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"Yskie"},"content":"Step 3. 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#undo()`, which will shift the `taskListStatePointer` once to the left, pointing it to the previous task list state, and restores the task list to that state.","lastModifiedDate":"2024-03-30"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"Yskie"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2024-03-30"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"Yskie"},"content":"**Note:** If the pointers are at index 0, pointing to the initial state, then there are no previous states to restore. The `undo` command uses `Model#canUndo()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo.","lastModifiedDate":"2024-03-30"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"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":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":255,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":261,"author":{"gitId":"Yskie"},"content":"The `redo` command does the opposite — it calls `Model#redo()`, which shifts the pointers once to the right, pointing to the previously undone state, and restores the address book or task list to that state.","lastModifiedDate":"2024-03-30"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":265,"author":{"gitId":"Yskie"},"content":"**Note:** If the `addressBookStatePointer` is at index `addressBookStateList.size() - 1` or `taskListStatePointer` is at index `taskListStateList.size() - 1`, pointing to the latest state, then there are no undone states to restore for the respective commands. The `redo` command uses `Model#canRedo()` 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":"2024-03-30"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"Yskie"},"content":"Step 4. The user then decides to execute the command `listtask`. Commands that do not modify the task list, such as `listtask`, will usually not call `Model#commit()`, `Model#undo()` or `Model#redo()`. Thus, the `taskListStateList` and `taskListStatePointer` remains unchanged.","lastModifiedDate":"2024-03-30"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"Yskie"},"content":" * Pros: Will use less memory (e.g. for `deletetask`, just save the task being deleted).","lastModifiedDate":"2024-03-30"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":295,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":296,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":298,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":312,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"nobodyishappy"},"content":"* are currently managing people for groups","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"nobodyishappy"},"content":"* has a tendency to forget tasks to complete","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"nobodyishappy"},"content":"**Value proposition**: This app aims to help leaders to keep track of members of formed groups and their contact information. This app helps to keep track of individual and group tasks, deadlines and meetings, thus allowing them to have a better overview of the structure.","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"nobodyishappy"},"content":"|----------|--------------------------------------------|-------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | add personal tasks | keep up to date with the different tasks to complete |","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | delete tasks | |","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | mark/unmark the tasks as done/not done | keep track of tasks that are completed |","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | group leader | assign tasks to individuals within the group | manage individual tasks |","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | busy group leader | see an overview of all the saved task | save time |","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | student | set deadline for my tasks | see which task need to be done earlier |","lastModifiedDate":"2024-03-30"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"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":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"breezetall"},"content":"**Use case: Assigns a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"breezetall"},"content":"1. User requests to list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"breezetall"},"content":"2. TeamTracker shows a list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":344,"author":{"gitId":"breezetall"},"content":"3. User requests to assign a task to a contact","lastModifiedDate":"2024-03-06"},{"lineNumber":345,"author":{"gitId":"breezetall"},"content":"4. TeamTracker assigns the task to the contact","lastModifiedDate":"2024-03-06"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":349,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"breezetall"},"content":"* 4a. The task given does not exist.","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"breezetall"},"content":"* 4a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"breezetall"},"content":"**Use case: Delete a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"breezetall"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"breezetall"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"breezetall"},"content":"2. TeamTracker shows a list of tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"breezetall"},"content":"3. User requests to delete a specific task in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":367,"author":{"gitId":"breezetall"},"content":"4. TeamTracker deletes the task","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"breezetall"},"content":"* 3a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"breezetall"},"content":"**Use case: Add a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":383,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":384,"author":{"gitId":"breezetall"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":385,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":386,"author":{"gitId":"breezetall"},"content":"1. User requests to add a task to the list of tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":387,"author":{"gitId":"breezetall"},"content":"2. TeamTracker adds to the list","lastModifiedDate":"2024-03-06"},{"lineNumber":388,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":389,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"breezetall"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"breezetall"},"content":"* 2a. The given parameters is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"breezetall"},"content":"* 2a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"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":402,"author":{"gitId":"Yskie"},"content":"2. Should be able to be used for long periods without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"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":404,"author":{"gitId":"Yskie"},"content":"4. Should respond within one seconds.","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"Yskie"},"content":"5. Documentation should be easy for users that are inexperienced in command line to follow.","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"Kaya3842"},"content":"6. User Interface should be straightforward and intuitive to navigate even for first-time users.","lastModifiedDate":"2024-03-07"},{"lineNumber":407,"author":{"gitId":"Yskie"},"content":"7. Should be able to store more than 10,000 tasks.","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"Yskie"},"content":"8. Should lose no more than 1 command worth of work in case of an app crash.","lastModifiedDate":"2024-03-08"},{"lineNumber":409,"author":{"gitId":"Yskie"},"content":"9. Should work without internet access.","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":414,"author":{"gitId":"Kaya3842"},"content":"* **System admin commands**: commands or instructions that are used through a command-line interface (CLI)","lastModifiedDate":"2024-03-07"},{"lineNumber":415,"author":{"gitId":"Kaya3842"},"content":"or a terminal window","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"Kaya3842"},"content":"* **Action**: The AddressBook processing a user command","lastModifiedDate":"2024-03-07"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":426,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":427,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"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":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"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":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"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":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"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":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"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":461,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","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"}],"authorContributionMap":{"Kaya3842":12,"Yskie":26,"chin-herng":6,"nobodyishappy":53,"-":339,"breezetall":35}},{"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":"nobodyishappy"},"content":"# TeamTracker User Guide","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"TeamTracker is a **desktop app for managing contacts and tasks, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you need help with managing tasks, TeamTracker can help to track your task so that you would not have trouble remembering your tasks.","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"1. Download the latest `TeamTracker.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-4/tp/releases).","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your TeamTracker.","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar TeamTracker.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" * `add n/Task 1 d/Do homework` : Add a task named `Task 1`","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","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":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" e.g `n/NAME [by/DEADLINE]` can be used as `n/Task 1 by/23-12-2024 23:59` or as `n/Task 1`.","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"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":63,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":"![help message](images/helpMessage_v1.3a.PNG)","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS​`","lastModifiedDate":"2024-03-29"},{"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":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"nobodyishappy"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567`","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"nobodyishappy"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS]`","lastModifiedDate":"2024-03-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":"* `edit 2 n/Betsy Crower` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult_v1.3a.PNG)","lastModifiedDate":"2024-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"breezetall"},"content":"### Adding a task: `addtask`","lastModifiedDate":"2024-03-26"},{"lineNumber":151,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":152,"author":{"gitId":"nobodyishappy"},"content":"* Adds a task to the task list with three levels of priority (LOW, MEDIUM, HIGH).","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"nobodyishappy"},"content":"* Priority can also be in integers (1-Low, 2-Medium, 3-High).","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"nobodyishappy"},"content":"* The deadline is optional for the adding of tasks.","lastModifiedDate":"2024-03-29"},{"lineNumber":155,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":156,"author":{"gitId":"nobodyishappy"},"content":"Format: `addtask n/NAME d/DESCRIPTION p/PRIORITY [by/DEADLINE]​`","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":158,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"nobodyishappy"},"content":"* `addtask n/Task 1 d/Do homework p/HIGH`","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"nobodyishappy"},"content":"* `addtask n/Task 1 d/Do homework p/1`","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"nobodyishappy"},"content":"* `addtask n/Task 1 d/Do homework p/HIGH by/12-12-2024 23:59`","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":163,"author":{"gitId":"breezetall"},"content":"### Assigning a task: `assign`","lastModifiedDate":"2024-03-26"},{"lineNumber":164,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":165,"author":{"gitId":"chin-herng"},"content":"Assigns a task to a person.","lastModifiedDate":"2024-03-30"},{"lineNumber":166,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":167,"author":{"gitId":"chin-herng"},"content":"Format: `assign TASK_INDEX to/PERSON_INDEX`","lastModifiedDate":"2024-03-30"},{"lineNumber":168,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"breezetall"},"content":"* `assign 1 to/1`","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"chin-herng"},"content":"### Unassigning a task: `unassign`","lastModifiedDate":"2024-03-30"},{"lineNumber":173,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":174,"author":{"gitId":"chin-herng"},"content":"Unassigns a task to a person.","lastModifiedDate":"2024-03-30"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":176,"author":{"gitId":"chin-herng"},"content":"Format: `unassign TASK_INDEX to/PERSON_INDEX`","lastModifiedDate":"2024-03-30"},{"lineNumber":177,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":178,"author":{"gitId":"chin-herng"},"content":"Examples:","lastModifiedDate":"2024-03-30"},{"lineNumber":179,"author":{"gitId":"chin-herng"},"content":"* `unassign 1 to/1`","lastModifiedDate":"2024-03-30"},{"lineNumber":180,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":181,"author":{"gitId":"chin-herng"},"content":"### Clearing the tasks of a person: `cleartask`","lastModifiedDate":"2024-03-30"},{"lineNumber":182,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":183,"author":{"gitId":"chin-herng"},"content":"Clears the tasks of a person.","lastModifiedDate":"2024-03-30"},{"lineNumber":184,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":185,"author":{"gitId":"chin-herng"},"content":"Format: `cleartask PERSON_INDEX`","lastModifiedDate":"2024-03-30"},{"lineNumber":186,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":187,"author":{"gitId":"chin-herng"},"content":"Examples","lastModifiedDate":"2024-03-30"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":"* `cleartask 1`","lastModifiedDate":"2024-03-30"},{"lineNumber":189,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":190,"author":{"gitId":"breezetall"},"content":"### Marking a task: `marktask`","lastModifiedDate":"2024-03-26"},{"lineNumber":191,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":192,"author":{"gitId":"breezetall"},"content":"Marks a task to the task list as done.","lastModifiedDate":"2024-03-26"},{"lineNumber":193,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":194,"author":{"gitId":"breezetall"},"content":"Format: `marktask TASK_INDEX`","lastModifiedDate":"2024-03-26"},{"lineNumber":195,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":196,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":197,"author":{"gitId":"breezetall"},"content":"* `marktask 1`","lastModifiedDate":"2024-03-26"},{"lineNumber":198,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":199,"author":{"gitId":"breezetall"},"content":"### Unmarking a task: `unmarktask`","lastModifiedDate":"2024-03-26"},{"lineNumber":200,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":201,"author":{"gitId":"breezetall"},"content":"Marks a task to the task list as not done.","lastModifiedDate":"2024-03-26"},{"lineNumber":202,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":203,"author":{"gitId":"breezetall"},"content":"Format: `unmarktask TASK_INDEX`","lastModifiedDate":"2024-03-26"},{"lineNumber":204,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":205,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"breezetall"},"content":"* `unmarktask 1`","lastModifiedDate":"2024-03-26"},{"lineNumber":207,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":208,"author":{"gitId":"breezetall"},"content":"### Deleting a task: `deletetask`","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":210,"author":{"gitId":"Yskie"},"content":"Deletes the specified task from the task list.","lastModifiedDate":"2024-04-03"},{"lineNumber":211,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":212,"author":{"gitId":"breezetall"},"content":"Format: `deletetask TASK_INDEX`","lastModifiedDate":"2024-03-26"},{"lineNumber":213,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":214,"author":{"gitId":"Yskie"},"content":"* Deletes the task at the specified `TASK_INDEX`.","lastModifiedDate":"2024-04-03"},{"lineNumber":215,"author":{"gitId":"Yskie"},"content":"* The index refers to the index number shown in the displayed task list.","lastModifiedDate":"2024-04-03"},{"lineNumber":216,"author":{"gitId":"Yskie"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-03"},{"lineNumber":217,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":218,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":219,"author":{"gitId":"Yskie"},"content":"* `listtask` followed by `deletetask 1` deletes the 1st task in the task list.","lastModifiedDate":"2024-04-03"},{"lineNumber":220,"author":{"gitId":"Yskie"},"content":"* `findtask today` followed by `deletetask 2` deletes the 2nd task in the results of the `findtask` command.","lastModifiedDate":"2024-04-03"},{"lineNumber":221,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":222,"author":{"gitId":"Yskie"},"content":"### Editing a task: `edittask`","lastModifiedDate":"2024-04-03"},{"lineNumber":223,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":224,"author":{"gitId":"Yskie"},"content":"Edits an existing task in the task listx.","lastModifiedDate":"2024-04-03"},{"lineNumber":225,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":226,"author":{"gitId":"Yskie"},"content":"Format: `edittask TASK_INDEX [n/TASK_NAME] [d/TASK_DESCRIPTION] [p/TASK_PRIORITY] [by/TASK_DEADLINE]​`","lastModifiedDate":"2024-04-03"},{"lineNumber":227,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":228,"author":{"gitId":"Yskie"},"content":"* Edits the task at the specified `TASK_INDEX`. The index refers to the index number shown in the displayed task list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-04-03"},{"lineNumber":229,"author":{"gitId":"Yskie"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2024-04-03"},{"lineNumber":230,"author":{"gitId":"Yskie"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2024-04-03"},{"lineNumber":231,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":232,"author":{"gitId":"Yskie"},"content":"Examples:","lastModifiedDate":"2024-04-03"},{"lineNumber":233,"author":{"gitId":"Yskie"},"content":"* `edittask 1 p/high`","lastModifiedDate":"2024-04-03"},{"lineNumber":234,"author":{"gitId":"Yskie"},"content":"* `edittask 2 d/new description by/04-04-2024 10:33`","lastModifiedDate":"2024-04-03"},{"lineNumber":235,"author":{"gitId":"Yskie"},"content":"* `edittask 3 n/new task d/new description p/low by/04-04-2024 10:33`","lastModifiedDate":"2024-04-03"},{"lineNumber":236,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":237,"author":{"gitId":"breezetall"},"content":"### Listing the tasks: `listtask`","lastModifiedDate":"2024-03-26"},{"lineNumber":238,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":239,"author":{"gitId":"Yskie"},"content":"Shows a list of all tasks in the task list.","lastModifiedDate":"2024-04-03"},{"lineNumber":240,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-03"},{"lineNumber":241,"author":{"gitId":"breezetall"},"content":"Format: `listtask`","lastModifiedDate":"2024-03-26"},{"lineNumber":242,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":243,"author":{"gitId":"breezetall"},"content":"Examples:","lastModifiedDate":"2024-03-26"},{"lineNumber":244,"author":{"gitId":"breezetall"},"content":"* `listtask`","lastModifiedDate":"2024-03-26"},{"lineNumber":245,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":246,"author":{"gitId":"Kaya3842"},"content":"### Finding a task or tasks by task name: `findtask`","lastModifiedDate":"2024-04-04"},{"lineNumber":247,"author":{"gitId":"Kaya3842"},"content":"Finds tasks which names contain any of the given keywords.","lastModifiedDate":"2024-04-04"},{"lineNumber":248,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":249,"author":{"gitId":"Kaya3842"},"content":"Format `findtask KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-04-04"},{"lineNumber":250,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":251,"author":{"gitId":"Kaya3842"},"content":"* The search is case-insensitive. e.g `2103t` will match `2103T`","lastModifiedDate":"2024-04-04"},{"lineNumber":252,"author":{"gitId":"Kaya3842"},"content":"* The order of the keywords does not matter. e.g. `findpriority implement` will match `implement findpriority`","lastModifiedDate":"2024-04-04"},{"lineNumber":253,"author":{"gitId":"Kaya3842"},"content":"* Only the task name is searched.","lastModifiedDate":"2024-04-04"},{"lineNumber":254,"author":{"gitId":"Kaya3842"},"content":"* Only full words will be matched e.g. `prio` will not match `priority`","lastModifiedDate":"2024-04-04"},{"lineNumber":255,"author":{"gitId":"Kaya3842"},"content":"* Tasks matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-04-04"},{"lineNumber":256,"author":{"gitId":"Kaya3842"},"content":" e.g. `2103t 2101` will return `2101 CA3`, `2103t milestone`","lastModifiedDate":"2024-04-04"},{"lineNumber":257,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":258,"author":{"gitId":"Kaya3842"},"content":"Examples:","lastModifiedDate":"2024-04-04"},{"lineNumber":259,"author":{"gitId":"Kaya3842"},"content":"* `findtask implement` returns `implement findpriority` and `implement mass ops`","lastModifiedDate":"2024-04-04"},{"lineNumber":260,"author":{"gitId":"Kaya3842"},"content":"* `findtask cs2103t cs2101` returns `CS2101 CA3`, `CS2103T developer guide`","lastModifiedDate":"2024-04-04"},{"lineNumber":261,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":262,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"nobodyishappy"},"content":"AddressBook and TaskList data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":274,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08"},{"lineNumber":275,"author":{"gitId":"nobodyishappy"},"content":"TaskList data are saved automatically as a JSON file `[JAR file location]/data/tasklist.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":277,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":279,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":280,"author":{"gitId":"nobodyishappy"},"content":"If your changes to the data file makes its format invalid, TeamTracker 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-29"},{"lineNumber":281,"author":{"gitId":"nobodyishappy"},"content":"Furthermore, certain edits can cause the TeamTracker 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-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"nobodyishappy"},"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 TeamTracker home folder.","lastModifiedDate":"2024-03-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":299,"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":300,"author":{"gitId":"-"},"content":"","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":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":307,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"nobodyishappy"},"content":"**Add Task** | `addtask n/NAME d/DESCRIPTION p/PRIORITY [by/DEADLINE]`","lastModifiedDate":"2024-03-29"},{"lineNumber":315,"author":{"gitId":"breezetall"},"content":"**Delete Task** | `deletetask TASK_INDEX`","lastModifiedDate":"2024-03-26"},{"lineNumber":316,"author":{"gitId":"Yskie"},"content":"**Edit Task** | `edittask TASK_INDEX [n/TASK_NAME] [d/TASK_DESCRIPTION] [p/TASK_PRIORITY] [by/TASK_DEADLINE]​`","lastModifiedDate":"2024-04-03"},{"lineNumber":317,"author":{"gitId":"breezetall"},"content":"**Assign Task** | `assign TASK_INDEX to/PERSON_INDEX​`","lastModifiedDate":"2024-03-26"},{"lineNumber":318,"author":{"gitId":"breezetall"},"content":"**Mark Task** | `marktask TASK_INDEX​`","lastModifiedDate":"2024-03-26"},{"lineNumber":319,"author":{"gitId":"breezetall"},"content":"**Unmark Task** | `unmarktask TASK_INDEX​`","lastModifiedDate":"2024-03-26"},{"lineNumber":320,"author":{"gitId":"Kaya3842"},"content":"**Find Task** | `findtask KEYWORD [MORE_KEYWORDS]` \u003cbr\u003e e.g., `findtask 2101 2103t`","lastModifiedDate":"2024-04-04"},{"lineNumber":321,"author":{"gitId":"breezetall"},"content":"**List Task** | `listtask​`","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"Yskie":26,"Kaya3842":17,"chin-herng":20,"nobodyishappy":25,"-":182,"breezetall":51}},{"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":"nobodyishappy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eTeamTracker\u003c/a\u003e","lastModifiedDate":"2024-03-06"},{"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":{"nobodyishappy":1,"-":66}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"TaskList -up-|\u003e ReadOnlyTaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"TaskList *-right-\u003e \"1\" UniqueTaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"UniqueTaskList -right-\u003e \"*\" Task : all","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskName","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskDescription","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskPriority","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskStatus","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskDeadline","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"chin-herng":8,"-":9}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"participant \":DeleteTaskCommandParser\" as DeleteTaskCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"participant \"d:DeleteTaskCommand\" as DeleteTaskCommand LOGIC_COLOR","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"[-\u003e LogicManager : execute(\"deletetask 1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"deletetask 1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"create DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"AddressBookParser -\u003e DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"activate DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":"deactivate DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"AddressBookParser -\u003e DeleteTaskCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":"activate DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":"create DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommandParser -\u003e DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"activate DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommand --\u003e DeleteTaskCommandParser :","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"deactivate DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":"deactivate DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":"destroy DeleteTaskCommandParser","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":"LogicManager -\u003e DeleteTaskCommand : execute(m)","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"activate DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":"Model --\u003e DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommand -\u003e CommandResult","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"CommandResult --\u003e DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"DeleteTaskCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":"deactivate DeleteTaskCommand","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":28,"-":42}},{"path":"docs/diagrams/GroupingState0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"@startuml","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"!include style.puml","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"title Model","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"package Groups {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"nobodyishappy":12}},{"path":"docs/diagrams/GroupingState1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"@startuml","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"!include style.puml","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"title Model","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"package Groups {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" class Group1 as \"\u003cu\u003e2103T:GroupedUniquePersonList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"package Persons {","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" class Person1 as \"\u003cu\u003eIvan:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" class Person2 as \"\u003cu\u003eGreg:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" class Person3 as \"\u003cu\u003eDave:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"Person1 -[hidden]right-\u003e Person2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"Person2 -[hidden]right-\u003e Person3","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"Person1 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"Person2 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"Person3 -up-\u003e Group1","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"nobodyishappy":24}},{"path":"docs/diagrams/GroupingState2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"@startuml","lastModifiedDate":"2024-03-30"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"!include style.puml","lastModifiedDate":"2024-03-30"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2024-03-30"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2024-03-30"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"title Model","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"package Groups {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" class Group1 as \"\u003cu\u003e2103T:GroupedUniquePersonList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"package Persons {","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" class Person1 as \"\u003cu\u003eIvan:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" class Person2 as \"\u003cu\u003eGreg:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" class Person3 as \"\u003cu\u003eDave:Person\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"Person1 -[hidden]right-\u003e Person2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"Person2 -[hidden]right-\u003e Person3","lastModifiedDate":"2024-03-30"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"Person1 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"Person2 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"Person3 -up-\u003e Group1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"package TaskList_Ivan {","lastModifiedDate":"2024-03-30"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" class Task1 as \"\u003cu\u003eTask 1:Task\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"package TaskList_Greg {","lastModifiedDate":"2024-03-30"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" class Task2 as \"\u003cu\u003eTask 1:Task\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"package TaskList_Dave {","lastModifiedDate":"2024-03-30"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" class Task3 as \"\u003cu\u003eTask 1:Task\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-30"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"Task1 -up-\u003e Person1","lastModifiedDate":"2024-03-30"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"Task2 -up-\u003e Person2","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"Task3 -up-\u003e Person3","lastModifiedDate":"2024-03-30"}],"authorContributionMap":{"nobodyishappy":40}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"Class TaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"Class Task","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"Class TaskName","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"Class TaskDescription","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"Class TaskPriority","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"Class TaskStatus","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"Class TaskDeadline","lastModifiedDate":"2024-03-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"HiddenOutside .left.\u003e Model","lastModifiedDate":"2024-03-30"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":"AddressBook .left.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"ModelManager .left.|\u003e Model","lastModifiedDate":"2024-03-30"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"Model .right.\u003e TaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"ModelManager --\u003e \"1\" TaskList","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"UniquePersonList --\u003e \"~*\" Person : all","lastModifiedDate":"2024-03-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"Person *--\u003e \"*\" Task","lastModifiedDate":"2024-03-30"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-30"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":"TaskList --\u003e \"~*\" Task : all","lastModifiedDate":"2024-03-30"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskName","lastModifiedDate":"2024-03-30"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskDescription","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskPriority","lastModifiedDate":"2024-03-30"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskStatus","lastModifiedDate":"2024-03-30"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"Task *--\u003e TaskDeadline","lastModifiedDate":"2024-03-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"ModelManager --\u003e \"~*\" Person : filtered","lastModifiedDate":"2024-03-30"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"ModelManager --\u003e \"~*\" Task : filtered","lastModifiedDate":"2024-03-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"chin-herng":24,"-":41}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"package \"TaskList Storage\" #F4F6F6{","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nTaskListStorage\" as TaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"Class JsonTaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"Class JsonSerializableTaskList","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"Class JsonAdaptedTask","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"StorageManager -up-\u003e \"1\" TaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":"Storage -down-|\u003e TaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"JsonTaskListStorage .up.|\u003e TaskListStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":"JsonTaskListStorage ..\u003e JsonSerializableTaskList","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":"JsonSerializableTaskList --\u003e \"*\" JsonAdaptedTask","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"Storage .[hidden]down. StorageManager","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":"StorageManager .[hidden]down. UserPrefsStorage","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Kaya3842":18,"-":43}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"Class TaskListPanel","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"Class TaskCard","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"MainWindow *-down-\u003e \"1\" TaskListPanel","lastModifiedDate":"2024-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":"TaskListPanel -down-\u003e \"*\" TaskCard","lastModifiedDate":"2024-03-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":"TaskCard --|\u003e UiPart","lastModifiedDate":"2024-03-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":"TaskCard ..\u003e Model","lastModifiedDate":"2024-03-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":"TaskListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":60,"breezetall":7}},{"path":"docs/diagrams/UndoRedoState0.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title Initial state","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":13,"-":12}},{"path":"docs/diagrams/UndoRedoState1.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"title after command \"addtask n/task1\"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"package States {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":15,"-":10}},{"path":"docs/diagrams/UndoRedoState2.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"title after command \"undo\"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"package States {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":15,"-":10}},{"path":"docs/diagrams/UndoRedoState3.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"title after command \"addtask n/task1\"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"package States {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":15,"-":10}},{"path":"docs/diagrams/UndoRedoState4.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"title after command \"listtask\"","lastModifiedDate":"2024-03-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"package States {","lastModifiedDate":"2024-03-30"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" class ABState1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" class ABState2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" class TLState1 as \"\u003cu\u003etl0:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" class TLState2 as \"\u003cu\u003etl1:TaskList\u003c/u\u003e\"","lastModifiedDate":"2024-03-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"ABState1 -[hidden]right-\u003e ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"ABState2 -[hidden]right-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"TLState1 -[hidden]right-\u003e TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"hide ABState2","lastModifiedDate":"2024-03-30"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"hide TLState2","lastModifiedDate":"2024-03-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"class Pointer as \"Address Book State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"class Pointer2 as \"Task List State\" #FFFFFF","lastModifiedDate":"2024-03-30"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"Pointer -up-\u003e ABState1","lastModifiedDate":"2024-03-30"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"Pointer2 -up-\u003e TLState1","lastModifiedDate":"2024-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":15,"-":10}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"UndoCommand --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : u","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":"UndoCommand -\u003e Model : undo()","lastModifiedDate":"2024-03-30"},{"lineNumber":34,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Yskie":1,"-":45}},{"path":"docs/diagrams/UndoSequenceDiagram-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2024-02-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2024-02-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-02-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-02-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":VersionedAddressBook\" as VersionedAddressBook MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"[-\u003e Model : undo()","lastModifiedDate":"2024-03-30"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Model -\u003e VersionedAddressBook : undo()","lastModifiedDate":"2024-02-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"activate VersionedAddressBook","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"VersionedAddressBook -\u003e VersionedAddressBook :resetData(ReadOnlyAddressBook)","lastModifiedDate":"2024-02-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"VersionedAddressBook --\u003e Model :","lastModifiedDate":"2024-02-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"deactivate VersionedAddressBook","lastModifiedDate":"2024-02-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[\u003c-- Model","lastModifiedDate":"2024-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2024-02-09"}],"authorContributionMap":{"Yskie":1,"-":22}},{"path":"docs/index.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: \"\"","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":"breezetall"},"content":"# TeamTracker","lastModifiedDate":"2024-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"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":9,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"**TeamTracker is a desktop app for managing contacts and tasks, optimized for use via a Line Interface.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"* If you are interested in using TeamTracker, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-04-05"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"* If you are interested about developing TeamTracker, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":17,"breezetall":4}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.TaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public static final Version VERSION \u003d new Version(1, 3, 1, true);","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing TeamTracker ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" TaskListStorage taskListStorage \u003d new JsonTaskListStorage(userPrefs.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath() + \", \"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" + storage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e taskListOptional;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" TaskList initialTasks;","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" taskListOptional \u003d storage.readTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" if (!taskListOptional.isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" initialTasks \u003d taskListOptional.orElseGet(SampleDataUtil::getSampleTaskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" logger.warning(\"Data file at \" + storage.getTaskListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" + \" Will be starting with an empty task list.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" initialTasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" return new ModelManager(initialData, initialTasks, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":173,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"nobodyishappy"},"content":" logger.info(\"Starting TeamTracker \" + MainApp.VERSION);","lastModifiedDate":"2024-03-30"},{"lineNumber":193,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"nobodyishappy"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping TeamTracker ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-30"},{"lineNumber":199,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":201,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":22,"nobodyishappy":4,"-":179}},{"path":"src/main/java/seedu/address/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a zero-based or one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * {@code Index} should be used right from the start (when parsing in a new user input), so that if the current","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * component wants to communicate with another component, it can send an {@code Index} to avoid having to know what","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * base the other component is using for its index. However, after receiving the {@code Index}, that component can","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * convert it back to an int if the index will not be passed to a different component again.","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Index {","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private int zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Index can only be created by calling {@link Index#fromZeroBased(int)} or","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * {@link Index#fromOneBased(int)}.","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Index(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (zeroBasedIndex \u003c 0) {","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.zeroBasedIndex \u003d zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public int getZeroBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return zeroBasedIndex;","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public int getOneBased() {","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return zeroBasedIndex + 1;","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a zero-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static Index fromZeroBased(int zeroBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new Index(zeroBasedIndex);","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates a new {@code Index} using a one-based index.","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Index fromOneBased(int oneBasedIndex) {","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new Index(oneBasedIndex - 1);","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!(other instanceof Index)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index otherIndex \u003d (Index) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return zeroBasedIndex \u003d\u003d otherIndex.zeroBasedIndex;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return Objects.hash(zeroBasedIndex);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"zeroBasedIndex\", zeroBasedIndex).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"chin-herng":7,"-":69}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" /** Returns an unmodifiable view of the filtered list of tasks */","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"-":50,"breezetall":4}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" storage.saveTaskList(model.getTaskList());","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Kaya3842":1,"-":88,"breezetall":6}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"The task index provided is invalid\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_TASKS_LISTED_OVERVIEW \u003d \"%1$d tasks listed!\";","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" .append(\"; Tasks: \");","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" person.getTasks().forEach(builder::append);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" * Formats the {@code people} for display to the user.","lastModifiedDate":"2024-03-25"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" public static String format(Person[] people) {","lastModifiedDate":"2024-03-25"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" return Arrays.stream(people).map(person -\u003e person.getName().toString())","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" public static String format(Task task) {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" return task.getName().taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" * Formats the {@code tasks} for display to the user.","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" public static String format(Task[] tasks) {","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" return Arrays.stream(tasks).map(task -\u003e task.getName().toString())","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kaya3842":7,"chin-herng":21,"nobodyishappy":1,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" + PREFIX_ADDRESS + \"ADDRESS\\n \"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chin-herng":2,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DEADLINE;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task to the task list. \"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + \"Parameter: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" + PREFIX_NAME + \"TASK_NAME \"","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_DESCRIPTION + \"TASK_DESCRIPTION \"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_PRIORITY + \"TASK_PRIORITY\"","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_TASK_DEADLINE + \"TASK_DEADLINE]\";","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New task added: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"This task already exists in the task list.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" private final Task toAdd;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" * Creates an AddTaskCommand to add the specified {@code Task}","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" public AddTaskCommand(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" toAdd \u003d task;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" if (model.hasTask(toAdd)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" model.addTask(toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand otherAddTaskCommand \u003d (AddTaskCommand) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" return toAdd.equals(otherAddTaskCommand.toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":69,"Yskie":4,"chin-herng":1,"nobodyishappy":5,"breezetall":1}},{"path":"src/main/java/seedu/address/logic/commands/AssignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * Assigns the task identified using its displayed index to","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * the people identified using their displayed index in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"public class AssignCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" + \": Assigns the task identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last task listing \"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" + \"to the people identified \"","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" + \"by the index numbers used in the last person listing. \"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" + \"Does nothing if the task is already assigned to a person.\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: TASK_INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" + \"to/ PERSON_INDEX [MORE_PERSON_INDICES] (must be distinct positive integers)\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" + \"to/ 1 2\";","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been assigned to %2$s.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" private final Index[] personIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" * @param taskIndex of the task in the filtered task list to be assigned to the person","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" * @param personIndices of the people in the filtered person list to be assigned the task","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" public AssignCommand(Index taskIndex, Index[] personIndices) {","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(taskIndex, personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" this.personIndices \u003d personIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" private void verifyAllTaskIndicesWithinRange(Index[] taskIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(taskIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" private void verifyAllPersonIndicesWithinRange(Index[] personIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(personIndices).anyMatch(personIndex -\u003e personIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" private Task getTaskToAssign(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" // Use filtered list","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" List\u003cTask\u003e lastShownTaskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" verifyAllTaskIndicesWithinRange(new Index[] { taskIndex }, lastShownTaskList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return lastShownTaskList.get(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" private Person[] getPeopleToBeAssigned(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" List\u003cPerson\u003e lastShownPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" verifyAllPersonIndicesWithinRange(personIndices, lastShownPersonList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" return Arrays.stream(personIndices).distinct()","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownPersonList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .toArray(Person[]::new);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d getTaskToAssign(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToBeAssigned \u003d getPeopleToBeAssigned(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToBeAssigned).forEach(personToBeAssigned -\u003e model.setPerson(","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" personToBeAssigned, personToBeAssigned.addTask(taskToAssign)));","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(taskToAssign),","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" Messages.format(peopleToBeAssigned)));","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof AssignCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" AssignCommand e \u003d (AssignCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" return taskIndex.equals(e.taskIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 Arrays.equals(personIndices, e.personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Kaya3842":2,"chin-herng":110}},{"path":"src/main/java/seedu/address/logic/commands/ClearTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Unassigns all tasks assigned to an existing person in the address book.","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"public class ClearTaskCommand extends Command {","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" public static final String COMMAND_WORD \u003d \"cleartask\";","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Unassigns all tasks assigned to the person identified \"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last person listing.\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: PERSON_INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Tasks for %1$s has been cleared.\";","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" private final Index index;","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" public ClearTaskCommand(Index index) {","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(index);","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" private Person getPersonToBeUnassigned(Model model) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" List\u003cPerson\u003e lastShownPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" if (index.getZeroBased() \u003e\u003d lastShownPersonList.size()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" return lastShownPersonList.get(index.getZeroBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" Person personToBeUnassigned \u003d getPersonToBeUnassigned(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" Person unassignedPerson \u003d new Person(personToBeUnassigned.getName(), personToBeUnassigned.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" personToBeUnassigned.getEmail(), personToBeUnassigned.getAddress(), new HashSet\u003c\u003e());","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" model.setPerson(personToBeUnassigned, unassignedPerson);","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, unassignedPerson.getName()));","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof ClearTaskCommand)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand e \u003d (ClearTaskCommand) other;","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" return index.equals(e.index);","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"chin-herng":78}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Deletes the people identified using their displayed index from the address book.","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Deletes the people identified by the index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: INDEX [MORE_INDICES] (must be distinct positive integers)\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_DELETE_PEOPLE_SUCCESS \u003d \"Deleted people: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" private final Index[] targetIndices;","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" public DeleteCommand(Index[] targetIndices) {","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" this.targetIndices \u003d targetIndices;","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" private void verifyAllWithinRange(Index[] targetIndices, int range) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(targetIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" verifyAllWithinRange(targetIndices, lastShownList.size());","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToDelete \u003d Arrays.stream(targetIndices).distinct()","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" .toArray(Person[]::new);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToDelete).forEach(model::deletePerson);","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PEOPLE_SUCCESS, Messages.format(peopleToDelete)));","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return Arrays.equals(targetIndices, otherDeleteCommand.targetIndices);","lastModifiedDate":"2024-03-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" .add(\"targetIndices\", Arrays.toString(targetIndices))","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chin-herng":23,"-":55}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Deletes the tasks identified using their displayed index from the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Deletes the tasks identified by the index numbers used in the displayed task list.\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: INDEX [MORE_INDICES] (must be distinct positive integers)\\n\"","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_DELETE_TASKS_SUCCESS \u003d \"Deleted tasks: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" private final Index[] targetIndices;","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" * Creates an DeleteTaskCommand to delete the specified {@code targetIndices}","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public DeleteTaskCommand(Index[] targetIndices) {","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" this.targetIndices \u003d targetIndices;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" private void verifyAllWithinRange(Index[] targetIndices, int range) throws CommandException {","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(targetIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" verifyAllWithinRange(targetIndices, lastShownList.size());","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToDelete \u003d Arrays.stream(targetIndices).distinct()","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" .toArray(Task[]::new);","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToDelete).forEach(model::deleteTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_TASKS_SUCCESS, Messages.format(tasksToDelete)));","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" return Arrays.equals(targetIndices, otherDeleteCommand.targetIndices);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .add(\"targetIndices\", Arrays.toString(targetIndices))","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Yskie":50,"Kaya3842":1,"chin-herng":27,"nobodyishappy":3}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS]\\n \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e updatedTasks \u003d personToEdit.getTasks(); // edit command does not allow editing tasks","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":203,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"chin-herng":6,"-":210}},{"path":"src/main/java/seedu/address/logic/commands/EditTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DEADLINE;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" * Edits the details of an existing task in the task list.","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":"public class EditTaskCommand extends Command {","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" public static final String COMMAND_WORD \u003d \"edittask\";","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the task identified \"","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" + \"by the index number used in the displayed task list. \"","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" + \"Parameters: TASK_INDEX (must be a positive integer) \"","lastModifiedDate":"2024-04-03"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_NAME + \"TASK_NAME] \"","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_TASK_DESCRIPTION + \"TASK_DESCRIPTION] \"","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_TASK_PRIORITY + \"TASK_PRIORITY] \"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" + \"[\" + PREFIX_TASK_DEADLINE + \"TASK_DEADLINE] \"","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" + \"\\nExample: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" + PREFIX_NAME + \"name \"","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_DESCRIPTION + \"new description \"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_PRIORITY + \"HIGH \"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" + PREFIX_TASK_DEADLINE + \"30-03-2024 10:00\";","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_EDIT_TASK_SUCCESS \u003d \"Edited Task: %1$s\";","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Duplicate task exists in the task list.\";","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" private final Index index;","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" private final EditTaskDescriptor editTaskDescriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" * @param index of the task in the task list to edit.","lastModifiedDate":"2024-04-03"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" * @param editTaskDescriptor details to edit the task with.","lastModifiedDate":"2024-04-03"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" public EditTaskCommand(Index index, EditTaskDescriptor editTaskDescriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" requireNonNull(editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" this.editTaskDescriptor \u003d new EditTaskDescriptor(editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" Task taskToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" Task editedTask \u003d createEditedTask(taskToEdit, editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" if (!taskToEdit.equals(editedTask) \u0026\u0026 model.hasTask(editedTask)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" // Updates the task list.","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" model.setTask(taskToEdit, editedTask);","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_TASK_SUCCESS, Messages.format(taskToEdit)));","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" * Creates and returns a {@code Task} with the details of {@code taskToEdit}","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" * edited with {@code editTaskDescriptor}.","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" private static Task createEditedTask(Task taskToEdit, EditTaskDescriptor editTaskDescriptor) {","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" assert taskToEdit !\u003d null;","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" TaskName updatedName \u003d editTaskDescriptor.getName().orElse(taskToEdit.getName());","lastModifiedDate":"2024-03-29"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" TaskDescription updatedDescription \u003d editTaskDescriptor.getDescription().orElse(taskToEdit.getDescription());","lastModifiedDate":"2024-03-29"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":" TaskPriority updatedPriority \u003d editTaskDescriptor.getPriority().orElse(taskToEdit.getPriority());","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":" TaskDeadline updatedDeadline \u003d editTaskDescriptor.getDeadline().orElse(taskToEdit.getDeadline());","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" return new Task(updatedName, updatedDescription, updatedPriority, taskToEdit.getStatus(), updatedDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" if (!(other instanceof EditTaskCommand)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" EditTaskCommand otherEditCommand \u003d (EditTaskCommand) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-03-29"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 editTaskDescriptor.equals(otherEditCommand.editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-29"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" .add(\"editTaskDescriptor\", editTaskDescriptor)","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" .toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" * Stores the details to edit the task with. Each non-empty field value will","lastModifiedDate":"2024-03-29"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" * replace the corresponding field value of the task.","lastModifiedDate":"2024-04-03"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" public static class EditTaskDescriptor {","lastModifiedDate":"2024-03-29"},{"lineNumber":131,"author":{"gitId":"Yskie"},"content":" private TaskName taskName;","lastModifiedDate":"2024-03-29"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" private TaskDescription taskDescription;","lastModifiedDate":"2024-03-29"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" private TaskPriority taskPriority;","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":" private TaskDeadline taskDeadline;","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":136,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptor() {","lastModifiedDate":"2024-03-29"},{"lineNumber":137,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":138,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":139,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":142,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptor(EditTaskDescriptor toCopy) {","lastModifiedDate":"2024-03-29"},{"lineNumber":143,"author":{"gitId":"Yskie"},"content":" setName(toCopy.taskName);","lastModifiedDate":"2024-03-29"},{"lineNumber":144,"author":{"gitId":"Yskie"},"content":" setDescription(toCopy.taskDescription);","lastModifiedDate":"2024-03-29"},{"lineNumber":145,"author":{"gitId":"Yskie"},"content":" setPriority(toCopy.taskPriority);","lastModifiedDate":"2024-04-02"},{"lineNumber":146,"author":{"gitId":"Yskie"},"content":" setDeadline(toCopy.taskDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":147,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":148,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":149,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":150,"author":{"gitId":"Yskie"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-29"},{"lineNumber":151,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" return CollectionUtil.isAnyNonNull(taskName, taskDescription, taskPriority, taskDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":154,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":155,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"Yskie"},"content":" public void setName(TaskName taskName) {","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"Yskie"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":160,"author":{"gitId":"Yskie"},"content":" public Optional\u003cTaskName\u003e getName() {","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"Yskie"},"content":" return Optional.ofNullable(taskName);","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":164,"author":{"gitId":"Yskie"},"content":" public void setDescription(TaskDescription taskDescription) {","lastModifiedDate":"2024-03-29"},{"lineNumber":165,"author":{"gitId":"Yskie"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2024-03-29"},{"lineNumber":166,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":167,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":168,"author":{"gitId":"Yskie"},"content":" public Optional\u003cTaskDescription\u003e getDescription() {","lastModifiedDate":"2024-03-29"},{"lineNumber":169,"author":{"gitId":"Yskie"},"content":" return Optional.ofNullable(taskDescription);","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"Yskie"},"content":" public void setPriority(TaskPriority taskPriority) {","lastModifiedDate":"2024-04-02"},{"lineNumber":173,"author":{"gitId":"Yskie"},"content":" this.taskPriority \u003d taskPriority;","lastModifiedDate":"2024-04-02"},{"lineNumber":174,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":175,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":176,"author":{"gitId":"Yskie"},"content":" public Optional\u003cTaskPriority\u003e getPriority() {","lastModifiedDate":"2024-04-02"},{"lineNumber":177,"author":{"gitId":"Yskie"},"content":" return Optional.ofNullable(taskPriority);","lastModifiedDate":"2024-04-02"},{"lineNumber":178,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":179,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":180,"author":{"gitId":"Yskie"},"content":" public void setDeadline(TaskDeadline taskDeadline) {","lastModifiedDate":"2024-04-02"},{"lineNumber":181,"author":{"gitId":"Yskie"},"content":" this.taskDeadline \u003d taskDeadline;","lastModifiedDate":"2024-04-02"},{"lineNumber":182,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":183,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":184,"author":{"gitId":"Yskie"},"content":" public Optional\u003cTaskDeadline\u003e getDeadline() {","lastModifiedDate":"2024-04-02"},{"lineNumber":185,"author":{"gitId":"Yskie"},"content":" return Optional.ofNullable(taskDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":186,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":187,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":188,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":189,"author":{"gitId":"Yskie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":190,"author":{"gitId":"Yskie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":191,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":192,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":193,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":194,"author":{"gitId":"Yskie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":195,"author":{"gitId":"Yskie"},"content":" if (!(other instanceof EditTaskDescriptor)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":196,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":197,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":198,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":199,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor otherEditTaskDescriptor \u003d (EditTaskDescriptor) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":200,"author":{"gitId":"Yskie"},"content":" return Objects.equals(taskName, otherEditTaskDescriptor.taskName)","lastModifiedDate":"2024-03-29"},{"lineNumber":201,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 Objects.equals(taskDescription, otherEditTaskDescriptor.taskDescription)","lastModifiedDate":"2024-04-02"},{"lineNumber":202,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 Objects.equals(taskPriority, otherEditTaskDescriptor.taskPriority)","lastModifiedDate":"2024-04-02"},{"lineNumber":203,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 Objects.equals(taskDeadline, otherEditTaskDescriptor.taskDeadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":204,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":205,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":206,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":207,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":208,"author":{"gitId":"Yskie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-29"},{"lineNumber":209,"author":{"gitId":"Yskie"},"content":" .add(\"name\", taskName)","lastModifiedDate":"2024-03-29"},{"lineNumber":210,"author":{"gitId":"Yskie"},"content":" .add(\"description\", taskDescription)","lastModifiedDate":"2024-03-29"},{"lineNumber":211,"author":{"gitId":"Yskie"},"content":" .add(\"priority\", taskPriority)","lastModifiedDate":"2024-04-02"},{"lineNumber":212,"author":{"gitId":"Yskie"},"content":" .add(\"deadline\", taskDeadline)","lastModifiedDate":"2024-04-02"},{"lineNumber":213,"author":{"gitId":"Yskie"},"content":" .toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":214,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":215,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":216,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Yskie":215,"chin-herng":1}},{"path":"src/main/java/seedu/address/logic/commands/FindTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" * Finds and lists all tasks in storage whose names contain any of the argument keywords.","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class FindTaskCommand extends Command {","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" public static final String COMMAND_WORD \u003d \"findtask\";","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all tasks whose names contain any of \"","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" + \"Example: \" + COMMAND_WORD + \" 2101 2103t\";","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final TaskNameContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public FindTaskCommand(TaskNameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" model.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" String.format(Messages.MESSAGE_TASKS_LISTED_OVERVIEW, model.getFilteredTaskList().size()));","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" if (!(other instanceof FindTaskCommand)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand otherFindTaskCommand \u003d (FindTaskCommand) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" return predicate.equals(otherFindTaskCommand.predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" .toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":65}},{"path":"src/main/java/seedu/address/logic/commands/ListTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" * Lists all tasks in the tasklist to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"public class ListTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" public static final String COMMAND_WORD \u003d \"listtask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all tasks\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"breezetall":24}},{"path":"src/main/java/seedu/address/logic/commands/MarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-04"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Mark the tasks identified using their displayed index from the task list as done.","lastModifiedDate":"2024-04-04"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public static final String COMMAND_WORD \u003d \"marktask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Marks the tasks identified by the index numbers used in the displayed task list as done. \\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"Parameter: INDEX [MORE_INDICES] (must be distinct positive integers) \\n\"","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Tasks have been marked as done: %1$s\";","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" private final Index[] targetIndices;","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" public MarkTaskCommand(Index[] targetIndices) {","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" this.targetIndices \u003d targetIndices;","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" private void verifyAllWithinRange(Index[] targetIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-04"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(targetIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" verifyAllWithinRange(targetIndices, lastShownList.size());","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToMark \u003d Arrays.stream(targetIndices).distinct()","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" .toArray(Task[]::new);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToMark).forEach(taskToMark -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToMark);","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"breezetall"},"content":" editedTask.getStatus().setAsDone();","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"breezetall"},"content":" model.setTask(taskToMark, editedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, Messages.format(tasksToMark)));","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof MarkTaskCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand otherMarkTaskCommand \u003d (MarkTaskCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" return Arrays.equals(targetIndices, otherMarkTaskCommand.targetIndices);","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" .add(\"targetIndices\", Arrays.toString(targetIndices))","lastModifiedDate":"2024-04-04"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Kaya3842":1,"chin-herng":28,"nobodyishappy":51,"breezetall":2}},{"path":"src/main/java/seedu/address/logic/commands/UnassignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-05"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * Unassigns the task identified using its displayed index to","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * the people identified using their displayed index in the address book.","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"public class UnassignCommand extends Command {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" public static final String COMMAND_WORD \u003d \"unassign\";","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" + \": Unassigns the task identified \"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last task listing \"","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" + \"to the people identified \"","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" + \"by the index numbers used in the last person listing. \"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" + \"Does nothing if the task not assigned to a person.\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: TASK_INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" + \"to/ PERSON_INDEX [MORE_PERSON_INDICES] (must be distinct positive integers)\\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" + \"to/ 1 2\";","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been unassigned to %2$s.\";","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" private final Index[] personIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" * @param taskIndex of the task in the filtered task list to be unassigned to the person","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" * @param personIndices of the people in the filtered person list to be unassigned the task","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" public UnassignCommand(Index taskIndex, Index[] personIndices) {","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(taskIndex, personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" this.personIndices \u003d personIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" private void verifyAllTaskIndicesWithinRange(Index[] taskIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(taskIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" private void verifyAllPersonIndicesWithinRange(Index[] personIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(personIndices).anyMatch(personIndex -\u003e personIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" private Task getTaskToUnassign(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" // Use filtered list","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" List\u003cTask\u003e lastShownTaskList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" verifyAllTaskIndicesWithinRange(new Index[] { taskIndex }, lastShownTaskList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return lastShownTaskList.get(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" private Person[] getPeopleToBeUnassigned(Model model) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" List\u003cPerson\u003e lastShownPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" verifyAllPersonIndicesWithinRange(personIndices, lastShownPersonList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" return Arrays.stream(personIndices).distinct()","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownPersonList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .toArray(Person[]::new);","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d getTaskToUnassign(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToBeUnassigned \u003d getPeopleToBeUnassigned(model);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToBeUnassigned).forEach(personToBeAssigned -\u003e model.setPerson(","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" personToBeAssigned, personToBeAssigned.deleteTask(taskToUnassign)));","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(taskToUnassign),","lastModifiedDate":"2024-03-31"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" Messages.format(peopleToBeUnassigned)));","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof UnassignCommand)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" UnassignCommand e \u003d (UnassignCommand) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" return taskIndex.equals(e.taskIndex)","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 Arrays.equals(personIndices, e.personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Kaya3842":2,"chin-herng":110}},{"path":"src/main/java/seedu/address/logic/commands/UnmarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Mark the tasks identified using their displayed index from the task list as undone.","lastModifiedDate":"2024-04-05"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public static final String COMMAND_WORD \u003d \"unmarktask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Marks the tasks identified by the index numbers used in the displayed task list as undone. \\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"Parameter: INDEX [MORE_INDICES] (must be distinct positive integers) \\n\"","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2\";","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_UNMARK_TASK_SUCCESS \u003d \"Tasks have been marked as undone: %1$s\";","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" private final Index[] targetIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" public UnmarkTaskCommand(Index[] targetIndices) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" this.targetIndices \u003d targetIndices;","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" private void verifyAllWithinRange(Index[] targetIndices, int range) throws CommandException {","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" if (Arrays.stream(targetIndices).anyMatch(targetIndex -\u003e targetIndex.getZeroBased() \u003e\u003d range)) {","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" List\u003cTask\u003e lastShownList \u003d model.getFilteredTaskList();","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" verifyAllWithinRange(targetIndices, lastShownList.size());","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToUnmark \u003d Arrays.stream(targetIndices).distinct()","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" .map(targetIndex -\u003e lastShownList.get(targetIndex.getZeroBased()))","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" .toArray(Task[]::new);","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToUnmark).forEach(taskToUnmark -\u003e {","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToUnmark);","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" editedTask.getStatus().setAsUndone();","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" model.setTask(taskToUnmark, editedTask);","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_UNMARK_TASK_SUCCESS, Messages.format(tasksToUnmark)));","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof UnmarkTaskCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand otherUnmarkTaskCommand \u003d (UnmarkTaskCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" return Arrays.equals(targetIndices, otherUnmarkTaskCommand.targetIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .add(\"targetIndices\", Arrays.toString(targetIndices))","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":30,"nobodyishappy":51}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e taskList \u003d new HashSet\u003c\u003e(); // add command does not allow assigning tasks straight away","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Person person \u003d new Person(name, phone, email, address, taskList);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"chin-herng":5,"-":56}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" * Parses input arguments and creates a new AddTaskCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" * Parses {@code args} into a command and returns it.","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" * @param args","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if {@code args} does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" PREFIX_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY, PREFIX_TASK_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_DEADLINE);","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" TaskName name \u003d ParserUtil.parseTaskName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription description \u003d ParserUtil.parseTaskDescription(","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" argMultimap.getValue(PREFIX_TASK_DESCRIPTION).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" TaskPriority priority \u003d ParserUtil.parseTaskPriority(","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" argMultimap.getValue(PREFIX_TASK_PRIORITY).get());","lastModifiedDate":"2024-04-01"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus status \u003d new TaskStatus();","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" Task task;","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" if (argMultimap.getValue(PREFIX_TASK_DEADLINE).isPresent()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline deadline \u003d ParserUtil.parseTaskDeadline(argMultimap.getValue(PREFIX_TASK_DEADLINE).get());","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" task \u003d new Task(name, description, priority, status, deadline);","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" task \u003d new Task(name, description, priority, status);","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" return new AddTaskCommand(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":23,"nobodyishappy":35,"breezetall":13}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.ClearTaskCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.FindTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.ListTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.UnassignCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" // Note to developers: Change the log level in config.json to enable lower level","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" // (i.e., FINE, FINER and lower)","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" case EditTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" return new EditTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" case FindTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" return new FindTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-29"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" case ListTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":" return new ListTaskCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" case AssignCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" return new AssignCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" case UnassignCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" return new UnassignCommandParser().parse(arguments);","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" case ClearTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" return new ClearTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":" return new MarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"nobodyishappy"},"content":" case UnmarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"nobodyishappy"},"content":" return new UnmarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kaya3842":9,"Yskie":9,"chin-herng":12,"nobodyishappy":8,"-":84,"breezetall":4}},{"path":"src/main/java/seedu/address/logic/parser/AssignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" * Parses input arguments and creates a new {@code AssignCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"public class AssignCommandParser implements Parser\u003cAssignCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the {@code AssignCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * and returns a {@code AssignCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" public AssignCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" PREFIX_TO);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TO);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" Index taskIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d argMultimap.getValue(PREFIX_TO).orElse(\"\").trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" String[] stringPersonIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" Index[] personIndices \u003d new Index[stringPersonIndices.length];","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringPersonIndices.length; i++) {","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" personIndices[i] \u003d ParserUtil.parseIndex(stringPersonIndices[i]);","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" return new AssignCommand(taskIndex, personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" AssignCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"chin-herng":48}},{"path":"src/main/java/seedu/address/logic/parser/ClearTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.ClearTaskCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":" * Parses input arguments and creates a new {@code ClearTaskCommand} object","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"public class ClearTaskCommandParser implements Parser\u003cClearTaskCommand\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ClearTaskCommand}","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * and returns a {@code ClearTaskCommand} object for execution.","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" public ClearTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" Index index;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" try {","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ClearTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" return new ClearTaskCommand(index);","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"chin-herng":33}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" public static final Prefix PREFIX_TASK_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" public static final Prefix PREFIX_TASK_DEADLINE \u003d new Prefix(\"by/\");","lastModifiedDate":"2024-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" public static final Prefix PREFIX_TASK_PRIORITY \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":2,"-":16,"breezetall":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" String[] stringIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" Index[] indices \u003d new Index[stringIndices.length];","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringIndices.length; i++) {","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" indices[i] \u003d ParserUtil.parseIndex(stringIndices[i]);","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" return new DeleteCommand(indices);","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chin-herng":13,"-":27}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteTaskCommand","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * and returns a DeleteTaskCommand object for execution.","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" public DeleteTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" String[] stringIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" Index[] indices \u003d new Index[stringIndices.length];","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringIndices.length; i++) {","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" indices[i] \u003d ParserUtil.parseIndex(stringIndices[i]);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" return new DeleteTaskCommand(indices);","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Yskie":22,"chin-herng":19}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chin-herng":1,"-":60}},{"path":"src/main/java/seedu/address/logic/parser/EditTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DEADLINE;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * Parses input arguments and creates a new EditTaskCommand object","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"public class EditTaskCommandParser implements Parser\u003cEditTaskCommand\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" * Parses the given {@code String} of arguments in the context of the","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * EditTaskCommand returns an EditTaskCommand object for execution.","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" public EditTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TASK_DESCRIPTION,","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" PREFIX_TASK_PRIORITY, PREFIX_TASK_DEADLINE);","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" Index index;","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TASK_DESCRIPTION, PREFIX_TASK_PRIORITY,","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" PREFIX_TASK_DEADLINE);","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor editTaskDescriptor \u003d new EditTaskDescriptor();","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" editTaskDescriptor.setName(ParserUtil.parseTaskName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" if (argMultimap.getValue(PREFIX_TASK_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" editTaskDescriptor.setDescription(","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" ParserUtil.parseTaskDescription(argMultimap.getValue(PREFIX_TASK_DESCRIPTION).get()));","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" if (argMultimap.getValue(PREFIX_TASK_PRIORITY).isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" editTaskDescriptor.setPriority(","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" ParserUtil.parseTaskPriority(argMultimap.getValue(PREFIX_TASK_PRIORITY).get()));","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" if (argMultimap.getValue(PREFIX_TASK_DEADLINE).isPresent()) {","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" editTaskDescriptor.setDeadline(","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" ParserUtil.parseTaskDeadline(argMultimap.getValue(PREFIX_TASK_DEADLINE).get()));","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" if (!editTaskDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" throw new ParseException(EditTaskCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" return new EditTaskCommand(index, editTaskDescriptor);","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Yskie":65}},{"path":"src/main/java/seedu/address/logic/parser/FindTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.FindTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" * Parses input arguments and creates a new FindTaskCommand object","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"public class FindTaskCommandParser implements Parser\u003cFindTaskCommand\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Parses {@code userInput} in the context of FindTaskCommand and returns","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * a FindTaskCommand object for execution.","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" * @param userInput The input to parse into a command object.","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public FindTaskCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" String trimmedInput \u003d userInput.trim();","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" if (trimmedInput.isEmpty()) {","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" String[] taskNameKeywords \u003d trimmedInput.split(\"\\\\s+\");","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" return new FindTaskCommand(new TaskNameContainsKeywordsPredicate(Arrays.asList(taskNameKeywords)));","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":34}},{"path":"src/main/java/seedu/address/logic/parser/MarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Parses input arguments and creates a new MarkTaskCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandParser implements Parser\u003cMarkTaskCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * Parses the given {@code String} of arguments in the context of the MarkTaskCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * and returns a MarkTaskCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public MarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-04-04"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-04"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-04"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" String[] stringIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" Index[] indices \u003d new Index[stringIndices.length];","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringIndices.length; i++) {","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" indices[i] \u003d ParserUtil.parseIndex(stringIndices[i]);","lastModifiedDate":"2024-04-04"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" return new MarkTaskCommand(indices);","lastModifiedDate":"2024-04-04"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":14,"nobodyishappy":25}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskName} into an {@code TaskName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskName} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"nobodyishappy"},"content":" public static TaskName parseTaskName(String taskName) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskName \u003d taskName.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskName.isValidTaskName(trimmedTaskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"nobodyishappy"},"content":" return new TaskName(trimmedTaskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskDescription} into an {@code TaskDescription}.","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskDescription} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"nobodyishappy"},"content":" public static TaskDescription parseTaskDescription(String taskDescription) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskDescription \u003d taskDescription.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDescription.isValidTaskDescription(trimmedTaskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"nobodyishappy"},"content":" return new TaskDescription(trimmedTaskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":159,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":160,"author":{"gitId":"breezetall"},"content":" * Parses a {@code String taskPriority} into an {@code taskPriority}.","lastModifiedDate":"2024-04-01"},{"lineNumber":161,"author":{"gitId":"breezetall"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-04-01"},{"lineNumber":162,"author":{"gitId":"breezetall"},"content":" *","lastModifiedDate":"2024-04-01"},{"lineNumber":163,"author":{"gitId":"breezetall"},"content":" * @throws ParseException if the given {@code taskPriority} is invalid.","lastModifiedDate":"2024-04-01"},{"lineNumber":164,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":165,"author":{"gitId":"breezetall"},"content":" public static TaskPriority parseTaskPriority(String taskPriority) throws ParseException {","lastModifiedDate":"2024-04-01"},{"lineNumber":166,"author":{"gitId":"breezetall"},"content":" requireNonNull(taskPriority);","lastModifiedDate":"2024-04-01"},{"lineNumber":167,"author":{"gitId":"breezetall"},"content":" String trimmedTaskPriority \u003d taskPriority.trim();","lastModifiedDate":"2024-04-01"},{"lineNumber":168,"author":{"gitId":"breezetall"},"content":" if (!TaskPriority.isValidTaskPriority(trimmedTaskPriority)) {","lastModifiedDate":"2024-04-01"},{"lineNumber":169,"author":{"gitId":"breezetall"},"content":" throw new ParseException(TaskPriority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-01"},{"lineNumber":170,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":171,"author":{"gitId":"breezetall"},"content":" return new TaskPriority(trimmedTaskPriority);","lastModifiedDate":"2024-04-01"},{"lineNumber":172,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":173,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":175,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskDeadline} into an {@code TaskDeadline}.","lastModifiedDate":"2024-03-26"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-26"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-26"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskDeadline} is invalid.","lastModifiedDate":"2024-03-26"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":" public static TaskDeadline parseTaskDeadline(String taskDeadline) throws ParseException {","lastModifiedDate":"2024-03-26"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskDeadline \u003d taskDeadline.trim();","lastModifiedDate":"2024-03-26"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDeadline.isValidTaskDeadline(trimmedTaskDeadline)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskDeadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":186,"author":{"gitId":"nobodyishappy"},"content":" return new TaskDeadline(trimmedTaskDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":187,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"nobodyishappy":48,"-":124,"breezetall":16}},{"path":"src/main/java/seedu/address/logic/parser/UnassignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.UnassignCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" * Parses input arguments and creates a new {@code UnassignCommand} object","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"public class UnassignCommandParser implements Parser\u003cUnassignCommand\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the {@code UnassignCommand}","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * and returns a {@code UnassignCommand} object for execution.","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" public UnassignCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" PREFIX_TO);","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TO);","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" Index taskIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d argMultimap.getValue(PREFIX_TO).orElse(\"\").trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnassignCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" String[] stringPersonIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" Index[] personIndices \u003d new Index[stringPersonIndices.length];","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringPersonIndices.length; i++) {","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" personIndices[i] \u003d ParserUtil.parseIndex(stringPersonIndices[i]);","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" return new UnassignCommand(taskIndex, personIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" UnassignCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"chin-herng":48}},{"path":"src/main/java/seedu/address/logic/parser/UnmarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Parses input arguments and creates a new UnmarkTaskCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandParser implements Parser\u003cUnmarkTaskCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * Parses the given {@code String} of arguments in the context of the UnmarkTaskCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * and returns a UnmarkTaskCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public UnmarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-04-05"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-04-05"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(","lastModifiedDate":"2024-04-05"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-04-05"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" String[] stringIndices \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" Index[] indices \u003d new Index[stringIndices.length];","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" for (int i \u003d 0; i \u003c stringIndices.length; i++) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" indices[i] \u003d ParserUtil.parseIndex(stringIndices[i]);","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" return new UnmarkTaskCommand(indices);","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":14,"nobodyishappy":25}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block,","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * sometimes used to avoid duplication","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" * between constructors. See","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" * https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" * Note that non-static init blocks are not recommended to use. There are other","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" * ways to avoid duplication","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public AddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" * Returns true if a person with the same identity as {@code person} exists in","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" * the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" * Replaces the given person {@code target} in the list with","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" * {@code editedPerson}.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" * existing person in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" * Replaces the given task {@code target} with {@code editedTask}.","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" * {@code target} must exist to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" * {@code editedTask} must exist to be updated.","lastModifiedDate":"2024-03-29"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" persons.setTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" * Removes {@code task} from the {@code person} in {@code AddressBook}.","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" * {@code task} must exist in the task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" public void deleteAssignedTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":" persons.deleteAssignedTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Yskie":33,"-":123}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" * Returns true if a person with the same identity as {@code person} exists in","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" * the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" * existing person in the address book.","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" void setTaskListFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":" static void setTaskList(TaskList taskList) {","lastModifiedDate":"2024-03-29"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" TaskList getTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" * {@code task} must not already exist in the task list.","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" void addTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" * Deletes the given task.","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" * {@code task} the task must exist in the task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" void deleteTask(Task task);","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" * Sets the given task in the task list.","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":" * {@code target} must exist to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" * {@code editedTask} must exist to be updated.","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" void setTask(Task target, Task editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" * Replaces the given task {@code target} with {@code editedTask}.","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" * {@code target} must exist to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" * {@code editedTask} must exist to be updated.","lastModifiedDate":"2024-03-29"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" void setPersonTask(Task target, Task editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":131,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" * Returns true if a task has the same description as a {@code task} in the task","lastModifiedDate":"2024-04-02"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":" * list.","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"Kaya3842"},"content":" boolean hasTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"Yskie"},"content":" * Updates the filter of the filtered task list to filter by the given","lastModifiedDate":"2024-03-29"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" * {@code predicate}.","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"breezetall"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"breezetall"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"breezetall"},"content":" /** Returns an unmodifiable view of the filtered task list */","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" * Updates the filter of the filtered person list to filter by the given","lastModifiedDate":"2024-03-29"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" * {@code predicate}.","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Kaya3842":30,"Yskie":31,"-":84,"breezetall":12}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" private final FilteredList\u003cTask\u003e filteredTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, TaskList taskList, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" requireAllNonNull(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \", task list: \" + taskList","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" filteredTasks \u003d new FilteredList\u003c\u003e(this.taskList.getSerializeTaskList());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" this(new AddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" return userPrefs.getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" * @param taskListFilePath File path to task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" userPrefs.setTaskListFilePath(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":141,"author":{"gitId":"Yskie"},"content":" public void setPersonTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":142,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":143,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":144,"author":{"gitId":"Yskie"},"content":" addressBook.setTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":145,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":146,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":147,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Task Manager","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"Yskie"},"content":" addressBook.deleteAssignedTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"Yskie"},"content":" taskList.deleteTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"Yskie"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":164,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":165,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":166,"author":{"gitId":"Yskie"},"content":" taskList.setTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":167,"author":{"gitId":"Yskie"},"content":" setPersonTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":168,"author":{"gitId":"Yskie"},"content":" taskList.sortByPriority();","lastModifiedDate":"2024-04-02"},{"lineNumber":169,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":170,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":171,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" return taskList.hasTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":" * @param tasks Instance of the tasklist.","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"Kaya3842"},"content":" public void setTaskList(TaskList tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"Kaya3842"},"content":" taskList.setTaskList(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"Kaya3842"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"Yskie"},"content":" * Returns an modifiable view of the list of {@code Task}.","lastModifiedDate":"2024-04-03"},{"lineNumber":196,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"breezetall"},"content":" return filteredTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"breezetall"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"breezetall"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"breezetall"},"content":" taskList.sortByPriority();","lastModifiedDate":"2024-03-26"},{"lineNumber":206,"author":{"gitId":"breezetall"},"content":" filteredTasks.setPredicate(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":213,"author":{"gitId":"Yskie"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"Yskie"},"content":" * internal list of","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":222,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":224,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":234,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":235,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":239,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":241,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 taskList.equals(otherModelManager.taskList)","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":243,"author":{"gitId":"breezetall"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-03-26"},{"lineNumber":244,"author":{"gitId":"breezetall"},"content":" \u0026\u0026 filteredTasks.equals(otherModelManager.filteredTasks);","lastModifiedDate":"2024-03-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":54,"Yskie":33,"chin-herng":1,"nobodyishappy":2,"-":137,"breezetall":19}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"Kaya3842":2,"-":16}},{"path":"src/main/java/seedu/address/model/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" * A class that stores the tasks from users.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class TaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" // private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" private ObservableList\u003cTask\u003e observableList;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" * Constructor of the class.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public TaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" observableList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" * Creates a TaskList using the Tasks in the {@code toBeCopied}","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" public TaskList(TaskList toBeCopied) {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" this();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" requireNonNull(toBeCopied);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" setTaskList(toBeCopied);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" public void setTaskList(TaskList tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" observableList.setAll(tasks.observableList);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * Adds a task to the end of list.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" * @param task The task to be added to the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" observableList.add(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" * Deletes a task based on the index of list.","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" * @param task The task to be deleted.","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" observableList.remove(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" public ObservableList\u003cTask\u003e getSerializeTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" return observableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" * Replaces the given task {@code target} in the list with {@code editedTask}.","lastModifiedDate":"2024-04-03"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" * {@code target} must exist in the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" * The task of {@code editedTask} must not be the same as another","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" * existing task in the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"breezetall"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"breezetall"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" int index \u003d observableList.indexOf(target);","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":" observableList.set(index, editedTask);","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" return observableList.contains(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" * Sorts tasks based on the task priority.","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"breezetall"},"content":" public void sortByPriority() {","lastModifiedDate":"2024-04-01"},{"lineNumber":83,"author":{"gitId":"breezetall"},"content":" observableList.sort(new Comparator\u003cTask\u003e() {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" public int compare(Task o1, Task o2) {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" // Sort by status","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" if (o1.getStatus().compareTo(o2.getStatus()) !\u003d 0) {","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" return o1.getStatus().getTaskStatus() ? 1 : -1;","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" // Sort by priority","lastModifiedDate":"2024-04-03"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" if (o2.getPriority().getValue() - o1.getPriority().getValue() !\u003d 0) {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" return o2.getPriority().getValue() - o1.getPriority().getValue();","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":" // Sort by deadline","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":" if (o1.getDeadline().taskDeadline !\u003d null \u0026\u0026 o2.getDeadline().taskDeadline !\u003d null) {","lastModifiedDate":"2024-04-01"},{"lineNumber":99,"author":{"gitId":"breezetall"},"content":" return o1.getDeadline().taskDeadline.compareTo(o2.getDeadline().taskDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":" // Sort by tasks with deadline","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"breezetall"},"content":" if (o1.getDeadline() !\u003d null) {","lastModifiedDate":"2024-04-01"},{"lineNumber":104,"author":{"gitId":"breezetall"},"content":" return -1;","lastModifiedDate":"2024-04-01"},{"lineNumber":105,"author":{"gitId":"breezetall"},"content":" } else if (o2.getDeadline() !\u003d null) {","lastModifiedDate":"2024-04-01"},{"lineNumber":106,"author":{"gitId":"breezetall"},"content":" return 1;","lastModifiedDate":"2024-04-01"},{"lineNumber":107,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":108,"author":{"gitId":"breezetall"},"content":" return 0;","lastModifiedDate":"2024-04-01"},{"lineNumber":109,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":110,"author":{"gitId":"breezetall"},"content":" });","lastModifiedDate":"2024-04-01"},{"lineNumber":111,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof TaskList)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" TaskList otherTaskList \u003d (TaskList) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" return observableList.equals(otherTaskList.observableList);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":33,"Yskie":26,"chin-herng":23,"nobodyishappy":8,"breezetall":37}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" private Path taskListFilePath \u003d Paths.get(\"data\", \"tasklist.json\");","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" setTaskListFilePath(newUserPrefs.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" return taskListFilePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" this.taskListFilePath \u003d taskListFilePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath)","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" \u0026\u0026 taskListFilePath.equals(otherUserPrefs.taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" return Objects.hash(guiSettings, addressBookFilePath, taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" sb.append(\"\\nLocal address book file location : \" + addressBookFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" sb.append(\"\\nLocal task list file location : \" + taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":16,"-":85}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * Guarantees: details are present and not null, field values are validated,","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * immutable.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" private final Set\u003cTask\u003e tasks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(name, phone, email, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" * Returns an immutable task set, which throws","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" public Set\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" return Collections.unmodifiableSet(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" * @param task to be assigned to {@code this}","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of assigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" public Person addTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(tasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, editedTasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" * @param task to be unassigned from {@code this}","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of unassigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" if (task.equals(t)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" * @param task to be unassigned from {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of unassigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" public Person deleteTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(tasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, editedTasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 tasks.equals(otherPerson.tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" return Objects.hash(name, phone, email, address, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"chin-herng"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Yskie":22,"chin-herng":26,"-":107}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * A list of persons that enforces uniqueness between its elements and does not","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * allow nulls.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" * A person is considered unique by comparing using","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" * {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" * the person being added or updated is","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * a person uses Person#equals(Object) so","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d FXCollections","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" .unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" * existing person in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" * Sets the assigned task for a {@code person}.","lastModifiedDate":"2024-03-29"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" * {@code target} must exist to be deleted.","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" * {@code editedTask} must exist to be updated.","lastModifiedDate":"2024-03-29"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-29"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" if (person.hasTask(target)) {","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" Person updatedPerson \u003d person.deleteTask(target).addTask(editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" setPerson(person, updatedPerson);","lastModifiedDate":"2024-03-29"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" * Deletes the assigned task for a {@code person}.","lastModifiedDate":"2024-03-29"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" * Assigned {@code task} to be deleted.","lastModifiedDate":"2024-03-29"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" public void deleteAssignedTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" if (person.hasTask(task)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" Person taskDeletePerson \u003d person.deleteTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" setPerson(person, taskDeletePerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Yskie":42,"-":143}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" * The representation of a task added by the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"public class Task {","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":" private TaskName name;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" private TaskDescription description;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":" private TaskPriority priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" private TaskStatus status;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" private TaskDeadline deadline;","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * The constructor of the class.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * @param name Name of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" * @param status Status of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" public Task(TaskName name, TaskDescription description, TaskPriority priority, TaskStatus status) {","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" this.deadline \u003d new TaskDeadline();","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" * The constructor of the class.","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" * @param name Name of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" * @param status Status of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" * @param deadline Deadline of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" public Task(TaskName name,","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" TaskDescription description,","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" TaskPriority priority,","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" TaskStatus status,","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" TaskDeadline deadline) {","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-25"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-03-25"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code Task}.","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code Task} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" public Task(Task copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" this.name \u003d new TaskName(copy.getName());","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" this.description \u003d new TaskDescription(copy.getDescription());","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" this.priority \u003d new TaskPriority(copy.getPriority());","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" this.status \u003d new TaskStatus(copy.getStatus());","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" this.deadline \u003d new TaskDeadline(copy.getDeadline());","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" * Gets the name of a task.","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" * @return The name of the task.","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" public TaskName getName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return name;","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" * Gets the description of a task.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" * @return The description of the task.","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" public TaskDescription getDescription() {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" return description;","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" * Gets the status of a task.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" * @return The status of the task.","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus getStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" return status;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" * Gets the priority of a task.","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" * @return The priority of the task.","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":" public TaskPriority getPriority() {","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"breezetall"},"content":" return priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":" * Gets the deadline of a task.","lastModifiedDate":"2024-03-25"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" * @return The deadline of the task.","lastModifiedDate":"2024-03-25"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":" public TaskDeadline getDeadline() {","lastModifiedDate":"2024-03-25"},{"lineNumber":98,"author":{"gitId":"nobodyishappy"},"content":" return deadline;","lastModifiedDate":"2024-03-25"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":100,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles null","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" Task otherTask \u003d (Task) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"nobodyishappy"},"content":" return this.name.equals(otherTask.name)","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"nobodyishappy"},"content":" \u0026\u0026 this.description.equals(otherTask.description)","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" \u0026\u0026 this.priority.equals(otherTask.priority)","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"nobodyishappy"},"content":" \u0026\u0026 this.deadline.equals(otherTask.deadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"nobodyishappy"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" return Objects.hash(name, description, priority, deadline);","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":" * Compare with other tasks for sorting in tags.","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"nobodyishappy"},"content":" * @param otherTask Task to be compared to","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":" * @return Value of the comparison","lastModifiedDate":"2024-03-27"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" public int compare(Task otherTask) {","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" if (this.getName().taskName.compareTo(otherTask.getName().taskName) \u003d\u003d 0) {","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" return this.getDescription().taskDescription.compareTo(otherTask.getDescription().taskDescription);","lastModifiedDate":"2024-04-02"},{"lineNumber":133,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":" return this.getName().taskName.compareTo(otherTask.getName().taskName);","lastModifiedDate":"2024-04-02"},{"lineNumber":135,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":35,"Yskie":5,"chin-herng":17,"nobodyishappy":63,"breezetall":17}},{"path":"src/main/java/seedu/address/model/task/TaskDeadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-25"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-25"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-25"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-25"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-25"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s deadline in the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDeadline {","lastModifiedDate":"2024-03-25"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-25"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" \"Task deadline should be in dd-MM-yyyy HH:mm format, and it should not be blank\";","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" public static final String EMPTY_DEADLINE \u003d \"Empty\";","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-25"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the deadline must not be a whitespace,","lastModifiedDate":"2024-03-27"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-25"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public static final DateTimeFormatter VALIDATION_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-03-25"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" private static final DateTimeFormatter OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public final LocalDateTime taskDeadline;","lastModifiedDate":"2024-03-25"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" private boolean isEmpty;","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskDeadline}.","lastModifiedDate":"2024-03-27"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" public TaskDeadline() {","lastModifiedDate":"2024-03-25"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d null;","lastModifiedDate":"2024-03-25"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" isEmpty \u003d true;","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-25"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskDeadline}.","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-25"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" * @param deadline A valid deadline.","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-25"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public TaskDeadline(String deadline) {","lastModifiedDate":"2024-03-25"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(deadline);","lastModifiedDate":"2024-03-25"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" if (deadline.equals(EMPTY_DEADLINE)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d null;","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" isEmpty \u003d true;","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(isValidTaskDeadline(deadline), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-25"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d LocalDateTime.parse(deadline, VALIDATION_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" isEmpty \u003d false;","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskDeadline}.","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskDeadline} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" public TaskDeadline(TaskDeadline copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" this.taskDeadline \u003d copy.taskDeadline;","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" this.isEmpty \u003d copy.isEmpty;","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid deadline.","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskDeadline(String deadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" if (deadline.equals(EMPTY_DEADLINE)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-25"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" VALIDATION_FORMAT.parse(deadline);","lastModifiedDate":"2024-03-25"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-25"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-25"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-25"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-25"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-25"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" if (isEmpty) {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":" return \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"nobodyishappy"},"content":" return taskDeadline.format(OUTPUT_FORMAT);","lastModifiedDate":"2024-03-25"},{"lineNumber":89,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":90,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-25"},{"lineNumber":91,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"nobodyishappy"},"content":" * Returns a string to save to json file.","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" public String toJsonSave() {","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" if (isEmpty) {","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":" return EMPTY_DEADLINE;","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" return taskDeadline.format(VALIDATION_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskDeadline)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":114,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline otherTaskDeadline \u003d (TaskDeadline) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"nobodyishappy"},"content":" return this.toJsonSave().equals(otherTaskDeadline.toJsonSave());","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":117,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":118,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"nobodyishappy"},"content":" if (isEmpty) {","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"nobodyishappy"},"content":" return EMPTY_DEADLINE.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":" return taskDeadline.hashCode();","lastModifiedDate":"2024-03-26"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":126,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":12,"nobodyishappy":114}},{"path":"src/main/java/seedu/address/model/task/TaskDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s description in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDescription {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" \"Task descriptions can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the description must not be a whitespace,","lastModifiedDate":"2024-03-25"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public final String taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskDescription}.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" public TaskDescription(String description) {","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" requireNonNull(description);","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" checkArgument(isValidTaskDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" taskDescription \u003d description;","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskDescription}.","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskDescription} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" public TaskDescription(TaskDescription copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" this.taskDescription \u003d copy.taskDescription;","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid description.","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskDescription(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription otherTaskDescription \u003d (TaskDescription) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription.equals(otherTaskDescription.taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"chin-herng":11,"nobodyishappy":61,"breezetall":4}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s name in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskName {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Task name can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2024-03-27"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public final String taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" * @param name A valid name.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public TaskName(String name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(isValidTaskName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskName}.","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskName} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" public TaskName(TaskName copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" this.taskName \u003d copy.taskName;","lastModifiedDate":"2024-04-05"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskName(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" TaskName otherTaskName \u003d (TaskName) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" return taskName.equals(otherTaskName.taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" return taskName.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"chin-herng":11,"nobodyishappy":63}},{"path":"src/main/java/seedu/address/model/task/TaskNameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" * Tests that a {@code Task}\u0027s {@code TaskName} matches any of the keywords given.","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class TaskNameContainsKeywordsPredicate implements Predicate\u003cTask\u003e {","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public TaskNameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" * Evaluates this predicate on the given argument.","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" * @param task The input argument","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" * @return {@code true} if the input argument matches the predicate, otherwise {@code false}","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" public boolean test(Task task) {","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(task.getName().toString(), keyword));","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" if (!(other instanceof TaskNameContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate otherTaskNameContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" (TaskNameContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" return keywords.equals(otherTaskNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public String toString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":52}},{"path":"src/main/java/seedu/address/model/task/TaskPriority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-04-01"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-04-01"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.util.Priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" * Represents a Task\u0027s priority in the task list.","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"public class TaskPriority {","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Task priority can take either an integer or low, medium, high, \"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" + \"and it should not be blank\";","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" private Priority taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" * Constructs an {@code TaskPriority}.","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" public TaskPriority() {","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" taskPriority \u003d Priority.LOW;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskPriority}.","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskPriority} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" public TaskPriority(TaskPriority copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" this.taskPriority \u003d copy.taskPriority;","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" * Constructs an {@code TaskPriority}.","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" public TaskPriority(String priority) {","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" requireNonNull(priority);","lastModifiedDate":"2024-04-01"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" checkArgument(isValidTaskPriority(priority), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-04-01"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" priority \u003d priority.toLowerCase();","lastModifiedDate":"2024-04-01"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" if (priority.equals(\"low\") || priority.equals(\"1\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d Priority.LOW;","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" } else if (priority.equals(\"medium\") || priority.equals(\"2\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d Priority.MEDIUM;","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" } else if (priority.equals(\"high\") || priority.equals(\"3\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d Priority.HIGH;","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"breezetall"},"content":" * Returns an int of {@code TaskPriority}.","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":" public int getValue() {","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":" return taskPriority.getValue();","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-04-01"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" * Returns true if a given string is a valid priority.","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-04-01"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" public static boolean isValidTaskPriority(String test) {","lastModifiedDate":"2024-04-01"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" test \u003d test.toLowerCase();","lastModifiedDate":"2024-04-01"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" if (test.equals(\"low\") || test.equals(\"medium\") || test.equals(\"high\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":68,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":69,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":" if (test.equals(\"1\") || test.equals(\"2\") || test.equals(\"3\")) {","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" return true;","lastModifiedDate":"2024-04-01"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":73,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":" return false;","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" public String toString() {","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" if (taskPriority.equals(Priority.LOW)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" return \"LOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"breezetall"},"content":" } else if (taskPriority.equals(Priority.MEDIUM)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"breezetall"},"content":" return \"MEDIUM\";","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"breezetall"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"breezetall"},"content":" return \"HIGH\";","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"breezetall"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"breezetall"},"content":" return true;","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"breezetall"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"breezetall"},"content":" if (!(other instanceof TaskPriority)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"breezetall"},"content":" return false;","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"breezetall"},"content":" TaskPriority otherPriority \u003d (TaskPriority) other;","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"breezetall"},"content":" return taskPriority \u003d\u003d otherPriority.taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":103,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-04-01"},{"lineNumber":104,"author":{"gitId":"breezetall"},"content":" public int hashCode() {","lastModifiedDate":"2024-04-01"},{"lineNumber":105,"author":{"gitId":"breezetall"},"content":" return taskPriority.hashCode();","lastModifiedDate":"2024-04-01"},{"lineNumber":106,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":107,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"Yskie":3,"chin-herng":11,"breezetall":93}},{"path":"src/main/java/seedu/address/model/task/TaskStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s status in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskStatus {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" \"Task status should be either Done or Not Done\";","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" private static final String STATUS_DONE \u003d \"Done\";","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private static final String STATUS_NOTDONE \u003d \"Not Done\";","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" private boolean taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskStatus}.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-04-05"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" * Constructs a copy of {@code TaskStatus}.","lastModifiedDate":"2024-04-05"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" *","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" * @param copy A {@code TaskStatus} whose copy is to be constructed.","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" public TaskStatus(TaskStatus copy) {","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" requireNonNull(copy);","lastModifiedDate":"2024-04-05"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" this.taskStatus \u003d copy.taskStatus;","lastModifiedDate":"2024-04-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskStatus}.","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" * @param status A valid status from json.","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus(String status) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" if (status.equals(STATUS_DONE)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" } else if (status.equals(STATUS_NOTDONE)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(false, MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" public boolean getTaskStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" public void setAsDone() {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" public void setAsUndone() {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" if (taskStatus) {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return STATUS_DONE;","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" return STATUS_NOTDONE;","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskStatus)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus otherStatus \u003d (TaskStatus) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" return taskStatus \u003d\u003d otherStatus.taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" public int compareTo(TaskStatus other) {","lastModifiedDate":"2024-04-01"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" return (other.getTaskStatus() \u003d\u003d taskStatus ? 0 : (taskStatus ? 1 : -1));","lastModifiedDate":"2024-04-01"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":90,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"chin-herng":12,"nobodyishappy":74,"breezetall":4}},{"path":"src/main/java/seedu/address/model/util/Priority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":" * Contains enumeration for TaskPriority.","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"public enum Priority {","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":" LOW(1),","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":" MEDIUM(2),","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" HIGH(3);","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":" private int value;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":" private Priority(int value) {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" * Returns an int of {@code TaskPriority}.","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" public int getValue() {","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" return value;","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"breezetall":22}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" getTaskSet(getSampleTasks()[0])),","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" getTaskSet(getSampleTasks()[0], getSampleTasks()[1]))","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" };","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" public static Task[] getSampleTasks() {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" return new Task[] {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" new Task(new TaskName(\"Implement find for task\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Find task has to be done\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus()),","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" new Task(new TaskName(\"Implement remind for task\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Remind task has to be done\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus())","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" public static TaskList getSampleTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" for (Task sampleTask : getSampleTasks()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" tasks.addTask(sampleTask);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" return tasks;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" * Returns a task set containing the list of strings given.","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" public static Set\u003cTask\u003e getTaskSet(Task... tasks) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" return Arrays.stream(tasks)","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Kaya3842":6,"chin-herng":1,"nobodyishappy":18,"-":41,"breezetall":8}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" @JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" if (tasks !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" tasks.addAll(source.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" .map(JsonAdaptedTask::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" final List\u003cTask\u003e personTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" for (JsonAdaptedTask task : tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" personTasks.add(task.toModelType());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" final Set\u003cTask\u003e modelTasks \u003d new HashSet\u003c\u003e(personTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chin-herng":12,"-":97}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"public class JsonAdaptedTask {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" private final String taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" private final String taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" private final String taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" private final String taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" private final String taskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" public JsonAdaptedTask(@JsonProperty(\"taskName\") String taskName,","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskDescription\") String taskDescription,","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" @JsonProperty(\"taskPriority\") String taskPriority,","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskStatus\") String taskStatus,","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskDeadline\") String taskDeadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" this.taskStatus \u003d taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" this.taskDeadline \u003d taskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d source.getName().taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d source.getDescription().taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" taskPriority \u003d source.getPriority().toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" taskStatus \u003d source.getStatus().toString();","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d source.getDeadline().toJsonSave();","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" * Converts this Jackson-friendly adapted task object into the model\u0027s {@code Task} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" if (taskName \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" TaskName.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskName.isValidTaskName(taskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" final TaskName modelTaskName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" if (taskDescription \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDescription.isValidTaskDescription(taskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" final TaskDescription modelTaskDescription \u003d new TaskDescription(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" if (taskStatus \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" final TaskStatus modelTaskStatus \u003d new TaskStatus(taskStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"breezetall"},"content":" if (taskPriority \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" TaskPriority.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" final TaskPriority modelTaskPriority \u003d new TaskPriority(taskPriority);","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"nobodyishappy"},"content":" if (taskDeadline \u003d\u003d null) {","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline.class.getSimpleName()));","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDeadline.isValidTaskDeadline(taskDeadline)) {","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskDeadline.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":" final TaskDeadline modelTaskDeadline \u003d new TaskDeadline(taskDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" return new Task(modelTaskName, modelTaskDescription, modelTaskPriority, modelTaskStatus, modelTaskDeadline);","lastModifiedDate":"2024-03-29"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":36,"nobodyishappy":49,"breezetall":16}},{"path":"src/main/java/seedu/address/storage/JsonSerializableTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * An Immutable TaskList that is serializable to JSON format.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"@JsonRootName(value \u003d \"tasklist\")","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"class JsonSerializableTaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Task list contains duplicate task(s).\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" * Constructs a {@code JsonSerializableTaskList} with the given persons.","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" public JsonSerializableTaskList(@JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * Converts a given {@code TaskList} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" * {@code JsonSerializableTaskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" public JsonSerializableTaskList(TaskList source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" tasks.addAll(source.getSerializeTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" * Converts this address book into the model\u0027s {@code TaskList} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public TaskList toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" if (taskList.hasTask(task)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":60}},{"path":"src/main/java/seedu/address/storage/JsonTaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * A class to access TaskList data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"public class JsonTaskListStorage implements TaskListStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonTaskListStorage.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" private Path filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" public JsonTaskListStorage(Path filePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" return filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return readTaskList(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" * Similar to {@link #readTaskList()}.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cJsonSerializableTaskList\u003e jsonTaskList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" filePath, JsonSerializableTaskList.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" if (!jsonTaskList.isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" return Optional.of(jsonTaskList.get().toModelType());","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" saveTaskList(taskList, filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" * Similar to {@link #saveTaskList(TaskList)}.","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" JsonUtil.saveJsonFile(new JsonSerializableTaskList(taskList), filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":80}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"public interface Storage extends AddressBookStorage, TaskListStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Kaya3842":11,"-":31}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private TaskListStorage taskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public StorageManager(AddressBookStorage addressBookStorage, TaskListStorage taskListStorage,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" this.taskListStorage \u003d taskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" return taskListStorage.getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" * Returns TaskList data.","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" return readTaskList(taskListStorage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" return taskListStorage.readTaskList(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" * Saves the given {@link TaskList} to the storage.","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"Kaya3842"},"content":" saveTaskList(taskList, taskListStorage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"Kaya3842"},"content":" * @see #saveTaskList(TaskList)","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"Kaya3842"},"content":" taskListStorage.saveTaskList(taskList, filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":56,"-":77}},{"path":"src/main/java/seedu/address/storage/TaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" * Represents a storage for {@link seedu.address.model.TaskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public interface TaskListStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" * Returns TaskList data.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * Saves the given {@link TaskList} to the storage.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * @see #saveTaskList(TaskList)","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList, Path filePath) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":44}},{"path":"src/main/java/seedu/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w13-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"nobodyishappy":1,"-":101}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" private TaskListPanel taskListPanel;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" private StackPane taskListPanelPlaceholder;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"breezetall"},"content":" taskListPanel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"breezetall"},"content":" taskListPanelPlaceholder.getChildren().add(taskListPanel.getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":176,"author":{"gitId":"breezetall"},"content":" public TaskListPanel getTaskListPanel() {","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"breezetall"},"content":" return taskListPanel;","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":196,"breezetall":10}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" private FlowPane tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" person.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" .sorted((t1, t2) -\u003e t1.compare(t2))","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" .forEach(task -\u003e tasks.getChildren().add(new Label(task.getName().taskName)));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chin-herng":2,"nobodyishappy":2,"-":53}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" public final Task task;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" private Label name;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" private Label id;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" private Label priority;","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" private Label status;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" private Label description;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" @FXML","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" private Label deadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" * Creates a {@code TaskCode} with the given {@code Task} and index to display.","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" public TaskCard(Task task, int displayedIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" name.setText(task.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" priority.setText(task.getPriority().toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" status.setText(task.getStatus().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" description.setText(task.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" deadline.setText(task.getDeadline().toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" String settings \u003d \"-fx-padding: 1 3 1 3; -fx-border-radius: 2; -fx-background-radius: 2; -fx-font-size: 12;\";","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" if (task.getPriority().toString().equalsIgnoreCase(\"low\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" priority.setStyle(\"-fx-background-color: #00ff00;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" } else if (task.getPriority().toString().equalsIgnoreCase(\"medium\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" priority.setStyle(\"-fx-background-color: #ffae00;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" } else if (task.getPriority().toString().equalsIgnoreCase(\"high\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" priority.setStyle(\"-fx-background-color: #ff0000;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" if (task.getStatus().toString().equalsIgnoreCase(\"Done\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" status.setStyle(\"-fx-background-color: #00ff00;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" } else if (task.getStatus().toString().equalsIgnoreCase(\"Not Done\")) {","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" status.setStyle(\"-fx-background-color: #ff0000;\" + settings);","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":24,"breezetall":47}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TaskListPanel.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListViewCell());","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" setText(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" setGraphic(new TaskCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"breezetall":49}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":".cell_head_label {","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"nobodyishappy"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":190,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":267,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":281,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":294,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":308,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"chin-herng"},"content":"#tasks {","lastModifiedDate":"2024-03-17"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":351,"author":{"gitId":"chin-herng"},"content":"#tasks .label {","lastModifiedDate":"2024-03-17"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":358,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-04-04"}],"authorContributionMap":{"chin-herng":2,"nobodyishappy":7,"-":350}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"780.0\" onCloseRequest\u003d\"#handleExit\" title\u003d\"TeamTracker\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100\" minHeight\u003d\"100\" prefHeight\u003d\"100\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" \u003cHBox prefWidth\u003d\"200.0\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"340.0\" styleClass\u003d\"pane-with-border\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" \u003cVBox fx:id\u003d\"taskList\" minWidth\u003d\"340.0\" styleClass\u003d\"pane-with-border\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"taskListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"nobodyishappy":4,"-":51,"breezetall":16}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"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":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" \u003cFlowPane fx:id\u003d\"tasks\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chin-herng":1,"-":35}},{"path":"src/main/resources/view/PersonListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"listname\" text\u003d\"List of Person\" styleClass\u003d\"cell_head_label\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cListView fx:id\u003d\"personListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"nobodyishappy":2,"-":8}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5.0\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"10.0\" right\u003d\"10.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" \u003cGridPane\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" \u003cRowConstraints minHeight\u003d\"10.0\" vgrow\u003d\"SOMETIMES\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$id\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$name\"\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"status\" alignment\u003d\"TOP_CENTER\" contentDisplay\u003d\"RIGHT\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$status\" textAlignment\u003d\"RIGHT\" GridPane.columnIndex\u003d\"1\" GridPane.halignment\u003d\"RIGHT\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"priority\" styleClass\u003d\"cell_medium_label\" text\u003d\"\\$priority\" /\u003e","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"deadline\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$deadline\" /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"breezetall"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"breezetall"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":29,"breezetall":30}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"listname\" text\u003d\"List of Task\" styleClass\u003d\"cell_head_label\" /\u003e","lastModifiedDate":"2024-04-04"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":2,"breezetall":8}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" new JsonTaskListStorage(temporaryFolder.resolve(\"tasklist.json\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"breezetall"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"breezetall"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredTaskList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":" // Inject LogicManager with a TaskListStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(prefPath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath)","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" throw e;","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" };","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTasks().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Kaya3842":16,"chin-herng":1,"-":171,"breezetall":5}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Kaya3842":3,"-":46}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" * A default model stub that have all methods failing.","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":154,"author":{"gitId":"Yskie"},"content":" public void setPersonTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":155,"author":{"gitId":"Yskie"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":156,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":157,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":158,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-29"},{"lineNumber":159,"author":{"gitId":"Yskie"},"content":" public void setTask(Task target, Task editedTask) {","lastModifiedDate":"2024-04-02"},{"lineNumber":160,"author":{"gitId":"Yskie"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-29"},{"lineNumber":161,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":162,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":163,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" * @param addressBookFilePath","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"Kaya3842"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"Kaya3842"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"Kaya3842"},"content":" * {@code task} must not already exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"Kaya3842"},"content":" * @param task","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"Yskie"},"content":" * Deletes a task based on the index of list.","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Yskie"},"content":" * @param task The task to be deleted in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"Yskie"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Yskie"},"content":" * Returns true if a task has the same description as a {@code task} in the task","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"Yskie"},"content":" * list.","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"Kaya3842"},"content":" * @param task","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":219,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"breezetall"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"breezetall"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"breezetall"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":233,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":238,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":243,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":245,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":253,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":254,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":261,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":262,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":263,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":273,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":275,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":279,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Kaya3842":49,"Yskie":22,"-":203,"breezetall":10}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"class AddTaskCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private ModelManager model;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" @BeforeEach","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public void setUp() {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public void constructor_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" public void execute_taskAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" Task validTask \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" CommandResult commandResult \u003d new AddTaskCommand(validTask).execute(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" assertTrue(model.hasTask(validTask));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public void execute_duplicateTask_throwsCommandException() throws CommandException {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" Task validTask \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" new AddTaskCommand(validTask).execute(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand.MESSAGE_DUPLICATE_TASK, () -\u003e new AddTaskCommand(validTask).execute(model));","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" void testEquals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" Task testTask1 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" Task testTask2 \u003d new Task(new TaskName(\"Implement test2\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" Task testTask3 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Second test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" Task testTask4 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus(),","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" new TaskDeadline(\"12-12-2024 16:00\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" Task testTask5 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus(),","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" new TaskDeadline(\"12-12-2024 18:00\"));","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand1 \u003d new AddTaskCommand(testTask1);","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand2 \u003d new AddTaskCommand(testTask2);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" AddTaskCommand addTaskCommand3 \u003d new AddTaskCommand(testTask3);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":" AddTaskCommand addTaskCommand4 \u003d new AddTaskCommand(testTask4);","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"nobodyishappy"},"content":" AddTaskCommand addTaskCommand5 \u003d new AddTaskCommand(testTask5);","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" assertTrue(addTaskCommand1.equals(addTaskCommand1));","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommandCopy1 \u003d new AddTaskCommand(testTask1);","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(addTaskCommandCopy1.equals(addTaskCommand1));","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" // different tasks -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(addTaskCommand2));","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"nobodyishappy"},"content":" // different description -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(addTaskCommand1.equals(addTaskCommand3));","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"nobodyishappy"},"content":" // different deadline -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(addTaskCommand1.equals(addTaskCommand4));","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":" // different deadline -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(addTaskCommand4.equals(addTaskCommand5));","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" void testToString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"nobodyishappy"},"content":" Task test \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(test);","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"Kaya3842"},"content":" String expected \u003d AddTaskCommand.class.getCanonicalName() + \"{toAdd\u003d\" + test + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expected, addTaskCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":72,"nobodyishappy":41,"breezetall":13}},{"path":"src/test/java/seedu/address/logic/commands/AssignCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"class AssignCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public void execute_assignTaskUnfilteredListSingleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" Person personToBeAssigned \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToAssign), Messages.format(new Person[] { personToBeAssigned }));","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeAssigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeAssigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeAssigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" public void execute_assignTaskUnfilteredListMultipleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToBeAssigned \u003d new Person[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToAssign), Messages.format(peopleToBeAssigned));","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToBeAssigned).forEach(personToBeAssigned -\u003e {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeAssigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeAssigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeAssigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" public void execute_assignTaskUnfilteredListDuplicateValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Person personToBeAssigned \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToAssign), Messages.format(new Person[] { personToBeAssigned }));","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeAssigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeAssigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeAssigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(firstPerson.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withTasks(editedTasks).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS, Messages.format(taskToAssign),","lastModifiedDate":"2024-03-26"},{"lineNumber":116,"author":{"gitId":"nobodyishappy"},"content":" editedPerson.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidTaskIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(outOfBoundIndex, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 1),","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 2)","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"chin-herng"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"chin-herng"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"chin-herng"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":179,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"chin-herng"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignOneToOneCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":186,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignOneToTwoCommand \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignTwoToOneCommand \u003d new AssignCommand(INDEX_SECOND, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"chin-herng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"chin-herng"},"content":" assertEquals(assignOneToOneCommand, assignOneToOneCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"chin-herng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommandCopy \u003d new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":194,"author":{"gitId":"chin-herng"},"content":" assertEquals(assignOneToOneCommand, assignCommandCopy);","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"chin-herng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"chin-herng"},"content":" // different indices -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, assignOneToTwoCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, assignTwoToOneCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"chin-herng":202,"nobodyishappy":1}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"Kaya3842":3,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/ClearTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" * {@code ClearTaskCommand}.","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"public class ClearTaskCommandTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" Person personToUnassign \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new Person(personToUnassign.getName(), personToUnassign.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" personToUnassign.getEmail(), personToUnassign.getAddress(), new HashSet\u003c\u003e());","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskCommand \u003d new ClearTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(ClearTaskCommand.MESSAGE_SUCCESS, personToUnassign.getName());","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToUnassign, editedPerson);","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(clearTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskCommand \u003d new ClearTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(clearTaskCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" Person personToUnassign \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new Person(personToUnassign.getName(), personToUnassign.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" personToUnassign.getEmail(), personToUnassign.getAddress(), new HashSet\u003c\u003e());","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskCommand \u003d new ClearTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(ClearTaskCommand.MESSAGE_SUCCESS, personToUnassign.getName());","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToUnassign, editedPerson);","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(clearTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskCommand \u003d new ClearTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(clearTaskCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskFirstCommand \u003d new ClearTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskSecondCommand \u003d new ClearTaskCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" assertEquals(clearTaskFirstCommand, clearTaskFirstCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand clearTaskFirstCommandCopy \u003d new ClearTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" assertEquals(clearTaskFirstCommand, clearTaskFirstCommandCopy);","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(clearTaskFirstCommand, null);","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(clearTaskFirstCommand, clearTaskSecondCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"chin-herng":108}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskName VALID_TASK_NAME_FIRST \u003d new TaskName(\"Implement Testing 1\");","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskName VALID_TASK_NAME_SECOND \u003d new TaskName(\"Implement Testing 2\");","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" public static final TaskDescription VALID_TASK_DESCRIPTION_FIRST \u003d new TaskDescription(","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" \"Code for testing of test 1\");","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" public static final TaskDescription VALID_TASK_DESCRIPTION_SECOND \u003d new TaskDescription(","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" \"Code for testing of test 2\");","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskStatus VALID_TASK_STATUS \u003d new TaskStatus();","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" public static final TaskPriority VALID_TASK_PRIORITY \u003d new TaskPriority();","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public static final Task VALID_TASK_FIRST \u003d new Task(VALID_TASK_NAME_FIRST,","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":" VALID_TASK_DESCRIPTION_FIRST, VALID_TASK_PRIORITY, VALID_TASK_STATUS);","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" public static final Task VALID_TASK_SECOND \u003d new Task(VALID_TASK_NAME_SECOND,","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"breezetall"},"content":" VALID_TASK_DESCRIPTION_SECOND, VALID_TASK_PRIORITY, VALID_TASK_STATUS);","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult}","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" * \u003cbr\u003e","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":" * Convenience wrapper to","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" * {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" * - the address book, filtered person list and selected person in","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" * {@code actualModel} remain unchanged","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" * {@code targetIndex} in the {@code model}\u0027s address book.","lastModifiedDate":"2024-04-03"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Yskie":13,"chin-herng":2,"nobodyishappy":6,"-":113,"breezetall":8}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void execute_singleValidIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PEOPLE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" Messages.format(new Person[] { personToDelete }));","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" public void execute_multipleValidIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToDelete \u003d new Person[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PEOPLE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" Messages.format(peopleToDelete));","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" expectedModel.deletePerson(peopleToDelete[0]);","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" expectedModel.deletePerson(peopleToDelete[1]);","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateValidIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST, INDEX_FIRST});","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PEOPLE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" Messages.format(new Person[] { personToDelete }));","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 1),","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 2)","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-03-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PEOPLE_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" Messages.format(new Person[] { personToDelete }));","lastModifiedDate":"2024-03-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":152,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"chin-herng"},"content":" Index[] targetIndices \u003d new Index[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":168,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(1),","lastModifiedDate":"2024-03-26"},{"lineNumber":169,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(2)","lastModifiedDate":"2024-03-26"},{"lineNumber":170,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":171,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndices);","lastModifiedDate":"2024-03-26"},{"lineNumber":172,"author":{"gitId":"chin-herng"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndices\u003d\"","lastModifiedDate":"2024-03-26"},{"lineNumber":173,"author":{"gitId":"chin-herng"},"content":" + Arrays.toString(targetIndices) + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":179,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":180,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":181,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Kaya3842":4,"chin-herng":87,"-":94}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" * {@code DeleteTaskCommand}.","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void execute_singleValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" Task taskToDelete \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASKS_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToDelete));","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" public void execute_multipleValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToDelete \u003d new Task[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASKS_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" Messages.format(tasksToDelete));","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" expectedModel.deleteTask(tasksToDelete[0]);","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" expectedModel.deleteTask(tasksToDelete[1]);","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" Task taskToDelete \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_DELETE_TASKS_SUCCESS,","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToDelete));","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" expectedModel.deleteTask(taskToDelete);","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-26"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-03-26"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(new Index[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1),","lastModifiedDate":"2024-03-26"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 2)","lastModifiedDate":"2024-03-26"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-03-26"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(deleteTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-26"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-03-26"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-03-26"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"Yskie"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"Yskie"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" Index[] targetIndices \u003d new Index[] {","lastModifiedDate":"2024-03-26"},{"lineNumber":142,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(1),","lastModifiedDate":"2024-03-26"},{"lineNumber":143,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(2)","lastModifiedDate":"2024-03-26"},{"lineNumber":144,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-03-26"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(targetIndices);","lastModifiedDate":"2024-03-26"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{targetIndices\u003d\"","lastModifiedDate":"2024-03-26"},{"lineNumber":147,"author":{"gitId":"chin-herng"},"content":" + Arrays.toString(targetIndices) + \"}\";","lastModifiedDate":"2024-03-26"},{"lineNumber":148,"author":{"gitId":"Yskie"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Yskie":59,"chin-herng":90,"nobodyishappy":1}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder().withTasks(model.getFilteredPersonList().get(0).getTasks()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST, new EditPersonDescriptor());","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST,","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST,","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST, DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST, copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND, DESC_AMY)));","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"chin-herng"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST, DESC_BOB)));","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Kaya3842":16,"chin-herng":22,"-":153}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"chin-herng":1,"-":64}},{"path":"src/test/java/seedu/address/logic/commands/EditTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"import seedu.address.testutil.EditTaskDescriptorBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"public class EditTaskCommandTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" Task target \u003d model.getFilteredTaskList().get(0);","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" Task editedTask \u003d new TaskBuilder().withTaskName(\"task4\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder(editedTask).build();","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(INDEX_FIRST, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" String expectedMessage \u003d String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS,","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Messages.format(target));","lastModifiedDate":"2024-04-04"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" expectedModel.setTask(target, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(editTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" Index indexLastTask \u003d Index.fromOneBased(model.getFilteredTaskList().size());","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" Task lastTask \u003d model.getFilteredTaskList().get(indexLastTask.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" TaskBuilder taskInList \u003d new TaskBuilder(lastTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" Task editedTask \u003d taskInList.withTaskName(\"Task 10\").withTaskPriority(\"medium\")","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" .build();","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder().withName(\"Task 10\")","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" .withPriority(\"medium\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(indexLastTask, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" String expectedMessage \u003d String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS,","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" Messages.format(lastTask));","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" expectedModel.setTask(lastTask, editedTask);","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(editTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(INDEX_FIRST, new EditTaskDescriptor());","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" Task editedTask \u003d model.getFilteredTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" String expectedMessage \u003d String.format(EditTaskCommand.MESSAGE_EDIT_TASK_SUCCESS,","lastModifiedDate":"2024-04-02"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" Messages.format(editedTask));","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-04-02"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-02"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(editTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-02"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2024-04-02"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" Task firstTask \u003d model.getFilteredTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-02"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder(firstTask).build();","lastModifiedDate":"2024-04-02"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(INDEX_SECOND, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" assertCommandFailure(editTaskCommand, model, EditTaskCommand.MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-04-02"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-02"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredTaskList().size() + 1);","lastModifiedDate":"2024-04-02"},{"lineNumber":95,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder().withName(\"task 11\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":96,"author":{"gitId":"Yskie"},"content":" EditTaskCommand editTaskCommand \u003d new EditTaskCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":97,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":98,"author":{"gitId":"Yskie"},"content":" assertCommandFailure(editTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-02"},{"lineNumber":99,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":100,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":101,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":102,"author":{"gitId":"Yskie"},"content":" public void equals() {","lastModifiedDate":"2024-04-02"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" Task task4 \u003d new TaskBuilder().withTaskName(\"task4\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" Task task5 \u003d new TaskBuilder().withTaskName(\"task5\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder(task4).build();","lastModifiedDate":"2024-04-02"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor2 \u003d new EditTaskDescriptorBuilder(task5).build();","lastModifiedDate":"2024-04-02"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" final EditTaskCommand standardCommand \u003d new EditTaskCommand(INDEX_FIRST, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor copyDescriptor \u003d new EditTaskDescriptor(descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" EditTaskCommand commandWithSameValues \u003d new EditTaskCommand(INDEX_FIRST, copyDescriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-04-02"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-04-02"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-04-02"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-04-02"},{"lineNumber":120,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":121,"author":{"gitId":"Yskie"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":122,"author":{"gitId":"Yskie"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-04-02"},{"lineNumber":123,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":124,"author":{"gitId":"Yskie"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":125,"author":{"gitId":"Yskie"},"content":" assertFalse(standardCommand.equals(new EditTaskCommand(INDEX_SECOND, descriptor)));","lastModifiedDate":"2024-04-02"},{"lineNumber":126,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":127,"author":{"gitId":"Yskie"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-04-02"},{"lineNumber":128,"author":{"gitId":"Yskie"},"content":" assertFalse(standardCommand.equals(new EditTaskCommand(INDEX_FIRST, descriptor2)));","lastModifiedDate":"2024-04-02"},{"lineNumber":129,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":130,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"Yskie":127,"chin-herng":3}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Kaya3842":3,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/FindTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_TASKS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_1;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_2;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_3;","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTaskCommand}.","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"class FindTaskCommandTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" private Model expectedModel \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" * Parses {@code userInput} into a {@code TaskNameContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" private TaskNameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return new TaskNameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" public void execute_zeroKeywords_noTaskFound() {","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand command \u003d new FindTaskCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" assertEquals(Collections.emptyList(), model.getFilteredTaskList());","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" public void execute_multipleKeywords_multipleTasksFound() throws CommandException {","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(MESSAGE_TASKS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d preparePredicate(\"task1 task2 task3\");","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand command \u003d new FindTaskCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" expectedModel.updateFilteredTaskList(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expectedMessage, command.execute(expectedModel).getFeedbackToUser());","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" assertEquals(Arrays.asList(TASK_1, TASK_2, TASK_3), model.getFilteredTaskList());","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" public void testEquals() {","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand findFirstCommand \u003d new FindTaskCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand findSecondCommand \u003d new FindTaskCommand(secondPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand findFirstCommandCopy \u003d new FindTaskCommand(firstPredicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" void testToString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand findTaskCommand \u003d new FindTaskCommand(predicate);","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" String expected \u003d FindTaskCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-29"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expected, findTaskCommand.toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":92}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Kaya3842":3,"chin-herng":2,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/ListTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"public class ListTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" private Model model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(new ListTaskCommand(), model, ListTaskCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" /* Test for find method */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" /*","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"breezetall":41}},{"path":"src/test/java/seedu/address/logic/commands/MarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-04"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-04-04"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-04"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-04-04"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" * {@code MarkTaskCommand}.","lastModifiedDate":"2024-04-04"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-04"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public void execute_singleValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-04"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToMark.getName(), taskToMark.getDescription(), taskToMark.getPriority(),","lastModifiedDate":"2024-04-04"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(), taskToMark.getDeadline());","lastModifiedDate":"2024-04-04"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" editedTask.getStatus().setAsDone();","lastModifiedDate":"2024-04-04"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2024-04-04"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" public void execute_multipleValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToMark \u003d new Task[] {","lastModifiedDate":"2024-04-04"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-04"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-04-04"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-04"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-04-04"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" Messages.format(tasksToMark));","lastModifiedDate":"2024-04-04"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-04"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToMark).forEach(taskToMark -\u003e {","lastModifiedDate":"2024-04-04"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToMark.getName(),","lastModifiedDate":"2024-04-04"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" taskToMark.getDescription(),","lastModifiedDate":"2024-04-04"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" taskToMark.getPriority(),","lastModifiedDate":"2024-04-04"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(),","lastModifiedDate":"2024-04-04"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" taskToMark.getDeadline());","lastModifiedDate":"2024-04-04"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" editedTask.getStatus().setAsDone();","lastModifiedDate":"2024-04-04"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(taskToMark, editedTask);","lastModifiedDate":"2024-04-04"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateValidIndex_success() {","lastModifiedDate":"2024-04-04"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" Task taskToMark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-04"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-04"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToMark));","lastModifiedDate":"2024-04-04"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-04"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-04"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" Task editedTask \u003d new Task(taskToMark.getName(), taskToMark.getDescription(), taskToMark.getPriority(),","lastModifiedDate":"2024-04-04"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(), taskToMark.getDeadline());","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" editedTask.getStatus().setAsDone();","lastModifiedDate":"2024-04-04"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(expectedModel.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-04"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" editedTask);","lastModifiedDate":"2024-04-04"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-04"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-04"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-04-04"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-04-04"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-04"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-04"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-04"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-04"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-04"},{"lineNumber":125,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] {","lastModifiedDate":"2024-04-04"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1),","lastModifiedDate":"2024-04-04"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 2)","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-04"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":134,"author":{"gitId":"breezetall"},"content":" public void execute_taskWithoutDeadline() {","lastModifiedDate":"2024-04-01"},{"lineNumber":135,"author":{"gitId":"breezetall"},"content":" Task taskWithoutDeadline \u003d new TaskBuilder().withTaskName(\"Task 1\").withTaskDeadline(\"Empty\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":136,"author":{"gitId":"breezetall"},"content":" model.addTask(taskWithoutDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":137,"author":{"gitId":"chin-herng"},"content":" Index noDeadlineTask \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size());","lastModifiedDate":"2024-04-04"},{"lineNumber":138,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { noDeadlineTask });","lastModifiedDate":"2024-04-04"},{"lineNumber":139,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":140,"author":{"gitId":"breezetall"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-01"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskWithoutDeadline));","lastModifiedDate":"2024-04-04"},{"lineNumber":142,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":143,"author":{"gitId":"breezetall"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":144,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":145,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-01"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":147,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":148,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":149,"author":{"gitId":"breezetall"},"content":" public void execute_taskWithDeadline() {","lastModifiedDate":"2024-04-01"},{"lineNumber":150,"author":{"gitId":"breezetall"},"content":" Task taskWithDeadline \u003d new TaskBuilder()","lastModifiedDate":"2024-04-01"},{"lineNumber":151,"author":{"gitId":"breezetall"},"content":" .withTaskName(\"Task 1\")","lastModifiedDate":"2024-04-01"},{"lineNumber":152,"author":{"gitId":"breezetall"},"content":" .withTaskDeadline(\"10-10-2020 10:00\")","lastModifiedDate":"2024-04-01"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":" .build();","lastModifiedDate":"2024-04-01"},{"lineNumber":154,"author":{"gitId":"breezetall"},"content":" model.addTask(taskWithDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":155,"author":{"gitId":"breezetall"},"content":" Index noDeadlineTask \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size());","lastModifiedDate":"2024-04-01"},{"lineNumber":156,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(new Index[] { noDeadlineTask });","lastModifiedDate":"2024-04-04"},{"lineNumber":157,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":158,"author":{"gitId":"breezetall"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-01"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskWithDeadline));","lastModifiedDate":"2024-04-04"},{"lineNumber":160,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":161,"author":{"gitId":"breezetall"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":162,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":163,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-01"},{"lineNumber":164,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":165,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":166,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskFirstCommand \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":169,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskSecondCommand \u003d new MarkTaskCommand(new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-04-04"},{"lineNumber":170,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(markTaskFirstCommand.equals(markTaskFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskFirstCommandCopy \u003d new MarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-04"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(markTaskFirstCommand.equals(markTaskFirstCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(markTaskSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"nobodyishappy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"chin-herng"},"content":" Index[] targetIndices \u003d new Index[] {","lastModifiedDate":"2024-04-04"},{"lineNumber":191,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(1),","lastModifiedDate":"2024-04-04"},{"lineNumber":192,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(2)","lastModifiedDate":"2024-04-04"},{"lineNumber":193,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-04"},{"lineNumber":194,"author":{"gitId":"chin-herng"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(targetIndices);","lastModifiedDate":"2024-04-04"},{"lineNumber":195,"author":{"gitId":"chin-herng"},"content":" String expected \u003d MarkTaskCommand.class.getCanonicalName() + \"{targetIndices\u003d\"","lastModifiedDate":"2024-04-04"},{"lineNumber":196,"author":{"gitId":"chin-herng"},"content":" + Arrays.toString(targetIndices) + \"}\";","lastModifiedDate":"2024-04-04"},{"lineNumber":197,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expected, markTaskCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":107,"nobodyishappy":64,"breezetall":29}},{"path":"src/test/java/seedu/address/logic/commands/UnassignCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"class UnassignCommandTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public void execute_unassignTaskUnfilteredListSingleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" Person personToBeUnassigned \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnassignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnassign), Messages.format(new Person[] { personToBeUnassigned }));","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeUnassigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(taskToUnassign);","lastModifiedDate":"2024-04-05"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeUnassigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeUnassigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unassignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" public void execute_unassignTaskUnfilteredListMultipleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" Person[] peopleToBeUnassigned \u003d new Person[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" model.getFilteredPersonList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnassignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnassign), Messages.format(peopleToBeUnassigned));","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(peopleToBeUnassigned).forEach(personToBeUnassigned -\u003e {","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeUnassigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(taskToUnassign);","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeUnassigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeUnassigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unassignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" public void execute_unassignTaskUnfilteredListDuplicateValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Person personToBeUnassigned \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnassignCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnassign), Messages.format(new Person[] {personToBeUnassigned}));","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(personToBeUnassigned.getTasks());","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(taskToUnassign);","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(personToBeUnassigned,","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" new PersonBuilder(personToBeUnassigned).withTasks(editedTasks).build());","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unassignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(firstPerson.getTasks());","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" Task taskToUnassign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(taskToUnassign);","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withTasks(editedTasks).build();","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnassignCommand.MESSAGE_SUCCESS, Messages.format(taskToUnassign),","lastModifiedDate":"2024-03-31"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":" editedPerson.getName());","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unassignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidTaskIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(outOfBoundIndex, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":129,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":136,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":137,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":138,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":139,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":140,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":142,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":143,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":144,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST,","lastModifiedDate":"2024-04-05"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":147,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":148,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":150,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":151,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-04-05"},{"lineNumber":152,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST,","lastModifiedDate":"2024-04-05"},{"lineNumber":154,"author":{"gitId":"chin-herng"},"content":" new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":155,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":156,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":157,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":160,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":161,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 1),","lastModifiedDate":"2024-04-05"},{"lineNumber":163,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getFilteredPersonList().size() + 2)","lastModifiedDate":"2024-04-05"},{"lineNumber":164,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"chin-herng"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"chin-herng"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"chin-herng"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"chin-herng"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":181,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unassignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"chin-herng"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignOneToTwoCommand \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignTwoToOneCommand \u003d new UnassignCommand(INDEX_SECOND, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"chin-herng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"chin-herng"},"content":" assertEquals(unassignCommand, unassignCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"chin-herng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"chin-herng"},"content":" UnassignCommand unassignCommandCopy \u003d new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":196,"author":{"gitId":"chin-herng"},"content":" assertEquals(unassignCommand, unassignCommandCopy);","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"chin-herng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(unassignCommand, null);","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"chin-herng"},"content":" // different indices -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(unassignCommand, unassignOneToTwoCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(unassignCommand, unassignTwoToOneCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":205,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"chin-herng":205}},{"path":"src/test/java/seedu/address/logic/commands/UnmarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-04-05"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-04-05"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-04-05"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" * {@code UnmarkTaskCommand}.","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" public void execute_singleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Task taskToUnmark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnmark));","lastModifiedDate":"2024-04-05"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(taskToUnmark, new Task(","lastModifiedDate":"2024-04-05"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getName(), taskToUnmark.getDescription(), taskToUnmark.getPriority(),","lastModifiedDate":"2024-04-05"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(), taskToUnmark.getDeadline()));","lastModifiedDate":"2024-04-05"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" public void execute_multipleValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" Task[] tasksToUnmark \u003d new Task[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased()),","lastModifiedDate":"2024-04-05"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" model.getTaskList().getSerializeTaskList().get(INDEX_SECOND.getZeroBased())","lastModifiedDate":"2024-04-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-05"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" Messages.format(tasksToUnmark));","lastModifiedDate":"2024-04-05"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" Arrays.stream(tasksToUnmark).forEach(taskToUnmark -\u003e expectedModel.setTask(taskToUnmark, new Task(","lastModifiedDate":"2024-04-05"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getName(),","lastModifiedDate":"2024-04-05"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getDescription(),","lastModifiedDate":"2024-04-05"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getPriority(),","lastModifiedDate":"2024-04-05"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(),","lastModifiedDate":"2024-04-05"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getDeadline())));","lastModifiedDate":"2024-04-05"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateValidIndex_success() {","lastModifiedDate":"2024-04-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" Task taskToUnmark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-04-05"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-05"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskToUnmark));","lastModifiedDate":"2024-04-05"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-04-05"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" model.getAddressBook(), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-04-05"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" expectedModel.setTask(taskToUnmark, new Task(","lastModifiedDate":"2024-04-05"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" taskToUnmark.getName(), taskToUnmark.getDescription(), taskToUnmark.getPriority(),","lastModifiedDate":"2024-04-05"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" new TaskStatus(), taskToUnmark.getDeadline()));","lastModifiedDate":"2024-04-05"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-05"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" public void execute_singleInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" public void execute_duplicateInvalidTaskIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-04-05"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { outOfBoundIndex, outOfBoundIndex });","lastModifiedDate":"2024-04-05"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" public void execute_someInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { outOfBoundIndex, INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-04-05"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-04-05"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-04-05"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-04-05"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" public void execute_allInvalidIndex_throwsCommandException() {","lastModifiedDate":"2024-04-05"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1),","lastModifiedDate":"2024-04-05"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 2)","lastModifiedDate":"2024-04-05"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" });","lastModifiedDate":"2024-04-05"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":128,"author":{"gitId":"breezetall"},"content":" public void execute_taskWithoutDeadline() {","lastModifiedDate":"2024-04-01"},{"lineNumber":129,"author":{"gitId":"breezetall"},"content":" Task taskWithoutDeadline \u003d new TaskBuilder().withTaskName(\"Task 1\").withTaskDeadline(\"Empty\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":130,"author":{"gitId":"breezetall"},"content":" model.addTask(taskWithoutDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":131,"author":{"gitId":"breezetall"},"content":" Index noDeadlineTask \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size());","lastModifiedDate":"2024-04-01"},{"lineNumber":132,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { noDeadlineTask });","lastModifiedDate":"2024-04-05"},{"lineNumber":133,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":134,"author":{"gitId":"breezetall"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-01"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskWithoutDeadline));","lastModifiedDate":"2024-04-04"},{"lineNumber":136,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":137,"author":{"gitId":"breezetall"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":138,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":139,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-01"},{"lineNumber":140,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":141,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":142,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":143,"author":{"gitId":"breezetall"},"content":" public void execute_taskWithDeadline() {","lastModifiedDate":"2024-04-01"},{"lineNumber":144,"author":{"gitId":"breezetall"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-04-01"},{"lineNumber":145,"author":{"gitId":"breezetall"},"content":" Model m \u003d new ModelManager(new AddressBook(), taskList, new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" Task taskWithDeadline \u003d new TaskBuilder()","lastModifiedDate":"2024-04-01"},{"lineNumber":147,"author":{"gitId":"breezetall"},"content":" .withTaskName(\"Task 1\")","lastModifiedDate":"2024-04-01"},{"lineNumber":148,"author":{"gitId":"breezetall"},"content":" .withTaskDeadline(\"12-12-2024 16:00\")","lastModifiedDate":"2024-04-01"},{"lineNumber":149,"author":{"gitId":"breezetall"},"content":" .build();","lastModifiedDate":"2024-04-01"},{"lineNumber":150,"author":{"gitId":"breezetall"},"content":" m.addTask(taskWithDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":151,"author":{"gitId":"breezetall"},"content":" Index deadlineTask \u003d Index.fromOneBased(m.getTaskList().getSerializeTaskList().size());","lastModifiedDate":"2024-04-01"},{"lineNumber":152,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(new Index[] { deadlineTask });","lastModifiedDate":"2024-04-05"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":154,"author":{"gitId":"breezetall"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-04-01"},{"lineNumber":155,"author":{"gitId":"chin-herng"},"content":" Messages.format(taskWithDeadline));","lastModifiedDate":"2024-04-04"},{"lineNumber":156,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":157,"author":{"gitId":"breezetall"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), m.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-04-01"},{"lineNumber":158,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":159,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(unmarkTaskCommand, m, expectedMessage, expectedModel);","lastModifiedDate":"2024-04-01"},{"lineNumber":160,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":161,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":162,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskFirstCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":165,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskSecondCommand \u003d new UnmarkTaskCommand(new Index[] { INDEX_SECOND });","lastModifiedDate":"2024-04-05"},{"lineNumber":166,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(unmarkTaskFirstCommand.equals(unmarkTaskFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskFirstCommandCopy \u003d new UnmarkTaskCommand(new Index[] { INDEX_FIRST });","lastModifiedDate":"2024-04-05"},{"lineNumber":172,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(unmarkTaskFirstCommand.equals(unmarkTaskFirstCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(unmarkTaskSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"chin-herng"},"content":" Index[] targetIndices \u003d new Index[] {","lastModifiedDate":"2024-04-05"},{"lineNumber":187,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(1),","lastModifiedDate":"2024-04-05"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":" Index.fromOneBased(2)","lastModifiedDate":"2024-04-05"},{"lineNumber":189,"author":{"gitId":"chin-herng"},"content":" };","lastModifiedDate":"2024-04-05"},{"lineNumber":190,"author":{"gitId":"chin-herng"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(targetIndices);","lastModifiedDate":"2024-04-05"},{"lineNumber":191,"author":{"gitId":"chin-herng"},"content":" String expected \u003d UnmarkTaskCommand.class.getCanonicalName() + \"{targetIndices\u003d\"","lastModifiedDate":"2024-04-05"},{"lineNumber":192,"author":{"gitId":"chin-herng"},"content":" + Arrays.toString(targetIndices) + \"}\";","lastModifiedDate":"2024-04-05"},{"lineNumber":193,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expected, unmarkTaskCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":100,"nobodyishappy":62,"breezetall":33}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTasks().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"chin-herng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"chin-herng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":166,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"chin-herng":13,"-":156}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" String userInput \u003d \" \" + PREFIX_NAME + \"test 1 \"","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" + PREFIX_TASK_DESCRIPTION + \"test 1 \"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" + PREFIX_TASK_PRIORITY + \"LOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" Task task \u003d new TaskBuilder().withTaskName(\"test 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" .withTaskDescription(\"test 1\")","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" .withTaskPriority(\"LOW\").build();","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" assertParseSuccess(parser, userInput, new AddTaskCommand(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public void parse_emptyInput_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":24,"nobodyishappy":3,"breezetall":9}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.ClearTaskCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.ListTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.UnassignCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.TaskUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" public void parseCommand_addtask() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" new TaskPriority(),","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand command \u003d (AddTaskCommand) parser.parseCommand(TaskUtil.getAddTaskCommand(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(command);","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" public void parseCommand_deletetask() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":" parser.parseCommand(\"addtask n/ test d/ test description p/ LOW\");","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand command \u003d (DeleteTaskCommand) parser.parseCommand(TaskUtil.getDeleteTaskCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" Index.fromOneBased(1)));","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" assertEquals(new DeleteTaskCommand(new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":" assertEquals(new DeleteCommand(new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-03-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" + INDEX_FIRST.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" assertEquals(new EditCommand(INDEX_FIRST, descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_assign() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" AssignCommand command \u003d (AssignCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" AssignCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased() + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":" + PREFIX_TO + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" assertEquals(new AssignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-04-05"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" public void parseCommand_unassign() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" UnassignCommand command \u003d (UnassignCommand) parser.parseCommand(","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" UnassignCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased() + \" \"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" + PREFIX_TO + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" assertEquals(new UnassignCommand(INDEX_FIRST, new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-04-05"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" public void parseCommand_cleartask() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand command \u003d (ClearTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" ClearTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" assertEquals(new ClearTaskCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_markTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand command \u003d (MarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" assertEquals(new MarkTaskCommand(new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-04-04"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_unmarkTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand command \u003d (UnmarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"chin-herng"},"content":" assertEquals(new UnmarkTaskCommand(new Index[] { INDEX_FIRST }), command);","lastModifiedDate":"2024-04-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":163,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"breezetall"},"content":" public void parseCommand_listTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"breezetall"},"content":" assertTrue(parser.parseCommand(ListTaskCommand.COMMAND_WORD) instanceof ListTaskCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"breezetall"},"content":" assertTrue(parser.parseCommand(ListTaskCommand.COMMAND_WORD + \" 3\") instanceof ListTaskCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":171,"author":{"gitId":"Yskie"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), (","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"Yskie"},"content":" ) -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Kaya3842":9,"Yskie":10,"chin-herng":32,"nobodyishappy":19,"-":96,"breezetall":13}},{"path":"src/test/java/seedu/address/logic/parser/AssignCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"public class AssignCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" private static final String INVALID_TO \u003d \" \" + PREFIX_TO + \"a\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" private static final String TO_ONE \u003d \" \" + PREFIX_TO + \"1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" private static final String TO_TWO \u003d \" \" + PREFIX_TO + \"2\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" private AssignCommandParser parser \u003d new AssignCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1\" + TO_ONE + \" 2\", new AssignCommand(","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedTo_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + TO_TWO,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + INVALID_TO + TO_ONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + INVALID_TO,","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" // no task index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" // no person index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" // no task index and no person index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \" \", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"-1\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"0\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 i/ a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidTo_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"-1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"0\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as to","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + TO_ONE + \" a\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"chin-herng":87}},{"path":"src/test/java/seedu/address/logic/parser/ClearTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.ClearTaskCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"public class ClearTaskCommandParserTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" private ClearTaskCommandParser parser \u003d new ClearTaskCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" public void parse_validArgs_returnsClearTaskCommand() {","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1\", new ClearTaskCommand(INDEX_FIRST));","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"a\", String.format(","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" MESSAGE_INVALID_COMMAND_FORMAT, ClearTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"chin-herng":25}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1 2\", new DeleteCommand(new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"chin-herng":4,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1 2\", new DeleteTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-04"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Yskie":31,"chin-herng":3}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_THIRD;","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" // AddCommandParserTest#parse_repeatedValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"chin-herng"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"chin-herng":14,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/EditTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand;","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"import seedu.address.testutil.EditTaskDescriptorBuilder;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"public class EditTaskCommandParserTest {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" EditTaskCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" private EditTaskCommandParser parser \u003d new EditTaskCommandParser();","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" // no index specified","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"Task 1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" // no field specified","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"1\", EditTaskCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" // no index and no field specified","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" String userInput \u003d \"1 n/Task 7 d/new description p/HIGH by/10-10-2023 10:00\";","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" EditTaskDescriptor descriptor \u003d new EditTaskDescriptorBuilder().withName(\"Task 7\")","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" .withDescription(\"new description\").withPriority(\"high\").withDeadline(\"10-10-2023 10:00\").build();","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" EditTaskCommand expectedCommand \u003d new EditTaskCommand(targetIndex, descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" // negative index","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" // zero index","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"Yskie":60}},{"path":"src/test/java/seedu/address/logic/parser/FindTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.FindTaskCommand;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.TaskNameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"class FindTaskCommandParserTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" private FindTaskCommandParser parser \u003d new FindTaskCommandParser();","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" FindTaskCommand expectedFindTaskCommand \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" new FindTaskCommand(new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2101\", \"2103\")));","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" assertParseSuccess(parser, \"2101 2103\", expectedFindTaskCommand);","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" assertParseSuccess(parser, \" \\n 2101 \\n \\t 2103 \\t\", expectedFindTaskCommand);","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":33}},{"path":"src/test/java/seedu/address/logic/parser/MarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-04"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-04"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * outside of the MarkTaskCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * same path through the MarkTaskCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" private MarkTaskCommandParser parser \u003d new MarkTaskCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" public void parse_validArgs_returnsMarkTaskCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1 2\", new MarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-04"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":3,"nobodyishappy":30}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_NAME \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" private static final String INVALID_TASK_PRIORITY \u003d \"0\";","lastModifiedDate":"2024-04-01"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_DATE \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_TASK_NAME \u003d \"Task 1\";","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_TASK_DESCRIPTION \u003d \"Description 1\";","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" private static final String VALID_TASK_PRIORITY \u003d \"low\";","lastModifiedDate":"2024-04-01"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_TASK_DATE \u003d \"12-12-2024 16:00\";","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" assertEquals(INDEX_FIRST, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" assertEquals(INDEX_FIRST, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":182,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":209,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":210,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskName_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":211,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTaskName((String) null));","lastModifiedDate":"2024-03-26"},{"lineNumber":212,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":213,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":214,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":215,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":216,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskName(INVALID_TASK_NAME));","lastModifiedDate":"2024-03-26"},{"lineNumber":217,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":218,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":219,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":220,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskName_validValueWithoutWhitespace_returnsTaskName() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":221,"author":{"gitId":"nobodyishappy"},"content":" TaskName expectedTaskName \u003d new TaskName(VALID_TASK_NAME);","lastModifiedDate":"2024-03-26"},{"lineNumber":222,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskName, ParserUtil.parseTaskName(VALID_TASK_NAME));","lastModifiedDate":"2024-03-26"},{"lineNumber":223,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":224,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":225,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":226,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskName_validValueWithWhitespace_returnsTrimmedTaskName() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":227,"author":{"gitId":"nobodyishappy"},"content":" String taskNameWithWhitespace \u003d WHITESPACE + VALID_TASK_NAME + WHITESPACE;","lastModifiedDate":"2024-03-26"},{"lineNumber":228,"author":{"gitId":"nobodyishappy"},"content":" TaskName expectedTaskName \u003d new TaskName(VALID_TASK_NAME);","lastModifiedDate":"2024-03-26"},{"lineNumber":229,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskName, ParserUtil.parseTaskName(taskNameWithWhitespace));","lastModifiedDate":"2024-03-26"},{"lineNumber":230,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":231,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":232,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":233,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDescription_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":234,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTaskDescription((String) null));","lastModifiedDate":"2024-03-26"},{"lineNumber":235,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":236,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":237,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":238,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDescription_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":239,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskDescription(INVALID_TASK_DESCRIPTION));","lastModifiedDate":"2024-03-26"},{"lineNumber":240,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":241,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":242,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":243,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDescription_validValueWithoutWhitespace_returnsTaskDescription() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":244,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription expectedTaskDescription \u003d new TaskDescription(VALID_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-26"},{"lineNumber":245,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskDescription, ParserUtil.parseTaskDescription(VALID_TASK_DESCRIPTION));","lastModifiedDate":"2024-03-26"},{"lineNumber":246,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":247,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":248,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":249,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDescription_validValueWithWhitespace_returnsTrimmedTaskDescription() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":250,"author":{"gitId":"nobodyishappy"},"content":" String taskDescriptionWithWhitespace \u003d WHITESPACE + VALID_TASK_DESCRIPTION + WHITESPACE;","lastModifiedDate":"2024-03-26"},{"lineNumber":251,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription expectedTaskDescription \u003d new TaskDescription(VALID_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-26"},{"lineNumber":252,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskDescription, ParserUtil.parseTaskDescription(taskDescriptionWithWhitespace));","lastModifiedDate":"2024-03-26"},{"lineNumber":253,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":254,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":255,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":256,"author":{"gitId":"breezetall"},"content":" public void parseTaskPriority_null_throwsNullPointerException() {","lastModifiedDate":"2024-04-01"},{"lineNumber":257,"author":{"gitId":"breezetall"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTaskPriority((String) null));","lastModifiedDate":"2024-04-01"},{"lineNumber":258,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":259,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":260,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":261,"author":{"gitId":"breezetall"},"content":" public void parseTaskPriority_invalidValue_throwsParseException() {","lastModifiedDate":"2024-04-01"},{"lineNumber":262,"author":{"gitId":"breezetall"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskPriority(INVALID_TASK_PRIORITY));","lastModifiedDate":"2024-04-01"},{"lineNumber":263,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":264,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":265,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":266,"author":{"gitId":"breezetall"},"content":" public void parseTaskPriority_validValueWithoutWhitespace_returnsTaskPriority() throws Exception {","lastModifiedDate":"2024-04-01"},{"lineNumber":267,"author":{"gitId":"breezetall"},"content":" TaskPriority expectedTaskPriority \u003d new TaskPriority(VALID_TASK_PRIORITY);","lastModifiedDate":"2024-04-01"},{"lineNumber":268,"author":{"gitId":"breezetall"},"content":" assertEquals(expectedTaskPriority, ParserUtil.parseTaskPriority(VALID_TASK_PRIORITY));","lastModifiedDate":"2024-04-01"},{"lineNumber":269,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":270,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":271,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":272,"author":{"gitId":"breezetall"},"content":" public void parseTaskPriority_validValueWithWhitespace_returnsTrimmedTaskPriority() throws Exception {","lastModifiedDate":"2024-04-01"},{"lineNumber":273,"author":{"gitId":"breezetall"},"content":" String taskPriorityWithWhitespace \u003d WHITESPACE + VALID_TASK_PRIORITY + WHITESPACE;","lastModifiedDate":"2024-04-01"},{"lineNumber":274,"author":{"gitId":"breezetall"},"content":" TaskPriority expectedTaskPriority \u003d new TaskPriority(VALID_TASK_PRIORITY);","lastModifiedDate":"2024-04-01"},{"lineNumber":275,"author":{"gitId":"breezetall"},"content":" assertEquals(expectedTaskPriority, ParserUtil.parseTaskPriority(taskPriorityWithWhitespace));","lastModifiedDate":"2024-04-01"},{"lineNumber":276,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":277,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":278,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":279,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDeadline_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":280,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTaskDeadline((String) null));","lastModifiedDate":"2024-03-26"},{"lineNumber":281,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":282,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":283,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":284,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDeadline_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":285,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTaskDeadline(INVALID_TASK_DATE));","lastModifiedDate":"2024-03-26"},{"lineNumber":286,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":287,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":288,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":289,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDeadline_validValueWithoutWhitespace_returnsTaskDeadline() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":290,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline expectedTaskDeadline \u003d new TaskDeadline(VALID_TASK_DATE);","lastModifiedDate":"2024-03-26"},{"lineNumber":291,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskDeadline, ParserUtil.parseTaskDeadline(VALID_TASK_DATE));","lastModifiedDate":"2024-03-26"},{"lineNumber":292,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":293,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":294,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":295,"author":{"gitId":"nobodyishappy"},"content":" public void parseTaskDeadline_validValueWithWhitespace_returnsTrimmedTaskDeadline() throws Exception {","lastModifiedDate":"2024-03-26"},{"lineNumber":296,"author":{"gitId":"nobodyishappy"},"content":" String taskDeadlineWithWhitespace \u003d WHITESPACE + VALID_TASK_DATE + WHITESPACE;","lastModifiedDate":"2024-03-26"},{"lineNumber":297,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline expectedTaskDeadline \u003d new TaskDeadline(VALID_TASK_DATE);","lastModifiedDate":"2024-03-26"},{"lineNumber":298,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expectedTaskDeadline, ParserUtil.parseTaskDeadline(taskDeadlineWithWhitespace));","lastModifiedDate":"2024-03-26"},{"lineNumber":299,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"chin-herng":3,"nobodyishappy":78,"-":193,"breezetall":26}},{"path":"src/test/java/seedu/address/logic/parser/UnassignCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.UnassignCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"public class UnassignCommandParserTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" private static final String INVALID_TO \u003d \" \" + PREFIX_TO + \"a\";","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" private static final String TO_ONE \u003d \" \" + PREFIX_TO + \"1\";","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" private static final String TO_TWO \u003d \" \" + PREFIX_TO + \"2\";","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnassignCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" private UnassignCommandParser parser \u003d new UnassignCommandParser();","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1\" + TO_ONE + \" 2\", new UnassignCommand(","lastModifiedDate":"2024-04-05"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" INDEX_FIRST, new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-05"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedTo_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + TO_TWO,","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + INVALID_TO + TO_ONE,","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + INVALID_TO,","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" // no task index specified","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" // no person index specified","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" // no task index and no person index specified","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \" \", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"-1\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"0\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 i/ a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidTo_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"-1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"0\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as to","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + TO_ONE + \" a\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"chin-herng":87}},{"path":"src/test/java/seedu/address/logic/parser/UnmarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-04-05"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-04-05"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private UnmarkTaskCommandParser parser \u003d new UnmarkTaskCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public void parse_validArgs_returnsUnmarkTaskCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1 2\", new UnmarkTaskCommand(new Index[] { INDEX_FIRST, INDEX_SECOND }));","lastModifiedDate":"2024-04-05"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"chin-herng":3,"nobodyishappy":22}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"nobodyishappy":3,"-":105}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_1;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.TypicalTasks;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setTaskListFilePath(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath_validPath_setTaskListFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" Path path \u003d Paths.get(\"task/list/file/path\");","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" modelManager.setTaskListFilePath(path);","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" assertEquals(path, modelManager.getTaskListFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasTask(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_taskNotInTaskList_returnsFalse() {","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.hasTask(TASK_1));","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_taskInTaskList_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" modelManager.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" assertTrue(modelManager.hasTask(TASK_1));","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d TypicalTasks.getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":" TaskList differentTaskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"Kaya3842"},"content":" modelManager \u003d new ModelManager(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, taskList, userPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"breezetall"},"content":" // different taskList -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentTaskList, userPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, taskList, userPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":161,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, taskList, differentUserPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Kaya3842":38,"-":128,"breezetall":2}},{"path":"src/test/java/seedu/address/model/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-04-01"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"public class TaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private TaskList taskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" private TaskList sortedList;","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" private TaskList toSortList;","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" private Task task1;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" private Task task2;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" private Task task3;","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" private Task task4;","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" @BeforeEach","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public void setUp() {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" sortedList \u003d new TaskList();","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" toSortList \u003d new TaskList();","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" task3 \u003d new TaskBuilder().withTaskName(\"Task 3\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" task4 \u003d new TaskBuilder().withTaskName(\"Task 4\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" public void addTask_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" assertTrue(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" assertTrue(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" assertFalse(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" public void getSerializeTaskList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task2);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" assertEquals(2, taskList.getSerializeTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" public void isValidPrioritySort() {","lastModifiedDate":"2024-04-01"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":" task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").withTaskPriority(\"low\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").withTaskPriority(\"medium\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" task3 \u003d new TaskBuilder().withTaskName(\"Task 3\").withTaskPriority(\"high\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task3);","lastModifiedDate":"2024-04-01"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task2);","lastModifiedDate":"2024-04-01"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task1);","lastModifiedDate":"2024-04-01"},{"lineNumber":68,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":69,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task2);","lastModifiedDate":"2024-04-01"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task1);","lastModifiedDate":"2024-04-01"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task3);","lastModifiedDate":"2024-04-01"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":73,"author":{"gitId":"breezetall"},"content":" assertNotEquals(toSortList, sortedList);","lastModifiedDate":"2024-04-01"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" toSortList.sortByPriority();","lastModifiedDate":"2024-04-01"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" assertEquals(toSortList, sortedList);","lastModifiedDate":"2024-04-01"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":81,"author":{"gitId":"breezetall"},"content":" public void isValidDeadlineSort() {","lastModifiedDate":"2024-04-01"},{"lineNumber":82,"author":{"gitId":"breezetall"},"content":" task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").withTaskDeadline(\"10-10-2024 10:00\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":83,"author":{"gitId":"breezetall"},"content":" task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").withTaskDeadline(\"11-10-2024 10:00\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":84,"author":{"gitId":"breezetall"},"content":" task3 \u003d new TaskBuilder().withTaskName(\"Task 3\").withTaskDeadline(\"12-10-2024 10:00\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":85,"author":{"gitId":"breezetall"},"content":" task4 \u003d new TaskBuilder().withTaskName(\"Task 4\").withTaskDeadline(\"12-10-2024 10:00\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task1);","lastModifiedDate":"2024-04-01"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task2);","lastModifiedDate":"2024-04-01"},{"lineNumber":89,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task3);","lastModifiedDate":"2024-04-01"},{"lineNumber":90,"author":{"gitId":"breezetall"},"content":" sortedList.addTask(task4);","lastModifiedDate":"2024-04-01"},{"lineNumber":91,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":92,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task3);","lastModifiedDate":"2024-04-01"},{"lineNumber":93,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task2);","lastModifiedDate":"2024-04-01"},{"lineNumber":94,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task1);","lastModifiedDate":"2024-04-01"},{"lineNumber":95,"author":{"gitId":"breezetall"},"content":" toSortList.addTask(task4);","lastModifiedDate":"2024-04-01"},{"lineNumber":96,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" assertNotEquals(toSortList, sortedList);","lastModifiedDate":"2024-04-01"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":99,"author":{"gitId":"breezetall"},"content":" toSortList.sortByPriority();","lastModifiedDate":"2024-04-01"},{"lineNumber":100,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":101,"author":{"gitId":"breezetall"},"content":" assertEquals(toSortList, sortedList);","lastModifiedDate":"2024-04-01"},{"lineNumber":102,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":46,"nobodyishappy":3,"breezetall":54}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTasks().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" public void deleteTask() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" Person person \u003d new PersonBuilder().withTasks(task).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(new PersonBuilder().build(), person.deleteTask(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" public void hasTask() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" Person person \u003d new PersonBuilder().withTasks(task).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(person.hasTask(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" .withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":105,"author":{"gitId":"nobodyishappy"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTasks(VALID_TASK_FIRST).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" + \", tasks\u003d\" + ALICE.getTasks() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Yskie":2,"chin-herng":8,"nobodyishappy":10,"-":96}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" public void deletes_assignedTask_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" Task test \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" ALICE.addTask(test);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" uniquePersonList.deleteAssignedTask(test);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(ALICE.hasTask(test));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Yskie":6,"nobodyishappy":8,"-":172}},{"path":"src/test/java/seedu/address/model/task/TaskDeadlineTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDeadlineTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" public static final DateTimeFormatter VALIDATION_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final DateTimeFormatter OUTPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm\");","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskDeadline((TaskDeadline) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_invalidTaskDeadline_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" String invalidTaskDeadline \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskDeadline(invalidTaskDeadline));","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" String date \u003d \"12-12-2024 16:00\";","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(date, VALIDATION_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline taskDeadline \u003d new TaskDeadline(date);","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(dateTime.format(OUTPUT_FORMAT), taskDeadline.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" public void toJsonSaveTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" String date \u003d \"12-12-2024 16:00\";","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(date, VALIDATION_FORMAT);","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline taskDeadline \u003d new TaskDeadline(date);","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(dateTime.format(VALIDATION_FORMAT), taskDeadline.toJsonSave());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" public void isValidTaskDeadline() {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" // null deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskDeadline.isValidTaskDeadline(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" // invalid deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\"\")); // empty string","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\" \")); // spaces only","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\"12/12/2024 16:00\")); // Wrong format","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\"12-12-2024\")); // Missing time","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDeadline.isValidTaskDeadline(\"12-12-2024 6:00\")); // Missing digits for time","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" // valid deadline","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDeadline.isValidTaskDeadline(\"12-12-2024 16:00\")); // Valid format","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline taskDeadline \u003d new TaskDeadline(\"12-12-2024 16:00\");","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskDeadline.equals(new TaskDeadline(\"12-12-2024 16:00\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskDeadline.equals(taskDeadline));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDeadline.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDeadline.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDeadline.equals(new TaskDeadline(\"12-12-2024 18:00\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" TaskDeadline taskDeadline \u003d new TaskDeadline(\"12-12-2024 16:00\");","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(taskDeadline.hashCode(), taskDeadline.taskDeadline.hashCode());","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":85}},{"path":"src/test/java/seedu/address/model/task/TaskDescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDescriptionTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskDescription((TaskDescription) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_invalidTaskDescription_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" String invalidTaskDescription \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskDescription(invalidTaskDescription));","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void isValidTaskDescription() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" // null description","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskDescription.isValidTaskDescription(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" // invalid description","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDescription.isValidTaskDescription(\"\")); // empty string","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskDescription.isValidTaskDescription(\" \")); // spaces only","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" // valid description","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"12345\")); // numbers only","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskDescription.isValidTaskDescription(\"David Roger Jackson Ray Jr 2nd\")); // long description","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription taskDescription \u003d new TaskDescription(\"Valid Description\");","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Valid Description\", taskDescription.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription taskDescription \u003d new TaskDescription(\"Valid Description\");","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskDescription.equals(new TaskDescription(\"Valid Description\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskDescription.equals(taskDescription));","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDescription.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDescription.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskDescription.equals(new TaskDescription(\"Other Valid Description\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription taskDescription \u003d new TaskDescription(\"Valid Description\");","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(taskDescription.hashCode(), taskDescription.taskDescription.hashCode());","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":70}},{"path":"src/test/java/seedu/address/model/task/TaskNameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-29"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-29"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-29"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-29"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-29"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-29"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import java.util.List;","lastModifiedDate":"2024-03-29"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-29"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-29"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"class TaskNameContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" void test_taskNameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" // One keyword","lastModifiedDate":"2024-03-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(Collections.singletonList(\"2101\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" assertTrue(predicate.test(new TaskBuilder().withTaskName(\"2101\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2101\", \"2103t\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" assertTrue(predicate.test(new TaskBuilder().withTaskName(\"2101 2103t\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-29"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2101\", \"2103\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertTrue(predicate.test(new TaskBuilder().withTaskName(\"2101 2103t\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2109S\", \"2103T\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" assertTrue(predicate.test(new TaskBuilder().withTaskName(\"2103t 2109s\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" public void test_taskNameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" // Zero keyword","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-29"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" assertFalse(predicate.test(new TaskBuilder().withTaskName(\"2103t\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-29"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"2101\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" assertFalse(predicate.test(new TaskBuilder().withTaskName(\"2103t\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" // Keywords match description, but does not match name","lastModifiedDate":"2024-03-29"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" predicate \u003d new TaskNameContainsKeywordsPredicate(Arrays.asList(\"dummy\"));","lastModifiedDate":"2024-03-29"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" assertFalse(predicate.test(new TaskBuilder().withTaskName(\"2103t\")","lastModifiedDate":"2024-03-29"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" .withTaskDescription(\"dummy\").build()));","lastModifiedDate":"2024-03-29"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" void testEquals() {","lastModifiedDate":"2024-03-29"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-03-29"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-03-29"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-29"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-29"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-29"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" new TaskNameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-29"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-29"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-29"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-29"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" void testToString() {","lastModifiedDate":"2024-03-29"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-29"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" TaskNameContainsKeywordsPredicate predicate \u003d new TaskNameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-29"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" String expected \u003d TaskNameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-29"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-29"}],"authorContributionMap":{"Kaya3842":89}},{"path":"src/test/java/seedu/address/model/task/TaskNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"public class TaskNameTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskName((TaskName) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_invalidTaskName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" String invalidTaskName \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskName(invalidTaskName));","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void isValidTaskName() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" // null name","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskName.isValidTaskName(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" // invalid name","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskName.isValidTaskName(\"\")); // empty string","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(TaskName.isValidTaskName(\" \")); // spaces only","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" // valid name","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"12345\")); // numbers only","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(TaskName.isValidTaskName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" TaskName taskName \u003d new TaskName(\"Valid Name\");","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Valid Name\", taskName.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" TaskName taskName \u003d new TaskName(\"Valid Name\");","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskName.equals(new TaskName(\"Valid Name\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskName.equals(taskName));","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskName.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskName.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskName.equals(new TaskName(\"Other Valid Name\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" public void hashCodeTest() {","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" TaskName taskName \u003d new TaskName(\"Valid Name\");","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(taskName.hashCode(), taskName.taskName.hashCode());","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":70}},{"path":"src/test/java/seedu/address/model/task/TaskPriorityTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-27"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-27"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-27"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-27"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-27"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-27"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"public class TaskPriorityTest {","lastModifiedDate":"2024-03-27"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-27"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskPriority((TaskPriority) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" public void isValidTaskPriority() {","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" // null description","lastModifiedDate":"2024-04-01"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" assertThrows(NullPointerException.class, () -\u003e TaskDescription.isValidTaskDescription(null));","lastModifiedDate":"2024-04-01"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" // invalid description","lastModifiedDate":"2024-04-01"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" assertFalse(TaskPriority.isValidTaskPriority(\"\")); // empty string","lastModifiedDate":"2024-04-01"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" assertFalse(TaskPriority.isValidTaskPriority(\" \")); // spaces only","lastModifiedDate":"2024-04-01"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" // valid description","lastModifiedDate":"2024-04-01"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" assertTrue(TaskPriority.isValidTaskPriority(\"low\")); // alphabets only","lastModifiedDate":"2024-04-01"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" assertTrue(TaskPriority.isValidTaskPriority(\"1\")); // numbers only","lastModifiedDate":"2024-04-01"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" assertTrue(TaskPriority.isValidTaskPriority(\"HIGH\")); // Capital letters","lastModifiedDate":"2024-04-01"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" assertTrue(TaskPriority.isValidTaskPriority(\"High\")); // Mix of upper and lowercase letters","lastModifiedDate":"2024-04-01"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-27"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" TaskPriority taskPriority1 \u003d new TaskPriority(\"1\");","lastModifiedDate":"2024-03-27"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" TaskPriority taskPriority2 \u003d new TaskPriority(\"LOW\");","lastModifiedDate":"2024-03-27"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" assertEquals(\"LOW\", taskPriority1.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" assertEquals(\"LOW\", taskPriority2.toString());","lastModifiedDate":"2024-03-27"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-27"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" public void equals() {","lastModifiedDate":"2024-03-27"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" TaskPriority taskPriority \u003d new TaskPriority(\"1\");","lastModifiedDate":"2024-03-27"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" assertTrue(taskPriority.equals(new TaskPriority(\"1\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-27"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" assertTrue(taskPriority.equals(taskPriority));","lastModifiedDate":"2024-03-27"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":53,"author":{"gitId":"breezetall"},"content":" assertFalse(taskPriority.equals(null));","lastModifiedDate":"2024-03-27"},{"lineNumber":54,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":55,"author":{"gitId":"breezetall"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":" assertFalse(taskPriority.equals(5.0f));","lastModifiedDate":"2024-03-27"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-27"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-27"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" assertFalse(taskPriority.equals(new TaskPriority(\"HIGH\")));","lastModifiedDate":"2024-03-27"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-27"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-27"}],"authorContributionMap":{"chin-herng":1,"breezetall":60}},{"path":"src/test/java/seedu/address/model/task/TaskStatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-26"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"public class TaskStatusTest {","lastModifiedDate":"2024-03-26"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" assertThrows(NullPointerException.class, () -\u003e new TaskStatus((TaskStatus) null));","lastModifiedDate":"2024-04-05"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_invalidTaskStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" String invalidTaskStatus \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TaskStatus(invalidTaskStatus));","lastModifiedDate":"2024-03-26"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_newTaskStatus_assertfalse() {","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(new TaskStatus().getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_validTaskStatus_done() {","lastModifiedDate":"2024-03-26"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(new TaskStatus(\"Done\").getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" public void constructor_validTaskStatus_notDone() {","lastModifiedDate":"2024-03-26"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(new TaskStatus(\"Not Done\").getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" public void setAsDone_checkMarkStatus_true() {","lastModifiedDate":"2024-03-26"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus();","lastModifiedDate":"2024-03-26"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" taskStatus.setAsDone();","lastModifiedDate":"2024-03-26"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskStatus.getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" public void setAsUndone_checkUnmarkStatus_false() {","lastModifiedDate":"2024-03-26"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus();","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" taskStatus.setAsUndone();","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskStatus.getTaskStatus());","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest_done() {","lastModifiedDate":"2024-03-26"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus(\"Done\");","lastModifiedDate":"2024-03-26"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Done\", taskStatus.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" public void toStringTest_notDone() {","lastModifiedDate":"2024-03-26"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus();","lastModifiedDate":"2024-03-26"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Not Done\", taskStatus.toString());","lastModifiedDate":"2024-03-26"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus taskStatus \u003d new TaskStatus();","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskStatus.equals(new TaskStatus()));","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(taskStatus.equals(taskStatus));","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskStatus.equals(null));","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskStatus.equals(5.0f));","lastModifiedDate":"2024-03-26"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-26"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(taskStatus.equals(new TaskStatus(\"Done\")));","lastModifiedDate":"2024-03-26"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-26"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":81}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"public class TaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" public void constructor_validInput_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().withTaskName(\"Test\").withTaskDescription(\"Test\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Test\", task.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Test\", task.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task.getStatus().getTaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public void equals_sameObject_true() {","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" assertTrue(task.equals(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void equals_differentObjectSameName_true() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(task1.equals(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public void equals_differentObjectDifferentName_false() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskName(\"Test Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskName(\"Test Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectSameDescription_true() {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" assertTrue(task1.equals(task2));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectDifferentDescription_false() {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskDescription(\"Test Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskDescription(\"Test Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectDifferentType_false() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" assertFalse(task.equals(new Object()));","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" public void compare_differentName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(-1, task1.compare(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" public void compare_differentDescription() {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskDescription(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskDescription(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(-1, task1.compare(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-04-01"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-04-01"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":" public void compare_differentPriority() {","lastModifiedDate":"2024-04-01"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" Task task1 \u003d new TaskBuilder().withTaskPriority(\"1\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" Task task2 \u003d new TaskBuilder().withTaskPriority(\"2\").build();","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-04-01"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-04-01"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":34,"nobodyishappy":40,"breezetall":7}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_NAME \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" private static final String TASK_STATUS \u003d \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" private static final String TASK_DEADLINE \u003d \"\";","lastModifiedDate":"2024-03-26"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" private static final String TASK_PRIORITY \u003d \"LOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" private static final List\u003cJsonAdaptedTask\u003e VALID_TASKS \u003d BENSON.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" .map(JsonAdaptedTask::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" public void toModelType_invalidTasks_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" List\u003cJsonAdaptedTask\u003e invalidTasks \u003d new ArrayList\u003c\u003e(VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"breezetall"},"content":" invalidTasks.add(new JsonAdaptedTask(","lastModifiedDate":"2024-03-29"},{"lineNumber":111,"author":{"gitId":"breezetall"},"content":" INVALID_TASK_NAME, INVALID_TASK_DESCRIPTION, TASK_PRIORITY, TASK_STATUS, TASK_DEADLINE));","lastModifiedDate":"2024-03-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chin-herng":13,"nobodyishappy":5,"-":96,"breezetall":3}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_NAME \u003d \"Valid Task Name\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final String EMPTY_NAME \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private static final String VALID_DESCRIPTION \u003d \"Valid Task Description\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" private static final String EMPTY_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" private static final String PRIORITY \u003d \"LOW\";","lastModifiedDate":"2024-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" private static final String STATUS \u003d \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_DEADLINE \u003d \"23-12-2024 16:00\";","lastModifiedDate":"2024-03-26"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_DEADLINE \u003d \"23-12-2024\";","lastModifiedDate":"2024-03-26"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" private static final Task VALID_TASK \u003d new TaskBuilder().withTaskName(VALID_NAME)","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" .withTaskDescription(VALID_DESCRIPTION)","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" .withTaskDeadline(VALID_DEADLINE)","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" .build();","lastModifiedDate":"2024-03-26"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_validTask_success() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" Task modelTask \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(VALID_TASK, modelTask);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_emptyName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(EMPTY_NAME, VALID_DESCRIPTION, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_emptyDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, EMPTY_DESCRIPTION, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-26"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_invalidDeadline_throwsIllegalValueException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":51,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, PRIORITY, STATUS, INVALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(null, VALID_DESCRIPTION, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, null, PRIORITY, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"breezetall"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-26"},{"lineNumber":68,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":69,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"breezetall"},"content":" public void toModelType_nullPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":73,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, null, STATUS, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, PRIORITY, null, VALID_DEADLINE);","lastModifiedDate":"2024-03-29"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-26"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-26"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullDeadline_throwsIllegalValueException() {","lastModifiedDate":"2024-03-26"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d","lastModifiedDate":"2024-03-29"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, PRIORITY, STATUS , null);","lastModifiedDate":"2024-03-29"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":23,"nobodyishappy":43,"breezetall":24}},{"path":"src/test/java/seedu/address/storage/JsonSerializableTaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public class JsonSerializableTaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final Task TASK_1 \u003d new TaskBuilder().withTaskName(\"Test 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" private static final Task TASK_2 \u003d new TaskBuilder().withTaskName(\"Test 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public void toModelType_validTaskList_success() throws IllegalValueException {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_2);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" JsonSerializableTaskList jsonSerializableTaskList \u003d new JsonSerializableTaskList(taskList);","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" TaskList modelTaskList \u003d jsonSerializableTaskList.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" assertEquals(taskList.getSerializeTaskList(), modelTaskList.getSerializeTaskList());","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1); // Duplicate task","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" JsonSerializableTaskList jsonSerializableTaskList \u003d new JsonSerializableTaskList(taskList);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" assertThrows(IllegalValueException.class, jsonSerializableTaskList::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":36,"nobodyishappy":3}},{"path":"src/test/java/seedu/address/storage/JsonTaskListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.Assert;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"public class JsonTaskListStorageTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonTaskListStorageTest\");","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" @TempDir","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public void readTaskList_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertFalse(readTaskList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskList(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" : null;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" private Optional\u003cTaskList\u003e readTaskList(String filePath) throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" return new JsonTaskListStorage(Paths.get(filePath)).readTaskList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" private void saveTaskList(TaskList taskList, String filePath) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" new JsonTaskListStorage(Paths.get(filePath)).saveTaskList(taskList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" public void readAndSaveTaskList_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" Path filePath \u003d testFolder.resolve(\"TempTaskList.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" TaskList sample \u003d getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage jsonTaskListStorage \u003d new JsonTaskListStorage(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" jsonTaskListStorage.saveTaskList(sample, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" TaskList readBack \u003d jsonTaskListStorage.readTaskList(filePath).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(readBack);","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveTaskList(new TaskList(), null));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" private static TaskList getTypicalTaskList() {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 1\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 2\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 3\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":72,"nobodyishappy":4}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(getTempFilePath(\"samples\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" storageManager \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" public void taskListSaveTest() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" TaskList testList \u003d getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" Path testPath \u003d getTempFilePath(\"test\");","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" storageManager.saveTaskList(testList, testPath);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(testList);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" public void getTaskListFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(storageManager.getTaskListFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":17,"-":67}},{"path":"src/test/java/seedu/address/testutil/EditTaskDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-04-02"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.EditTaskCommand.EditTaskDescriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-04-02"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-04-02"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-04-02"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-04-02"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-04-02"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-04-02"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" * A utility class to help with building EditTaskDescriptor objects.","lastModifiedDate":"2024-04-02"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"public class EditTaskDescriptorBuilder {","lastModifiedDate":"2024-04-02"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" private EditTaskDescriptor descriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder() {","lastModifiedDate":"2024-04-02"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" descriptor \u003d new EditTaskDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder(EditTaskDescriptor descriptor) {","lastModifiedDate":"2024-04-02"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" this.descriptor \u003d new EditTaskDescriptor(descriptor);","lastModifiedDate":"2024-04-02"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" * Returns an {@code EditTaskDescriptor} with fields containing {@code task}\u0027s","lastModifiedDate":"2024-04-02"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" * details.","lastModifiedDate":"2024-04-03"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder(Task task) {","lastModifiedDate":"2024-04-02"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" descriptor \u003d new EditTaskDescriptor();","lastModifiedDate":"2024-04-02"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" descriptor.setName(task.getName());","lastModifiedDate":"2024-04-02"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" descriptor.setDescription(task.getDescription());","lastModifiedDate":"2024-04-02"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" descriptor.setPriority(task.getPriority());","lastModifiedDate":"2024-04-02"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" descriptor.setDeadline(task.getDeadline());","lastModifiedDate":"2024-04-02"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" * Sets the {@code Name} of the {@code EditTaskDescriptor} that we are building.","lastModifiedDate":"2024-04-02"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-04-02"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" descriptor.setName(new TaskName(name));","lastModifiedDate":"2024-04-02"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" * Sets the {@code Description} of the {@code EditTaskDescriptor} that we are","lastModifiedDate":"2024-04-02"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" * building.","lastModifiedDate":"2024-04-02"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder withDescription(String description) {","lastModifiedDate":"2024-04-02"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" descriptor.setDescription(new TaskDescription(description));","lastModifiedDate":"2024-04-02"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" * Sets the {@code Priority} of the {@code EditTaskDescriptor} that we are","lastModifiedDate":"2024-04-02"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":" * building.","lastModifiedDate":"2024-04-02"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder withPriority(String priority) {","lastModifiedDate":"2024-04-02"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" descriptor.setPriority(new TaskPriority(priority));","lastModifiedDate":"2024-04-02"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-04-02"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" * Sets the {@code Deadline} of the {@code EditTaskDescriptor} that we are","lastModifiedDate":"2024-04-02"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" * building.","lastModifiedDate":"2024-04-02"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-04-02"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptorBuilder withDeadline(String deadline) {","lastModifiedDate":"2024-04-02"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" descriptor.setDeadline(new TaskDeadline(deadline));","lastModifiedDate":"2024-04-02"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" return this;","lastModifiedDate":"2024-04-02"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-04-02"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" public EditTaskDescriptor build() {","lastModifiedDate":"2024-04-02"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" return descriptor;","lastModifiedDate":"2024-04-02"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-04-02"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-04-02"}],"authorContributionMap":{"Yskie":74}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" private Set\u003cTask\u003e tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" tasks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" tasks \u003d new HashSet\u003c\u003e(personToCopy.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" * Sets the {@code Set\u003cTask\u003e} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" public PersonBuilder withTasks(Set\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" * Parses the {@code tasks} into a {@code Set\u003cTask\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" public PersonBuilder withTasks(Task ... tasks) {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" this.tasks \u003d SampleDataUtil.getTaskSet(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"chin-herng":15,"nobodyishappy":1,"-":88}},{"path":"src/test/java/seedu/address/testutil/TaskBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-26"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" * A utility class to help with building Task objects.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"public class TaskBuilder {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_NAME \u003d \"Implement Test\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_DESCRIPTION \u003d \"Test to test the code\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_DEADLINE \u003d \"Empty\";","lastModifiedDate":"2024-03-26"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" public static final String DEFAULT_TASK_PRIORITY \u003d \"low\";","lastModifiedDate":"2024-04-01"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" private TaskName taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" private TaskDescription taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" private TaskPriority taskPriority;","lastModifiedDate":"2024-03-26"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" private TaskDeadline taskDeadline;","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" * Creates a {@code TaskBuilder} with the default details.","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d new TaskName(DEFAULT_TASK_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d new TaskDescription(DEFAULT_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" taskPriority \u003d new TaskPriority(DEFAULT_TASK_PRIORITY);","lastModifiedDate":"2024-04-01"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" taskDeadline \u003d new TaskDeadline(DEFAULT_TASK_DEADLINE);","lastModifiedDate":"2024-04-01"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" * Initializes the TaskBuilder with the data of {@code taskToCopy}.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder(Task taskToCopy) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d taskToCopy.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d taskToCopy.getDescription();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" taskPriority \u003d taskToCopy.getPriority();","lastModifiedDate":"2024-04-01"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" taskDeadline \u003d taskToCopy.getDeadline();","lastModifiedDate":"2024-03-26"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskName} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskName(String taskName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" this.taskName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskDescription} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskDescription(String taskDescription) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" this.taskDescription \u003d new TaskDescription(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" * Sets the {@code TaskPriority} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-26"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" public TaskBuilder withTaskPriority(String taskPriority) {","lastModifiedDate":"2024-03-26"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" this.taskPriority \u003d new TaskPriority(taskPriority);","lastModifiedDate":"2024-03-26"},{"lineNumber":66,"author":{"gitId":"breezetall"},"content":" return this;","lastModifiedDate":"2024-03-29"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-29"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-29"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-26"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskDeadline} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-26"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-26"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskDeadline(String taskDeadline) {","lastModifiedDate":"2024-03-26"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" this.taskDeadline \u003d new TaskDeadline(taskDeadline);","lastModifiedDate":"2024-03-26"},{"lineNumber":74,"author":{"gitId":"breezetall"},"content":" return this;","lastModifiedDate":"2024-03-26"},{"lineNumber":75,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-26"},{"lineNumber":76,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" public Task build() {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" return new Task(taskName, taskDescription, taskPriority, new TaskStatus(), taskDeadline);","lastModifiedDate":"2024-04-01"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":60,"breezetall":20}},{"path":"src/test/java/seedu/address/testutil/TaskUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-26"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-26"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_PRIORITY;","lastModifiedDate":"2024-03-26"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-26"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" * A utility class for Task.","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class TaskUtil {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public static String getAddTaskCommand(Task task) {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" return AddTaskCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_NAME + task.getName() + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" + PREFIX_TASK_DESCRIPTION + task.getDescription() + \" \"","lastModifiedDate":"2024-03-26"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" + PREFIX_TASK_PRIORITY + task.getPriority();","lastModifiedDate":"2024-03-26"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" * Returns an delete command string for adding the {@code person}.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" public static String getDeleteTaskCommand(Index index) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" return DeleteTaskCommand.COMMAND_WORD + \" \" + index.getOneBased();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":16,"Yskie":9,"nobodyishappy":2,"breezetall":6}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_FIRST \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_SECOND \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_THIRD \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"chin-herng":3,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_SECOND;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing\").build()).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing 1\").build(),","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" new TaskBuilder().withTaskName(\"Testing 2\").build()).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing\").build()).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTasks(VALID_TASK_SECOND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST, VALID_TASK_SECOND)","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"nobodyishappy":9,"-":69}},{"path":"src/test/java/seedu/address/testutil/TypicalTasks.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" * A utility class containing a list of {@code Task} objects to be used in tests.","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"public class TypicalTasks {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_1 \u003d new TaskBuilder().withTaskName(\"task1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_2 \u003d new TaskBuilder().withTaskName(\"task2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_3 \u003d new TaskBuilder().withTaskName(\"task3\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" private TypicalTasks() {}","lastModifiedDate":"2024-03-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Returns an {@code TaskList} with all the sample tasks.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public static TaskList getTypicalTaskList() {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-29"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-29"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_2);","lastModifiedDate":"2024-03-29"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_3);","lastModifiedDate":"2024-03-29"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-29"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":23,"nobodyishappy":3}}] diff --git a/AY2324S2-CS2103T-W13-4_tp_master/commits.json b/AY2324S2-CS2103T-W13-4_tp_master/commits.json index fd5b0cab..810a068f 100644 --- a/AY2324S2-CS2103T-W13-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-W13-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Kaya3842":[{"date":"2024-03-06","commitResults":[{"hash":"5dc5526c7a70d582293b62d4e46b0d2c89ba86f6","isMergeCommit":false,"messageTitle":"Modify AboutUs.md","messageBody":"Add personal details into AboutUs.md\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"25649451a81959afeb7956f8cddac57abba87b75","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Kaya3842/master","messageBody":"Update Dinh Tran Hai Chien\u0027s AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"e3ad321076d40797dfc5d4d54214d89424be2bb0","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Yskie/master","messageBody":"Update Non-Functional Requirement in DG","fileTypesAndContributionMap":{}},{"hash":"664cf0357795f38d2cd5db1459d8f99542191f99","isMergeCommit":true,"messageTitle":"Merge pull request #27 from chin-herng/master","messageBody":"Update README page to match project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"f3caf8dd4e8017ebcbfd5e68ee949bf1dc76c03b","isMergeCommit":false,"messageTitle":"Add Glossary in DeveloperGuide","messageBody":"Define terms that are worth recording in the Glossary section.\n\nFix some typos in the DeveloperGuide.md\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"2caf6277b1bc7519cf280499ddcceeb2b8214f6c","isMergeCommit":false,"messageTitle":"Create Task class","messageBody":"Create the Task class to represent the tasks for the user to add to\nthe app.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}},{"hash":"815607a21ca22ad773a12d6be0f2d0db26d6ce6c","isMergeCommit":false,"messageTitle":"Create AddTaskCommand and AddTaskCommandParser classes","messageBody":"Let\u0027s create an AddTaskCommand class to represent the command that\nadds a task to the book.\n\nLet\u0027s create an AddTaskCommand Parser class to process the user input\nfor an add task command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":0}}},{"hash":"1a40f52e4ca2067f931c1938aed36f9eba1eedab","isMergeCommit":false,"messageTitle":"Create TaskList class","messageBody":"Create the TaskList class to store the tasks from users.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":0}}},{"hash":"7dc4a279406ace15860ee51a0bdaba4e02a6e705","isMergeCommit":false,"messageTitle":"Update add task logic","messageBody":"Update AddressBookParser.parseCommand() to recognize\nthe addtask keyword.\n\nModify AddTaskCommandParser.java to parse user input.\n\nModify AddTaskCommand.java to add task to the task list.\n\nUpdate TaskList.java to include methods to add class and to check\nduplicate tasks.\n\nUpdate ModelManager.java and MainApp.java to include\nTaskList in the constructor.\n\nUpdate Messages.java to include the method for formatting\ntask description.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":12}}},{"hash":"78eade941749fa7d34b6cfeaf090b4495c1541c2","isMergeCommit":false,"messageTitle":"Create TaskList Storage classes","messageBody":"Create TaskList Storage to store tasks into the data file.\n\nCreate Json adapted classes to store tasks in a Json file.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":229,"deletions":0}}},{"hash":"449814cfb2a5e78afeacea5e38bc9dfb235a2af8","isMergeCommit":false,"messageTitle":"Update Storage","messageBody":"Let\u0027s update the Storage package to store the task list in the\njson data file.\n\nLet\u0027s update the model package to contain the task list.\n\nLet\u0027s update the logic package to save the tasks to the task list.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":205,"deletions":23},"test-code":{"insertions":6,"deletions":5}}},{"hash":"20ebd4286fc01a8c2587a2eef2a50a0a3938fec0","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"Change the test files to include the task list in model and storage\nclasses.\n","fileTypesAndContributionMap":{"test-code":{"insertions":100,"deletions":24}}}]},{"date":"2024-03-14","commitResults":[{"hash":"f9024e65fccdbdbe5aefe5668734a9cba9c9bcef","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add test classes for new classes and methods.\n\nUpdate old tests in ModelManagerTest and StorageManager to test\nTaskList methods.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":4},"test-code":{"insertions":273,"deletions":1}}},{"hash":"cda4b668cd45d0da6c16f5d501ad5976edfa0858","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add more test classes for new classes and methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":1}}},{"hash":"74c69c4395b34ba9b5b05bc904cabde1ccb69a14","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"Add more tests for more methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":11}}},{"hash":"cbed9182f8663be7cbe7b381b1b4e56ddccb122f","isMergeCommit":false,"messageTitle":"Update StorageManagerTest","messageBody":"Add test to taskList methods in StorageManager.\n","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"aa11001e021c226ac9243e9177dcb62b3704dd1b","isMergeCommit":false,"messageTitle":"Fix StorageManagerTest","messageBody":"Fix tests for taskList methods in StorageManager.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":5}}},{"hash":"c809106d73796f5d64874a608c2cbec33b79cce7","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add more test classes for new classes and methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dcda2609941a2e5b23917a85a9639aa5bb7e7e88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into adding-list-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"f22c096598f718150c0e418b506731e8ded71fb3","isMergeCommit":true,"messageTitle":"Merge pull request #42 from chin-herng/branch-unassign-tasks","messageBody":"Unassign Tasks to Persons","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"ac1dcfbdcfdb20aa2aeb45772222cc926dd7be74","isMergeCommit":false,"messageTitle":"Create findtask command","messageBody":"Create classes for the findtask command.\n\nUpdate AddressBookParser to register findtask command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0}}},{"hash":"c31a14da408ae505f61f49ec790272a50e828399","isMergeCommit":false,"messageTitle":"Hook FindTaskCommand into application","messageBody":"Change the logic of MarkTaskCommand.execute() to use the filtered list\nfrom FindTaskCommand.\n\nSame update on execute() method for unmarktask and deletetask.\n\nFix typo in FindTaskCommand.MESSAGE_USAGE.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":8}}},{"hash":"709556dfb2ac510a43fc1d725d9af7157702d044","isMergeCommit":false,"messageTitle":"Update AssignCommand and UnassignCommand","messageBody":"Update AssignCommand.getTaskToAssign() and\nUnassignCommand.getTaskToAssign() to use the filtered list\ninstead of the original list.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"fd8298e714b4da0b7243c6eaa5c24e09b193d724","isMergeCommit":true,"messageTitle":"Merge pull request #51 from nobodyishappy/branch-documentation","messageBody":"Update to user guide","tags":["TeamTracker_v1.3a"],"fileTypesAndContributionMap":{}},{"hash":"d0ec74cbcac421180e609cedfecb01ca902b497e","isMergeCommit":false,"messageTitle":"Add test classes","messageBody":"Add tests for new classes related to FindCommand.\n\nFix import order in some classes for checkstyle.\n\nUpdate TypicalTasks() constructor to avoid instantiation.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5},"test-code":{"insertions":221,"deletions":9}}},{"hash":"03db5feb95588bd6f0aad936fe8a01050333b72f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-find-tasks","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a8b769e98e3013032893b8287efbba144f41b4a4","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-04-01","commitResults":[{"hash":"1c208c8a9bcda6c7d36ef561634101696a3b391b","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Yskie/branch-documentation","messageBody":"Update to developer guide for the logic and redo/undo commands","fileTypesAndContributionMap":{}},{"hash":"f99cf1b08ec16d5b23d65d7258e5a3818500cdfb","isMergeCommit":true,"messageTitle":"Merge pull request #55 from chin-herng/branch-update-ug","messageBody":"Update to user guide for the assign, unassign and cleartask commands","fileTypesAndContributionMap":{}},{"hash":"20d2f73e8f337030589e1fea1c558bd5ce8aa3e2","isMergeCommit":true,"messageTitle":"Merge pull request #56 from chin-herng/branch-update-dg","messageBody":"Update to developer guide for the model component","fileTypesAndContributionMap":{}},{"hash":"6f846cc50690d4e5334ae56f7e0d658ad3f23842","isMergeCommit":true,"messageTitle":"Merge pull request #57 from breezetall/update-developer-guide","messageBody":"Update developer guide for UI","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"7183199528138ad41e58c307d261415a07bc57b6","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Yskie/branch-edit-command","messageBody":"The Edit Task Command","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"39e8c2aec8c3c06bc13c28f561a08e50026797dd","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"Update the findtask command in the User Guide.\n","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":0}}},{"hash":"643aba4c0dc397361e17aae243e71174ab019e3a","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"Update StorageClassDiagram.puml to incorporate TaskList in the\nUML Diagram.\n\nUpdate DeveloperGuide.md for the Storage component to include TaskList\nclasses.\n","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":4}}}]}],"Yskie":[{"date":"2024-03-06","commitResults":[{"hash":"6a619e789b36226aee8f1ad8ba15582ef4c653ff","isMergeCommit":false,"messageTitle":"Update Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"bd074253dfa66d3b16cfc99447291941de64a9c9","isMergeCommit":false,"messageTitle":"Modify Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"172085faf0e4b3502af1a1f3f27e955d3ed1b93a","isMergeCommit":false,"messageTitle":"Modify Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d3f5515d1a2731225994c6c333e1cfd4025837f7","isMergeCommit":true,"messageTitle":"Merge pull request #17 from breezetall/master","messageBody":"Update Abdul Khaliq\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"f2013cb35d2ec15829bf983181fc08d5045b5403","isMergeCommit":false,"messageTitle":"Update Non-Functional Requirements in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":3}}},{"hash":"5cd44ecbb1516d48c5923170eae1f95f6f5e5d58","isMergeCommit":false,"messageTitle":"Modify Non-Functional Requirements in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"debd3c4b3ed83293dcae61a5373288998e3b09ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"1560c9c39fc62b4702ef9bcdd37ef2d8690d9dbd","isMergeCommit":false,"messageTitle":"Modify NFR section of DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"787cb93808ec38b2639f9d7655bcf6f026cfabba","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Yskie/dg-nfr","messageBody":"Modify NFR section of Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"abd9989ce6807636a19e11bc8fbbbd238e00c8e6","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Kaya3842/branch-add-tasks","messageBody":"Add personal tasks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"ea99bdd567614baa0565afcbabda28fa3b6e142c","isMergeCommit":false,"messageTitle":"Add Delete Task Function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":1},"test-code":{"insertions":22,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"de51ab487e4db711b6e713dc2135304b8af78482","isMergeCommit":false,"messageTitle":"Fix Checkstyle Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"9cb7f0e35e3ac419cf23dfaf1ca1edc9150a25bf","isMergeCommit":false,"messageTitle":"Modify JavaDoc Comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"5dab68064a092419e1fe64c0367bb8795184e5c5","isMergeCommit":false,"messageTitle":"Modify JavaDoc Comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"907aa93f539e7c1aa8276e028401887255fc2a28","isMergeCommit":false,"messageTitle":"Refactor code for delete task feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":23},"test-code":{"insertions":3,"deletions":2}}},{"hash":"9124aee8e8c78509de42844cd27406da663565e0","isMergeCommit":false,"messageTitle":"Fix Checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"c2b395a9b81bf5e74b9d20aee04d70bd58aecc97","isMergeCommit":false,"messageTitle":"Write test for delete command","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"test-code":{"insertions":45,"deletions":0}}},{"hash":"262b2898165cc00e1546b261fb74f31b6f419c69","isMergeCommit":false,"messageTitle":"Fix checkstyle issues in delete task test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"7bd0bc9c9b8c4f04191f3998fa2b03502bff1cdc","isMergeCommit":false,"messageTitle":"Write test for delete command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":8}}},{"hash":"e5d15d31394383d63e02fd3982e5cd2daa95ddfd","isMergeCommit":false,"messageTitle":"Write tests for DeleteTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":0},"test-code":{"insertions":25,"deletions":2}}},{"hash":"173e92179da449a204527341171014de8eac0db6","isMergeCommit":false,"messageTitle":"Write tests for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":8},"test-code":{"insertions":53,"deletions":2}}},{"hash":"087b4dc7757e0715cc1d2665256046a93c5828a8","isMergeCommit":false,"messageTitle":"Refactor code for delete task parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"254318b9e4ce1a92c765572879245aa2348e2e83","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-delete-command\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cdbc4b646d40dbef5dbe2dcbd4e76381002ed9b4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Yskie/master","messageBody":"Merging Assign Task","fileTypesAndContributionMap":{}},{"hash":"4512c2c00e09ec114e004a9f21fef661675d0c63","isMergeCommit":false,"messageTitle":"Implement deletion of assigned tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":36},"test-code":{"insertions":24,"deletions":13}}},{"hash":"39f8b18fec737794fd66f6c8c9b31a3f7dcaa607","isMergeCommit":false,"messageTitle":"Write test for delete assign task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":15,"deletions":0}}}]},{"date":"2024-03-25","commitResults":[{"hash":"0982da5155193163f0dfccba5ea3e3c4badf6351","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":3}}},{"hash":"a040a5e65d61942e72aa3c99511312c1d9174c78","isMergeCommit":false,"messageTitle":"Fix minor typo in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aa42981782ba309477b61098057142cfde9c1524","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2024-03-29","commitResults":[{"hash":"3e6e66f0b865c0b9899141edd28887cfc1d5190c","isMergeCommit":false,"messageTitle":"Add Edit Feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":346,"deletions":40},"test-code":{"insertions":10,"deletions":0}}},{"hash":"3826e85afcb8d628c9e976fe0c63875ff8c9bb56","isMergeCommit":false,"messageTitle":"Modify Logic section in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":34}}}]},{"date":"2024-03-30","commitResults":[{"hash":"b544250b2b3b38385a2f7ec3fed8eec796ce31ce","isMergeCommit":false,"messageTitle":"Modify Implementation in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":91,"deletions":85}}},{"hash":"e73bb05b54c80dc0367fd86879894232282665ad","isMergeCommit":false,"messageTitle":"Fix Checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c67e075c45055922a6581681c4d91c02660bad52","isMergeCommit":false,"messageTitle":"Fix minor documentation issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"8668f89e7b4934596ffa3b9be6e9e30b6fe4b5b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-documentation","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-01","commitResults":[{"hash":"d9e95e21d516e4069246c7bf0d3d778224f9b507","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a49c4482255d9c9dec708fefc5cf0c79a0ac060d","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Yskie/branch-edit-command","messageBody":"Add Edit Feature","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"dda9edc92dda32474fab623511088979d57c502d","isMergeCommit":true,"messageTitle":"Merge pull request #58 from breezetall/update-priority","messageBody":"Update priority","fileTypesAndContributionMap":{}},{"hash":"e1146700b79814090ad7c0ccae1e569c7e647a8a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5fa4f0e560419de119cf0d30ca3da998a82b99e3","isMergeCommit":false,"messageTitle":"Add edits for deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":84,"deletions":45},"test-code":{"insertions":0,"deletions":10}}},{"hash":"f8b583878bb6ebfc777da511e293a80e5f3a7466","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-edit-command\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5bc62125dc146ce16501f3446a6eb382fff43732","isMergeCommit":true,"messageTitle":"Merge pull request #4 from Yskie/master","messageBody":"Merge pull request for edit command","fileTypesAndContributionMap":{}},{"hash":"c028d4bb1d4e02ec219be331eb8c70dfd06a26a6","isMergeCommit":false,"messageTitle":"Add edit task function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":60},"docs":{"insertions":0,"deletions":4},"test-code":{"insertions":2,"deletions":5}}},{"hash":"7acbe416ab409a7c6b63e4449bf27891ab8b45bb","isMergeCommit":false,"messageTitle":"Implement full edit task command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":72},"test-code":{"insertions":218,"deletions":9}}},{"hash":"f055472e8f74a524bf42451626f07dbdb8cda503","isMergeCommit":false,"messageTitle":"Write test for Edit Task Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":7},"test-code":{"insertions":62,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"bf69d0742ec875f1e8983550d7e485096b4b506c","isMergeCommit":false,"messageTitle":"Fix some java docs issues and update ug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":8},"other":{"insertions":4,"deletions":0},"docs":{"insertions":10,"deletions":0},"test-code":{"insertions":2,"deletions":3}}},{"hash":"8956ca4c7000869dbeee6eeb71114700811c95cb","isMergeCommit":true,"messageTitle":"Merge pull request #5 from Yskie/branch-edit-command","messageBody":"Add edit command in ug and fix javadocs comments","fileTypesAndContributionMap":{}},{"hash":"8ae0e5453c0db7232c332f61480f33db9747a548","isMergeCommit":false,"messageTitle":"Fix minor typo in the user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"docs":{"insertions":2,"deletions":2}}},{"hash":"da32394febb3a518e54767340b22ac9524af3d0c","isMergeCommit":false,"messageTitle":"Modify user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":1}}}]}],"chin-herng":[{"date":"2024-03-06","commitResults":[{"hash":"898d85c7dbe463226e11bb1d0e264b834d15cfa5","isMergeCommit":false,"messageTitle":"Update Chin Herng\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"fda490fd84aa103c70da6195a1a81535be39eb84","isMergeCommit":true,"messageTitle":"Merge pull request #24 from nobodyishappy/master","messageBody":"Update product scope and user stories in developer guide","fileTypesAndContributionMap":{}},{"hash":"bfa98f345565e9ff49388cb2852e43229a4afbc1","isMergeCommit":false,"messageTitle":"Update README page to match project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":11}}},{"hash":"1cf99c1b51f220e0cc8c55f838fea9d7baa5168c","isMergeCommit":false,"messageTitle":"README.md: Add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"6e5e41813ab2000aaa751432411c453e0b7a8a79","isMergeCommit":false,"messageTitle":"Create assign command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"af8246fc83cc5b217f0be6be68155098e4be24e6","isMergeCommit":false,"messageTitle":"Hook AssignCommand into application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"6c3612946f6a8350fc614b61555b3177179a2ca9","isMergeCommit":false,"messageTitle":"Change AssignCommand to throw an exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"3dd02e7974f758cd0b9bf86ed2e587893f2f9b14","isMergeCommit":false,"messageTitle":"Change AssignCommand to parse input from user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":5}}}]},{"date":"2024-03-17","commitResults":[{"hash":"44ceea59d102e14e47c10000745eae34040ff0b7","isMergeCommit":false,"messageTitle":"Modify Person to support Set\u003cTask\u003e instead of Set\u003cTag\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":107},"test-code":{"insertions":75,"deletions":163}}},{"hash":"0354be4ac6aa42abaf12756e4147d6b23c0b8213","isMergeCommit":false,"messageTitle":"Fix UI not displaying tasks correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d37f5532be6ed9d4b0ad9427db928f402fc83f14","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":6},"test-code":{"insertions":156,"deletions":56}}},{"hash":"9f6f142afb3563c6d48b81d8aa724fe027d679df","isMergeCommit":false,"messageTitle":"Fix success message of assign","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"569daf55a93fe62a2f93b2c965918bd9165f0734","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"af562057fd29940268a243c99003770fe4b4d7b7","isMergeCommit":false,"messageTitle":"AssignCommandTest.java: fix broken tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"246216f2699b58859ea3cfdf70aa85a14d30943d","isMergeCommit":false,"messageTitle":"Write tests for AssignCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":86,"deletions":4}}},{"hash":"76fb6477e13739982f47e69fc243a4bc1ab6971a","isMergeCommit":false,"messageTitle":"Write tests for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"658a957ade7156dc1d20a9f6a08dcd09f019d91d","isMergeCommit":false,"messageTitle":"Add test for same object for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"718ea3c7d255abedcb26533ec295e6054db0f97f","isMergeCommit":false,"messageTitle":"Add test for different task index for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"b1d36431f6db7db6746746711eb295f5d030cff7","isMergeCommit":false,"messageTitle":"Write test for parsing assign commands","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"975d8798f88b9e231934a85277c206159ac1701f","isMergeCommit":false,"messageTitle":"Refactor AssignCommand by extracting out createEditedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"335dfa2457cc5d2a2b88718934d3381b499a9204","isMergeCommit":false,"messageTitle":"Add addTask and deleteTask in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":18}}},{"hash":"c5ef6cc5fe2a9c91ae4123eaf9b7940106d3bb8d","isMergeCommit":false,"messageTitle":"Write test for Person#deleteTask","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"7cf9ff91c87ec739c45499c3a6f1c918316931c4","isMergeCommit":true,"messageTitle":"Merge pull request #37 from Yskie/branch-delete-command","messageBody":"The Delete Task Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"70704b48fac50ba8d30cef5a89e2d80ed4b6afbf","isMergeCommit":false,"messageTitle":"Create unassign command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"b999684150c79e67a30f610c36f0307b963831d0","isMergeCommit":false,"messageTitle":"Hook UnassignCommand into application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"8716e63c31c36709a13e1939aa16b08bf6a56dc9","isMergeCommit":false,"messageTitle":"Change UnassignCommand to throw an exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":2}}},{"hash":"d15295fdcf1cc0f9fa6e652b487a956fbbc5867e","isMergeCommit":false,"messageTitle":"Change UnassignCommand to parse input from user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":4}}},{"hash":"735cebec134fbe2689ad6cffdda26bd35aed5ffb","isMergeCommit":false,"messageTitle":"Refactor AssignCommand and update UnassignCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":8}}},{"hash":"52ee942d2f6054495b639ad9ce1c1656ec1caee6","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":128,"deletions":0}}},{"hash":"4dc8250e571afecd49ba970fe47a488574ada555","isMergeCommit":false,"messageTitle":"Write tests for UnassignCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":84,"deletions":2}}},{"hash":"31ceec4b581a69a7c687f343ed5ff7959525d55b","isMergeCommit":false,"messageTitle":"Write test for parsing unassign commands","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"0c797128139647300bc730fb55d6d1bbcde34550","isMergeCommit":false,"messageTitle":"Create cleartask command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"34835ab4ba103709548b9b9231b36d686ad71f7a","isMergeCommit":false,"messageTitle":"Hook ClearTaskCommand into application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"ed6584a0721d2466ca8b47df13faf5ae8d120e2f","isMergeCommit":false,"messageTitle":"Change ClearTaskCommand to throw an exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":2}}},{"hash":"b673dfd45be8dfc13fc08c3376b78752e5bc4899","isMergeCommit":false,"messageTitle":"Change ClearTaskCommand to parse input from user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":4}}},{"hash":"5b218b6a14b90b735f4bf036d4d0a06c2a9ff50d","isMergeCommit":false,"messageTitle":"Update ClearTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":3}}},{"hash":"0565e1334bd9d44d3f5d2b596d1996fdb312ee41","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":141,"deletions":0}}}]},{"date":"2024-03-25","commitResults":[{"hash":"b57c0d168be1cc31bbb063b37283e304f347d77f","isMergeCommit":false,"messageTitle":"Implement mass delete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":17}}}]},{"date":"2024-03-26","commitResults":[{"hash":"2dcd6237108170b23e7c55ae7c6181c7f7a30ffc","isMergeCommit":false,"messageTitle":"Write tests for mass delete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":20},"test-code":{"insertions":59,"deletions":16}}},{"hash":"ba265f46f28b7c9b01f7550b7e5bfd6a35937b5b","isMergeCommit":false,"messageTitle":"Refactor DeleteCommand#toString() to return in one statement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"aabd1ff54c58109774159dc30135a001468c78fd","isMergeCommit":false,"messageTitle":"Implement mass deletetask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":41},"test-code":{"insertions":5,"deletions":5}}},{"hash":"28d33739fea02a72dbbcbbfca289bd33060c8b5b","isMergeCommit":false,"messageTitle":"Rename MESSAGE_DELETE_PERSON_SUCCESS","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"efc0457b6a39991a968b7de8ad8abc81e5ce42f6","isMergeCommit":false,"messageTitle":"Write tests for mass deletetask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":69,"deletions":18}}},{"hash":"3ce96ec1e5000b64deb025b3ca2dd8886c40bbcd","isMergeCommit":false,"messageTitle":"Write tests for duplicate indices","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":0}}}]},{"date":"2024-03-27","commitResults":[{"hash":"2a9175da5e41fd3b719dbfb72565553985cb5f3b","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d99aad9e47de91624de0e7472d2567c865b67bf6","isMergeCommit":true,"messageTitle":"Merge pull request #48 from nobodyishappy/branch-task-deadline","messageBody":"Branch task deadline","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"551f48fa023034746d036f22e0736f30930775f6","isMergeCommit":true,"messageTitle":"Merge pull request #49 from breezetall/priority","messageBody":"Add Priority","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"eafbba6eaa1e4905bc4697f2da83d0054b040eb4","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":3}}},{"hash":"1f69c3d881a70bd62c60650c2b3ab3d93d3fd371","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":23}}},{"hash":"6223716bc8e59b0a2ade63ffb85a8115da5f60a6","isMergeCommit":false,"messageTitle":"Update alternative for model component of DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}},{"hash":"c3b4ca55813e9ce73be2b6004d4eb8c50b67676e","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Kaya3842/branch-find-tasks","messageBody":"Branch find tasks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-31","commitResults":[{"hash":"7bee3da26d0a0f22a4fbfdbe15d774a110b0467d","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"66d73c0533b92cc2024043c3b42029a23edbeddd","isMergeCommit":false,"messageTitle":"Change formatTask to format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-04-04","commitResults":[{"hash":"fd6651a528598dd635d0d8d9991b4749f5d590f6","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"26163013dae237be5c92eb33a466ac5ecc8a5289","isMergeCommit":false,"messageTitle":"Change format to formatTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":5,"deletions":5}}},{"hash":"f40f6d73e6ab6327272510a1a0f03a5d9ec18e59","isMergeCommit":false,"messageTitle":"Change naming for tests in DeleteTaskCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":7}}},{"hash":"9206912fc03e2e6f57b753161242eb0d1639eadc","isMergeCommit":false,"messageTitle":"Implement and write tests for mass marktask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":30},"test-code":{"insertions":109,"deletions":19}}},{"hash":"40326db4bde3f2a82e1eb166bb76d7c67856d552","isMergeCommit":false,"messageTitle":"Write tests for parsing multiple indices","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"b94c6fad78925f7bef13c913da2536f08c7d2af2","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Kaya3842/branch-update-user-guide","messageBody":"Update User Guide for findtask command.","fileTypesAndContributionMap":{}},{"hash":"cf20f4cc66417c01ff2c2c9a48d8006cd2a6ae49","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Kaya3842/branch-update-developer-guide","messageBody":"Update Developer Guide for the Storage component","tags":["TeamTracker_v1.3b"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"a648a3a09251123bfbeca2993a518a1aa68dc3af","isMergeCommit":false,"messageTitle":"Implement mass unmarktask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":25}}},{"hash":"8bf7fd7bee4bd913a47eb2b1375c943590312a9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-mass-ops","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d08a78f4649bf0bcd5245b6dd0f1be41b70736bd","isMergeCommit":false,"messageTitle":"Write tests for mass unmarktask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":12},"test-code":{"insertions":108,"deletions":25}}},{"hash":"87fd4feffde4f8807efb5331b4320ea15e8cfca7","isMergeCommit":false,"messageTitle":"Remove unnecessary imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"1402daba1be931e87aac56caef927261dbceb785","isMergeCommit":false,"messageTitle":"Implement mass assign to people","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":32}}},{"hash":"62f0eeac7634691f3c094794ece4f54ae4a0ce9f","isMergeCommit":false,"messageTitle":"Write tests for mass assign to people","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4},"test-code":{"insertions":91,"deletions":14}}},{"hash":"365ca909f7a732a1dc9fe2436f71bcf92945b4e0","isMergeCommit":false,"messageTitle":"Implement mass unassign to people","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":56,"deletions":33}}},{"hash":"d6ee18e3635b5510b81c339531c69a2511c8661f","isMergeCommit":false,"messageTitle":"Write tests for mass unassign to people","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":110,"deletions":29}}},{"hash":"2e8a60266aedb367d22ad434e45245b667e5e653","isMergeCommit":false,"messageTitle":"Remove unnecessary imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]}],"nobodyishappy":[{"date":"2024-03-04","commitResults":[{"hash":"915d3cbcb1268c209db4809738c5839cb7b1c3ab","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-W13-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"cf67e11de780459221e906d2bceddfb5190e188e","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"Changing product name","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"019455c8951b12888a4cb968b85cd946f2ed14a6","isMergeCommit":true,"messageTitle":"Merge pull request #21 from chin-herng/master","messageBody":"Update Chin Herng\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"f54e4039b477720052c6c773e159c6903ae13f47","isMergeCommit":false,"messageTitle":"Update Hao Liang\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":11}}},{"hash":"b5e582ff4d9dd0f78a49b8d58b6aff55641152da","isMergeCommit":false,"messageTitle":"Update product scope in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"0be05672a478d5604df050bc5596b92ffeaef044","isMergeCommit":true,"messageTitle":"Merge pull request #25 from breezetall/master","messageBody":"Update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"919dbc0a0bec9f94de5f0449739e40e62f6bce49","isMergeCommit":true,"messageTitle":"Merge pull request #29 from chin-herng/master","messageBody":"Add UI mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2da073afc525de8b21a42619408f4eb39c7292e2","isMergeCommit":false,"messageTitle":"Implement mark and unmark of tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":3},"test-code":{"insertions":240,"deletions":1}}},{"hash":"89938bd5dba40dbe1abeaddf4983ec49e38c2bae","isMergeCommit":false,"messageTitle":"Change code from CRLF to LF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":189},"test-code":{"insertions":207,"deletions":207}}},{"hash":"c76cdaf98b380b00676dbfe4929e125f2a3c300e","isMergeCommit":false,"messageTitle":"Fix error message for out-of-bound index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ae1d1c817d7e0a43af78cdd05aca190e5bfd8336","isMergeCommit":false,"messageTitle":"Fix invalid index test for mark and unmark","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f88400294d2ef43bc6c3ebc3707b6c525e898c29","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into branch-mark-tasks","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"e6f21bdd090ed3f16c424df99c73a415b789e4e5","isMergeCommit":true,"messageTitle":"Merge pull request #39 from breezetall/adding-list-command","messageBody":"Adding list command","fileTypesAndContributionMap":{}},{"hash":"a7f8aa41ff0a427b9da64e452755e2575079ddc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-mark-tasks\u0027 into branch-merge-from-main","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27d73afb139c1b67f342b715d3deaca4da5a5ba3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nobodyishappy/branch-merge-from-main","messageBody":"Merge from main","fileTypesAndContributionMap":{}},{"hash":"bbecd9327700ee8e7bd624cd9149b8b390b595b5","isMergeCommit":false,"messageTitle":"Refactor task class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":338,"deletions":113},"test-code":{"insertions":176,"deletions":101}}},{"hash":"fefb6c203e0e6198f2752c137311991731ef476c","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":55},"test-code":{"insertions":71,"deletions":43}}},{"hash":"9584609888fa27d789e1441a14c2608eb5354bd2","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"test-code":{"insertions":40,"deletions":2}}}]},{"date":"2024-03-25","commitResults":[{"hash":"925c448fca446c0fd7bdfa7f8cdfa542255e6c44","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":3}}},{"hash":"04cd8119f5aa15d15e8a312e3b8051e6625f92b0","isMergeCommit":false,"messageTitle":"Add deadline for tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":4}}}]},{"date":"2024-03-26","commitResults":[{"hash":"2a478a407f9276f53cc72405efa48c6f31f52dbd","isMergeCommit":false,"messageTitle":"Implement optional deadline for task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":36},"test-code":{"insertions":63,"deletions":9}}},{"hash":"3e1fe532b6572d42ea40a6e607a16bb86c9dd874","isMergeCommit":false,"messageTitle":"Add test for deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2},"test-code":{"insertions":388,"deletions":14}}}]},{"date":"2024-03-27","commitResults":[{"hash":"7464722697a3b61ade73719bfca0179c3ba88d86","isMergeCommit":false,"messageTitle":"Update to javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":8}}},{"hash":"d40c9275eee52ac6e455109a340b7cc1e82c4f78","isMergeCommit":true,"messageTitle":"Merge pull request #44 from chin-herng/branch-clear-tasks","messageBody":"Clear Tasks of Persons","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"3efd8241f39cdccf191cd778b6bf1cf125dabe57","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into priority","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2a891d465c26396318ab985bb8f622ddd89959ba","isMergeCommit":false,"messageTitle":"Update to user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":26,"deletions":27}}},{"hash":"a5265f607ade10277c3e8c21f87132c84199f766","isMergeCommit":false,"messageTitle":"Update to version number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-30","commitResults":[{"hash":"b18b5fd3a972b40d1a8ee6ae2be987819e3d6e80","isMergeCommit":false,"messageTitle":"Update to developer guide for the proposed implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":1,"deletions":1},"docs":{"insertions":38,"deletions":1}}},{"hash":"e3f3612464e6d6472610448ed0ea9d991a4ec399","isMergeCommit":false,"messageTitle":"Update to command names for grouping","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"45f0a667d097011a141b6c6ef2d1653356aea90b","isMergeCommit":false,"messageTitle":"Add uml diagrams for grouping implementation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":85,"deletions":5}}},{"hash":"71c2b70c125caaa46574cf4d1a712a01f955515f","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":6}}}]},{"date":"2024-04-04","commitResults":[{"hash":"754ecac790f5e5bae2cdf1b33119b622a5b8dad3","isMergeCommit":false,"messageTitle":"Update to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":1}}},{"hash":"43c091f2c53a12e91f648009ec2cefe735326e78","isMergeCommit":false,"messageTitle":"Add headings to lists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}}]}],"breezetall":[{"date":"2024-03-06","commitResults":[{"hash":"635ad2a9578b9694e0d4f5a8060f20bd31e65d08","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Yskie/master","messageBody":"Update Shi Kang\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"87badb2d15f3d4bf908153f565c075930e3e1553","isMergeCommit":false,"messageTitle":"Update Khaliq\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1002cad86f886c88b96fd0bc018638d91c8210a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a569c1d265307c2fa724734158397dc02e141273","isMergeCommit":false,"messageTitle":"Add Khaliq\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"e3111b9d39e66f40f3488a1135cd1e9c46cd9cd6","isMergeCommit":true,"messageTitle":"Merge pull request #23 from nobodyishappy/master","messageBody":"Update Hao Liang\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"b6a976ae1deb2e241764015a6aab35892bf1db6f","isMergeCommit":false,"messageTitle":"Add use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":9}}}]},{"date":"2024-03-07","commitResults":[{"hash":"6443f4e75030b16e1e14c0b9d566d780b944c2ad","isMergeCommit":true,"messageTitle":"Merge pull request #28 from Kaya3842/master","messageBody":"Add Glossary in DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"594e5dba9d6d11c80e800f59a9c4e52536abed20","isMergeCommit":false,"messageTitle":"Add ui panel for task list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":183,"deletions":15}}}]},{"date":"2024-03-19","commitResults":[{"hash":"45818bec35a4f9f1f90bd0464aa12ba55661778e","isMergeCommit":false,"messageTitle":"Add listtask command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":21}}},{"hash":"8713ea0c79fec11705fe8e6df46183c44e84b129","isMergeCommit":false,"messageTitle":"Add observableList to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":10}}},{"hash":"3ff249a30ae9e4ae31cd0380c2e11bf6682dde00","isMergeCommit":true,"messageTitle":"Merge pull request #36 from chin-herng/branch-assign-tasks","messageBody":"Assign Tasks to Persons","fileTypesAndContributionMap":{}},{"hash":"e2a0fdc97413557faf3149c210d2db9f8c25821e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into adding-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"feab65db237e22c34e6a97e33a7e2274dfb1154b","isMergeCommit":true,"messageTitle":"Merge pull request #1 from breezetall/adding-list-command","messageBody":"Adding list command","fileTypesAndContributionMap":{}},{"hash":"2e7c29263be3c9e201154a418c0f89733f57129a","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":13}}},{"hash":"d28921ceb10c4ebb8021bc50defbe06190e1bb3f","isMergeCommit":false,"messageTitle":"Modify observableList in TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":10,"deletions":0}}},{"hash":"ed24a0693635adddcc613cb71a0d5b764495f382","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"02ed05c31e28d8dd14400556c42333759ff32097","isMergeCommit":false,"messageTitle":"Write tests for filteredTaskLists and ListCommandTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":45,"deletions":0}}},{"hash":"5c40429e993bacd6fa600420ac37faf86f9a605d","isMergeCommit":false,"messageTitle":"Remove test for filtered lists","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"0440c540f1db1f6d564726b6df9a3acf6aadd1be","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"2d159919dd17ea6e7e1b159c89b0739f3bc8093e","isMergeCommit":false,"messageTitle":"Write tests for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":7,"deletions":10}}},{"hash":"44b4cde699d48a864d14f9a7bd36f34427f2ee5e","isMergeCommit":false,"messageTitle":"Fix imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"df7a966eeb51daf3820ac8d0038cf474cf70fdca","isMergeCommit":false,"messageTitle":"Update test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"f72129d694e353441d6a42ded2606247636d2eb9","isMergeCommit":false,"messageTitle":"Remove equals check for filteredTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"3506b125df120bfd538115e564128320fb3e5e2c","isMergeCommit":false,"messageTitle":"Fix javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"6f0203d2c0e697b472ff030c6a6a0f6bf384aff4","isMergeCommit":true,"messageTitle":"Merge pull request #40 from nobodyishappy/branch-mark-tasks","messageBody":"Implement mark and unmark for tasks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"d7a6bbfb88332211c3deb56ca880e97114b78ea0","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"ac89a931cdfd7b84b90b47cc50e9d857c6ee5e46","isMergeCommit":false,"messageTitle":"Add priority to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":21},"test-code":{"insertions":16,"deletions":7}}},{"hash":"93c9d40dcb450ddd6d40acaf818d9bd10e4cd34b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":4}}},{"hash":"06233a420abb94033cec018b29408ab16ddfcad3","isMergeCommit":false,"messageTitle":"Fix mark command not updating ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":2}}},{"hash":"f8b27ea7a5a487b0c04dd2ab0290c12cad775e54","isMergeCommit":false,"messageTitle":"Add sort by priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":22}}},{"hash":"b652a93f5639f23239e1bad728a8e5d4cda09144","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":46,"deletions":29}}},{"hash":"4823688e78cc27b0e11f1d1487b9d3178782c4c8","isMergeCommit":false,"messageTitle":"Fix order of imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":7}}},{"hash":"1ad8d8cd668709babf529a8f12fb7109519c4e7c","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":4}}},{"hash":"9b8267516006cae05c6afb7461e16862ec64e27f","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ec0a112d2fd433ac1881638a41a6a14c17cdbb4","isMergeCommit":false,"messageTitle":"Update user guide to include priority","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":68,"deletions":10}}},{"hash":"8f66c9907b17895f358cc33c3245099c93695316","isMergeCommit":false,"messageTitle":"Update javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7fd43eb70029712533a650e1ad9c54935d32b7be","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into priority","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a69a71dc077ab913bd07cf295ce0858df816750a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide and UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"d97e6043586fde130405cf255444bd704158fc9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-priority\u0027 into priority","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"cc971b4a382090d69a70fa64d01887f681c871f3","isMergeCommit":false,"messageTitle":"Write test for TaskPriority","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":0}}}]},{"date":"2024-03-29","commitResults":[{"hash":"f9b596cc66a172994e84c04bf6f5cc875962951f","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":7},"test-code":{"insertions":25,"deletions":11}}},{"hash":"2d0d69e0452b6b8777dca2e6f6b2c37aa71ded71","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"68586a0f0804d2bcbd20cb1f4d254d0455c7c673","isMergeCommit":true,"messageTitle":"Merge pull request #53 from nobodyishappy/branch-documentation","messageBody":"Update to developer guide for the proposed implementation","fileTypesAndContributionMap":{}},{"hash":"23c0431f19189fb8f92b6cb5432f9fbf3086ac49","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7992f3c14cb67e309e3d958fdd1d4a9f5021bcc2","isMergeCommit":false,"messageTitle":"Update ui class diagram and developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}}]},{"date":"2024-04-01","commitResults":[{"hash":"7fcefebf90319466720df9e731d7473e2df56e68","isMergeCommit":false,"messageTitle":"Add test for invalid priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":1},"test-code":{"insertions":16,"deletions":0}}},{"hash":"986996ceace462a26c7a3b1e59a6c39c53d50772","isMergeCommit":false,"messageTitle":"Sort the tasks by status and priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":8}}},{"hash":"c9ae2931d71f51b5f59798900213aefd037cf549","isMergeCommit":false,"messageTitle":"Add sort by deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1}}},{"hash":"2cf24bda464567ed106e133575628d1551bad694","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"5d57ed3c3c0f33b1dae943fb4a9abe61bc33538c","isMergeCommit":false,"messageTitle":"Rewrite TaskList sort method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":18},"test-code":{"insertions":26,"deletions":0}}},{"hash":"e172ecca69038fad7863c277b9d4add9d3cd3e82","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c6d9311448a7e0a200585883fcb8afa88785773d","isMergeCommit":false,"messageTitle":"Write tests for sorting tasklist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":36},"test-code":{"insertions":53,"deletions":1}}},{"hash":"210eccc84038c70d4e24d1c24b602b0d39ae353c","isMergeCommit":false,"messageTitle":"Fix mark and unmark removing deadline from tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":10},"test-code":{"insertions":6,"deletions":1}}},{"hash":"cfdadc090db3e62465385d724b816841359271b5","isMergeCommit":false,"messageTitle":"Update Mark and Unmark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"ec6871beb453d6ba6d02323bcf482f2519150724","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":6},"test-code":{"insertions":32,"deletions":0}}},{"hash":"13db33caea8e82f372bf317252174ebb9e4b3f78","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"4d4aacb5fb58f24fa8b6a818dad4b1f869142a1f","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"659cf9ec4174ec3e9ed4757ed2a1d1e317591dd6","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"e63f62be5f0e20a96b0cc5fa3197a7a2bf8aa35f","isMergeCommit":false,"messageTitle":"Update unmark tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"746d2d1b1a2b6c9e06a3ac05718f07b1eef10755","isMergeCommit":false,"messageTitle":"Rewrite unmarktask test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":9}}},{"hash":"8b2b93d2b8b06313aacc1ab44c1615a4aa0a9016","isMergeCommit":false,"messageTitle":"Update mark and unmark task command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":34},"test-code":{"insertions":5,"deletions":1}}},{"hash":"9b0c8437a81709a6fbcb74a79df3f81b8c777997","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"9ceaa51f42dfb2c4475d1ab3e2d6bdc6b13e7499","isMergeCommit":false,"messageTitle":"Fix import order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"997a64f27d0fbb64609ab3e8db46ca6fb60b5756","isMergeCommit":false,"messageTitle":"Write test to compare priority in Task","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-04-03","commitResults":[{"hash":"d0f64349f6cb965db306de138f3c8b659f5bbc77","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Yskie/branch-documentation","messageBody":"Add edit task command into the user guide.","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"2e52b13c029405f9530f8b0d62a1736424ff337b","isMergeCommit":true,"messageTitle":"Merge pull request #62 from nobodyishappy/branch-UI","messageBody":"Update to UI","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"79bce6e204037d770b0171507ea5ecf5cc703469","isMergeCommit":true,"messageTitle":"Merge pull request #65 from chin-herng/branch-mass-ops","messageBody":"Mass Ops","tags":["TeamTracker_v1.3.1"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kaya3842":{"docs":50,"functional-code":751,"test-code":721},"Yskie":{"docs":157,"functional-code":560,"test-code":413,"other":3},"chin-herng":{"docs":86,"functional-code":794,"test-code":1248},"nobodyishappy":{"docs":162,"functional-code":781,"test-code":827,"other":1},"breezetall":{"docs":96,"functional-code":463,"test-code":363}},"authorContributionVariance":{"Kaya3842":23654.443,"Yskie":18294.557,"chin-herng":33234.527,"nobodyishappy":67802.25,"breezetall":13931.229},"authorDisplayNameMap":{"Kaya3842":"CS2103T-W13-4 DINH..HIEN","Yskie":"CS2103T-W13-4 YONG..KANG","chin-herng":"CS2103T-W13-4 CHON..ERNG","nobodyishappy":"CS2103T-W13-4 TANG..IANG","breezetall":"CS2103T-W13-4 ABDU..SLAN"}} +{"authorDailyContributionsMap":{"Kaya3842":[{"date":"2024-03-06","commitResults":[{"hash":"5dc5526c7a70d582293b62d4e46b0d2c89ba86f6","isMergeCommit":false,"messageTitle":"Modify AboutUs.md","messageBody":"Add personal details into AboutUs.md\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"25649451a81959afeb7956f8cddac57abba87b75","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Kaya3842/master","messageBody":"Update Dinh Tran Hai Chien\u0027s AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"e3ad321076d40797dfc5d4d54214d89424be2bb0","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Yskie/master","messageBody":"Update Non-Functional Requirement in DG","fileTypesAndContributionMap":{}},{"hash":"664cf0357795f38d2cd5db1459d8f99542191f99","isMergeCommit":true,"messageTitle":"Merge pull request #27 from chin-herng/master","messageBody":"Update README page to match project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"f3caf8dd4e8017ebcbfd5e68ee949bf1dc76c03b","isMergeCommit":false,"messageTitle":"Add Glossary in DeveloperGuide","messageBody":"Define terms that are worth recording in the Glossary section.\n\nFix some typos in the DeveloperGuide.md\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"2caf6277b1bc7519cf280499ddcceeb2b8214f6c","isMergeCommit":false,"messageTitle":"Create Task class","messageBody":"Create the Task class to represent the tasks for the user to add to\nthe app.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}},{"hash":"815607a21ca22ad773a12d6be0f2d0db26d6ce6c","isMergeCommit":false,"messageTitle":"Create AddTaskCommand and AddTaskCommandParser classes","messageBody":"Let\u0027s create an AddTaskCommand class to represent the command that\nadds a task to the book.\n\nLet\u0027s create an AddTaskCommand Parser class to process the user input\nfor an add task command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":0}}},{"hash":"1a40f52e4ca2067f931c1938aed36f9eba1eedab","isMergeCommit":false,"messageTitle":"Create TaskList class","messageBody":"Create the TaskList class to store the tasks from users.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":0}}},{"hash":"7dc4a279406ace15860ee51a0bdaba4e02a6e705","isMergeCommit":false,"messageTitle":"Update add task logic","messageBody":"Update AddressBookParser.parseCommand() to recognize\nthe addtask keyword.\n\nModify AddTaskCommandParser.java to parse user input.\n\nModify AddTaskCommand.java to add task to the task list.\n\nUpdate TaskList.java to include methods to add class and to check\nduplicate tasks.\n\nUpdate ModelManager.java and MainApp.java to include\nTaskList in the constructor.\n\nUpdate Messages.java to include the method for formatting\ntask description.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":12}}},{"hash":"78eade941749fa7d34b6cfeaf090b4495c1541c2","isMergeCommit":false,"messageTitle":"Create TaskList Storage classes","messageBody":"Create TaskList Storage to store tasks into the data file.\n\nCreate Json adapted classes to store tasks in a Json file.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":229,"deletions":0}}},{"hash":"449814cfb2a5e78afeacea5e38bc9dfb235a2af8","isMergeCommit":false,"messageTitle":"Update Storage","messageBody":"Let\u0027s update the Storage package to store the task list in the\njson data file.\n\nLet\u0027s update the model package to contain the task list.\n\nLet\u0027s update the logic package to save the tasks to the task list.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":205,"deletions":23},"test-code":{"insertions":6,"deletions":5}}},{"hash":"20ebd4286fc01a8c2587a2eef2a50a0a3938fec0","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"Change the test files to include the task list in model and storage\nclasses.\n","fileTypesAndContributionMap":{"test-code":{"insertions":100,"deletions":24}}}]},{"date":"2024-03-14","commitResults":[{"hash":"f9024e65fccdbdbe5aefe5668734a9cba9c9bcef","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add test classes for new classes and methods.\n\nUpdate old tests in ModelManagerTest and StorageManager to test\nTaskList methods.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":4},"test-code":{"insertions":273,"deletions":1}}},{"hash":"cda4b668cd45d0da6c16f5d501ad5976edfa0858","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add more test classes for new classes and methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":1}}},{"hash":"74c69c4395b34ba9b5b05bc904cabde1ccb69a14","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"Add more tests for more methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":11}}},{"hash":"cbed9182f8663be7cbe7b381b1b4e56ddccb122f","isMergeCommit":false,"messageTitle":"Update StorageManagerTest","messageBody":"Add test to taskList methods in StorageManager.\n","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"aa11001e021c226ac9243e9177dcb62b3704dd1b","isMergeCommit":false,"messageTitle":"Fix StorageManagerTest","messageBody":"Fix tests for taskList methods in StorageManager.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":5}}},{"hash":"c809106d73796f5d64874a608c2cbec33b79cce7","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add more test classes for new classes and methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dcda2609941a2e5b23917a85a9639aa5bb7e7e88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into adding-list-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"f22c096598f718150c0e418b506731e8ded71fb3","isMergeCommit":true,"messageTitle":"Merge pull request #42 from chin-herng/branch-unassign-tasks","messageBody":"Unassign Tasks to Persons","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"ac1dcfbdcfdb20aa2aeb45772222cc926dd7be74","isMergeCommit":false,"messageTitle":"Create findtask command","messageBody":"Create classes for the findtask command.\n\nUpdate AddressBookParser to register findtask command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0}}},{"hash":"c31a14da408ae505f61f49ec790272a50e828399","isMergeCommit":false,"messageTitle":"Hook FindTaskCommand into application","messageBody":"Change the logic of MarkTaskCommand.execute() to use the filtered list\nfrom FindTaskCommand.\n\nSame update on execute() method for unmarktask and deletetask.\n\nFix typo in FindTaskCommand.MESSAGE_USAGE.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":8}}},{"hash":"709556dfb2ac510a43fc1d725d9af7157702d044","isMergeCommit":false,"messageTitle":"Update AssignCommand and UnassignCommand","messageBody":"Update AssignCommand.getTaskToAssign() and\nUnassignCommand.getTaskToAssign() to use the filtered list\ninstead of the original list.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"fd8298e714b4da0b7243c6eaa5c24e09b193d724","isMergeCommit":true,"messageTitle":"Merge pull request #51 from nobodyishappy/branch-documentation","messageBody":"Update to user guide","tags":["TeamTracker_v1.3a"],"fileTypesAndContributionMap":{}},{"hash":"d0ec74cbcac421180e609cedfecb01ca902b497e","isMergeCommit":false,"messageTitle":"Add test classes","messageBody":"Add tests for new classes related to FindCommand.\n\nFix import order in some classes for checkstyle.\n\nUpdate TypicalTasks() constructor to avoid instantiation.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5},"test-code":{"insertions":221,"deletions":9}}},{"hash":"03db5feb95588bd6f0aad936fe8a01050333b72f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-find-tasks","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a8b769e98e3013032893b8287efbba144f41b4a4","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-04-01","commitResults":[{"hash":"1c208c8a9bcda6c7d36ef561634101696a3b391b","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Yskie/branch-documentation","messageBody":"Update to developer guide for the logic and redo/undo commands","fileTypesAndContributionMap":{}},{"hash":"f99cf1b08ec16d5b23d65d7258e5a3818500cdfb","isMergeCommit":true,"messageTitle":"Merge pull request #55 from chin-herng/branch-update-ug","messageBody":"Update to user guide for the assign, unassign and cleartask commands","fileTypesAndContributionMap":{}},{"hash":"20d2f73e8f337030589e1fea1c558bd5ce8aa3e2","isMergeCommit":true,"messageTitle":"Merge pull request #56 from chin-herng/branch-update-dg","messageBody":"Update to developer guide for the model component","fileTypesAndContributionMap":{}},{"hash":"6f846cc50690d4e5334ae56f7e0d658ad3f23842","isMergeCommit":true,"messageTitle":"Merge pull request #57 from breezetall/update-developer-guide","messageBody":"Update developer guide for UI","fileTypesAndContributionMap":{}}]},{"date":"2024-04-03","commitResults":[{"hash":"7183199528138ad41e58c307d261415a07bc57b6","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Yskie/branch-edit-command","messageBody":"The Edit Task Command","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"39e8c2aec8c3c06bc13c28f561a08e50026797dd","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"Update the findtask command in the User Guide.\n","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":0}}},{"hash":"643aba4c0dc397361e17aae243e71174ab019e3a","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"Update StorageClassDiagram.puml to incorporate TaskList in the\nUML Diagram.\n\nUpdate DeveloperGuide.md for the Storage component to include TaskList\nclasses.\n","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":4}}}]}],"Yskie":[{"date":"2024-03-06","commitResults":[{"hash":"6a619e789b36226aee8f1ad8ba15582ef4c653ff","isMergeCommit":false,"messageTitle":"Update Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"bd074253dfa66d3b16cfc99447291941de64a9c9","isMergeCommit":false,"messageTitle":"Modify Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"172085faf0e4b3502af1a1f3f27e955d3ed1b93a","isMergeCommit":false,"messageTitle":"Modify Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d3f5515d1a2731225994c6c333e1cfd4025837f7","isMergeCommit":true,"messageTitle":"Merge pull request #17 from breezetall/master","messageBody":"Update Abdul Khaliq\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"f2013cb35d2ec15829bf983181fc08d5045b5403","isMergeCommit":false,"messageTitle":"Update Non-Functional Requirements in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":3}}},{"hash":"5cd44ecbb1516d48c5923170eae1f95f6f5e5d58","isMergeCommit":false,"messageTitle":"Modify Non-Functional Requirements in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"debd3c4b3ed83293dcae61a5373288998e3b09ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"1560c9c39fc62b4702ef9bcdd37ef2d8690d9dbd","isMergeCommit":false,"messageTitle":"Modify NFR section of DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"787cb93808ec38b2639f9d7655bcf6f026cfabba","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Yskie/dg-nfr","messageBody":"Modify NFR section of Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"abd9989ce6807636a19e11bc8fbbbd238e00c8e6","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Kaya3842/branch-add-tasks","messageBody":"Add personal tasks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"ea99bdd567614baa0565afcbabda28fa3b6e142c","isMergeCommit":false,"messageTitle":"Add Delete Task Function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":1},"test-code":{"insertions":22,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"de51ab487e4db711b6e713dc2135304b8af78482","isMergeCommit":false,"messageTitle":"Fix Checkstyle Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"9cb7f0e35e3ac419cf23dfaf1ca1edc9150a25bf","isMergeCommit":false,"messageTitle":"Modify JavaDoc Comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"5dab68064a092419e1fe64c0367bb8795184e5c5","isMergeCommit":false,"messageTitle":"Modify JavaDoc Comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"907aa93f539e7c1aa8276e028401887255fc2a28","isMergeCommit":false,"messageTitle":"Refactor code for delete task feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":23},"test-code":{"insertions":3,"deletions":2}}},{"hash":"9124aee8e8c78509de42844cd27406da663565e0","isMergeCommit":false,"messageTitle":"Fix Checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"c2b395a9b81bf5e74b9d20aee04d70bd58aecc97","isMergeCommit":false,"messageTitle":"Write test for delete command","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"test-code":{"insertions":45,"deletions":0}}},{"hash":"262b2898165cc00e1546b261fb74f31b6f419c69","isMergeCommit":false,"messageTitle":"Fix checkstyle issues in delete task test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"7bd0bc9c9b8c4f04191f3998fa2b03502bff1cdc","isMergeCommit":false,"messageTitle":"Write test for delete command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":8}}},{"hash":"e5d15d31394383d63e02fd3982e5cd2daa95ddfd","isMergeCommit":false,"messageTitle":"Write tests for DeleteTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":0},"test-code":{"insertions":25,"deletions":2}}},{"hash":"173e92179da449a204527341171014de8eac0db6","isMergeCommit":false,"messageTitle":"Write tests for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":8},"test-code":{"insertions":53,"deletions":2}}},{"hash":"087b4dc7757e0715cc1d2665256046a93c5828a8","isMergeCommit":false,"messageTitle":"Refactor code for delete task parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"254318b9e4ce1a92c765572879245aa2348e2e83","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-delete-command\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cdbc4b646d40dbef5dbe2dcbd4e76381002ed9b4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Yskie/master","messageBody":"Merging Assign Task","fileTypesAndContributionMap":{}},{"hash":"4512c2c00e09ec114e004a9f21fef661675d0c63","isMergeCommit":false,"messageTitle":"Implement deletion of assigned tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":36},"test-code":{"insertions":24,"deletions":13}}},{"hash":"39f8b18fec737794fd66f6c8c9b31a3f7dcaa607","isMergeCommit":false,"messageTitle":"Write test for delete assign task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":15,"deletions":0}}}]},{"date":"2024-03-25","commitResults":[{"hash":"0982da5155193163f0dfccba5ea3e3c4badf6351","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":3}}},{"hash":"a040a5e65d61942e72aa3c99511312c1d9174c78","isMergeCommit":false,"messageTitle":"Fix minor typo in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aa42981782ba309477b61098057142cfde9c1524","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}}]},{"date":"2024-03-29","commitResults":[{"hash":"3e6e66f0b865c0b9899141edd28887cfc1d5190c","isMergeCommit":false,"messageTitle":"Add Edit Feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":346,"deletions":40},"test-code":{"insertions":10,"deletions":0}}},{"hash":"3826e85afcb8d628c9e976fe0c63875ff8c9bb56","isMergeCommit":false,"messageTitle":"Modify Logic section in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":34}}}]},{"date":"2024-03-30","commitResults":[{"hash":"b544250b2b3b38385a2f7ec3fed8eec796ce31ce","isMergeCommit":false,"messageTitle":"Modify Implementation in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":91,"deletions":85}}},{"hash":"e73bb05b54c80dc0367fd86879894232282665ad","isMergeCommit":false,"messageTitle":"Fix Checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c67e075c45055922a6581681c4d91c02660bad52","isMergeCommit":false,"messageTitle":"Fix minor documentation issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"8668f89e7b4934596ffa3b9be6e9e30b6fe4b5b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-documentation","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-04-01","commitResults":[{"hash":"d9e95e21d516e4069246c7bf0d3d778224f9b507","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a49c4482255d9c9dec708fefc5cf0c79a0ac060d","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Yskie/branch-edit-command","messageBody":"Add Edit Feature","fileTypesAndContributionMap":{}}]},{"date":"2024-04-02","commitResults":[{"hash":"dda9edc92dda32474fab623511088979d57c502d","isMergeCommit":true,"messageTitle":"Merge pull request #58 from breezetall/update-priority","messageBody":"Update priority","fileTypesAndContributionMap":{}},{"hash":"e1146700b79814090ad7c0ccae1e569c7e647a8a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5fa4f0e560419de119cf0d30ca3da998a82b99e3","isMergeCommit":false,"messageTitle":"Add edits for deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":84,"deletions":45},"test-code":{"insertions":0,"deletions":10}}},{"hash":"f8b583878bb6ebfc777da511e293a80e5f3a7466","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-edit-command\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5bc62125dc146ce16501f3446a6eb382fff43732","isMergeCommit":true,"messageTitle":"Merge pull request #4 from Yskie/master","messageBody":"Merge pull request for edit command","fileTypesAndContributionMap":{}},{"hash":"c028d4bb1d4e02ec219be331eb8c70dfd06a26a6","isMergeCommit":false,"messageTitle":"Add edit task function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":60},"docs":{"insertions":0,"deletions":4},"test-code":{"insertions":2,"deletions":5}}},{"hash":"7acbe416ab409a7c6b63e4449bf27891ab8b45bb","isMergeCommit":false,"messageTitle":"Implement full edit task command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":72},"test-code":{"insertions":218,"deletions":9}}},{"hash":"f055472e8f74a524bf42451626f07dbdb8cda503","isMergeCommit":false,"messageTitle":"Write test for Edit Task Parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":7},"test-code":{"insertions":62,"deletions":2}}}]},{"date":"2024-04-03","commitResults":[{"hash":"bf69d0742ec875f1e8983550d7e485096b4b506c","isMergeCommit":false,"messageTitle":"Fix some java docs issues and update ug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":8},"other":{"insertions":4,"deletions":0},"docs":{"insertions":10,"deletions":0},"test-code":{"insertions":2,"deletions":3}}},{"hash":"8956ca4c7000869dbeee6eeb71114700811c95cb","isMergeCommit":true,"messageTitle":"Merge pull request #5 from Yskie/branch-edit-command","messageBody":"Add edit command in ug and fix javadocs comments","fileTypesAndContributionMap":{}},{"hash":"8ae0e5453c0db7232c332f61480f33db9747a548","isMergeCommit":false,"messageTitle":"Fix minor typo in the user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"docs":{"insertions":2,"deletions":2}}},{"hash":"da32394febb3a518e54767340b22ac9524af3d0c","isMergeCommit":false,"messageTitle":"Modify user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":1}}}]},{"date":"2024-04-05","commitResults":[{"hash":"1baaa192cc94115a202f3adf94faa138d41e9446","isMergeCommit":true,"messageTitle":"Merge pull request #66 from breezetall/update-developer-guide2","messageBody":"Update Ui image","fileTypesAndContributionMap":{}}]}],"chin-herng":[{"date":"2024-03-06","commitResults":[{"hash":"898d85c7dbe463226e11bb1d0e264b834d15cfa5","isMergeCommit":false,"messageTitle":"Update Chin Herng\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"fda490fd84aa103c70da6195a1a81535be39eb84","isMergeCommit":true,"messageTitle":"Merge pull request #24 from nobodyishappy/master","messageBody":"Update product scope and user stories in developer guide","fileTypesAndContributionMap":{}},{"hash":"bfa98f345565e9ff49388cb2852e43229a4afbc1","isMergeCommit":false,"messageTitle":"Update README page to match project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":11}}},{"hash":"1cf99c1b51f220e0cc8c55f838fea9d7baa5168c","isMergeCommit":false,"messageTitle":"README.md: Add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"6e5e41813ab2000aaa751432411c453e0b7a8a79","isMergeCommit":false,"messageTitle":"Create assign command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"af8246fc83cc5b217f0be6be68155098e4be24e6","isMergeCommit":false,"messageTitle":"Hook AssignCommand into application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"6c3612946f6a8350fc614b61555b3177179a2ca9","isMergeCommit":false,"messageTitle":"Change AssignCommand to throw an exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"3dd02e7974f758cd0b9bf86ed2e587893f2f9b14","isMergeCommit":false,"messageTitle":"Change AssignCommand to parse input from user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":5}}}]},{"date":"2024-03-17","commitResults":[{"hash":"44ceea59d102e14e47c10000745eae34040ff0b7","isMergeCommit":false,"messageTitle":"Modify Person to support Set\u003cTask\u003e instead of Set\u003cTag\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":107},"test-code":{"insertions":75,"deletions":163}}},{"hash":"0354be4ac6aa42abaf12756e4147d6b23c0b8213","isMergeCommit":false,"messageTitle":"Fix UI not displaying tasks correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d37f5532be6ed9d4b0ad9427db928f402fc83f14","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":6},"test-code":{"insertions":156,"deletions":56}}},{"hash":"9f6f142afb3563c6d48b81d8aa724fe027d679df","isMergeCommit":false,"messageTitle":"Fix success message of assign","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"569daf55a93fe62a2f93b2c965918bd9165f0734","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"af562057fd29940268a243c99003770fe4b4d7b7","isMergeCommit":false,"messageTitle":"AssignCommandTest.java: fix broken tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"246216f2699b58859ea3cfdf70aa85a14d30943d","isMergeCommit":false,"messageTitle":"Write tests for AssignCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":86,"deletions":4}}},{"hash":"76fb6477e13739982f47e69fc243a4bc1ab6971a","isMergeCommit":false,"messageTitle":"Write tests for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"658a957ade7156dc1d20a9f6a08dcd09f019d91d","isMergeCommit":false,"messageTitle":"Add test for same object for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"718ea3c7d255abedcb26533ec295e6054db0f97f","isMergeCommit":false,"messageTitle":"Add test for different task index for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"b1d36431f6db7db6746746711eb295f5d030cff7","isMergeCommit":false,"messageTitle":"Write test for parsing assign commands","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"975d8798f88b9e231934a85277c206159ac1701f","isMergeCommit":false,"messageTitle":"Refactor AssignCommand by extracting out createEditedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"335dfa2457cc5d2a2b88718934d3381b499a9204","isMergeCommit":false,"messageTitle":"Add addTask and deleteTask in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":18}}},{"hash":"c5ef6cc5fe2a9c91ae4123eaf9b7940106d3bb8d","isMergeCommit":false,"messageTitle":"Write test for Person#deleteTask","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"7cf9ff91c87ec739c45499c3a6f1c918316931c4","isMergeCommit":true,"messageTitle":"Merge pull request #37 from Yskie/branch-delete-command","messageBody":"The Delete Task Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"70704b48fac50ba8d30cef5a89e2d80ed4b6afbf","isMergeCommit":false,"messageTitle":"Create unassign command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"b999684150c79e67a30f610c36f0307b963831d0","isMergeCommit":false,"messageTitle":"Hook UnassignCommand into application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"8716e63c31c36709a13e1939aa16b08bf6a56dc9","isMergeCommit":false,"messageTitle":"Change UnassignCommand to throw an exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":2}}},{"hash":"d15295fdcf1cc0f9fa6e652b487a956fbbc5867e","isMergeCommit":false,"messageTitle":"Change UnassignCommand to parse input from user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":4}}},{"hash":"735cebec134fbe2689ad6cffdda26bd35aed5ffb","isMergeCommit":false,"messageTitle":"Refactor AssignCommand and update UnassignCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":8}}},{"hash":"52ee942d2f6054495b639ad9ce1c1656ec1caee6","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":128,"deletions":0}}},{"hash":"4dc8250e571afecd49ba970fe47a488574ada555","isMergeCommit":false,"messageTitle":"Write tests for UnassignCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":84,"deletions":2}}},{"hash":"31ceec4b581a69a7c687f343ed5ff7959525d55b","isMergeCommit":false,"messageTitle":"Write test for parsing unassign commands","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"0c797128139647300bc730fb55d6d1bbcde34550","isMergeCommit":false,"messageTitle":"Create cleartask command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"34835ab4ba103709548b9b9231b36d686ad71f7a","isMergeCommit":false,"messageTitle":"Hook ClearTaskCommand into application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"ed6584a0721d2466ca8b47df13faf5ae8d120e2f","isMergeCommit":false,"messageTitle":"Change ClearTaskCommand to throw an exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":2}}},{"hash":"b673dfd45be8dfc13fc08c3376b78752e5bc4899","isMergeCommit":false,"messageTitle":"Change ClearTaskCommand to parse input from user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":4}}},{"hash":"5b218b6a14b90b735f4bf036d4d0a06c2a9ff50d","isMergeCommit":false,"messageTitle":"Update ClearTaskCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":3}}},{"hash":"0565e1334bd9d44d3f5d2b596d1996fdb312ee41","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":141,"deletions":0}}}]},{"date":"2024-03-25","commitResults":[{"hash":"b57c0d168be1cc31bbb063b37283e304f347d77f","isMergeCommit":false,"messageTitle":"Implement mass delete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":17}}}]},{"date":"2024-03-26","commitResults":[{"hash":"2dcd6237108170b23e7c55ae7c6181c7f7a30ffc","isMergeCommit":false,"messageTitle":"Write tests for mass delete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":20},"test-code":{"insertions":59,"deletions":16}}},{"hash":"ba265f46f28b7c9b01f7550b7e5bfd6a35937b5b","isMergeCommit":false,"messageTitle":"Refactor DeleteCommand#toString() to return in one statement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"aabd1ff54c58109774159dc30135a001468c78fd","isMergeCommit":false,"messageTitle":"Implement mass deletetask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":41},"test-code":{"insertions":5,"deletions":5}}},{"hash":"28d33739fea02a72dbbcbbfca289bd33060c8b5b","isMergeCommit":false,"messageTitle":"Rename MESSAGE_DELETE_PERSON_SUCCESS","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"efc0457b6a39991a968b7de8ad8abc81e5ce42f6","isMergeCommit":false,"messageTitle":"Write tests for mass deletetask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":69,"deletions":18}}},{"hash":"3ce96ec1e5000b64deb025b3ca2dd8886c40bbcd","isMergeCommit":false,"messageTitle":"Write tests for duplicate indices","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":0}}}]},{"date":"2024-03-27","commitResults":[{"hash":"2a9175da5e41fd3b719dbfb72565553985cb5f3b","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d99aad9e47de91624de0e7472d2567c865b67bf6","isMergeCommit":true,"messageTitle":"Merge pull request #48 from nobodyishappy/branch-task-deadline","messageBody":"Branch task deadline","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"551f48fa023034746d036f22e0736f30930775f6","isMergeCommit":true,"messageTitle":"Merge pull request #49 from breezetall/priority","messageBody":"Add Priority","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"eafbba6eaa1e4905bc4697f2da83d0054b040eb4","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":3}}},{"hash":"1f69c3d881a70bd62c60650c2b3ab3d93d3fd371","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":23}}},{"hash":"6223716bc8e59b0a2ade63ffb85a8115da5f60a6","isMergeCommit":false,"messageTitle":"Update alternative for model component of DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}},{"hash":"c3b4ca55813e9ce73be2b6004d4eb8c50b67676e","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Kaya3842/branch-find-tasks","messageBody":"Branch find tasks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-31","commitResults":[{"hash":"7bee3da26d0a0f22a4fbfdbe15d774a110b0467d","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"66d73c0533b92cc2024043c3b42029a23edbeddd","isMergeCommit":false,"messageTitle":"Change formatTask to format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-04-04","commitResults":[{"hash":"fd6651a528598dd635d0d8d9991b4749f5d590f6","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"26163013dae237be5c92eb33a466ac5ecc8a5289","isMergeCommit":false,"messageTitle":"Change format to formatTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":5,"deletions":5}}},{"hash":"f40f6d73e6ab6327272510a1a0f03a5d9ec18e59","isMergeCommit":false,"messageTitle":"Change naming for tests in DeleteTaskCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":7}}},{"hash":"9206912fc03e2e6f57b753161242eb0d1639eadc","isMergeCommit":false,"messageTitle":"Implement and write tests for mass marktask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":30},"test-code":{"insertions":109,"deletions":19}}},{"hash":"40326db4bde3f2a82e1eb166bb76d7c67856d552","isMergeCommit":false,"messageTitle":"Write tests for parsing multiple indices","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"b94c6fad78925f7bef13c913da2536f08c7d2af2","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Kaya3842/branch-update-user-guide","messageBody":"Update User Guide for findtask command.","fileTypesAndContributionMap":{}},{"hash":"cf20f4cc66417c01ff2c2c9a48d8006cd2a6ae49","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Kaya3842/branch-update-developer-guide","messageBody":"Update Developer Guide for the Storage component","tags":["TeamTracker_v1.3b"],"fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"a648a3a09251123bfbeca2993a518a1aa68dc3af","isMergeCommit":false,"messageTitle":"Implement mass unmarktask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":25}}},{"hash":"8bf7fd7bee4bd913a47eb2b1375c943590312a9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-mass-ops","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d08a78f4649bf0bcd5245b6dd0f1be41b70736bd","isMergeCommit":false,"messageTitle":"Write tests for mass unmarktask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":12},"test-code":{"insertions":108,"deletions":25}}},{"hash":"87fd4feffde4f8807efb5331b4320ea15e8cfca7","isMergeCommit":false,"messageTitle":"Remove unnecessary imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"1402daba1be931e87aac56caef927261dbceb785","isMergeCommit":false,"messageTitle":"Implement mass assign to people","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":32}}},{"hash":"62f0eeac7634691f3c094794ece4f54ae4a0ce9f","isMergeCommit":false,"messageTitle":"Write tests for mass assign to people","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4},"test-code":{"insertions":91,"deletions":14}}},{"hash":"365ca909f7a732a1dc9fe2436f71bcf92945b4e0","isMergeCommit":false,"messageTitle":"Implement mass unassign to people","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":56,"deletions":33}}},{"hash":"d6ee18e3635b5510b81c339531c69a2511c8661f","isMergeCommit":false,"messageTitle":"Write tests for mass unassign to people","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":110,"deletions":29}}},{"hash":"2e8a60266aedb367d22ad434e45245b667e5e653","isMergeCommit":false,"messageTitle":"Remove unnecessary imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]}],"nobodyishappy":[{"date":"2024-03-04","commitResults":[{"hash":"915d3cbcb1268c209db4809738c5839cb7b1c3ab","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-W13-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"cf67e11de780459221e906d2bceddfb5190e188e","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"Changing product name","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"019455c8951b12888a4cb968b85cd946f2ed14a6","isMergeCommit":true,"messageTitle":"Merge pull request #21 from chin-herng/master","messageBody":"Update Chin Herng\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"f54e4039b477720052c6c773e159c6903ae13f47","isMergeCommit":false,"messageTitle":"Update Hao Liang\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":11}}},{"hash":"b5e582ff4d9dd0f78a49b8d58b6aff55641152da","isMergeCommit":false,"messageTitle":"Update product scope in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"0be05672a478d5604df050bc5596b92ffeaef044","isMergeCommit":true,"messageTitle":"Merge pull request #25 from breezetall/master","messageBody":"Update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"919dbc0a0bec9f94de5f0449739e40e62f6bce49","isMergeCommit":true,"messageTitle":"Merge pull request #29 from chin-herng/master","messageBody":"Add UI mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2da073afc525de8b21a42619408f4eb39c7292e2","isMergeCommit":false,"messageTitle":"Implement mark and unmark of tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":3},"test-code":{"insertions":240,"deletions":1}}},{"hash":"89938bd5dba40dbe1abeaddf4983ec49e38c2bae","isMergeCommit":false,"messageTitle":"Change code from CRLF to LF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":189},"test-code":{"insertions":207,"deletions":207}}},{"hash":"c76cdaf98b380b00676dbfe4929e125f2a3c300e","isMergeCommit":false,"messageTitle":"Fix error message for out-of-bound index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ae1d1c817d7e0a43af78cdd05aca190e5bfd8336","isMergeCommit":false,"messageTitle":"Fix invalid index test for mark and unmark","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f88400294d2ef43bc6c3ebc3707b6c525e898c29","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into branch-mark-tasks","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"e6f21bdd090ed3f16c424df99c73a415b789e4e5","isMergeCommit":true,"messageTitle":"Merge pull request #39 from breezetall/adding-list-command","messageBody":"Adding list command","fileTypesAndContributionMap":{}},{"hash":"a7f8aa41ff0a427b9da64e452755e2575079ddc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-mark-tasks\u0027 into branch-merge-from-main","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27d73afb139c1b67f342b715d3deaca4da5a5ba3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nobodyishappy/branch-merge-from-main","messageBody":"Merge from main","fileTypesAndContributionMap":{}},{"hash":"bbecd9327700ee8e7bd624cd9149b8b390b595b5","isMergeCommit":false,"messageTitle":"Refactor task class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":338,"deletions":113},"test-code":{"insertions":176,"deletions":101}}},{"hash":"fefb6c203e0e6198f2752c137311991731ef476c","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":55},"test-code":{"insertions":71,"deletions":43}}},{"hash":"9584609888fa27d789e1441a14c2608eb5354bd2","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"test-code":{"insertions":40,"deletions":2}}}]},{"date":"2024-03-25","commitResults":[{"hash":"925c448fca446c0fd7bdfa7f8cdfa542255e6c44","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":3}}},{"hash":"04cd8119f5aa15d15e8a312e3b8051e6625f92b0","isMergeCommit":false,"messageTitle":"Add deadline for tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":4}}}]},{"date":"2024-03-26","commitResults":[{"hash":"2a478a407f9276f53cc72405efa48c6f31f52dbd","isMergeCommit":false,"messageTitle":"Implement optional deadline for task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":36},"test-code":{"insertions":63,"deletions":9}}},{"hash":"3e1fe532b6572d42ea40a6e607a16bb86c9dd874","isMergeCommit":false,"messageTitle":"Add test for deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":2},"test-code":{"insertions":388,"deletions":14}}}]},{"date":"2024-03-27","commitResults":[{"hash":"7464722697a3b61ade73719bfca0179c3ba88d86","isMergeCommit":false,"messageTitle":"Update to javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":8}}},{"hash":"d40c9275eee52ac6e455109a340b7cc1e82c4f78","isMergeCommit":true,"messageTitle":"Merge pull request #44 from chin-herng/branch-clear-tasks","messageBody":"Clear Tasks of Persons","fileTypesAndContributionMap":{}}]},{"date":"2024-03-29","commitResults":[{"hash":"3efd8241f39cdccf191cd778b6bf1cf125dabe57","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into priority","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2a891d465c26396318ab985bb8f622ddd89959ba","isMergeCommit":false,"messageTitle":"Update to user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":26,"deletions":27}}},{"hash":"a5265f607ade10277c3e8c21f87132c84199f766","isMergeCommit":false,"messageTitle":"Update to version number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-30","commitResults":[{"hash":"b18b5fd3a972b40d1a8ee6ae2be987819e3d6e80","isMergeCommit":false,"messageTitle":"Update to developer guide for the proposed implementation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":1,"deletions":1},"docs":{"insertions":38,"deletions":1}}},{"hash":"e3f3612464e6d6472610448ed0ea9d991a4ec399","isMergeCommit":false,"messageTitle":"Update to command names for grouping","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"45f0a667d097011a141b6c6ef2d1653356aea90b","isMergeCommit":false,"messageTitle":"Add uml diagrams for grouping implementation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":85,"deletions":5}}},{"hash":"71c2b70c125caaa46574cf4d1a712a01f955515f","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":6}}}]},{"date":"2024-04-04","commitResults":[{"hash":"754ecac790f5e5bae2cdf1b33119b622a5b8dad3","isMergeCommit":false,"messageTitle":"Update to UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":1}}},{"hash":"43c091f2c53a12e91f648009ec2cefe735326e78","isMergeCommit":false,"messageTitle":"Add headings to lists","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}}]}],"breezetall":[{"date":"2024-03-06","commitResults":[{"hash":"635ad2a9578b9694e0d4f5a8060f20bd31e65d08","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Yskie/master","messageBody":"Update Shi Kang\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"87badb2d15f3d4bf908153f565c075930e3e1553","isMergeCommit":false,"messageTitle":"Update Khaliq\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1002cad86f886c88b96fd0bc018638d91c8210a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a569c1d265307c2fa724734158397dc02e141273","isMergeCommit":false,"messageTitle":"Add Khaliq\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"e3111b9d39e66f40f3488a1135cd1e9c46cd9cd6","isMergeCommit":true,"messageTitle":"Merge pull request #23 from nobodyishappy/master","messageBody":"Update Hao Liang\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"b6a976ae1deb2e241764015a6aab35892bf1db6f","isMergeCommit":false,"messageTitle":"Add use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":9}}}]},{"date":"2024-03-07","commitResults":[{"hash":"6443f4e75030b16e1e14c0b9d566d780b944c2ad","isMergeCommit":true,"messageTitle":"Merge pull request #28 from Kaya3842/master","messageBody":"Add Glossary in DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"594e5dba9d6d11c80e800f59a9c4e52536abed20","isMergeCommit":false,"messageTitle":"Add ui panel for task list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":183,"deletions":15}}}]},{"date":"2024-03-19","commitResults":[{"hash":"45818bec35a4f9f1f90bd0464aa12ba55661778e","isMergeCommit":false,"messageTitle":"Add listtask command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":21}}},{"hash":"8713ea0c79fec11705fe8e6df46183c44e84b129","isMergeCommit":false,"messageTitle":"Add observableList to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":10}}},{"hash":"3ff249a30ae9e4ae31cd0380c2e11bf6682dde00","isMergeCommit":true,"messageTitle":"Merge pull request #36 from chin-herng/branch-assign-tasks","messageBody":"Assign Tasks to Persons","fileTypesAndContributionMap":{}},{"hash":"e2a0fdc97413557faf3149c210d2db9f8c25821e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into adding-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"feab65db237e22c34e6a97e33a7e2274dfb1154b","isMergeCommit":true,"messageTitle":"Merge pull request #1 from breezetall/adding-list-command","messageBody":"Adding list command","fileTypesAndContributionMap":{}},{"hash":"2e7c29263be3c9e201154a418c0f89733f57129a","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":13}}},{"hash":"d28921ceb10c4ebb8021bc50defbe06190e1bb3f","isMergeCommit":false,"messageTitle":"Modify observableList in TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":10,"deletions":0}}},{"hash":"ed24a0693635adddcc613cb71a0d5b764495f382","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"02ed05c31e28d8dd14400556c42333759ff32097","isMergeCommit":false,"messageTitle":"Write tests for filteredTaskLists and ListCommandTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":45,"deletions":0}}},{"hash":"5c40429e993bacd6fa600420ac37faf86f9a605d","isMergeCommit":false,"messageTitle":"Remove test for filtered lists","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"0440c540f1db1f6d564726b6df9a3acf6aadd1be","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"2d159919dd17ea6e7e1b159c89b0739f3bc8093e","isMergeCommit":false,"messageTitle":"Write tests for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":7,"deletions":10}}},{"hash":"44b4cde699d48a864d14f9a7bd36f34427f2ee5e","isMergeCommit":false,"messageTitle":"Fix imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"df7a966eeb51daf3820ac8d0038cf474cf70fdca","isMergeCommit":false,"messageTitle":"Update test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"f72129d694e353441d6a42ded2606247636d2eb9","isMergeCommit":false,"messageTitle":"Remove equals check for filteredTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"3506b125df120bfd538115e564128320fb3e5e2c","isMergeCommit":false,"messageTitle":"Fix javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"6f0203d2c0e697b472ff030c6a6a0f6bf384aff4","isMergeCommit":true,"messageTitle":"Merge pull request #40 from nobodyishappy/branch-mark-tasks","messageBody":"Implement mark and unmark for tasks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"d7a6bbfb88332211c3deb56ca880e97114b78ea0","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-26","commitResults":[{"hash":"ac89a931cdfd7b84b90b47cc50e9d857c6ee5e46","isMergeCommit":false,"messageTitle":"Add priority to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":89,"deletions":21},"test-code":{"insertions":16,"deletions":7}}},{"hash":"93c9d40dcb450ddd6d40acaf818d9bd10e4cd34b","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":4}}},{"hash":"06233a420abb94033cec018b29408ab16ddfcad3","isMergeCommit":false,"messageTitle":"Fix mark command not updating ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":2}}},{"hash":"f8b27ea7a5a487b0c04dd2ab0290c12cad775e54","isMergeCommit":false,"messageTitle":"Add sort by priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":22}}},{"hash":"b652a93f5639f23239e1bad728a8e5d4cda09144","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":46,"deletions":29}}},{"hash":"4823688e78cc27b0e11f1d1487b9d3178782c4c8","isMergeCommit":false,"messageTitle":"Fix order of imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":7}}},{"hash":"1ad8d8cd668709babf529a8f12fb7109519c4e7c","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":4}}},{"hash":"9b8267516006cae05c6afb7461e16862ec64e27f","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ec0a112d2fd433ac1881638a41a6a14c17cdbb4","isMergeCommit":false,"messageTitle":"Update user guide to include priority","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":68,"deletions":10}}},{"hash":"8f66c9907b17895f358cc33c3245099c93695316","isMergeCommit":false,"messageTitle":"Update javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7fd43eb70029712533a650e1ad9c54935d32b7be","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into priority","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a69a71dc077ab913bd07cf295ce0858df816750a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide and UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"d97e6043586fde130405cf255444bd704158fc9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-priority\u0027 into priority","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-27","commitResults":[{"hash":"cc971b4a382090d69a70fa64d01887f681c871f3","isMergeCommit":false,"messageTitle":"Write test for TaskPriority","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":0}}}]},{"date":"2024-03-29","commitResults":[{"hash":"f9b596cc66a172994e84c04bf6f5cc875962951f","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":7},"test-code":{"insertions":25,"deletions":11}}},{"hash":"2d0d69e0452b6b8777dca2e6f6b2c37aa71ded71","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-30","commitResults":[{"hash":"68586a0f0804d2bcbd20cb1f4d254d0455c7c673","isMergeCommit":true,"messageTitle":"Merge pull request #53 from nobodyishappy/branch-documentation","messageBody":"Update to developer guide for the proposed implementation","fileTypesAndContributionMap":{}},{"hash":"23c0431f19189fb8f92b6cb5432f9fbf3086ac49","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7992f3c14cb67e309e3d958fdd1d4a9f5021bcc2","isMergeCommit":false,"messageTitle":"Update ui class diagram and developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}}]},{"date":"2024-04-01","commitResults":[{"hash":"7fcefebf90319466720df9e731d7473e2df56e68","isMergeCommit":false,"messageTitle":"Add test for invalid priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":1},"test-code":{"insertions":16,"deletions":0}}},{"hash":"986996ceace462a26c7a3b1e59a6c39c53d50772","isMergeCommit":false,"messageTitle":"Sort the tasks by status and priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":8}}},{"hash":"c9ae2931d71f51b5f59798900213aefd037cf549","isMergeCommit":false,"messageTitle":"Add sort by deadline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":1}}},{"hash":"2cf24bda464567ed106e133575628d1551bad694","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"5d57ed3c3c0f33b1dae943fb4a9abe61bc33538c","isMergeCommit":false,"messageTitle":"Rewrite TaskList sort method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":18},"test-code":{"insertions":26,"deletions":0}}},{"hash":"e172ecca69038fad7863c277b9d4add9d3cd3e82","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c6d9311448a7e0a200585883fcb8afa88785773d","isMergeCommit":false,"messageTitle":"Write tests for sorting tasklist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":36},"test-code":{"insertions":53,"deletions":1}}},{"hash":"210eccc84038c70d4e24d1c24b602b0d39ae353c","isMergeCommit":false,"messageTitle":"Fix mark and unmark removing deadline from tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":10},"test-code":{"insertions":6,"deletions":1}}},{"hash":"cfdadc090db3e62465385d724b816841359271b5","isMergeCommit":false,"messageTitle":"Update Mark and Unmark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"ec6871beb453d6ba6d02323bcf482f2519150724","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":6},"test-code":{"insertions":32,"deletions":0}}},{"hash":"13db33caea8e82f372bf317252174ebb9e4b3f78","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"4d4aacb5fb58f24fa8b6a818dad4b1f869142a1f","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"659cf9ec4174ec3e9ed4757ed2a1d1e317591dd6","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"e63f62be5f0e20a96b0cc5fa3197a7a2bf8aa35f","isMergeCommit":false,"messageTitle":"Update unmark tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"746d2d1b1a2b6c9e06a3ac05718f07b1eef10755","isMergeCommit":false,"messageTitle":"Rewrite unmarktask test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":9}}},{"hash":"8b2b93d2b8b06313aacc1ab44c1615a4aa0a9016","isMergeCommit":false,"messageTitle":"Update mark and unmark task command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":34},"test-code":{"insertions":5,"deletions":1}}},{"hash":"9b0c8437a81709a6fbcb74a79df3f81b8c777997","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"9ceaa51f42dfb2c4475d1ab3e2d6bdc6b13e7499","isMergeCommit":false,"messageTitle":"Fix import order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"997a64f27d0fbb64609ab3e8db46ca6fb60b5756","isMergeCommit":false,"messageTitle":"Write test to compare priority in Task","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-04-03","commitResults":[{"hash":"d0f64349f6cb965db306de138f3c8b659f5bbc77","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Yskie/branch-documentation","messageBody":"Add edit task command into the user guide.","fileTypesAndContributionMap":{}}]},{"date":"2024-04-04","commitResults":[{"hash":"2e52b13c029405f9530f8b0d62a1736424ff337b","isMergeCommit":true,"messageTitle":"Merge pull request #62 from nobodyishappy/branch-UI","messageBody":"Update to UI","fileTypesAndContributionMap":{}}]},{"date":"2024-04-05","commitResults":[{"hash":"79bce6e204037d770b0171507ea5ecf5cc703469","isMergeCommit":true,"messageTitle":"Merge pull request #65 from chin-herng/branch-mass-ops","messageBody":"Mass Ops","tags":["TeamTracker_v1.3.1"],"fileTypesAndContributionMap":{}},{"hash":"4f17c52d878d9745322b97c8b846afe10e9f6ae5","isMergeCommit":false,"messageTitle":"Update Ui image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"f6e8687dc61564ab1e99c6bceba2c05c14182a97","isMergeCommit":false,"messageTitle":"Update summary of index","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Kaya3842":{"docs":50,"functional-code":751,"test-code":721},"Yskie":{"docs":157,"functional-code":560,"test-code":413,"other":3},"chin-herng":{"docs":86,"functional-code":794,"test-code":1248},"nobodyishappy":{"docs":161,"functional-code":781,"test-code":827,"other":1},"breezetall":{"docs":100,"functional-code":463,"test-code":363}},"authorContributionVariance":{"Kaya3842":23654.443,"Yskie":18294.557,"chin-herng":33234.527,"nobodyishappy":67802.25,"breezetall":13912.574},"authorDisplayNameMap":{"Kaya3842":"CS2103T-W13-4 DINH..HIEN","Yskie":"CS2103T-W13-4 YONG..KANG","chin-herng":"CS2103T-W13-4 CHON..ERNG","nobodyishappy":"CS2103T-W13-4 TANG..IANG","breezetall":"CS2103T-W13-4 ABDU..SLAN"}} diff --git a/archive.zip b/archive.zip index fdea9cda9cab60aab548d85fd79356993fe70893..e758353267c596ce9a32b84e10dc81442bb9377d 100644 GIT binary patch delta 1378869 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%0DL1Lz)ExpYI~91pyha* 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 z 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�LKsWWQ5LB( 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%0AfHl&a4?)eHQ%0J=^*hvBU`S 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 z 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 G&j)b z4*qoLjWORNC+&p6po^e%X{wY|X@{r>BC$b4v9LgxtMmx?g1kCg6Kzi67;h}?@Wh0{ z8)uO=ChnhfgNt;3V#2dkPU@c6 zYpJR-rL2m~s1)qyROU`&_^DFtq|U9>7=`Zw`D>m;GGiHK@RB|zRDCkL*P^lq=#lB` z?}SKHBeNeSgYJKPz4~=~20T15kugK`Cjj*c`G!c5W}fnY8x=GkkQ;fKfSH~0aD~Yl z>Mgimm~sUF!B|I{kCjTUBNqsj%a^K+D7tUgLNr?x@Md~VB+hV9OVmMQ41dof>|@MJ zYfM=Z_jsDb0VyU-JBhm_r3UOh85M^E!3xI7?vnfleq)G)j2u@waYFbsMw-Z%jJ^;G z4Wsb(&>jwdL50ZpQX4Dw4v6#*eAq;C%B>YAS*gDDj4YHOxRcR@E#XsSfYVZ`6E9q(>vtWm z2i|r(tZZ^C{F{=+xE$10zMsZn^~I`<2uo-|kPlFQ(9_~<xgzRRzd=%= zAcdi(nO5l$1p=~quR7&Yh1__2@!+PV5JES96*9Lbrq!tSZrY(y)o_m@o|=_ci?T_L z{6vF--}eTC!Qp0rbfg9@lY}baf|UvuWVEtA>S{sAl5i!nK$meUVxKUbKG@6D!!Q$Y zo-S+CiIZ<=Scv?Uz#cSkVmA|DfuvjYH`9Z=_BT_K{&D#z2b2h-%4mlTYMWa{MD22a z!#;S}Cbw$Xy8n6u?cE3`qsriGZOF=gX^aYn?P)No5bk+c-616h6HMG20~Z&;&tSlT zPoh70E%H_*!?Hy9?wHD105<*FOFGIxkAMxPZD?;xU7t@a4gQ? zvSXBn5Fred3x$$&QjS#)9#E024y8GN&Ovsffc!WOLf{wN|48xUs!IeIy6{2Cyw4<+ ze)v2R@nHg}8oe2V(740jadpJa6tfbyOXdYh=^>l{(02+dgb$+@k{-u-BvVOYGBmZd z*fp$UjP765a8@#eoeCdGQEDWOLSf-hNZe)9%);+-)9}Oqac>hoE%c3g#!y;+Xe|Hu z`+uhB$&%skRQkW_t4~^x%)Awf2bL>gL#6fSIE1=~Ms?yn&yRt$D9&Wi8)M!qS}Dgy zEK`XSUaKQHkeTs{tyETkb_esxDZ@$*~74ie`Mdr=L5xi!zk+@dM?^4m3LBkYmq~J~)N1TZi_u99J)nK16+4-J)x#CIk z9wC%pPVCsr*bF^{pzAQd$R#eG7jdrA0_AzBj+2`DMw_>@ljQ25QMvwqHr?kNp260B z4h^WA;{Kr#0B-vrmr>Qa!?4}hEJjt{XtT&d*A}Ta!*+PJ&BIzWU#l8JlA^B7Az2iB zTz#Aia9%gaa7I<(+t`96%P2R+oh7sb&}|;p*m_ZQ-ffaehembUJyKIsc87{87F})F z8Zw5ORMfjdCH?;D&1+A8$Y@b&o}dsTBnxsc1rfqe)oSr}DtL{N7^4dDp7I8z!W~3J zRfTi0v{cip6i@Z4lJ^VFqEyA|Dy|~X8F)at8H)6SU@GK16_(bDm6WmyhdZj*K^K!W>kQTq-pRRS7bXqKNPnyd~UV zw$09LlpaQf=?=^APXntwG%8!SAJ(YooWLpT4WC`mR*g#09fmdGcVv0V!c5F_n{sJ}= zQSli_ud2MtD2zjaJd|(~2LBWQA1e~ZB+%fL$cS}7d{O3qOo5`~2k4rFPkzb-))lT9 z`sEzBp}u~(sccPn&0yNoJS;+wib$L_c43ogKx*FbD(P#&NkEg9`wKM2(ZKrw0e|ke z@a*}*6InYB6;F!;ffjXnm^n~w-27Br(UH`<1P({OT*g>-NB3E{!qh%uG8}#`tt>$4 z)4OL8CHjqjxe6Ds%`fdB0rZ3oTWG-KM80{Cy zdKG5rK#oO8H}=F$(|l2$@%woU`%Jq`M_GT0cUzzq%c_ zt|!G|p)6$9H635dBY_R0KF*|nU&?efk)aadRV%?)Ff#+gTjP)muZZ}x3P%;`4gE4R zlumSi!mndIAOfBdSJZ(x3$cYTvq|9loKkb-6vTYA*A&Af_pv%AE=Sb16kN9~$f(oi zSt^Y}`(4cAoC@!PI_%AC$%Q}*>C;GHqp&TKl14M0y@tD3`xMNsGDs0eh2@&a>|S6t z_9W@csP!a`aP0L-4VGb^9tc?roP^Rt?^t+$=(4{0QtN#&27SqO1F7Op<4q?Wk227R zvnvyR^!!hk1(abrK>k78zoNmCEFq9XaihG-s7wwkPe@wu90%oJU%;&=tf(9Z&aXS3 z4jPfZ9NT`^8b-Ge7B#s?YPB~)9b6vO5pstbe`g{3Mppt-gn9C_Wt<#_zT;6)&1V*W z1`cd9HbEi|FY&AF<)FTfT2C6XMOE`JRh3G;2FiHh%^Y~o^8}Ui1!*=TAMfRYh^4rw zS{T0|L9U4!lu6sg7s~T|NB=x6T^2%07*0Y>H`dG>9%~_f97ea`{ohGT7qu=uuNR6% z2hBOjf^Q=*)qC74Eqv?&x=8O^wt-V(KcD8%Zj zNIhEZWaL1ag}|Y3)rRgfDr+iG@m3m|5IvDbu^W{VM~Rt2@=OZUFUg^Wm&N5IT8JAG zqZBJE{BoHjA*cl%WjqajJ0N)^MX3CsFrVca+!APOp0kB0(QO2|8zb~AGc5C8$}&#v z6)DU$xzN%JKthu4zf2Cy;-%bw5}%?(uTh(*-Y*BjEJTz#Jiu7fsi>2a zb6*6rc}A+*7`fdnMvFCA@MfkhRJ?oPy{x;Lx0m=gkYOPU9Y(hhbR=niFUmZ@w8GXM zp1damq+xUmdGOUbVcyW;ffjrk^K_M^gOX*wE?J1F5tCMDh^4pH`y&yqHr#%L22mvt z7z35W4wf(sxMrDP1@(%KHidRbZd11orak8_N7+IyIE-$=p5G>MdhY!Z2o~k#q|y}X zl?!Q|@@ReKbVJqx+{tr)?`HS`Gjo{_>Lq3HQva2@IgAh{^j^WQW&Vvg5GDIn8X!dq z{XnGVh@(lR=aiZ2OII@;qZWrmUp%d+_2%@0KuZuOc)?c0sil#RTINLfyS*t(L<*J2 zFT$Ypzv)I5t$1&_WS+*I(KIy}%q@Lb8(1b8OmB$x$wkJm8Skt?V| zii(=&ve2EfdwtP=_BM8ZMU*CM1oy!RPty{m6M1CeE~Mt4E~IxV4)nF&yTrjuBy$?_ zPgIawn5+e_-(aI-?g>Zh=Tdd`rO(Z*|AoLsQZ>e8RIpHCsuT#Z>*9S8YK=vgSAmG3b5ytx*{MFSFJ<0;+vpao^FkLmDS*IBDBM~& zV-N8fYrpHMzG!(*p^#I3?Q$ami7p52c|eKdxMW2RYGHM64LxaNYNz^2WmixX-2=3| zx$yzWdx%DvPACe>WRz!&08T#km5rC8{`TUVvjJw(pc+KrXk;mgf>s%fz2z&=$b40* zCY`XaN&KmQg|iQJp6ZLHo9T)XjUJn(aD84oy(nnzBOAr;(|EY4z!4oMlL=pDB{j&1 zH7CG3P_+gi!R)EhS7$d;1(%f_O5;F5N|yn=ap^;y=HWC575Wd?9iQx6uip4v&hA3n1fb&?2|}40U{zsvI$p>tF9^fWYNn+GBlCZ zhEwT(JaU>kyL8!qJ2`WJ54;pe3+W#u&wH!phb*VU8ByUw3N-AHSZRUv6Y={BkyY4% z0zb=vGCKi>g!MgHIwdm9E?|B&7QU76IbWlrN`fq-BDJ?BDjevt6L91mEDnfXI8lYT z2q}Shp4{U05Q16py<*OcFg(fcQskJT$Pf#EP+2T{!t^!7jfBxL!CdG_q^`+K*iZP=EBL%zI>Y`l9CT2$4bAt`q|| zcc@w^#JozXhQnm+gv%E<$ZRj<6xOpaH1C-}ChDfuwYU8ZSpU)bLiSa(bpw^ z@5@fsmnUx(*(y7GO-SD}T^Ru={G} z2hEyHH97UV^jM!XiW7MBbc)8maK@nUPYdZ^CZVV`aG=MIcWzl@?*MZy(sDmaSxs#~ zr$;t3{iJ=+tdFP3h0Oc?Qh1c<_q*YYY zL6nqmpvq1-m`Gx&?N8=dJdHT07+~Ezv-OQZ#i}9*1v^$Jz=14V@c?I~oMRefxeyBn zxCg_M+P-&MGs5B8omF1gl}M<6ooXjF;ivkV@L8P3(QF0#v)dzorJxd3dMBLCio1=1 z5)R~QMim?@eTJ zOiB}37bJ9KmoZE$2mKx9`b{i*0;MuN8z>87Mp2w<$T8reDq28bAa0R>y5f}hCsImN z7lTt@<-U^x`jXE%JkUx|I*e~6usZR8>1)QD?=wn@&u(yqAY9>ft3=Wbd_d&(Ju@hflMt- znFX~Q^VjaG%FlyY8r{2cboJD;#+Ui-drz#`ttET(q_fV_u_cbS8g{w z@`{94<6Tx-y}-4v7yw0y0ZV)o;kOck8}FC`ikB^9fbWE8w&G<1iJN5k(j{9!Uo+lB z*F~+bT#3$63Or#uM_Cg4IbC`%DzNYiBa0$uodhJI#1NdOyp5GLD0{-W&|@V;3fT^p zSB$R(q*0fDH@w2B!T6ui@d;OJmE)P}jW;1{^%DleRIW#=9JydlC=ZtdRaSC|G~8l^ zK^#pe0KO32*Q&gb+{=?W0zO5vt=(aor)DK!9LBd|^g6eJ=)60`jT}s_39sg{~vbd5oVQB1HcTM1XRc> z_^nS(L6*Y5w07wBRLc{k%x0@rY}d|77YMfk-BoOC;t%RhL_@1TKDFcvhmze=-QK|uY+$i zsZmy94GAHqp%N?j?z%Q8iage&Wh&i&q0)OOY>$+0IMhj7FFNNrkYpuo3T>w_^qG&@ zVzS7862{1_Nf)4|5=U5SLuUzWZ@e-Kq~w6wc`ZR1m|#qwVshvi6<%MKAWLwnP&v~V zv~Tr=!vEMfKqE^9Je3=p0v{@gnl@9Z1X9sSi_<9L7pU|IeW-{oU>rMM#F>D9t)WG7 zpvp?fNar#aJ%<-y4WS{6n>A*sL)F=tzF>WS{7PT4{#pF9XZq^(J-XWGJ<}Ja zH@i-R!7L6a7I{<>YJU6@y+f!_Rn(F-n?PC$ShQW_2*Gt=6LJ9tsR#{b2q43R-|xS= zTmdVAGOuJWiK;*}JcQowC+wboIvRoQTk~`ZH>L9OMD%1C=qxZtiuBo3wHKODxwa2{ z8taPf3DeioHxY&M1DXU8l~(YIx8tvN!=_R)XoO z>xt}=YLQ2*+T9GEEYf0sNRgH9TzdI!OkahkUle#qWF%)*$a(U;#fW`J;iaX*1l?MT z)Uc?n+UPY8YtlQZr(gQ7P#Fslj^Q7F|KI-c_x}O^Ua`A+hw6F{JOM@-2t7^ig*{xu znNc(Grb**rs80DEuk_U};uo4}lcmsd;$~g<^b^MeterS3rj2QT(UCxG>t_C~I+->P zYr@P$K2~{$C=RU}Vy|`PD|$KLtrjoJ!&+HTSj)b86IZSNmbmibU0nIKcS~C_bXv%6 zWQb9l>Tk>5&4kw(DJ)(uPq9s`0`QfwI^ihNap*Ch({)$2S(@>s%UX0Jg^ZdpU%`~U zp{S0dvWk#_b+0ggM5<{G3N1<0F_$%UdZAR*Sp-pl+ASG_5|yZUQFBSFy+<_C2Gr$1 zCS*(C37M;~Ig-mpbR%MndP0A3gPPepIABEZN#XXZzr54mr=NmR|7eF{P1rddvD3;C z3gRAbdJb&VU^W_kt5zAJlhgGD?%34Tr zrI3iH8_%gU5Yo)Jphk3vLI{+S9cz`TU1uCq_U6G}g2f;m9z>(Q?7l|87iGK_=yd=mI7Ac088Qi@6`jaUr~A!;*rD|NZz z8!_q7@|yx*e!No0NTDIJY;_`TId^#2BC3HBo*NK|rAND_>dnKNHC3;AenqD2gcoTx*w|HM;Yjy%>DcmSG4atv);7SA zeHqV!iRd{PM=-vF`?y^leeEE4c>ic|DrU60c}Zz=sb0bVx|pe$HjT9n7sSs!HF6EXv-$ zdfAuQ%JM-8y7;7k$Fbp)@-RE_6@9^c`#mz@lzZSS-Ec*t4&_&{S0PI<)MUy%q))uy z9>T!_XH)oq9hix}(!Biwm@rm*WH!xl<<21;4 z5ey2lx`SjhWTC7AG6+&biy*CEE0Z~++*a%U2U+FzL(~R>6XfG z_r;OP5d|n*8G7fM%HlB^=u;9f~BbN&F))-l+ ziw~#OV4U`eD)79_6FhX@JI>NLI>#g_;Ok)wM=_Bwsws~|b|J;})nqn;G!<`T$*n2& zA5cu3;SEjcn(_p1dU}hkRx82tRGPvrSD+h_udmGCegz)tufRjsE6|O9gwdD4Z}m=W z6al3Rz$BSwsvVm@J=2Q2V+8CQ{Q?W^yTqdNgFI?UYbml?j|?+ zQe61WdLz*F?gKxYtIwZ4Jb{;vU1hbt&b~eUCQP2vNuN@^#9G&KhmF*ipSLH(gs1m< z7nF~6P9@J|5>r9?Bf;B$)L{i3+hGFTupoUo_eL%tP*yEQ@D5aB#7O(YDWnpPnb$>pf%X%Djzg!?P`5*~POjslVMTCL7jPQBs05&8b4mgC$&0 z3HO38;$$UK-CU;E3AcKnFQwjb7*5G#EP)G@GL6koWr=58N!%NMZ>=J1n3oB2@-RTo z!>RppKCo$RT|H?(2u+`h&W&*B|!?Z1W z>{Sox4_sjHh`KhRJ5jW&UU3P>loBd~&AnxWmI54L;&8bh=!=otpI#FVdGss%G?LN; z4E#V}v)mSM_<_EE;CMqC!v%jDPx5MK(s(u#NDZ8dbNf`26U=f2DC6_Hqj;Ha5o|E2 zM@J`LYbMnym8Y3jvyy_F8l~PW2j%0#LG8uC!f#fr8_Cj_2yZ_BTCAvgvi#HWnP!Ro zH!sC@s%OeS9iM5U;lVR6s|Q9sx%Q&t^G)et^T z`_dQFwqGG*_H}`lq91%Z_uh%7@Kgx3ojWx=vm5TDFJsjd4!)(LTu>e+@fLWt#^>m( zN?T7~U)H%{4PBQA;86_74n*R-Qsn3KKUA6b~IB4jGz1s3TMPR$=AQ~53*uOqA_{4NeD5j>DR zv+kL;?Eyl=2<&DFFC&4w5*`W{+dNnbh?yzqytIRao*O3$!Ck(RtyPcghe|gZZ__BG}R(`_fVNJL%DlG3St+nlSYol^WhuNDj z*0)Ijvqmr_xPQTH?j1;k;yaGn45OY0|2OJ?d#|`3bPmG_H>z0!|C%89U?SNr)zHXzr%=kW7O(bs%W z1FCWDS%AL8vSGPO%juU!o2vO8>z_RiRgUSfL>5Bt7j>C%lM8KnWBcy{elOEMMSn_v zC1|X7Tpmm*2vJoo+DQddc#~ZASv=_Y6j|6ChD(I)Rmx={Yy~E(xX{{iSt0=>_02DN$wk; zE|(?JDl6NTXe4IeyhH*)9BVQ+_E%tzV|=ejs@y_Ou}($ZCAvt|xx7zeM1@3X3;}ez z@Mda$^EYfI>|MAjxbXX#56?^9r6}*Vm z4iAO{#Hle=vkP`DS68+jiY=E2ecDIT=UiQ`U%a1l zkml&@K-V`qfF~+}-twn^VAryA0>nK5#wy2QhK;6d$8=aCYZY5AQ54f{**HwUs6Or3 zYj%YSF@_}ZX~cx?Ichf?BsPivt!t;2i1}<;AR{DkSb!!K50|@QuwX7rw0{-5?7zDq zfJj4vxd9VLuIqCluwj&C$TB=CX>F*QxxX=5938=HM>89H-(`t^T(#@wQ}lC=&TZry zz>IjftawJ`p()VvVs+#e+fETy8VF9kjwi1mxRy)PgXFSAuG%%WqsvGF*H`J6T0M`b z62q`0FL;#sj>{#QV$?O(gbi-h+G8xmJrm^K*+!sKdLqAGmQ zgn*jMt}*yM+r@H!SRy@;gTWGon4eJe2QL@w7m3S7vK`whpnAja!n&(_0Hv^q}}YSa-DREdL=vZ;k5QjI5%BHcjF zL+rzzCnESc!?fc(mAbphA#+(LS7jUTLdLPgncdx0PSr1e(h{Ne7xI8{nW~Pg+G>ej zczzs-Mb5m4V{G+PmaxM3PqW-#tqB74?EN}O^pGB{&Ql6P2}>#|y+zt5Rp**9D=&?b zkgaM%1o$FY%mP8xYV94C$W`NRULvfuSodP22mo6ca;D@|93*_r#F?|yqXKL^JRtl` z7s_RcTs7{0EvG0>vQ6D@j1I&VX_*mRnTltiu*AsGt63sY+0ms|xTInUCm>vOIGD1Q z(-;vX_q{~>*SH&(h+O=bxUt|Fdi{6qxLhLPk42pV%R}!1EP@WwqMX1=CvaJ!{rj^; z)8LKHqta(qPXjriWYx+Y0ID{Y&r+&?s@YX@St3h~dsHk$jJcfCJlxQ@ zv067{vsAX~aEj2%p_JWri|`Lv)`@6_!qrdCUj!zOO9X5Av^__U^uRg>OVoUdz+Azr z#xzzf0iVn6EW1OtYKia^p~EF%QA(bYqHUUbLRH$)gGBH^pncTNm%|e2L4pjH=py<= z5P5HZ)|P5RITD;C&*CFezLj-qaf)hMBf9UR6}B##$vR?6n_Nj(LI?Vz9-YWwiJpC0 zB5Dh|(I|1cr0Xeph;Y^jn^eLQ2h>#E;zuo!Ag!aUEk1U`uv*@yr>xggC;Hrbe|a+Wjyy!LQEYBI z;6lUW+g2$z3~Rzrdc9XyS5A{|i{{*aFszoZ=(l1xC=XVGAc(0jmcz<^ILtuHb@Veh z9cVaSOMvay=G~MB6*gp@wSWXvK zkNmPXO0?{tffDbO4J1NtDy;s+GTYvvtKq3yZm~C-wA`ZUtRYpy#;e6BcSyv4TP2=E zYvL`qj>G5{9Az&TtxLA?P!HW=BrH#ru&mkw4j1sD9;Rh)6k4$oH~INc52>;@5-fPg zRxxT(NvoTN1yeDTr7h=U!G;`0x8NdsxaSY`cqV(J#)6Bq6sQmN5GMPgL=RTdu|R#O zhb!3|O&06}&)Vk}sSowoC3_=(--59Se^1-Xrbimt8$A}RV@;@@flx(fq_8raZeOQ- zL=Ql+XKAWOAK4cPdJqyjX)5~uiA{2tfdw~HJPgU~q8m`SHLjUEtW zn=~D6lcoy2UkX(Ra`mtwdn4C^o9st=>X9w>Mvs-pgpMht_C=mLsd!L>=#GWKcHH`g z=Xc6Z^ne(@=Hcv==jahMIz617@)kV+hLLLbK&o~Xqt``7=rJYsM&IY~mgoTu_C~@U zyd^@vtL&7+G+KH~3MH?9-7Gpabo7Pbjkmk))z%kP?~Rzx=pxY<_U?-keNF7Iq3G#L zPxnTrwcDg)S*ov*+#9){-A$se*4rCBHg1v*6g_C~KB&vX zsjsxz8$Iq>Bo9H+drI*9E!=oUy=kq}ejXb2m))hySknROW5D&eGmo$Jyj|J7l18z=0(vb!GH zWWhR&Zsi(jdD0%) zBcld>Sj+f2j*gxe=w-EzU-nNmYTM^9tcmS|3e?q{&_k)#7;BcJmG=?Rw9_oXE=q5% zK6)&r2I}~K-ykE9mhage^G3tr2odqvI3~QDG{d$l4u;wzeU9w6&)!|Ud;0yWli}k{ zeM?Tef|)gs;qQEjzY4spSRz9pdPAHe7(x_h!GzNn(lDRRf^?1uyQuh7+vgGj?`j!L zSZL5NSARzJiMfp=p~iM0%I^`*Y04Hs7_dYjPhe$#{x}yak3fvH-s}$aJIvG-_?V)K zeoFe@EDzzU&!Sm~IC2>R#T*0!KA@o|vCsSTo9vrIZEgxYzeD6fYb(np2)0FoQOA1; ztb#z9DdE$>tVJiE0u_*8%fxH=QEC_EvWi-+-MEUVS6+xJ-9#3oqq3q%A}X-=EiEe$ zedeWqRG;c1E%m9#jZ=GAp4l)?5pAS`?{>N|W4Mk8Ts{@|688t0C;TlpZIZBb?lNnw zTxgv2qjJ`SGKRJFvg>eV_Hfx=edFEF5ljT8T9Dx~KdoeGoZr_lzaJDHAl7Cx4<5q4 z!Nqz-V4M`}6Xn?+_DSx0uU1$8{<2T?*l*!~G|v(ae+vjRB*`bZpbG>f#6D4dfj5X_ zPeTw|gqVW&kUs9n8?^GPk;un2cDGdB&koe}q$8r3TtdP~w9+bgaRTo3f<2*JAS{I%y~QNS};< zt?8crsw&U1+uIMIQG=%0_g)53{;BW1j{^Aj6`Q=d+O{vJM<-7-(=ZATz%>HiCo3W!Gu4*8}m3bA-d4WF%oPB@hlQ z9`|0rN0TW-NFVG(rqDHkRby{DwgkCRRcrXeNP;4jM!4{Ba5M~?5DnOnEsoRpnnkUl@KQ-#Rh!^~9;sp%ho1-o2W5Y&x!N!mb6 z4nK52!!-{5Eg_HQ`E(Kiexy%`Zy+-VbL2?0*{YHHOfm@4pkzqw+xIVo`U8xNf0IKY zWoVlhP8;FpRbF3BxYe$r)kyWv&( zl>3G?ITDLrmR{e}ND)0ct2>l!ULkq*PSrz*` z>KB{(sq%YugID^{b0pD&T6BTb}jJJ?y>lvF&j!4Q`WIfk3F$U_XEWb+{HtNUDlpp&&d zV!odMW5Z4{gP(vYe-gJQQ1l@4@+jfV$H1Y3GNP~0Xq@xuzFS}lmmbf`<+7IF7mB{qM;q7rB zJF~dxgL^73`JhI*gfAt*I7eIW6REWpLE)}Z~bHw4a#N7y3uNkBFER1 z=>U5ArFhYve~p`5o4=lC@#JsTLwBMLbfOCwWg7l2LbyiBjrOCOa0S$q$_p!d2>ryV z{}Bp{gtE-?%)yJVPZ?}Yl?g*|4{F}C1bf&OaZUaSJ}Tmx7|^_ABwNn6N3ykjKlBN9 zt(U`uC@RPAej?d4`RkP=~;_ zPpG=VNYuoQ#@%Xt=oiI=leG?A>J!vjFTDv@BkxTgP7Wwex4j;zx}bP1W0A4f>rKKq z;`9b7SGOX9R=auj%i21%Oh2j#o02-_GGvizor)<%VHo`6y?FZU!aJA;vpHyusC_OL zJo34Je|T;`7eiADu527l15o;eW%2#fKVb4xVTnxCLeCkleXJ- zkY9B;1}0L6j=>*!5=@2hm+~xM!iL*F&DyE=E*GL`RPDt(nCIgGCV9#>Q^^XJW6JN% zfAR>mrlwK8pP15(niD4aq#q8hWxmhCKdjtb_`pg;SU{6-*q62JoZwP|P9fr# z$kY2$ZFLadxQ}89oW#&2eEkZ)T?!w}fA#^p2_L62rK>AVJyNklBj!bK=MqnjhMQc= zD6`Lg*$sK2yA`!e0{F_Ru%gC!I7aj7I#}*7o%9p#M1MC*1@sVkKomxXtJ1e?a0K7e ziM^cj$*uj7n-pIw&)O85r_V*sQ7&_fXm~o4ss@a7Y*86RE?!cOKz$g8e35z|e_8rb z_<(`6i3?#byNr?@i}TaMZtEu7(J0xGSm>3w-Ip&MIA%8~jHVfk*Jx%ceG{}Mo~r!B zZ-WdgvoB;CwlF$GG|4-F^D`R2sGxrxqs5QSdef0i<2)RAKg@ZgM(}yYu^bg9gT-Vx zKp$f=MEJPR=e{jlCSDsMtfMue`@G{3pN-UJY1r=eAym7)X`7BOE zF5b#}`)+{oamjW?ahOYDLN|$%rg@XS-b>DsNaksz!7Oq)V4b8MnI=rqNkB$|DO4DQ zTZxiG3~31o*!S*vY2=FvDEz_<_D;BrK$GSwT?GSCs7;IIz%)Y~lnkLUf4ZG+E<`-) zn>fDx$KU@GQ@1Ab08b!jI3Et4@;e@4q2{;9NkLWrs`~zxa>2&c?FKr`FipJIdn#^1 zArTx7h-oUND9$LJBrforhs$ES*yQJ&p%x@7)s!wZX4|Tu8yBGy#n>o`lAtPXt`jy< zYW;_UQs~OpQO!eRZ`%~Ue?B_htQ<5-xD-=>(=3hr(yFaa1>S$hQR{M>h@oB$6M?71 zlqdlshkja}gL>;Zy|Z;9!=sbOM<+w$NGt_fA3oR!tCptrzk;f@psHLLp={bSvwy`< z|JR72{w`cQ-5|sm#ZbTc3LTCS`2*0o*G){dn@H(3WhkP$mEFhQe?41K#v>`(NQ%82 zHj1R$k7|UgjYa$%KID7Db7?8dP{{Y*_wOSxBdE3(sEf7&Q??3=q5!-WONgo`Eo0wH z&@(R!zhdc}PLs(ozJ2@?yJN~85=C$G7|ov%`izAK2mxD=U8myDk^S7w+%x6ey)+-o zvNK78a#O6)!o;dBf7#>~+ijg!Eq`-O`{Dn+oq3j^iNBYms7e;2xihnss3Iye4zE~8oWofx!k ziGc#Q0PK#|t8SMU(y;1bJPRg+m-w&Uiko?*&Sd)khF1!4u#{iYy3W%e3h1h8zq9;l+XS-kYXbfBZE zptRVGf85rhZk0u~4ypyzNUt~Wc3g=EX3j7@9hdQ997Kw}_j-If4JI(7$qHE$Ye19p z4sI@AzW8wP70mwduo^~)?s$Y>=i=+2Q7`8NRZC~6I>5K@aR5-&4-b32X6v={*WohqFQ`Wf{hX^uEUYiyZQ8!{U-3eDTp4DMluLo zLo`OE5=^Z?LR2H(4qGl$??{}a%?nlBmMU2(DXS63qPH;z16_js!mgwNuE%y5Pd%Bf ze~jzKQ7yDWG$o9^;f)V8!`^J~b~o}mI{Mvz#S)9(g}rNuMhpk*ZJsP+6{QEGZ+rZy zNu*l>1YZ|VqWelWb&_x0l*b}B@)Y}LXnGlqA$Go3&bfSv{mjf{cEIts3)B=={f8G;* z!OFxB`|xemGpTki>$!XjQ4wTMmtC^~=FKGTbJJa-ez;Qg>XjQoCzdXZ&^m)?bI*3*6zeA2 z%GKI9ss%*B%{fbw`2J(Q{FpA_e@vc(u1v`4NAdJXek^Sc9yBQiHYFYQgIm}gzbOgZ zNRWk*VL!Nq`VX@EyDEE8xA>fzr(vCv_2WOMdsgplc*!%BWlvdz0#e`$?>nAw^#;Q@ z8wQ$?-J+(y!loDk{I4oNw$iV?jCxP4OAjL5;1*67SzX&x zm2Gt+KQBQMD{LB=M)kd2jTUs2?5#7EZg7jnR2S2X@S=zs<*%p!*q3V~BsbXjn0Hzh zMWaBtQ6WL(rt(*jjW4w`lyfLjQXWq2$+2i_RcKFRmIjkjlaL9tyD((*&)-}7PTk-Z z{qYdM^G1;bORauAEH1B9e>YN@G>tH5pod`E@Ld4PGhTK~BbRD&ztES30w5GF{)td| zceNqV(XzKDp*oMJMbkZT_XV>OF zSg?csIq}Moe8qtQ=&LsNwN@5P_|Nis&oNOzARS5e_nexDMp%G*f05q8Ir?`g73u7; zpUYzh-=OowqV!&Z(Ti9cEIMkCSj<0TiC^I_4l8EC{Ot#~;K$DcS?6@mg?ORWQU(J$ zU*)g01)7A6N{6vPBjb~KMDAN*L7@7vtG}Uc(iVK)esBw}`x=y}LfEGHWWv*Qnq%RL zs8Qi-W}H$lzVP0Ff1Qr=!WX02xy&GuAMW)cb{EW;#5<#}?CL?Pqr`%LE3inpZ`9So zVPp2z^i(&vg@W6WxudVp*pmXUugLfvn>+eaj(x3`1;{IQu@o0dDQ?1NalT+PdrL=O z$g!tGt}o8e5B@`(_^C&LDVWL0G2-uy!(8;GE2t#2!GJ(ff00)aCVkNnyJG#6-#EB= ze(~>8)*WsSMCpmJ@CuNB5?Cb$ZZL-r9`36q68LwSmM1C?F`4D~;?JjNrw^`9k1nrH zhbL#(M?YYN^l`R4PI!p%wiM^B3Ioxf6SAntGQot?WT9Y=3WrxM25BGa(Sv>Ki5A(~ zf3zB)qutK~&}5ZyQf4A!IWK6%ky2wa6^v0MIFQsOJJ+Lqe^z#GgA8sz z_&*yv*Q0gsYqjjy`HQND;#@&t+4FKe1h@W#i!3MR1-{BiuKGe$BC<@&WxKJSwYQ=x zJZ-ZqvS$Llrci0Obv`a20545|$QpowJ0aG>%evmOe+U7GK`9?qJ!RkJEk!Z!ChsO0~T&41;={0>TMxpmX9$QoFA6ydPYEg(XeFb3lD{5`$Q@zDBZ9)jAK?-e z79PQof32+}s4EjLPUH=oIT#K8Jrt`R?CLbETdOWz2sY^62<@#F0;{FGBkT>d?Y5~Z zwz_xLH08AEKIzfDTOS^?x-##AQk2pXpr0JK)JRe`?*>vaTpC0Y+DvusCiu8A9e24D z$xGP8L7*mx#$rCUbv9h0v!jzCRcEggqh-!bf6M`>`r_t&@Zn%^9Dr5D)8qHSU>VJ} zDrNfP)Jf&S*T25D`M67M^YK5Mw)wbAZS%1OKg0w&8QQTv%a2>Bmnx#PC)M(CE1uUl zs-bF0Y`$MGkUlS{;L0Yx+u4tf5GPjZx!*+3-z%bwA_-Uzc(M!jD7Eqq;k ze~~Qf7-cg)g3?%IpS_l)3XcuJ(XNmg%YahZgGL$c*oemd(Vg(c#}<5%FhS}K!bC5z zw9-SZY-(wJl%8~wLh!_bGYSfsU(cP7j=zuR5f}>GTOL1o{Pm-U56(_Ke*6=>>i?VE zWz_vWCO(PX=Xuum#$i0U^@gWseeWw0f3hA+j_;|G_uRYieauIwJ&0jR(?~sSWN#-t z=>&n`iCsgj-g*Qq`yZ+WiEBoONNw9-Xwe=TXi z0Yc-X8!VF(3y#*2E;~HwQau}PbrcC`c!v+JfajuFICuXkQa#Q&Jac{1SwzCM*87ghCL zeDb{4YpGxlJL-001kKd*L`W6Ae^c+@zJ2!Y7pmC8$)0%;(_uEN-` zHOwhL?k_xv#f$B?%nZ9*013#=f@#C7H@EEn{l7=vK``J0??lY*5H4A)cZbJPP#SV!LhH31v$%HSn?VUiIr`}DcGNYQH9@t%3!Xh5$X;u87 zol>?oMraj3rn10{dY?ws&mN>XFn>JDLys_iPuEKzC3 zythxEdv~yPGGB@EM*Vn_W5se`yZ3VjdAY#!nrM6V7f^PNjPYH&bNc)^r%%gui1i@;?Tg z3W|uyol7?6a00u5H!x~4b2X3e(c%F0C}lG)6E2A;kJ|0#vt;LgD5uYP2(`E zmi07+y1%#~5+tpah&R6cO1$b8`W_lJopAuwFwrcZ3k%-){B_fgWvDOd`Miu(UxBkP zMxigk`8_k%Zu+MTjT)#RM=km%EJ3TmriW5up51qjDEvqlu!oJKR<(kFkvEz%UPv1Sey260!#k*%0 z-i?3!^w~9h^y-6Gx9F`yh(n{+DBGF4rd!+4rW}Uctmh7}S~g`dJ#U0-UHCkBK-e>) zd{mq`@jIS7@muBei5DEso4$Ug5xE0qi94*HC5K0gf8YA@l{AK-8(!ADgwgo=%bTx& zC9L}(y{uj;R)}6LpYO6h7O)<$IP%z&vqL#O1)?~gN>4SZT~$V*LY(MExP1BI+3RcX z&Fhzc9(XS@g)bzHIjkX>*4d6jA<59DBIsK5x<+6Yd~%Jzk$=2`pQBf=j(}50Zt&vu z^|N<>f4q1(Ldz7)=u!C*`V!TIW2&tzhR3-(kYG{YQ(bKI$qPS~n#<2Qi?SdiM8r`s z`GfSZ?x*jGV9M#&K3k>hXO!Qry|jRb&(rn$y5cO6FAjR!OGq22?xs1qzW8Tv@bG)? zFges03aw4|LaH00svOHF(0v-w7d@p zo8Nc^^ff|Ta5dMttYkYXKTh24g`9wN`cWg1u|Q}W6)7j)4g;;hx0X~WaOd_y}0Vtq}lx7#Ax{)aQ z!luvb9kQu^av0r$W&b|BLq=6n4#S!?R{4rD*2z5tf=Fm=DZ1S$DC%$myHSw!fAva@ zOh7r{6_RL`wgMV#7TjS)gsi`#h@EJg>!Fm|k*}}wXy_}NTGMV*%T#!dh;njgIM87S zlIrjP3pVBK`q38~8MuDpC|tSve;lT%WoY|cY%PCje1Oz9b|5}#A7lrZy;eKp@H{)9 zZ1ud#p1C}<8}G2b*5~sIZkx&=e}~ck>Eh)!Wk5S(pN}=8o5stju%;T{LFp|Dj$E2V zb`z`8*X`)D=c|=bD(T5@2>BGf3tNhAqY5AgvMub#LUhYwF^c=Vc>VO*pB(H9eI<|! z!hvSBPW6R6jht7AaBCt?^@Tm#82qmgzd6;H{^*ywS1bF|A8D4Yo&1qFe+2fY`cz*x z)T9DkQ?mh|e_9Kbh}Wd!wpO0#2kA0oEAH>EPHbqOV3zb*&aBs42TPL1SXW-vJM}6H9@ghS z#5Uly`By*eN<=4V^r!j~q|e&~qg`jI=3yQVlQ}H>xX0I8Z z8kI0P3~Ln2@Trk1B9Ka_WBpngEAjd{w5u3u9@fSGhPzWy;k_G?!S%trk-1y&o6P2d z---k-{9UAQwa(i*HL5XkSPr{RL$1odz8>heru^&cdH$8WRjiLmaHHo5#y~a2f*~{- zL9MJ5Ik?b0_ij`)e=mYr<F~-B7+Sc75b^CCMp|zY;P9OFdMTP)@O=E z-?1>~X;EdCFEMw_FPD9pXYw;HlQ9t+J?sMrLPH8cOdJwTfD17~xkPfwIn+G9t;~^fUYavQ#KS66 z3kVM@uH_Yss+?|)_gpe8YPf?r7KIKZPxG*_xFp8HNIgL&*l3>uBP@$9nhxu*znE0R z1MFf_T^TC+fBLC?(rFi>`h8d}?W(dGht*eQZRxlBmG?59u!R=(YtK4cH)-J04JivNoy^HvMj%|h!9uEYeWEiBjv4k@Pfh*7orj=9&wKNVKL0|IK zeogEcZed+fn^{>H^M_}D{^8BLr{2x0H}9T(lz)LCe+70_<6BMdxSW=5oE`e&uDx4X z`jW2Snw6!m5c`*vRjiMh7JW?}tynUdqv|_hDL)FLlt;qi83@dtIg3`siV#zgNvjxtJAe2z%ndd{$Uk{Ly9@jhf96-sv#!iwkryg60-p%Jg{Y(Ai_{%KmPb5cgq2w&Wz%!fWJ^H-Qbk{?{AtV(aV{1f zf81rl{a}J#$B2K*2zL$#s25k+2S{vcqAn|CS?lwumq%gIh~Q~Ks$9_19MNA(&4AFl zsNQR*2Uj=mR>^A3`{|Ob=6rbelsBOtU0?b1+sU_Sn6*Wq5!GgKfePx6Pssuc>sjPAs z{Wp-cVN+S^YH#ah!HiM9e5pirr?VuL6mGR~0<)EStyVh95e}UO_ z+N|o-rou~TQlUZ^FSc2@LoY6`U%Yv(a!%e}yt{by?E2X|C(mZ5EvHUxYQTOwBHE^? z?0GEB)_h#xkHT41`$ZM-eUBhogbZJx;ATk)Az;_mPd8l)o-Q*iv}qM88)1wlcu|aT zypaakdcGD?qJWVpCyWsfnYV$Ae+8YK)IKob*bs|isN3*n+E3p?B$Q9C5`dAcAolxp z=$pOb-n1stLNZA|eEmpieBq5A_f5BagI9g?gAG3TZQlO!(=H;yLTI+vM{NoQ9Y(hh zNMGTP_a23A>0pqHsukE3nPpJ>*)YLQWs^;1-{nqvYbKNEej9+D#8U48f0$cY5{z@V z66aHWjo`K;my7duGyEWWi>Zx3jj8Y5oPIzH5iV;&_E`qp9;bYB_M!MBIbYH+&IBbl z4?X~$@C^jxmb~RScRtk?@{0I7HTIzFGmL}7q?M0Yc2-87gWKU{*bDN9RDF?2hFO1Yv{9;v?!l=$M~=pv6Qjj%9JOLIDkj1aF4A2DLUT-a+kV6ahE{R)U>4LBA)w z%knUDu+{bDoqJlOGktmIcJuF1iLsBzDK{4f16j(@$5NcB2m>NMe{H|0V(tq-seTPn z%HD5!X45E6A&oKJoclYcTwWKfe}fApAhk4OX>hc#T|80jLZgLX6hx3DLarZt!rl_$ z+&`ukA_4tp41bAr$6v4mEhapY?AUM~_O-&JDq?7)@>1BODe7po5Yw+>YFb6`9$b=J zYi>im#SwcBZna#Pf1RBUn`hP~2GW_nNVNelnVd1+FP`w&_q}I`MIS_h_2Zu+bnX4N zejFCXE|9MLe!u)0&c+r$4hv%!%oiEW#0B8gJS)?i6%W_necA1*{BqsQe7^3jlKwjS zyzo}xw<<`r_3tZG8vOvL^yOj^hNCXdmt78;SP5jJ`c>TIf0We~#P3-zAbe>Z0oZO4 zVSrPQdV8&6qHYE)Kc>~gf=OW(YC^M@C&zxAG8TtBm1mT~21oqBBH zusHfU?k!T;t1L`ai7eK^Wf}aI=L6Qk6aFRpYQ!^rsd>W^2(1bh;KKK%OHASluoW3) z<>XYKJ@FN@e>I`c%0+Qp5;4T7H&iRKKTe}BZ*RUysCmkz+IffA24`(rBLvYDD^x)k zKVXYrmWxBvMZz&oy^=5E<=H=H)>qOuo-CoC|00oCb}yOyhUv+oL8U9*_$<+vPIrr~ z{j8UTaw?E~fAOyPI)iSA^W%z<>Ec~sMxO+(XKBsAe_6?DI5deG)Cua|wjm=2p4m3w zz#E6x@uuTgwL?67=%Fj#MGV-4V-#}oFWx&*G-$m3@|$K$B`Xrei8Wjj`JGdjCFlh0 z^h}SWpoaumb69T_DD3oFn<5A{Otni)=`%eJ!wz(I49=jZQ=s%033^2Y{eapgs%nbG zGFu(WfB2e=)T7I1z4Z@=UvcpZI3HtW=+`2~r`?qI3eIKbQi>4hY>+Jn-&wCNin zq*~#l5UK1t{U(}q(_=^MYgcR_Bz|WWyTf8QAVL0K%yfs=8Bt(kbf3;F(x?YvWs={X|L^WR@f-J3nO%z5= zgCtd&Ohf-7@*QK21~NcVB>~IfYrmvsAii)=pkyc(N}R``5a>(~gVL}?;$goK@HmN` zLe5YoSFJXLc7?uRu_v^l_Ip8JbJ1z^ASaCqHHj$Fsi_oiy`7X2f+0t_$P@<3L=^Xu ze*+yAVZr&2x*ttuwAt=fR|D2N0cn2>r2Gr(URl2Xs~C?i|4 zW>lUvCeS1azXPcg0B;+37jWc2u&^RsA&hr`TQ5)VB#Z-;pKnSGqQ&5z# zEt7bbum#~Xe%gl9*mx@Sa3QS^yAhBFQj%8baNsn0Xpi>ux8gLeYu^o{G3uX;e<$gR z-Km3wx6$EAopj+j)8kAuHHIgL&>t!eA>u5Q>dx-U`mZ@le8lLx^J`&d;%tG$f!)lp`>p584e|F61{Qm0AYa-bj-F$!XPW&3iB4P2vF%EDnH6c=j zeu5{DKz#XkESgXgNiw9cWca5>plC0}OD?Cb#)g)m_mrV@k*_xK&_NZKdZ|dKizU zrF@=anN6~wtndl!GGfeeg0sZP(1c;yD$aIe;Rv{rVoUIi9M%DoKCxV#ty1p*(Scww zrbQw@$6zlf>m<&zH1G>FTsE2TCAnd|1o!i>mZ?rzD)rr^R&Igde=aBufSM_cM}=Ur z$pp?_N(M|qiW4Ci9N51RfQT_iXubfg07aUI{q;-G&-92Qt+g&a&d1uYzbSuMGbx?) zsXEg`e{ATb-t&upcNpBF7nQgk%nN)aR;KJ{B}U}kVXpj6j|$Ry@$|4A>p*S2fA96q zfj8b`?am9VM~YHRe<52)Q9|nee*++beI# zk$FrRMWMf=guh|;J88Ib_8WliIMYLSv`(rq>P-Cm;G0I>e~=x9HRPL@(u0xa3pBDE z9@L75N(ai3eEh!nX}f;MH0^z`s>zZOX)zAZGtt}B(bFWNI6Tp=h06cW-n%uo zkz{FteZjxMcSIcAHBJQNf_& zb_C;fhyQzzF9Mdlmwd=jX2y}FWgJ;-=1%55W_4zqPk!(6>Xv_GL&=$yWJ^bA>eyGt zKY11MU0^-N|MT5F5ZD6&J@5A5RDSV3@iRAR%oyLNfA6^+{>AAJhWk$c0RGRp;WKg< z5vFW8Jfs+V@ z8>GYE6gi8e(}8c|B=TC|`oUAnFjtJ(z|q6U44zFKvovH2>ki++0oxZ(BAjad8W`4b zF!#8ae{h5FWdizlv9*%pKHJyvQ%6xGcRIkkic8iQBf5UMG$gbZOJb6c!B0B?(Q!@g z1({_>44?y!V?6C0#Hx!kZ^uhGG-2`JW0JI6I4YSP(^09a9r+C$50RxwzuGJ5*O)S2 zOsre|wYEsk1z_*25I{*3_r$u}3G>91ckI(Df0@|E$t6rY#gNAY&LMm3|Inxkdb^Ez z61eo9%>FH!(#?SgFks$`o81$X#rc4P>Zi?^>zylsq1Ru9G? zZUm12_TIhhepiOxuINUztsk1ujkMdp zzxZHL%lc5y{ZZu#TVK*&+;~T;d1yk>aqd9)J4rKQmEXG$u5%H4Q>@r=jc<90EBjxr z-wQXJjAx;@P3C-II0V@)AVngD$NCp&e@{M9hJ1tT8r`7@BZo!nJ7U$S*cJn!$aRm` z*H*_+D;w#@kZXWDJB9`#?cCw>EgnPV(0a{Vbgm&_H*r02AalrpI#%KgLi|l683g6CsoyImZ(w>{Bu=vQf2R9# zco+tjvCbfd3M=Etg_1BLG8)X$w;h9yj@XaYjj2b;UB$LZ7W^8IpWci992f9~-4 z7VmP^0X4eK*?}~<%v_pzXlU}cf2-XdFVi%d^9zk;YP-#k^%Aak?c=aJGA3Q?+GnHc z6j*Gnfi~T4-?DfX%wZQSdeS}!^z)p`zIS%04P^AWbK$7|1u3Ndg>qW_A={HjSYVgM zIbD;oD$e~io^lA6Yh z->PTLf>;r-`R@L?g~hqu`pLaW}p8%M6;@@w66 zqeDH!dUrR)1Y~V~&rMLvTs?eq*>2ZfFk_1JV8-`7_SB7>rs*O%@AV!ZAG_`{38VYK zOTd5KWAmOHr-2u;r1!W`f4+p?asj!Q3Gf{adj}^yd5Jpj@yvAIU%&mKyMVktetA;W ziyym>nC!<-k}n9H;oCOLA_#P8yg z+hBZ@{J&8wHp)#?*PEh-*Gs&Zv3Vz%Mrj9w#r;9&;H=}Oox{!%fBtJR>+tRA_K(jF zhG!?e-(sH(o~KRg?i4o)T)$nL2_t0&Vc{BZay%yQwTQ{Jy1c}dR?T-1hp7ruYP z{=9^g-b?Yl?qWF$`H;a2bNjSl@>gIIe3^K^pUMlSeYW(jzV9&8STw(B&--h;qJ6#e zojg+-Ly|s)OwGouJMGJ*?=ImMz`_NK-~x`qEB=EU=-5Hle-q=LweN<$XXCcDl3w5T zIQr_mhWFNa{qBeBmv=AUy?*!M?zV5-r&hk|`&{6Y9xQ<2`}6a2?EZ~A=b|YFp^`Yo z?-a*nJSYRUrIkTl2%H8)7~i{bqDHp%?OMY#aGtLZPwG4?qbq&4*5C{>xyplc3!_^d zSFI80eKV9Hf5qpr{|{*Wh*6ckRc~MhqLIyk6X&aW9|n@qym13L2oi(0%tGhQyUVNB z_7X$y@1Shw>>LLmwsCDN<^wU1m(^loO+eHelYu<7K2iqa(Y$d3;r6K`mFtq=KbP(d z*5We7UrFPE)Te{f=^bLNd3h^o?Vs4ZH50neQU{6&h>Z@O7}=f{@KTAPu1w+7G523E`GWXUrDYo>?O|{^UQBT|zkX&gNvAp~CutYItApMVEde<*z%Jp9Vo-HO!I4B0@2t#8|>DUSc= z-971g%BiZY6YEod-wZ^XdE*9hO!J;sSd|u+!a(GeFGbxgH4t>>USb28R%Hq*>7Lu_ zGjsh$&oB)zgU7-K?mAIMN9L^9~KX!e^PMKyh8(_qPY|`J2#Lm*{;>>vPlV}XPwbE zUXBUx;uh%1X|~>in(Nu5G|`jE&>cW4=9sxvWI{5t8~2Z%L1stmsppZYh?I(azfPxC zgi+5VvvmRM^=TkgzGHKrl+Cp%oi5LxJKc~L_dQFw!hmniOWs+s%iOpXYM!l0e{ub@ z&cO+v+Ip~t(7Hi3TxCBL=CM2t4n1$T)4=;Ohe{9qZe(KF)(bFIlcS zZyv>PJz>Tv@|JJ*vNT$_gTj^c=pt9>e9w=&-TJ5!@2q7_Ir?XtpSFnni&jg+) z`xUCjzsXf}3RO6Flxb$t`%CoM?I;Va_U;)V2gJa+sKdLR?c+hW3&O5ge~k1}@DXj9 z<2p^BNl8#Sn(lJZ{kPm$gqLo-p>9KE&pSf0=^HlyvdJ^k?v$UBx9-ehQU++Yihkcu zqq#-L22iq!j;|p9#JpnzWLQPV@>MtQ+FUHHc8%(}alhsQX>H0e+ZIXG^t&TOlfH4A zn##H0S)1YO$a6#N)^sE$e+B+1BjH;RMBB`E%`ocdLDj8N^q?&!Z2q(m5n+b{@^xBm z$qKGe;G2C2(x+Y8u~pD#D#}Z9Qcb!6Tg-{0#Nrs5b|dj!at#sU75s%c{UhV9wX&Sh zbp|cNeh0?=8nHa!{uy^+L=AL~TpcnwAW=1O6vn^B?z`FdB&q4%e}6I_kr5$;aqC)< zy@_sOaB>sOJ;63V<`T_Gp603h)$t<+#lKP~SuPe)oC0#tQ@jkk318$dsbV7hyT)TR zDtso!$_2;_3Nb$-lF>s#d{^+@r}2`{Aa>{8)B)xO=K9;xq}GR|w}*GOJ7y$0lPKO6 zKh|_%B(8wX@%-hKe|cX}HBohunQwls^=9v;j)RHQ0@@HZcUqssjrw_8+*8x9k@Qj& zmggT>x{T+tpt-O#q{H1}>PCVLx@Td+_@oQe);2RY5^nmL7Yt?l=^KeOoIV#H6Z3wI zgc~GJ+T9={xpXep(Gg72d4V)6dXy|cP;#LOM9St1Yew#pf27f3M^jhEFTct=dQ{aAeZxlhc zE5yEjizrghe|n1=iO`y9blVZ}D^~M%Tp?BYTbZa)_J?7_r0$xUDRZ`P_8qLWUL~wr zX)|VnvKXEeR!iv?iiiWHLy7sH~ZPQtb`9Ke+shGRVPJA%v-e;KjuAA1dsN% z=r-28dwZc{-d7{yMh`&Ww1Byw(OwE;4N;F$Ckh+$`8FbE^q})vLYs>h^V#X~>CFmm zJq}${r2Mx7f>)1~BAB%MWDNqZ9t%ZusYThzM%Ah5Tiq%}EYTs~7H6I!!ECVJ)jc+n zs-{Pff3LKvwT#N*nF{dM3S&LeyqO104<@heWu=Itl?QDFp(xBq2|?~xE@Jf%C{l)o zqO0zs85cE0M7$~E4r?9)iuj;n4y${qQ>?qXRf-%iK^a!}M3D{pLtU?9JqEn$DA(+( z5qY3TeXq1y0Vb?>wDrjE>Z4tA^%@ZfddxS?e>^Zj4{9GHJ*c}W%RrCouDyU18DWGK ztnP{;Bn&}<)e$|4VAx4&Wiett#N5i`lj^uRRJm>6MjztmIdEwh2dCF;&^?ZgMCqoBw-EqTDjrZ<9s2yA9F@y(`<_VIE~= ze;q<-FEHm`S)A$&F@04bHUV-fu7FLXD(TPBx&3>YQvdS=G$R)`#JL`;)DY zvj2uBTOW3B;AHC~@lBj;eGHy-vV}*qf5zd~2j73|!)-3DnmOEN!mNSAZ7$<154V|2 zvrbCaNAasQZLy<;8mb~Q-3>#>O@)2QEKa#TJio!Hut-VQ2jr`*&t2rCmnzc@2i3;4 z1^~KqDjq%blxSsZSRo9s>BeR1G~F3M(rx&8D*H7+q}$T;RQ7EEO0Un>Q#lF)e|)-e z+Xfi)1)q|84{&ICLq0!u{?)ic1MoTCKy!KuO{Yd&8PF*O?5!heF`~hMj)?enU0()5 zM)U=NVQ@BX=;=^b3|4P5>wEgud>#gZ#k_F?>5;LdC^!EuPM+S<-PP<2Btr$oLC$fo zh}ne2G4rti`~%dcx4s4jQf2G7e|#9$46_ie$73LLwvGq7E`5l1PbaF-jjldrMn1Z+ zxZ`|4wzu7c%Ew%1F%Vi}vz@L=Q0jJfawAPReX>n0jAA!~FeCUWuS1QqX2S1d-nfCR zBdPbpE%cf>H_70rTDJ!twkF`FwF75FmAV0<8W1OgN|}$xOz!Q53*9hkXRgYai6mQKY|W)N z4AoB(F!?ToL^%veSm}lO8UFl`sqnX^&T&eY~HXlTNiDlkr!?H?` z!=)^2A>n@g`k0Sn7jnwH*M=pO9-q6Dmw<~X&wM;)B59|ufgZ2BeNj7c2n(Ck6yx4sJS)UWvD|P?*^ZWyI{de>5sbF-9aI)qHm4h8%O-(x{aGSvbAf1~olcYS< z?AyizB{77XjC3_FZ$2X9^l#e0@=}ahB8Y8iMiS4s7#rab)gvAk-QZGN^G8zzr|4(v zL917kwQ?sae+$S`wK;qk=J_E8E(wMnz**04p{DO}d=f zQtq-^uc4?-qKl2CJnIpEiw-swN3BNzE)UqIBB=E^zeNWd${-u^d2c>bgaV_~EQFn6 zt!kDvl_z<3RZQy&N)lJM81=RD;uU@wt7!VHf|X7xe}PohhD0MQb0i*Zd3rDm^-i+h zY+0Rp6x-#ly4|8r+q}m{2u zxLxtD5(p$#ZP|6mCTl%YtfQ*FN!;6|rS8BGv{kX~20)Q0ghW|hy2 zM|+drXc%x`_1CNxTDManNkrOfec9>TBzo<&zHH405|6f~Tz#7#7#nR_A4%VOT1s-r zN_*Ca*efBLE30dx(&{7TM6mkj=Lg*`2#8(ifAIQf`o@tIg>Ma?5s9bU`~apvS-%ib zR3W*ESvu8nkuC1Ev5rsT?PxNKszvXP-U>KevJzztu_aW6)j9@2f{& z)qfEwIBMRiS@K%Dy(%!AAaPts;s26G3&&k7Ldax=JpD-&J2Oxw;FDag#X#Df@>A@z z1Q;uE_$Q|M%aiQ!c2Je>w%d;J_8MZ-uTvcQ+;Qc@2&6vF<23N54h$mV+78ZPTAXph z;)lRvN!Mb0W&--BDSxnlTzu-n3jgr&dVk-UMO=NAh=?U5%42+43I_hc#e&Tx6Db#4 zudkg}#(TgA;#{j}^xj4Qg?{vP+_%-o&nyG4?OadbC^>G-#N1hu@@)##tXEIxzB6U6 z??exLt3x8ky z8Gf~c*-kcVX!ib8&DI@rC4pa+2Np&P{j71K?e?YkOmRZlxAIx-i938BMZTo8=Szii zw3uR@Dk#;*q!H0gDplQXUwB{U(PPN?`vnAPNxN;X`!yoFNipU&zxw0YjRTf|$neh{ zRBB%RF@JFRX_)^q`3ev2-ah=;`+ve!Ypr(jiVu**e|+=0_lx)x{sOnK(2agy0|Q*yZ*BvekW02$+5p-PDBg6b z`G0M@9hwIGQqgukh{q_I++h6}1|8o@M0UTA!(yCF`6{XrnDU$Sd8e|1#APT{4 z4OBN0^-2~)Cq0ELwm*gOJZ4E^A%T5A(UM1OJ=wU*qpA zSHHT>EtYx_14+0d7W!Pvd4CYKVkQxc49+dr(q?X24OXsNi#ndR%0@|gx;zxl_1nv< zKRR*m!_}LM5C3`Ov{?7PyYHwU5BQH>2Vc189=iz}^Q{Zj~a-eqw+7 z>wgE<^dwo%VAtFf?-A~y8^&BWd*T{c>MR!$35?1K+$x97AA&fVxF$=_1BnR}DSzO_gfV~2*W)$< zdu0Ur{2~U6!BAeH8nE*62N~}=T7M?a_{l-gqR?CLtP4#q zTU)VL>hvVB*PFS)oGY#mZm($5_vBO5!vogK4w%oMAdhQEPur{@D!Xsp#UknZucDY= zgvWg+l*B zW7xo#@7}z*czb#G)4LCs0$b+;zb(%H^YiMPP&uYXR7_F^EzI=0cT!O^?}DNd6&ACM z%vV~WNPlZZS+ZwyPAGCj)hZKjHfl?y!L&X<|B-QPT4=m#EBDOzl9WsfBdM-nQrR>` z0$DUm5h45qHE*~P+me*o`huH*KZ0LnRqf-doiGOqP8;(fG~$xe=c}%?`WA`7xc>Rb zge?bA#nnj)uL7Uwn5j$V@567*nXrch7mqVqV}E#hQKG%w8^MRU4G`VWp^7w`5z3yH zrS`hu3d5fiTz{F(m2f@Sn~t1u7Cj8QL zgtY331;Q78Ywn4DIE{#WQob;FG*Mox$$69}z$b~;g~t|lr@Im1NJlYj2L z$ubO|GVh(Mye2T)6(8Py(P`=U5tpd*h#!W?d4vZg!2FhExmZMrc=!CM>nJChkin%E z^7YL8Iag{~akX8~TgH6qAvk{~A@fr4bcxg+(Fk;zf-}~2AWscs{34F-L40p|xcUSB zzx7pYM0k=?p`U%aMGH1WnVC$31%Fp3(nrSTE0!Mozx?~g+b2JR7|zX?aM*zixAoP~ zCs5a34T>Com4({Gftf$>?+3z)kNCH;{ZCNQf*2rQI`#ndG2{VGz|+Wo6ZD!?II))r z9>AHoMx#%9DsNsdepVr+pxXR1|s+nFK+?Dd+$<@M`8@I6_(DfJxDgQMmn*an3K7XFu zjE&@JTp8PYAhcpBUzu|mQ-5z^5N-^CP(e2RAadyLS-fYpWF%MP%CO>|^GSsEf3{o< zilAHHC>KIIkmAGtU2@mKkDb2N{3*gwGk=l3011VU!K`cJA3SM9PM%QYBvF#ReRq3z z{pS7at2b9~Z?7)z{&aOK<(jeBIH3wy_4WC=c#bj+40OOOH;IdmCx4c1TJ_3-G!pMU zp-M%2uk0yRw$Z(^s1|3={7fmf@YbH12sfdP7o4?O&#et7&%$eaN|kNq?$uL@0JCwg zo;DI6IVC39T+O-tGnc`rcJ=jQ+#~DRJ{KWDsm>D$vRItsGG+sj9ipF;=t$3KY zJ9kFcpl1rN8n^kyqc-X~nO_2M2k1%2vq=hm11_Hd;gkC(m^T#;-Ul~a0z^hMgg)Lt zI44}LJR-yZ)A|5ild>e`R%4*hIMMhah?bCZi$466aV0aDNPi!L&)`#&#&CldnBZ(zvM3HA_ft?vZer4i*iw{411ohx157y(wKX?AO z{y+Kqa%uR#27mvQ*y!hH4W&_&^|)AYc#Fy7)Px0XK9&9fRX;0tDpy<>#x~tHB8d72 zRO`_uBdC8swg}tKcY<+RI5t+?EW)*+2quc|4SZAp7LfaBEQU!53CC1+T4CA|W_R-O3Xz`?Z!!B#?)lVb~{OFY37h`XnUAxAFz_Nr(=DGr-ul(wcX-1kt{x>-qS>6jX5b7YNO8?WO#&Ab z4)r*SLVpG^@;@)#FloIT{{oR)4BJ`Bb`lIh9U5-BwM2wa$Ra6`KuFnjZt8}YDUaMH zW)=dF1QJkPSscS=Pyu}sEIcndq0F!0{#x0`$YPB$iRlf@k}0%!VpTD z$)4RYF?FNMV>014#Oj=w=sPy&q#1pN1Q$@lUVky6m2%N4ZhaZbS;+!Y@CPVkoKRxk| z&JOn+cft+qj8Ddo<{O}RRq3pK66V2TL#TdyOw?A~M~h{3t&wVQb|Y^4J_()x`RmG) zK8qlK9sLTBJt4Bf7oz^L$Z?1K3iee1kAL&D5D>o7yvsr|B0{r>qX({0`YH>P1a zAtEfAHR0V=81{1fLS*T$B6}+khYR^(2~3n+68M{#8X|naq6yV-R<6k$^4ljNGc1;k zB3n0PE6R%6aB4JbNl950pRAF%*e78-ES82M#c#Pn`vsF~_npy2e7}Uq(=AXC27iBH z@rzXc4bUDl7gANg-53WCfg9!#&|Kc+8MG-x6kYKs2;jd1#7dWumtRB-aDj7EMywEh z!f$a5x~`w)=|b+V%|&fS7Lym*cx({|L_ z3nD|gA&`QN4qWk6WDFDk`W8NhAlp7%S?N2O94GtgI-dAYi_7T1*ocW`VD z3(45cq8ofFiS+PatezMd@&F&7ITWT(LOt+-$b-n2-JJpNgs7D$c0mwQ<9`XL{C>CF zwK=pT-(0p#*`aWp_r+5yZ=Cj2An}Fy$Vi9;7@0JC^RLyrOt^6t!y{tQZqA4JM zp9B@KvQ0^F0gGlSqU$Gyuu9C1*`n3(eMcPyFms@fDA=4h7|tl}i434XS{(9>E!Rnj zRu9{#>l6)|3AazMmq&@vReyL}KSG>H>O{j2w7E4T6r&7RA>I~#(DUbs zUyxrdUV0iobidR%zFj?;5o~3_)*|x;XCZ}rUX@4i<0-*GYW++0} zQ_f^Qu!}Inu_Y}zDhnqn2{KUdBTI!dNUmm!^r^My{4QI)E|cG~5He(p0eod0Mw6Bt z4_^)S*94`x({cKnLaEgwp~xi*or;7KuzFodNCER^N$3FNKLs*%Zv4xwZw)v8 zZ%SIT3<5act2a;(b$@3M-S3t}zAfdRkU<{oI8A(#k5Qs10GGX#LhW8S{Gz^%w z9%b6>W?ydgS~NopNGqhutA@MHn^R#n18KE4|gtt+>mJU3^4eWzXGW@bz0Y9$nITXKjv4KOLZI5c7H%e4mid9+_J!E>CPGQZ$RCx@&#kC52ek{nRWwVLTm^-{j1{Si&KQtj1r{fT1SzmFC~ z7;Lw+q0$5-P(Y!aU6L-nFZ+%+Wu6F4f%TRkZ-0$N=M;JJ3GDLUB2)8pJQ)nn*eN?Z z8k`M}&&Ee5CnpE}A^$z!KRb3OXT$!<>G+WO$0x(1$ywhU_@{@br{lqacRW6HEm%ee zB%Ff9!qV7=kpx#>uaRPTMZADfwy{t9E*C)g*7FQM-2ZwQy9|)_9CJd4uQk5WyWvC$i@~t~#Bb8JT zvjx8(nC_6{VsZ9!{;@sCu!O7wEQa%#Wq(Zr8K9e=4$(mpW$OqI91zom&!{AZDDM)P zBTxYoP8uMxkRz}uDAG(#2@(qAg}g7NqBU||EV^tYOft{|L$)OAmgd7x+JyHaO)^*XeQp>~wI{cl~3} z8xBuA|A-Av4u*r1lfmTRnE7Yp$$!bDe|X4yIATzQ*m)bJB94`v04R1mk0gzabd1Ac zSSC5ct#p%Z0RU9Kl_Z4CgBu1u3VaLk(oF4+0SRW4ksYDxoB6pdY@TMYHvwj&|Lo*fw z5i}!T8!Ld$j58*aWsRd8ITY)KXLH}<^#6|g_0FTjt>>jP`4UQ zzRto?uBF{afVgp;BWD)Ommp<*U@~6DOvUuE@L6%GQuY-!kp#rla)C>R#RaXEk7n>S z0~37B4V>sFRL#njRQW_dt$#n;%b+WC$CqyGkL=!-)1!m&$?56I+0p4>GCXxXZ+vj% z``qRk93Gt=5540f<{q7$iMQo=cy>BGob=hjkvm~rUpsbBkB27%*Pk3r*wN&e+fawc zhXZapoejN-dvrMTkNbxnJ91Bsk55mx7H8Ky{mlS)1|$GayFJQRxPMNOxn^WG329?r zW{w18`R>&p-@LYHn<69?o6~D|%tC9rlmQ9FVqrUu7=1YogfmgI-U4IN3^KX=YG zyMlo&&E$+{OW4vWHwz&j04)Si0y4;!i^UVLiY1p}&~n$g=FJ56QxNLhCKuZA4>6=# z@sEHO9pg{2TBa`@i+|jxj-RsH-Q3K;oM?C%puQ^nBJT_paSO>$g3VYoOOY^Kzrl2F z@D7({KE9NnMpzt`3vcwaCcTG%J@$l5g3L{nOZb}p7UJJOJoFAHM}7Xo$uU1p9=9Rf z!FYT&_PF^lK0P=-^v}Hhk?Ws$;}ehhF1J9&p3995Hu2b*jeiS`1kbV99AZYeZmF%F z01^ntqFHJ_I3Kuq>m&q>aDEFJJ^6Yb_$ub13f4JE`V_L4#c+tn!tgGcx%|%%evy9& zG&=R;&!7J(`{kakOPz#|u@d_vSd2xp6!{F!JdtaaK674yy)BEh7ivj4?mbvhAc>o( ztu$x`VlyB?Y=548l1Bqo{{&{wrz+}-&(rv+0y_Oq!s4{6vovT1mNFp0QowNlO+Mw0 zWUzanfDl9!b6XmpUyDIBBbZ1)72#P@R<31LroS$1nSV^US38Cw6;$rrFo|-k8k_JT zpzjEex$r*&vSPv-v%WvM1bNK`54I*jwuTl@a|$s)0D+PE*}Qt*ey7v zet++JUm)_3!Q+*Fs_6vC#UiZL#yiLo;p`tL657Y2S&FPv)kN|F(rG04`DX4DgzRR) zoIgULsEZ19MZ{i|Uho2iyPIHHU<=Vqg5+2p%TRN5|gSKVS#L$z(7%^iSO5Q+G0U`zL+ZAF%O($BvH2|# z0?CU)kN?ySETq=3nIa=Y5`>69^sk^&ig*q!6AgwWK#)bV6uGvR8#)p5VZP1^5QI8h z8DI;jO*QudmSkCLbKcZAP~4LxuUejlVY9)FD2PK6w&(XCjUk^vT)b$`*NunLQ+-igpz3A2x#! z8j=t~*3teU3H>8My7@A-WcIR1yMba8Y3_7I@SzRHZ%D2}Vpqp&NUlI4$wLyB-g3>q zC9{j}St{g1Yp;t;FcxsDAqiz<4!0VT&_OnFuOSH_WYH|;&MPim4E#+X6? z>HI7XpPp^x&HWxeYZm|-l2AbA&5}?*K(DuN^WrdKB~`21sY4P} zggEfatJhbzSCwPur++VcVCCWw^~c{_k>4Q+fC6h{UrcRCLZcMc|2M4=I3xi_6tPE6 zuqk#`5^O@3H`C}5a|_jJ5I{Vx*u9cvSM&74mW_!)f})r=OG1`p^fVKvm6ag;7Zyjd z2BDZUlQSXQH9 z^6HN^J48aAsG(XIgL?Q${S!bgG7Mxi5*$TMSV-wy=Pk}|zjTOfW=KM-l!qd0Rn436{=?Pf^~(#c zecb%`?x(wp*RQ4My0IErGmZli+C@#czjUx)VPHqqo>u2m!2#m$mYp1FK{zn-X|I2Gzo)6&IAQw z8lER-ITv9HAE+s0Faav1@dg2U5HGPx7q@HTdw&@ffL}}CNdx+E>KmwLnG)s|AD(CTm#WEA0Pd<*Bm(JmZk0wr5wHGL|=@Uy}H;05`NFGVb)D4*C=;6+DrDy44olAt=@n0xMi9|A+i-?y9k0L)) z>3=efAWv14M~#JB>rs)QNbFvzn_%wLpwgST-sxmG@lTJA{G+4OVc&BPJnv*U><`CB zXNN=o@XSB-kD0&$PbNpFlM}ChFdUwahli7sKIt=WJQ%wZmw&V09}f=L z3IFsN8+&J`hbKoz!&CR5zt?pxLQJC-RDUk}*)k$~WFg@;OYKK+m(V8!C*c=JG34S_ zMd0$KK+bsf6`5r6N`Z4A3`v-`83u*pQ#n*<|aG6}o@0=+oDOjb*pz3O-z%1^L2@*uB`D1U9{ zp(0kfLA)Fg;DC{YwQAvP1DPMbHzSC2M?ScP?%*dk9-F&y5Z$Q>3yXNfFBzn(BY9^g zJ1hoG3O~s$xSL2P1h^mWq=9D>5^M%$GbF)mGL|b9gvIrTjo26m#!un#l!5<@8xeB- zv2H5V5-DJnMw#3jqZT5O+&Gf2K!4ddUrGQ=6eR*D_e12|MkD9*XBkEqfnGBLt5sp$ z+y$h=@W+D>{R?{w|! zzw?IwilxHc47z7XLiYeS$iC(jVy1ySdm~3k1DlO)#+6FK{cx)ZrX_Aket*5xq`Fo6 ziE9Bz-f}yeskSpD;cs4L)GoPr&pFTvStKCom0F{e9$)S=3IQc-`N{}^^l`o`x!X*& zoFNIClL4m`YFCzJQf1ncyyg;c1WG9krvd6+2(rM!hl>hB1`6ga_)AZ;pJjoKO0Hy) z(iAPzh2+1MmW=Wqbsd!}1b^!0{@OrZxCzkt$nQ$;7ZNH#V`Dt*K#i1ToWc3ej8Jzi z!3sexa!V)6P+A!U$h^gNG$YeVNTfgIj3nITg*Oi~iQK~b358{o9TKSiw${yu;c@4~ zp$*y5kc7Fi*cT$t2!AfUa0&UA7JW4Hnvh^iw*piIgZG)ZX3BuZcYh_*#}H;&%;PMe z#t7HwXEhekE8<{`VT?EK0*00`I-c{z?w}<76=t(=(4%T$6{Z7r zXOOH1sJPpw1(TnK;qaA6o}YgzuL2x}qrgPL84A<70BKbp?Ypm(Hv)BR&)^N*!lQv9EI~x? z?;{)YBM{4_=yeQ|EF*dr2~JghBlex~vg%_Yo1{58%cJ|W@p5RVK@mCIv5eZL$$&}b z{Ozy*&EaNn8Ug6ZXU>fq%+t=**X4r6PsSbB^$KVkC833Wf`4sNl?8y{Yn~US&AiM7 zW|UdP-%@xsxwasAFI>r@D~U5?zA)$?b0|g6l}~`7gOcIK8}_@(l|@1)-4=bDjvLI- zvje3A1W_5X{6fV^00M{z@f1VHzKGckPB1nrif0c_9Qfn|sEFey5w%su;z%k33crV0 zm1QuX#T0Al#($Nq(wRSO;N?w1^gTPLxri^?03Co(qia}ha z6{u77bL&D`McrvS3-=tp5Zr9^pW5vbNk7y%m0_6-!7&x_m;xJtkd=a(6Hk)rxa+(U zGFOmHk=!!a7VjNyM2LCK`y*Sp&JKIF2KI# zYNWo%Ab%d50J(08ktO~;5fcGm5qv04SUBl!NbadzyPX!hs_Lb7tt-9yS~vWuZ4hA;<}WtUIb+jCqfB z&0~G56roh+7?Xae1TW~s1ztm0JYf>x74Bh6+$3DGJPmdTnHte#K}NE?zhnNy3#>1h-_XWNtP#A};i(Dt%ps zTg|Hr9>|O{D#>NBJ1^n&@WI|#aH*@VgH%f;Sg@?lmOmqOd}KphrT#_qAn!iLT4d@7 zmVd6Dcs>$ICn=vO7ktz3Jx3Cppt^!*S&(G_c|>6xz^5lYtr`4UL~bFwpATv#N_v2c zv@?F{z<Wf&SVuP{LZ zz_lI8MtCd1zi22YvItF_>wU|)96AgrT7L*v^ymglM!}&0eH9)EF-y$iOC*R^en>=o zzjAfL^OkW8YUKu5S(#c;H$6swYbY-XMD38NR47BtFGh2OrrY~CPxvm1P23vG(GR5& z?+Xds_A-yh{vlwG87Jim;r19&?ocL=OF-%54gu{246cPk3`)a<--a~F3LbgtJAZr) z6E6Vh9a}7mMwe5A01P(uW$g|l1q?6^%#w2@bege!!JN-gS7 z@H*k0F7u6f~N5 zbBtAO(R<{l>>e=^Owhblihn5L3ohR=%+kn(cXok_8vJFHS%2~js$%2du{1wvwTolv zTO|TteiJHo{RkUz;!v@I()ww)Z-d2oyPXGR)$586Bc`cCIhHt%xD;`&G*3UAjY;qo zZAAXcL)}J^qqOgvD7SVjWHBS%38%H6lJqP(-}V z3nuAIg%4R}8A7Zhm{+K1=EG@3?LQ#kqAStz+awMRjd8-r|w^Bw#Brm|W>Z~f<-Lmu6!=i?n zZ%kM$U_z(@5i`LP4}Z=W*k-s4%B7dVP59AR(HNgHgi{NZ$D+pyDp#!j8-53pgGL(? z#VXgSnamT4w0jRlcySp3vle5{UW6HYNbn4c^_UlHmSqdkB>}6ta?iTXN`1o-rg>w5 zaiKQ}&lr~7L)!4lro;y!hfv#E#yh|A49dG7?(0A3yLqI}dQaJDQ zty9G37H%|s!+#VBy0v1mzG;e#C>KnYw|65AfW9w^9hmtHbIWr`%DSQ$m7U5A3ySzkVN5b zt?H^@hDOrJNFb~0xid;)uZMOj%%{gM9nNdUfVNwq{b6+%%Xkq1wFj&tR4K!VBi+5 zQv~Eja<+F%Et>xVLw3!92q9ZC1?dRtJtA>6)KbI7An35w;f&g9P4LWyz zbbp`C6X(tHyM(`#pPyF~sa6k*O2L@vt1zy!!_&dx;Lxr|DlKECsX>oZcb!(gq4Pt&{7D)!mRex?`lL!xj`OSYvqjq!F=C#F-6vtaY}Cm<34UeKEJZ#j z|M`8CWn-fEG?@FrL*PTGK^9a+4;#GTihmSK`Ve}Hi}fN|wQp%L&ONZbr(3YE?Pd5b|)P)jjR6!0e{S%7H-FdkSoZZRdxBqP8J zL=Kw6uR!ed4?y4Qa~)5FvoLbal|sBF;@3g@!Vr_2Ae=x&qu2yOVmX->;M|3o_J6m( z{*S-?_5b?(8LDT+n4-7;`SZ_^!Ym`0%uSv|GLY+IW^*FH8;D}v*x)}j{P#mNhAfPi zUFQv7GOixKM1uqF`nhw#AN#pK#_-j|xwr=bbrVg}N7#Xvu{%ix?%aOVC=MB0Rn#=phQ0mSFVOeQrW zd0&Cf86;~d9Y1RxsIQnfX^-wx-X5ZuOTR9911rUKd^TR*--}ZSX$fm>=R_<@kQWfp zfZ@!zqe=l_v_gxGi@^v+n9^tvtAp&GlfZ*f#R_g}ejyrqpnofP8VRLr34c$k2QjW} zl?YG!UeuUYuo?4y8u2EOkh1yEkqoWGR;!G9erh2<8Tm6)N5Ilt^=`ns15O)}Aq8wn zuB?AM4eqCcMJKP3Cx59FzgHxP>>FTp3c zVdLd?tIeNAkA-pr08Vr7-4qEg^7n%u4D+2Qfq|Pr{)(_mFuQk>*nd-z6aBv5$Q3K> z|L5oYQS{TP`o*K8146W=54=Z14XE_n!HM5ST)UlO&F}m~BvXJcM)UA#D`)cUV9!8x!BWX-i{N|=q5dNQn=b@h6sT|ZB{D9S<&Xurjk-$0P6vWitYnGX0O^xMsARwFs%ziy(pmCqkqN5mA-{E{4whQMpYV;G)dH4 z_)hcCcywh~uR}2hOA7co)kK3{&@V;;Ho6N}C9>Hk{&Sl~z-c z5ed)-gVc9e(3Zd)g9k|bl5G3qb*}pC?JM(fp7~US#;x|Opvj2mw5*gD8!J_9uXHoH z&JX;T0)G(cd{N}^_&lR=;-R&;L;?8#{P^57Xakc{+VSH67?oxWD7b=TmbA01a%gVC z6*Pvr%Dx2JPr1#@=8Cur^%>x^5UVG7x}eH zm4AnTq7rPm3sNxm1lCBfk0<;wyb>$>Mm$O4R#;zwx`k`>ttG%zx(& z;Q$PV%NloM;6QaDIrwjX{qNX}yM?^_%#2QsLPI)I5%W)WZ0#P{u#Ti$9 zLq1$(Z@Vb{TiLilgB0`Y7SWGry-MWq!ZoGLLIno~qHoCB$uU zNKhvPE2k(-DHuH#Lo%rP`<<-entv~WvPIWwBwGxGUJKay4ivn{L{-wh`sy(xtOGBP zD_I-_3thr3saWLw)E*(Zo^WA=Nd80_A5cSW1Y%Z>id;^3Lk;E1#;Fy4OND40rD4nJ z#f3Ax=TvOn{>oBSga0bWN|A<}ur!qoQzT(^_CRH`6p^a~bO z7VO7Zgf2V*%4<15u@cqKLw8~+Tran2v$aXO&W}u`9H_S@WDlTA94JCGz5B88^pQby^8KN8>A%Xww+RDX#Bn-PI$el=HY zMNb^go-(K5@Q#`E#9PEBNSpz+?O76AKr>VU&pwR`J2?^r?2r6A(PP)4vGB-WEmfRU zemVGn__>rU z5#D;g1R702rCtt3VsUcFE|Lxu3rIQ%@%HS~Yd(-4a2&d$o&VJGXg3n1Ch;c#vRXzo z*CT_?kRCKcNbrGyW|He09}}e+=LxJMhC)o4-H;P0(v0Gnn}42*A3N7?FR%XSe46*( zUc9;b+4;2Sz5nsuTlgF6UA?)ue$D^p_AV|jKV041@V}?M+lwE57SNCpM&C=xU>Hl5 zIrKr2Eb|J?Vi2O!zBBJ#gn$zM6N{!6)VL&Wg=UBqz8#AviJ_qxo`Y2i&vyVi68j1j zgYt}QmE@5?8h-$|6f#f+oAb|tktMhv`0D)<#f8wG)V|9Z;-aPrc$P6M0D(4-f=f+A z)kPwuI%2XZOm55q=J_ShqvnuH1O*FOTqjaaB6FzC@A(b+9Qs|TSs`*eD)v`~P(~k? z^P+xq37>R8f3V;;`F0!&fS{9AEis(~PMI4g`@+$ymw#SG?1T_<*eNbFLWPEy6!?~Wl#a5y8(8mx@&el7T`{W@F+K8BLRX?bhEfg?uM{CCAy))y z?-7yy`hVFc81|JK^?Mk!Zll&eg}YUIm_)XRazS@>r{%xIv+juSrgE_tee3@zE7p$7 zo@IK=a^-H84TrhSz=tYdDo7JwOZ(bD?^-?2Mzm`hM??-lRs^p(s%uoeXd`}tw)mhP0W<)4v>L!bxOKf~0hAb&r^d?eR=5Za?Fe`YIQnn8z=7%9Zo z$zuwcROqynPT?1Ye61FQ4#ZE@w?|H=gC$c`tO1IeLh+`|z0XfK)=U*<$y)N4IwCS* zAdh7itD|Kxiag$08l+@q-7A#D6J<7wsS4xBe^T12OxtyS$a50Z<;CQ30fiLBmwf*4 z^M3;hb@#sVYdd$jx$~42+Eb(cvW^?V6 z@WZ@^@4(`Txv62%1u?HeCUTI&xE3QJCt-*$Vw~89dx?ZmwrG}|N&$H+J$?tkn%T$l zPY9{IpGUFH9+NXC_!oZ&`JL+me6RHxD1S>zU!OkSTzzm}zI*fL;_c;XY8C0lVOhLSkA zxS*sViOZw=WHD9~0V&4nBv{Ng$YS>*oGI8WMP9N66$v?kOnyOkTt(_8?gJ~3J&FU@ zy=Q6hn|n4VkO~OJuV4B8rQXzOU4OsJ-`^l&do~A%3f(L#1jrDzsuQ$cUBAA%d-wk4 z?&`ybcOUNFT;1GU{BXrzD?Ye=9HGt9m%N2}jHc}}5rvr* z`ydIfXwfXu=&iJKrRx{zhFQpf1|;L7MwT1qK0I-OIZ37Ruo6y4*6dI(jDJA$Q06Gc zh^@-l^+{kli)M)x{De0KXd?tKMkv&1@oFfkEs&MYJSr9YSprAKhRAiLy-X@enmK5| zTB~xqve8IvW1V>*{9TkscVCC z<9j4^PpXENeZX#DB-mA*Z6Vc8wS8fmse0NcL7z0QMV51$2)}Rc%6}Kd8$b-@2~?xx zG2nYS%70CSCWTS(2L&FKd6+UpITvBdM`5KtxZx75nlXQ(ol)VKifXf?>~xH32NFn- zEeGGJZ0x#+D*K^jD1ij#vS^kb1xi@Kz|6Lwy!u!;;87(iK?I?&7w}V2OA{gvl3GH< zlc4km6g}W81qe`Xk$>9Uxn^9D)WWH7D;BFr`Rufh!^r!B%p7^-(8X96*0+H4RQVi< z=ee~fd_}0a76LG>BETXe{^I|9S_pzxz(PS%gZ!CI#Ic#$tbH=p%U&BG1GlV%IvKfz zgdl}2?Mmt)v2FEs)&p`?H%m-L zQWhi#Q_Oo?zxgk+dyfo+P<~cP7L1h#si;ybAl1k?hlO)g&a(8bDa%4Wq+AxKT!o!2 z!!%fg4Ee|t0ktnk6j?kseT<6H`21bZ-t2R&$db>mnt+AqA>qy}wuh*Q?kpFy5_xh1 zNma1+B9l^VqJMl6%KJQ7&Ji#tv2KcGtx#;2zd0gVPrU~tLC&=lZ!he(r20ixNOW_| zs`K_MH-!XCb9PYq0DwS$zr5c}1=KzXT2}Rh%Zs4YPap_Q<+T`HNHKaFePQ$9FZ}YR z@^9H?5O?Dv*L%dphUx%c;iuqX8bd*1ktUm2JXnYpKBNlSTY!Ik`pqEC`Xs2C%r!(0 zQ7JPcN0_j$Q!a9VGoGJbZrE|rrOM2+uK_>B;Bw->i&n!TN|FE&P>9}VkhiJm+R6#> zSuhLr$?VsF*bAyhqn;_`mMHpj$r3LP7W_9xz@#aZF_}*XQI)JHJl0=Gad$xFWu+EG z1EnLg$(HHXwMc(Rcsevl3KCjpk`xsbJEMdI!n0_W_?SwD!e5r)iUf{1KidTiYzfTg z{2>Y-n6KPuf|AiwZnGy@uVyW^2(Y3c>@#jI1n{sz9=aluldX1Q2G!5}jP*vO3CbjS z@ZNzBRizgDED7#2F!T;s-ufiyT_&X~@xwx1y%clMVTXT@0Xu999qyB$eCExP&~*j< z3%(i5mn?sC)yWY)i$|vPXt2&ILJBr?@y$GNBxoJz%(pt$Igu%s`&Tw|T^9wNpr$GC zG+stBlVIhS&=oDNsC@85YypZ6#=^Vj6ezKOS64`qP=Ug2qwr%$V^?}lHq2BDql1rV zXbdd`D+zzsXVEMXBk~p~UlZl!E4%Uhvd>QvF`znBkqoM2T;aVLan%P|pkwASt_Aq} z^6_SiLPD^nt(`_ENC-oVRVMoU+wJ0#6y(aLl9SbwA&P%{=L!j<=hRBABmwr;qB$$6 zm2WV+MI;bar99fia!7E!Iza;xa!+<3%T|h#nYVut9Hb1)ziFh2{kO z?O#|NeeWjBx65oH;p55!1c}OIZPhH-D+WH(tHMuO#d+*IOrxS(jn^PUE|@s2XT@Q3 zgXD&r8*+ffdF%-V|5*GfPFi>BCc2MWz5a|S9kBPKHR)} zYqfuz2I%|s1?s$wL|h0mLP6@;kji=N^7wcdZYx)kev z^W(dp?k--xmK$(mH86vKYQYa&l9Mvr-4(F$?11oL-pZlf-F$rcl7D+;AuR?xpyK_^ zkIR6B-LrHP4@d|;i)M)-R&LoQ%S42H_OpK&TQQpneZz`e6Kq%I4zL51@fFok7?Kn@NXy%A$Z4_E;l1n4FFQ3ecx zl9v*&zD%H|EH^TED_k-|N)p~hkq0Z@9sY0EqSOqvaP!Kft7Jh=jUDj`2xq;TGE{#< zh!$8rz2HHb$Tpmi|9a*{;^x#H-^M#RyQHp1X+SO)?Y#Qa^?o5*uNz;6mK5GUIYyaT zj_fgt;sTTJzyJVFVE#E*VEWMkCmAOMIf^{eA|+}z<3fqgDSUF=2~d_u&WcrUAjVp= zH4RdU`$88V%Z8JYg=WuCVpvIEr?01GAhj2^L2*=U0FLdBsx zDw@1R)&-HcNRdVd>#SVCg2-8}7&0QH-0Z5q%jDyjESd7{^#mbt-!`Uaa{m(7&A3LCP{{Ab^B65Xy>@c9wZYT2ds4c%V?$U?=jD zaAmsS%;C0IqE_a1Ox-g_!h(PDGk4)XxbuvPDJ%3de!_ynSQ`!(SLUdq#~oID3_LJW z#?J!Z4_VnQuF2(=NZ;BsYb5=5K*FH*6;8QaJkAZ_T0X&9nM+!H*O@>GZy8lsfmWCJ zc3e-uIg_%m<#%+RLL@7YmHsj(T1j}LtXE8gc??4wU#RX}h-C=Jt@MA|v8)W^Q#r^X z+RqEhRz*9^eRl&Y2zQ$Z$DwQ!;aGUaxE+OC8B+rW~rakTF zl_Aj}QFRQxX$199Tl{6iv@1TuJ=q|7bsQpcZjssOpxLGxvlOq?&{y)yn8Fj z9c5+WLVqBGiso2L(VC#)G?%1938vLBH-Tbe@OHT4APmwci)h)PUZv;iW~mQ(yG`B< zn*iE?1RSrGo;-gbgUB~kWT|f5pzO%YXwIKT$TpLw=wH9X%Les?-_66P!pi=t^tmh} z2F}#)xzY|^k!50mcO1~s;}+{chlFPpVUlPWd(4?EQB5tmQo*OAFbnQvB5pO4SKXXf zVn9cSx7DU>IQG9wBy_lnsVUDM7pWIv z*s|!&Fo-8-2Fgkyeq>RTn~WSUe|5R^WbVwWM-y_4LXR_d(GqX7yU5~9=jU_wXfp^? z_6#`)FA76`t6ML{f1^0*rjb~CtB@B7sBRY`9guM1j&0DZUWL@^W{KI?*J+N?$BcKS zxD^fug2;cQ?3KC=*Vjhshgr#Cp$I9%Y?Iz#AwWr}aqy!{_B;i!h}k`qTjX!&gDW+} z#F;ZO(EBJ;eYw7P=fbSf<9DZ0qi2$vKUoGTR)moMbY*sHQC~Dye@K{hi?t%Aoc%Nn zLY5W#UdzfX`lOWot}_NiIqIy^ocOlln_0`}g%W=r*ymbFaj@@HewQ}7_c>E#)2rv9dgjgNSEfi#O#ZxNpeTKM21?aN4QrZw@o2&5mOmN9)^F4 z3@R*Op(5#H6hm4AR|=-0{MRCmkfqagL(3nO9XB`!&Zu_KkhtvgnSUdA3%jP{^NKJTqdwoUFTYolLD1Sl1n@vaPhHNQHk49 zz+vIXmg|VlTdcKMs$?gluokOK!oYuMZ6vgCM_YF#jSv=3=oS5v4rTNfd_BV}XM#u^1Lrd6n6dzr*SC!ys`H ziDtZGCV&)kzIsqo{Aq7rm^l{1qiVL;u}I&_MwX8wuY09FhtKAee?MgY?<{}D)d-8! zfP@2w>B33oM%7BurKN=`M#6|&G)vV@2QU+y$U)7CG(xsCAOWIbBExJVVn^6lQ3cDQ z%VyliWNhXJg`kz)R&!cG0@;ABKF@sJ~ zXQN-SyF$D8vDCgzPA7tQ4>1!6FX~sY$gHqx3x$wat1;nLiS$1U5 zOpV9^88~`Wng(w@MB`XRSdDugk`SO4%~B=EacM%32%kP>vaxU$w-4cG)#FP@0}jS$ zw!U!}Fo4&=>|cW42QGhK>U};6SnywA%vgr{{CN_4y_p-#d*H?HO(SmdLk(PD4Vf;- zy^F=-z2de?y3*4<2|{-Jw1814DmWJaHiB1yuSN3w{L>0PShptG&`L|QaJ?^(Z&(~l zmye~|pL^Ij;Qu>XKU+2Sw|@$a4%Y2$iWm)MP-PGU1KoKLbzy(Oy6^ddSI(ibJBom; z>@G3yk0LpX{qds~cKJ~=?};K6*Lr#6uBfLz#>Vg^deWsd8>P*`jHlK@Bo+rz_jq* zMHK`g31wYD#hR1fVn{R)A8C~}2T?E8LgLi%K~=U&#S(vIYXFZaq`XXmd%I_xgqSgJ zmFj?!CkUs(x9DXylh%e*f$DB8NWW_>9@SG-8J4eZx{fQVx>c$tY9+U$urDho&T5;C z3Ik39c#~CsdGW&<+g3Z9qPpou!~z+fVe`b9pevB+G+BMNs@^&C=WG`^i|WP=VHWaz zDZguisJ(xntai&klz+9k7DiZ$@~GU>zvLAGudEqa>TlkRGKTZUnor|+3EJ-R{i2S^&hCqUE2CenYt>cN{9M3q&eAKe%@KKROA&qXSW z7?H?_kkz8srwLV~yUs_Xv-a7<6~&jcU+h|K02yAQzBZi>zWx>?Fshwu-n>bH)RG+P zmKBGsC+~Nt28v6eJ7Uf`e$Hl-8ZkOa@Q)R3v$Q}K6QN3Di+yfHev*s%ZDqi%?t*ML zif4a)97Q36l23nLx?$21jyu6kW+TK*3ihD{7A$BIQzDK(=(sk0o7Chhp29RX zKc)Mc@fJ+$4Zwt|Lr$(wXTH~@41e=hsoISFdql20C*PxB4oSAj^kw8TE3X&1wp`(i z< z6%pg!sm0DpU%(QP*}m^F1$)2fS2Q1miF%TaB476E(_h&mRhU$t{>r8)LWFRsXbBjH zn1FF?l79jCsQ;zXE^wy~PS>3n4aV=qyE`~pH#+Jh2vs#|m|;rm)T zX4M2KZ^9<$eO0?8x!*?qak$Ko%oTq_oxfn78pWTh`X><(S2I#ow@VV{?TjzPMeLXx zN6WdN!JBf_3?g~}7czH1aPhP1Af!@|3B<)s_Iv!fIFI+N=8|sg@S2P0}FS z_+nncQl29r%d0;+F+gZ%teD&l*tS`aBp3j|8j~^0>T+Vn?otA?3Tt6LWLke>hIzZR zgbG=%(*-`aK$7pMlf}OBkNKDokzFhSMnh)9gzeiMI+E(zc3!*u4d!Ovk1T|O514CT zt`{n$_kHXxrh%70_Wd&B#*uj}=EEbYy=@1{{xJ?B`$gssKbi~58LSGSPS-==%CZMI zz~m`O88FX@a+2xDQesK z{t56HqS$A`AS{>4S3@NDwBUg6iDL}4RI(it2fldT&BsWTsN#$Yoc<=+idat<(-%_l zL?p{<*2U^!(FAUFEV{B`io`9YSHa?MvkY||k=Z=TSyl9WDzpT)q)~rW>YSv66!TW8 zR(?6skH-ZLyd*FA^fT0$-sqXHT=rU+gvxoDnEAaPkOadMFiq1%a^CClUyzz|FIuqq zFaDR_FO#pmaTtxcsmEn&-18%^1Lj=Pi&@A3GBl4;mUQ~Z-B~p>qiVc#T2V1xDfauv zPK!TPP=zMm%Tx@06j6WA6Tx2q_wa3tQ=kZ%sNYolW1w<`kqd-&Kx|+>a1&nwA9%*K zh7o89$N{nBsz=Uz2qtk?K7@D6xRjHF)vkbnRlTQjB#HCH(ynv$AaLgVCG`V;Kl>r9 zTyQ@}j%Co7&BtvRa9LnU8pTuo>f)9UHg@0)IxVg%Jc4e3sB(W`nVvCso~Wup;vArU z1I(jP7Kn-J5UkpgsUEk97nP426hJkGY4pf@j`tOBb>dE-*pggFV4_|o`zt01KhCm9 z$(GoXZmcFz9eF&FG6PWhP_J8FAXHrVIHF~`Sf+b$htb^8Lr$03;xg4WO_AAzW=$|_LsOS2tl6Ia5)W zckI6AmI?pJc5zlcIITRZf$I~8#}Z_ym3B1-Bdl-B!R#QEgf+gp$OmjO0IgiK9)Khy zwit(2l$w8yV}_-m3e@iw!_bOVn_;|xKP}Xk9mv_j0Ic^z?}fD)ho;1b#c*~YXv@O^ zZrk@Un^dPYR}W?fvQ`YH&LDOmQ^g>J5Obj%H;8*XL8f=ynhi&lcq^O~$r5ido*f8Q zHJ+8?V)kR&fvhc#DLXy(Biez~RU@(=#13Tc${>HN#h%^;Y&Vwr+oSjEnvG@|bUy|b zUGG5PV%PRtQ40lAY01~6UZ`xCO1-e0uOU*+BYiag0_CUgF9_2K6F-P7MQ^hu^-$ofPB#F=fhgR1)@$HcS#gi}C9B(`|Cbho7u$wS85ZO`DZ>Vgcb zE3#w+^B`^Q2^#9e$$UE&659x8Cxc87No;?~0@40I%AcQ{Yrbe$Vh%!L#gdgj|2>Rv z%b%Oz;^G#r`?pCTN42-fa)Db52h05Wk&usDCUCgk>W)b&%3w6Xt^wsd3#1hmxFjRk zqmXZEK(O3G@U_Zl_7!>}n^Bp>z+oJ(MTka1__hXpHOH-PkY=EJN{j%Lt413pB9wo= zQBePMM!1|ktbg_+przQl4VA+;iG*ie=Ho7&6#PbObxIr0MxWas>){|Wk`nLLn(svM zvKGI!vaajDl#d%0xA1e)^75JVb%_Qf;ASS`*2h}*IJDL$w!e0SEDiw)2x=@H$=FZ$ zLPf54n2HYOR17U@7S4R@lr&(d`t)Q~IspkMYTPOr|GCKxbOMd{*9D^<)~WZK;dTHSCjeX_ zSyWboFJ7!)oyQ;*wbFbybw%MT`8jzEe^u3Qr^~S*U57+}`I+oG{@Qhjb>M$0k!A)i zK{>VC(y&FU9>f{)p{lw(%LKD3MJ8%6**e8QWQ$G!LA7r_6@v(loJtf!)n+zZq)*#N zFG?~wk>@QXjteT^fz_~OUe%d{l~W;WxEs8Im8aP>9bee|Yp=tK`(fW%i^3J&jg6cF zdUb?co@m_$l>}RONFj^&TrhufDJQmJ=lT)De{f-)(ziStuG)MX@*>mR|FW~z8fxit?lPxHy?OCjxUawdj1Ad5Eo zZS*rRQU2gdb10N1p>7LExxx}}@dIdeKz%u--7Tys!w_;EX{O!{lJ|cCd)V4YbyT_h zCL&8Ox?b|-P6YrCRJmM+ktEnANpsZcYj(y&%Ut~eHbZ9-EtUY2@r6?3Ds7-JzOC8f z`k|Q!!L7Qee!ooF9}D6|T@&3gisGvLs(xpawVvhL!JW>F0+H}rnIvyj++-PLm$<|vBFpJ zxYX}NUHM8|0GpJM1Khc5FCA_O4dI5V{ydUI3ROZ5~R?VsER>@IyX&q#dC*>(Fh3tQ9UeP|O_>|hhLi8HL z6x$rtvfFjOqdvJfmHA%v4;u0H^$)0m!p7~kbcb41VRe2dTvXcqpa4{D9af zCEv-ej19vjtAWyqAqkjqT!@-24gJOC)vJq-uW#>OzI*%X`iHw$*RQXB)p`dkhDsJv z?SkWEWyR26vJ8L2>P(~R{>f^eg@d7gKrf@R66Y^Oz6wPi)QoMI3Ht{oI$mKI7!zjx z7D!9=)uho9$uG@hKk@@+Q4@y5T4XUB6MboYB1$O{tJ&4uESnW>B$=>JVLXG9iOpC{OjvU* zwNGLdvS`*sF6rExUSWgJbsGz-Y_qu}5+I9aO>9Ox_g9}>^hte{ou}f?NPnqV%vG=0 z%M7K4jxqUI?P%eR%|7sBmB&eRVS(w{?;L2fU~)mJ4H8KCutZJW{FoXa(n<@tPbL-G zdh<6dg{gm(ThklLLT<%B)Pm)a2WV54L-lzvl6<@O0`ksDm-zC`@rO3T03z2J5o1{Xn8UzR-oe8D7-fGYa04k6JD=eK6T_1g>}*?WI2o+ z+}f8c<-d`%n3c3QBL16|^xS;DOW&xr7JQWr{%pR|=EqIk zln9gkf=wDs-w3&aT0R)~r9suU?~TiGt>1%^eZP7gc61p`O>YbHo`g&(?Z(QT$jZl- zHmG3S7fy?f#%Ba_X~MoYf~ja#isj=+0-hAlmU_v+T+PqY>WQ;? z*^JOCJ2c|SK$S`f_1hZpMpe=*jCc|b#-dphDYot#u+<=UP~EJ$?MAT4eKK^zo*SS~ zM{pF#0Wepwg-oH4yESv;C;Z2jYgd0U0()%6jmnuUrtRZBQv}K2Sl`)bQIZdrs`De zfSI+#Qod3<+x+a;QZB0sN0WatpKa(ksTEmeLd=63E?FWn^~X<&pVPcoT3tYMT24~_ za*38xPRv3%-T?^tJZf(FZr$Z&M1Etu36=Svx_aI${mX>ZA611 zr@)fDz*^gloV6-X%{Yoe222WnUbk!6(B3fVT;Q^}i(=f zZ~?w~b0e8d48QdN>YJ}4Qv}gff8A81r@9I?8UWWW*8`)8Gj)IGK2!?^nC1V^-nTZl zZ6s^|6~w!#q8*ABsU*If4=1!l$J&)8l_Wd68>Lhb2}#&c1Ydx(tUbs7{hcc~0D6Gw z#z1y*tlEt&iJs}X^>p_--Hq{L#nfJQvzyE! z2fq>M5TkZVdzp7^>}15Aux6Qc26+9pq>(bI z6n^drLkS%&Mk6Ho*C3qDdgqVyemsBF4;uBUT>?rnFeO3d9B@&phXXGY7T7Li+H3>+ zX|(p}s*Uic(FqKRZ`DP8_eJ%~}R)gb&-G{YV z_lH|Upm=`|va2{5oJOetGV*Xep$N(s_g0D?f`=NHe%~!yg&}PU(B)Le+RzMURM zt9^^>S9QIcB_#kPpZ#JcvI@_FWs=3UHD&FRdZ;8}Zyfo~Y7CnM@kTwW8s|~#nt}qVMG!oP z=#Z#%OXis@_b(MPK>$odv~n_YBH?;I|1Ta)=YL`D{8G}1gGIvZjQrDh;apW1;qj{z z=!WwHEJZ^&J;9NAEVxcRbaQ(wslU7gkKw{r(%4oNcB`+8+o>9i$i#fX?K61 zou7dTtJ8@`=KKV#fnmZY$rs1aMkITa^7LEPgJwSH;J*!hSo!GV;H9+A(0j@GMHs)b zP7k-;yxDSrTfC$p@oJutN2pvso{>lB96zm)N2pvq5B!vC$0J~TDWAwAR8AcW^2jif zN$?|dikx=vBh(8o;dSxz*HJcO%VK}E%pYhVlDTSBG!iNqPSv6-s+Y2)rWb>kjFMNZ z07?Qpn0i6wNAZ$Us`S;trz#hD-zKqn*%KDOyJAvKd35lty6QUmE$>|T*%yY2k_xAQ zp(=zkig66YCb7%cUCx|tQs(&0m;-l#3{?97RiRSkcn4LX65;4C1!*!iCf(jc?78!QX$Nl6mw-xVCn`#EPnOQS;W$IZBq?vx{1%CI_+g>4fOA zcPdgP5qfpe-PT@D1?K5>lHP`^6{-79bd3{^s{wTfo;|lRemYsmI*l^%jCw070B0(n zmHe3u_@o(sS)9(-GgVe0P6IW$!JO|SyogR_>673vyp3kT|NO-M?eBkq+&!PNU>YuX zrsU+3Lj!rHT3MnX&LrN=v6`wi*_xC2DhjD)Q9fHYJlEG{6fN??4KfERdC6R z^Q@PAmP59oKgPG~+aS3Leh?qc25q;7lO*S%6B4a}>D*XxjUHOn7Ix3w0f8EM zAmQ!!A0lVX#qQC&!yIAxLzC0q00?pd}rG5rH1whJazZ1})e+obl;Y!@Qg) z)8B(=kqK*pZDRJxIGk^6iF9*0L}5C=$4llK#8477Jq=ZRKxIS8qSdQ>Th@dl?7d-v zsp=T&ZL@LUWjZA;g7HJK#VI1Sj-T3_?gYZ(jIe98qJe+A-W>_|B-qarzHiLu9JpO`_*BM8j)S}y0Yv=zBRE2%R4&VOMVi8t{Z{V&Oc@Rd*Te zoB)LQR$bLDMW-Wb5eA~v7Y~i-+c#I}*YOAD<}ZK3TbbND{1YvtFwSpfPqfVs$c^vTS=|zD6K7yz@itL9seJQ_{nPvyO9U|*%JOgF zhcJIg((7JX^yXen{47WoDjdkg%YvRXALO1N$Updkg-i!CCoNnh zX+Ox~+jt(P+`73*?nH;^l|vO+WTR4VP#L#KZq0E#F70;HdP~+Te)`3&p>BoBJ;H{r zyiaur;)jAv1orA)X&t>QGVS;lEYHosC}@8mUg>Qh-f+1o_Ip&m3oGt4emuCMWm@Wi z^e0)5$sNyJ&9}#tDU|D|IOpa-GalH#=ek#XQrG-7h9iTS_%UD*U4^KL;iFv_{4?Wv zXFud|?cQU(8thMTyz$pN3V@nMx5)?n+$3^yF=-lYLqMfq5EglL44w`1SnRA^0uFz= zr3@N_tk~oLu6ud1_thP@&k2f(Z`A|0Pd$WHYj(J&3o`Ae12c%I%_kYf=G(rurZg;u z2il&!aU?HB-P`hI;Y?N2t=!_fn};d=88!p|`AmLtzdtk)>d8BN5g3Zi=R6KK-ptcI!mE<5tk|5d4;>0Voo~&LG?M1c$Pu7Vyf^~-M9P{Iberu$!D1MOg&iw)te=G{Jc?Ze2KSh54;v)=OD?RL@ zSQHuBJb&9;MMm1>?lbHJW9x;r)wk>-pwh)O*QEuZaWAl(MRR~xF}SUbkMuMSt8W34 z^-EZ{en1Rcy}%Na4B`1v$N|hfK7EU)asY$onCiAv5`=HsphqCbT_77D4*n4Jx@oZ~f$zyc#*oLH%M%U5D!CS6U>ZmDJ zxCFh=V{viRbGyiCz47lB?gL>)+V-BF>UD zl6`39k1>M0=Y>!4Vt5Eg1J`YP#!;(0-zPfdCXau8ka|QuSKo&J=GcJSc){;8p43rX zvXWwgm&YyDHzD`7i{dEoG?cb9^KS1Zw;T*{IgjLnkot&v79u3#?gU)x#v%*g62}U( z@_ur1x_@+daWa4TdGe19(cyjXoPEu{d(8hBfZz0@@bP~)Fd*pp!||=Q$^x!tWAcyP z$?+MVkJGc0{llLx4v)?*)D&$dM}1gCMmYZDLpYCTdK(RbZ!^-Yd>LuO%Vn_n{gZE! zBvgMMf%t)qOB+3M?Mmno`vAA; zQD|{Ok6410>`~{ji?a#mn2e{>D620d@+FpLCZ%P^09%2i%Syd`DuZ109X*RyVLY#i zyIKYF0NA%Tjs)zhQTFoF*WVnA{${`S;f+Mf+m4BEh-Ah>F0BKJDgwo1lD!JMOZQ4s z6DUTL=v9B(c&b;Ts&G#?u6r#ks_wm|%5Y93PRPvMi8gX(HyO#puA|jkz9C5&Wl?Fp z6@ZAk{ky9I??e&mj`mYp41P{&>3s=h4~bgAnXE$~pmY+&ac0aE7vq?#FWO=d5?d0L zr8BvPuo#_`Uvp-;lrk9?)H!Wc2q5E@mxwbRg^+*Bx)ZFiGq;2iQ*x(xJYl|Knnh+z zNyd$szbSob$+o=`k7dF8;b1h_!Pk#-Cu%$ie&PY1TP==q=|SP}Vz}2e3Vu=>Gt9$K zl46YS)SV2C52`tn7=AJWyZBy^szk*q^u%$jtV%vuTu#M|W;-n9%$5E5Jh~3&W=d{vKIPh>-)EoUFWpOi z53p}~rTuW7ChKKy`1o;cGA&p%N^);Ec}9OEc_=Bo-Q?LJ$wNuE3wHng<6`P_RW(E) zMuV3Ps2jU{-PKHTB6px$b!K(^l)o$ImQ^a6y<^42y!#tPGA9XIA`-G_zRN zm>FlvXSN~gWbGVdLJ?*bV-fM0g&uzZ3e#MQ9+4&-YZj>quPF&`9Y01N5vCVgwaNL> z%r6FdbOyv?}pnLZBpTCq_Vx*7 zw=1!IJ~ql?IzyQW19Ji``=+>!$R*O^#Vq>xbf5qC3!=FVgjf$uc9Sk=)kz1{E<8BJ zma>jbaMDV}AMvAX<)_+;2D+%>hKxbr>^YVgD)6QL6Q#+PO1qi{$s&JJ--umNn?w&3 z!L3LTx>?8CJ-Xx&m;F$5zFd$^lWgetak$a>c=`|~)r!yXB~z$kG8e)c zQyW5vFSA#3a@8eIOO<6Z`AirvajqhfrD`K?c+IX1{NZvkb{l`PQo#+on7ai6qF9Ie zER%3g*iu4#p1F?ViLYk+wO5tB(^j6mwN+O$m7>bs?a?P{E%@nA7CdorWR@qIhV!{m zd_#QpFI)-!OHZn(W%Vhj0l!&=L}aL|^nbL7jP41C!AF{PTjOW~o)}lJx>*}CvBI5W zVu;-TDR!xn#s+`eq`omxME+$U)p+Me>($ZKt7N^HWgDnkeNI+b4oony=>-L7zLi~P zZ55Tbh_i;Em7BHJch0;$!o;Znr3BGH7?*#gFwM__%(}@M*%zmR-Ac%jWSVsC;qr9u~J*25$a5Ra& zrE?`M%8id@%PAng+-??nu9olWO<7+S|! zoH=)tv*29N%61k^+n$fL3n9c2P7A8`ABieI#Dme|$!GXpeNzF?-6o4-b-%Co#@LkzdHW`$o!#eRtas_#`F<<&%GcIw0L5|AR5dBXZ0)+J zr^0{p8MHTp=p*~+EDIdi{Z>hk=?EY>dYk@5xsL`r2owWj24(9duZAGHs=Y43o?2%& zv9|2=&W&%i6=rGEEDEzkfh-xCROKKLtl+Pz)I^WDLYNTX9$UMPs`NCzX7is(fJBzu z>YR&0dCrnZCV;(K&#yRML405;Qa7?4v9f=sVzi3YQl(nkMXOYBlVWtLRTLjZ-fV3n zUeHzcA6>#op_}-}*wQfzbRK=+71-m2#ODgyfJ#vmvNJj}*14D2O9a{^^;FdyY}*;j zu2vjeYn?$yO;95Ym<$Oj+*`W0252l9%~NZxTbpi`PlZ|QJ6pqQc}8dKPD6wpZrp!8 zp#4xM!73^uEv^z()=g9O#`xtMPXvlaGt^IgGtwtKux`k!({h zMZSP!gJLc1hR3O)XNbD3Q5S7&RDgfE`Z&m@(IOhew`}PK`~1HRHzF{bpkBqH|KGA5 z&2}q(d$ccQ01U`QnKoLDK)a4m^0B@XRpl-=F+sMBrmUA~!1rLhx)1aTwm!93rEmm- zH<*J^!!F9PVEiiu)nxKPeRZN2ocV*4wEWI?7~29rM>3|SVF>(Selkc9ayNfOB2oGc zJ`q2{YQrbucQ21pgdy-TauAyMi?&6CVmfAnZ1fAD<;1-OnEJf8=@_rtQOrOS`5;EF zbm2f85niHuhzgbPt#wx6P(qVkt zm`uV=>22dHc!I=xIbq!1P*YIjG<79-SyR3v^zeJH6jUZ3b0a_o5(f>0XxAMU`QVV^ zmY^|FpzekTOQ3mQ_-&}^_V{h6Radn{(RuDb?Jq#*IitG?I?uW8iHm>E6AVu^MdB&+ zt&C%Q@~sWsi>DB@p)-6OuMPVe-(k)UMQ6DK%Dt#aXNWmMMHZ%j5IaECsKz(%2}BMx z?V{KmEKdv~<$H1fZ8u>HDBSF?aWv|qsmD0lk6WW^NVaVp4Qvz{N0TEOr)hX!Q|iUm z8KTDX4+K%JGx#Zs zqTnw|t&Qh%9Z}kh?QyeZRxQ^}466yttSXE=&4a-ph*!~VZSsFDt3Yj{Yob%UszgQB zr1BUfSE@Un0c{daZ`9zkmoJM_H5y{T9C!+*QF9sKTlG_=3)Z@rVA`2*LAbaNB3U$@Kgbtrl{B_`_;#U6b#B7bRvOX`kmFLm0K4F4@&`Sx#kfVr{?6AwGAMUd>HtaHEV0&!>!V? z7zs}?3qM3^&DB|zv)K>owt#W9))!?0FFR+1HUEFgmz+ylTJnBbKKx=kM>Oz@?G(?z zx9Xz19E5cPK#7W@;Kq-Aw<%iLfyaVuNlDrS0GBXD-#j89G{XPZJO@6KLtJwJa$ zC=}97wJq9P*Cr^(mu>Pf&Q_T;g!w*fs6GjvQsf(#FmZ*tWsaxlU3Odu$I0Kv*-3Q0 zo`ji+8x8Ybn>d=OvTPu!SS7)D(W`&- zp3()jN|xBroO;q*);nd^9#OTi*n#7<_Ii-v7{p7G=0+jP4ei}f*3#CU`zub{GH+a4^tolG0g!m?buuy{RQi)fa)Gfju2*P>7RE2g_k1HdR)~fA;{(_ z_W|5EGWS6NvMxrnfAv-_glQ~#36!C*=RD1{MG0CD~$C&I-RwRY*Jc)GQD zPia@6rdv8{mR5b}C2Qkfo?a4107CrxpsQHtp$%PSv*lYIduYs9hDz0Eq}YEvPD#nD zHcx|*0HvAmW9`^h)hS0gzEw=}V7WPt#s1%m)9mP~jc#TJ>1vS8}ddmX`HI7IGr}c1Esd7N8p_^|)uB=NRyT{AsE%h7FxKobtTE$yATfS{C zRKjx6`BICd1EV6q&)i@sYaM^F*(yXQPfyOt#`XQO8JP(aq*#_t$;iz+##B6en?1h~ zi88Ag=rUdrIp-}WG~GU75!9-y8lvbprzGM^$BnaWeH+PlA8A@Pk?TZ>% z7ot5;3u+ZX)WSE8h_I-aP?^Lx({&A+GN9YLMpSkCg=Yws`gRl10lmKaXaIvie7{8y z#YZ_eYvV0|P;fy}_f`0;6 z<9R2>%k$RwC)q3p(*Jx!#XseL=(Vr-Cp!M=Pn|^58Q5h*f0L0;4ZyBWpibQ&oe0bb z+iberAeHXs$@MiqY6sDWh|s4KKFZ!H`?IDRmc7@usi)vpU6h3y3)4!2E7p3He!S%x za{4>dmILu#B=UC;xb_^cSIJ(qV&|OzFG47pMq!TAWErKa`>`N6BsDXCZWRZC!Gy&T zycj+!Oc+J8XaNazLSNO&GYePYWxSXT_M$9G<8U7TM@$yKQ=^ZR6+>t18f2^4fIG<2=-w@wF8h34 z*+;AS3aZ^Ngb?V2B*U+&iyEZ_G2F0VPdEjOgCF@z#NU|35+t(luP(RBgBgE2JvtOv z?+-Ei0sC|o;>B@_CJ-VCPWZ0^)LVOcgrK++`U?&9b_RWcP;Y5}RR(kUhl=`dP9cvy z$dB}L7njPnbHa?_TXhXSmWFTM(Q4bOZ}ihgbXWLL?=f?47PIkUb`o93TxrWIBJ0(a zTVg^3dec2!srnj70vx-(d(fRe_~m5(Y;v(TKAW6gj88Al_TNrU&&F?$Px}(8NDvY8 zcv2D(HpvFB$NL9=7e|K|?+*Wdc=XHR#qr6}@#N%ef6_uq3@lbinMJGjaTZ^S9BI9> zu|F6e9Q1>tKQh>SesFknI3Y-hMbm2WjCX^u#-ZVLkQE zADQ2tKO)G41*_z;g|pelVCo5%U8=5rp^~rhna6nX&fkv-DigC z#Z_oNCTyf!3HjB7TUB7f)#;29tj$FQH{H@OwY2K0m%&YO7R;j3p5X4HZCC8_6H#nI z9Fn6ey`PMKV`M+$)~$in-lz>}ok2o%kSjGw##?WmMInEX*7NqbUpGsHJ?bOLA>6bR zkPzRhrzD4P;|QWw&N91+q_?EJsJxJmd>_`Bd&Mu)vF|~2yJR-P<4?KsWkB>}RS`B> zFYJJPmAV6X;y@6;_OC=nw-3BlU?x(zX?Sox4Ed^mIg75s^?ap2dB@+OFQb4t;6$0#SbEH z`FH$#dC@XQ*B&9>;j#4XYEsy?m`}?>)M>*dX{e!YnJkPlGS1Fjm@c?Wa{g$-Yubp*DYp&t3ALQ6 zm-1(%X~HV7O;sM~F6!0DV7-l;(WW$2=7cxJw@OH9l573sYU5?%HHkBHlrUGFC@E)u zm?y=NbOvrR+xRs65Ggm3O~3XBwcVaqgKYvATLeLPv_~JJ^iE=%g&87_`UYSuO_RQY zA9MGPAGi_%StPI@J*&kYTO`HjE6G(*(H+Bgjj4}W>j~n!rj)6xF#DNXcNdDH!lL+C zFk1^;G+#^wPS<`pUO+z-UrXaOiZ2v@j5hO6o*7}rf`{V^A&!gk`SMhrV_sEC-8yJ? zTemMdiQ~P%7;yHdhK-@-FhbjUzVMNMz%tBE62-k}Nw9(6gkJa|*jO4zM7#`qN`YjP zXQUDj)I3-e%1{vpUvVv$BUr?*gz1hK6cg5xmqF3UIV0FI~a2iE_+2Prx zHX`ChLokwmQsy0(#+;TjnF*q3Td1h63Jr=Wl~axv(GM{hZhW{+V(|OsAflOs}zRYU#?CaZWEO1X8o#H(&p(; zFS-3_^Chp>qo25)4*qmI~G^h(5A^!=?tN zX~^>`{*^kjgv8gai)2`u#rU?%G~v)mwyssUongP}DvBSblw>GFR3QxErLH;PnDs^= z>$vAPZcq=l_B){o58ac0470DFcz`jDXLUg+TR)f=fztK}E{wMxZR`t=rysz~xL~^a zxN3NLwaAIZU#n|L0rr_>LgbzhkF<|4Po$K6)Jcw;Au6XZsmcK^XYiBY=V&E^^2Liq zTspV>T`tP>uf&p_Hd%Hy5-du~JW)p1QmQsWcc^#M4a!Yap3H-P&9dgFo(F;yn0HV+ zw5z5A)Qcyj+60OWqOWhMkIIK#sif*|B3)Z(3W!oc5~t3buPo{TqBKx*w*lJ`Me`u& zA}4|dp;?SBYH_EbND|8PGOQcZj=KpLvw1Y*xl4MaO@n4c6gG`8M=6Z^j*XrU^9m2U zNh~~c;tY68pd$-^h_Q8`X3&w!;cE_^KU5B#T5`1#rFMb`ejXsGqej?mx{Pr$MXP+97O^|Ge*N-6Bzg{FMb1tW0 z7WD&mar4BI-239aOP7n2Yt+q9Q?SD-4&uQhQ2yqn3?4?&$B;9FvzN*ZO`}Ff)FK2T z@vQvP3-Swpn+7>YyKIJf=a0s(rktL1{-__EKMF6W=Z_vMkgtOJ@^wZF=pOyU3Ai_T z?MXlc#1JFk_*F$dLGuruKIK5S%4Wn1j({Y}FS*&C(svu77Mj)sD1aZ-H6B|i=C;^v z-}qjzGy1{pIuqZ90e?uFOYMXg&;13a>0uFQyj`h(N6UUy;S#+-c@|hc{zh~>Bqa_s zU4YeTAqcQKRLHZ`tr#ky%l1HOVE#}MOkGefjh4%3##dGoGWeJV?6W#2JL2J>if zy}BuXs_h{#h>SUQ^I1i2&<5k-$r)HmOklORoldpRRuiC4Ct*Kff~Zo6Uw;!bne8u* zVQET2Ru_>VW_uP1)GC2RBK^w&bDg5_wg*o{Z4w92`$Xrq;a`JrasQTECgzcO`I2c+ zX2xvpk$RjkERK(42`!4cp+g1E0oDd*8*ZF`kSrl&cIHY@x`W#&%XlbHL8ew5A2pq? zXS&)fGX|!=Gt)Sn*5}lRWpg+9YQ1r|apyAKP@ReEXtgKiAnToRNK|;qba3r!vsDg^ zk}6pcD}ugvulANJMH%A?vO6jDA`TmOQ$5%6HQl-%KLkl@amlWq0*| z$$czB5Hh`pq5yB@zVAI2EXnipg`i1hcY~G6ZAF?AFPaH#x@{U4-s-5@sz1#HG)_t5 zQY;ppecC`f1=THCZ2c!nlVH8b;_HP(#zxnyx0+MLvJH*2f|Bb4*yTKhN=z|;c!Z?j+HtRWeVRU97`e644HkygQX zQ;eP6SpQ-N@0~h#YUAfofVzv*I^Y&Wx;kowtv{!U5)ew6mc^`-YFvs~`59u%YkQ73H20tu}r<-SkkpKF1lHP`^jV4%J)n1m=zq>1*)^a| z9%pN)S)S8(uM6^gqR8W%$*x8ok=Od-baFgC8J``UY$W1FGhQTjHd>=hhvT;s=^jDi zsbD!p#8x?(t*yFRTYBJs=7{wX$qL_9qAuzebuk93c-Wl%+J?Ugv)6GnpAouj1w^s7 z>H~;kZ5)^9K<4G-SAlZmN-FOYb3zm8Uo(4;b6S%1iaFDH23B@)T*V*R&jqbtH6pK$ z!|*mDXnzD;1%CxNgHO~wP?`?y_H71OXZ2cz!1#ZK12y2p(Z#HPXY{XsRJbJw$IBUT zVz)A_O?RTMoN*kKV}wC$_&-L>zQRk4h@VZvMY4#eOnFN?XTdg-wBd~7OE|h-&>Ysr zk!X(c(Uq2|8XV==qJSE!n>bU)ltDbtB2;-w9t7AQhGzLP5++}Pd1txEu#t1N<^(smuRbq^vP^-F@C$}Gj^LcW|Z+yx6 zXPR?9&vcfOn~+IF5#9%>-`Y4br(M~{4QDfL<>Y&(uiScnV z0|+#pQS)-_Jc!iDPuz^F&SNU;q(2(=`xbTnOH?YL5GGoH}dJhB!SeeizCWNn_ z%b9{8^whrUj%!Ca~TX&;x(^3YJ#A7ok0-Iq+M%d z6qzY0Pl}{}qp<`<>I{`Ij!se07~OwYj2_~Tmov5kf4rQK5f06|y|E0%8_N$P#2d>z zxsIn#5BPsS^OK5@e8rT*S#hB(vsuTkAlW!{OEls94oz47NrQwbuC< zu09T?$$TD3_Tb>?GKZ zRM~uR5{0v)#r&T6@9h51UM0!z1aT0WuU?#Gl=7PEyYo1r@Xq0fmKK7%(Z8isKyRD5 z57sGvPERMz;7Xujx7Xode7vt?4C2NN*zsE?3;ug_mrfRPBRCCc*u^?lrksG@U4>IU zoF=?B(3`9AOIj8Lp?2~ynyy!>=!DXW0vDMY9zZJ8brbX+urUzCSzX#rig3nLubr79 zWdWy-q!M?lip1>Ix<6Jy5Wr*&{4C#4vSyon8#9uN{f*u#0Q z+w#)&1IHWPJ`pVmUzQng4HDETCT3cXpbBa3JlA3b!Z0=L8^+qHyEa6(4L_#9)`LEO zDOm(Kangi%%m4eA>u6;RxMu~ETCE7gD~$b!ScmMYw*WgaC=adH<%7F#Wg%HxMWi;~ z5ZD&MdT}fI5MaCyadfwNN}0>cYR!)>wBJPvMS}% zq8lpdAjd)k1%YNO@mk3!f6hNwvmktbv+Zn+s)>u?2Nauh_~t=15*QMW{P zDM7_nCndB%(ub)oko-A$fk6G|ZGqr7l};AuX5(6sRtbKe!LE|w;8mB(_$76{oL*!a z?scG5S7WZ>UWemwh}?3(_0BDMfx5|L#khdoh#WEayR0b31G4t2&$dg@oe^7qe+j|^ zc73N2CC7@l-fLB+s^Rv7`)!rx)Y_^KXVls_!WpgI6hFV)4>A?XthEB+sII#!ir)^- z&oV|dmhTGVTgq;5dVj&U+NGwzFiY9gbg~n=R1D5^PFbn2xCIKkWAk^)&T!EaP0Xhs zoS)Cw*)ncX{%o+t4FlS9+S_n{5ng|GqSEJkRRbIVYEm$`WZxyoMGL3WO@f8u9B~~O+RcX-&2ckT7ZS-acgRdz^82U@KYD#Rue$K_S&L_XUBej=L14;` z0(ImU^3?1B!(hZi2?BV)E%!ELSKVTZpuXM-%U z_QmZLWDU2NRf9P*u!{Xw>`+cPa7}B#>3=Cu-I0)Ly&19x6av8+YbNDRplSzGs}CetBEh7typtqELCw zZsJVZr&?zbk1>i9C3;mu%#%%14>F1xRXMC?ijT_Ku767fvPqTJv8DyY7xQ&`L1Ge&o*o^#lyI?0tIF2gnI(>-(h;BRX8 z)VM)VoD40V`r$zDYN2oINvNQnae8vZF90T|VtrCfYZus@i8^4xeGd}}C&Mabcw8es z4v+|yR#7K^k^~=ag1Rf){&<7Q%posOruM|0Rn~k;OAaLUwAbWB_Ic)CBdPXd_JbPy zjdcJRWtq>Q@!%H33CY+&rJ|+HTyeUXoaG7QqT{E`DXDEfW$1}<%5IBq6{G$X6QJdl z;GDb`Z%;WTkVOYFopZuA+fz2^t#ck&Wly=liW?7qA0P&y&2 zXqYERhZza4w(w(^xhb(R1fu zyWB~Cwb0=D8w~EBV9!7|SQ~uu^Y#XgwdqchJv{en;J{rV4V*fRFlAe`F>G1_l%IPs zY~ZHb8a807FS=I~FOX^i0~97~j~5uNA@@Z|n083z7u{)$7cLsZ!P9aCLGM5y=x5)f zLD0$_&;D-$pr1oF0Tuu)5V~wr)m>E`8jg|t-|ZUS$ORW z6x}wPqf<7Y1{ffy51kVFNU#DgPZy=4CZFI@eTcJ|6K!wxEraj8ZAlnw!|0kY`l_sd zPrw6r){1~(ZPf!-?(O9Cbo}$=;@#oj508F1yijkg8!+L!#qW#cE)Pc66)mwvi=8tB zImo$x_9d~`WP(Jh-zO73xQm1R(=#@%qxX}O_xqDynlP7ASGv}EunVle&L6Sm zo)t;_%#?}evXa#*`1RY-U$cJj?ap7b-vsABntfA;rL+nNs@+yIdU(|Jq=FiM-DOe_ zliDdAiYa9i`x|X8(J@(!#yHrY9G=x5IhmA$bmZ)Vq6U9m24(CH%gFHZlES}od+<3l z_J`+*M5jG*m`JIJZ6`~s5vhuM+2dB40+kxYQGU6ro8*`Kx~2RuYP_ZV4(bii}Y;qxz=bt)%kPARp*1dX2;l#aN&sXtsu4-#!LAH#hqDNtb7wH~6 z1>QW`5}%yOiVkcdU)I&ivy0mXL}hOkkr@l$IHGchkugZ-6I31y*J$xHT#4N3Y;tGo z<(z+?*KxADICi-_6a}$2js%dZt*$otb+nrB;VakYb&~Gs0UxXJ_T*oG27|$7GW72n z5M8jq7(f(r%Od8WS2`Zdqs8^=Ca=Iu*xzj;{`P<$2D)?_sTW_l7-}r}SYPw=n^Dyb z3hSOrBtwA7Rj<0#gWGVa_QK1TI`98uP5JL_!j-%zK(wlZ8`_0#6F9NAN~jQG)&Ae9 zqciw-5-)n^k3=!j(wb3!M&245Z*STIHoi)T`V6&2YE9H9fh=4u(>*Ctj5LcriK}uJ zXUlnbubFnW`F^d2#b>B8;%8~WQ4gV|4mp4CW-tB$CdK1$uIHhW{=mV= zeB)@ZzhFC^h1zg`T7}nuDq+8O&?CUiddqVPHjl!%L)Ex1JE+4ABjcNv;<8wD?)=gD z`GOan<9=stwrRE}fn5xeigd9a;qK56SNcoLICIG+;q<1brr_mEIR}(+leA*3$p`mC zdL*hW@qYz>%FJy%?64GGl%KNSDYK2?P^!q$Wu-JG{(w943-F~dop=TKR?!-%F2HZo zxiB999~LqmnmopaU`j!~bhT9n;9gojp%;Qg2K=vQ{N0=&O3Vo6D7eLpym>ix=}4-r z!QnJ!tc}+RQyjc`oiNRzGY1cxewY-2)#;`Arh0jQFnt0mjGMb>7s89nTbdEF&j(W| zC{xnx{Mm)@;sKYYgzN#nAX|UsDRFTH?P7TGh)a{w!XJD=1`<`K#l;mJGYfaA%;&7Yh8524pX+^+A zal4fK%KaF$+gT#31xR=MzWKg zBbhnF&ZJ55*WWD(!!hHMFGpzJq)z_-lwFYW5nW|P`Vxqgd1(Sqj7p+|0RS&Ctt3 zFuK!Zk#IJPW-o&Vc9~sXBnk%wNtf&Zlj9O+x!iN+#?0>7qA~-96Ej3?Qy0T*9*S#! z=^B44OAT$7_i=mF8%!Q;vfQ#Y52UJI2|ERCE)tA2p8-aod9(-YlynR13#M&4Y!^6( z^4m?aaclBq!cKw-naw_cY5Fu}!bOrRy{$G(jdY1L$b0oB%oI#jome*U2|LUVp$Ava zqmu`2Pkd_AxRkXZxy$$yj-w+!5PML6u6L;Qba}lWf-7ja*2YpxB~VImTe1rJd1in? z0b5<(w3K0>^(B5o;Anjg?YsHuKNdan5k7TM!3F>GI^PeN&Zw=cJ$%N?d<=my2547H ziBg}ghaIrf`^75!I5<9;yx#xE#dvS;gq=wI%;UXvqJSrp@k2QBH0cy({~=s|d76Ne zw@ki=@bqco9gg2l9wKQIO}gVZM~4LQ2x**X@|}%;_La^Fk-+r_D0RAzvbDONuTZ3C zNdcGgdCJxnqE*M@4_{7x>r_TANODs0DhvbW2@e(UQd=tZj>3ECm`D@m%e6MFkL*<_ z`!>AHR%tk01(on#DX`Zfs@E!iLu!|)mvpA6Uye?Uv{ua5@RvWS^)QjtK$m=8{J(m* zg(=`QlV0kLu3~{n0n=C6_vhz}^Cnjiux7Co87|pzn1;8}ik(0H)LW;x*<@Bzh10!! z-uc--k0(8FN*>n;gLLU@C%`Zyghb*mlzG4u<|%Y7tOU6f;&1hxgSV%DQ)O7Nb79|! z&gI`Ion!Jx6gpSVgXmuWogx4k<+G85c?nVs{+Gs`2l#ws5GC(b)>$k11mYL!@4xjp zC|aMB#r)pkbO17988Q{on87HI?fB>427`JnWnC^f?~dzKO+JRaBsAAm?E8wI)ssX} z9?lhI?aJeC$;~3zOCpMY0&&j7Q=>p$Jb(7%58v;MD5uChS&vlG9mNAb@S9VU@Y= zlxIguRqGG7D@AKOiL1wOwLPTETVK?{GB8}tkHX8P>b0R*Fw`l=%oAH*J44I*z=yp@ zSF#_zoSswJSbVF0t_D_fc@bIYXjJXOHEE&RcFdccM?9zA|67OitS6rrf`py3IwG09 zdyI|5-<3sA#q2q}qIPqhIso5?HIUTf;woL+OLg0O!6Env zP4RZFtlE6rSi3;xGF2hb4MU>lioxYqsoxMBKT>+|>4|Fw-#b=|@Gp*|>773kJCA3d zlv@zpw{zKl)k5EG(i%ADOu?r$fK#G$#z6tAbN$ecWnvKU|HNpQuT+z-RFkh%lTPb$ zeaU>2s*?L0q!Yu2K(j*3cht7j5dY7@8=$gLc%j4(DU85BNdyfFcdM9_k7xhz=RCTb z56sM7ld%ELXTc(2r!4$Xyx4Ry*S>hr!Bcw4&(F+%Ub_ibyh4f!I8MX){65$`v<;dk z+Z9&h@2pcx+khwCXNn;_SB8H{f{xiW;m|$=rMg=cj%UuaVChg5^TV=qNRPz6SUM<; z`9Q>&0!zot6K0;`R(u_LN<|D`$G8S5OVdfZ#kQ=P2V%?Qq@AYae+b@7Dg4rgzSFpy z2?N4^19AvN9+WEWjL7o?J<6dns{Dz=8*q)qhPJCATtv-DzoCt)DE_EDhKJ250eezG zpT0TzNJ2_+DA9JpXbKt3eI`MEcq*)emM0sW@LYIgVzxc*I5@V)G z8Vy8+(7`_c@8==Kc&6##)uH!TEbR1uIl)*AC8v{UEF2tY5su{vAqismjtVRDi69A{ zg6JfPivj}-Cp_WMNt)9rOs6-;X(TFmHr^|MU z$0Dp87LtElFHLW5*FdQ6NTkf)HkB? z15XkZp+AX&o=(OmyKgq4X5xY-35&1Z=<--PdCjEc-aM1O^4Ob~Z46G=)2YbXewf_J zs^IyrM6GrHsz-eThUrJ7WzfUgKYTwv*x$R5%d#2J{(?yx&(y^+2*%>i;4VpjXZ+=N zI$zJC;D0K&$tQ=GNkF$Ct`B_Uh`Yma(h7WPQQ|`7R#aN|^d+YsI`E`jOO4y5)nDJ8 zKl+u~va5i1S9--}o&FZQ4EV1z%kPB|z;~<82e~ToU8HMH8xzchau`#I0=|E^H~B{} zznMMV8=p;j_v~xy_I7JFdrXvn3wfoPa^+l4ZDFa26KgOMLdu?h*cy)HZupfVBJw&j zMHHeeQ?7nev4U(C*`cOLfxM?oDK%e_`mn;0?Vj76X8;zcIJ@FJ_>}OEp{dH9;)nrN-Y{!J(T`2 z?uK}0%e*8khT%H8>dXV+??K;sh~AfUD7ZNRobm_>oj)n@}v z*^;g^{xd#*qR}({DDWN)Otz`#xF_Q$hxR@{Q`lXHMlneRHyMGzj@D+Jz=alkpTb+urRRVjB_DmH{->OQ$Gk2U`u%xC0N}rDV-u1 z2WF=L$hL6o9D%ohKm;t7l1cK6ZAdG;r-qvms8v{l89(&lHr67368yB})|NQUY>bBOLNH^8 z+gLj`?|*ZH=$R&r9&2;vy^C8U;E6noWkrk#68n}Q5!TGiC93Fmoy>+a{#nBS8a{HX#@1FH)C@;2S|QGB&3u;Lx|N#zK8loFs*do zJYnNN9%7X!m~=f4w+V3x(YJYkr37t^!Xc)NTR{$al$8iX>u`u6r51Xx9$O`e2YYP@ zvsvv@HRVizxIbY0>O|IQS0JlT8qS?9#%oLNcL>#(Bullw=wx+y_1} z@(@jZYrN8+PG~7UkXIV&g^iT%n?iXbT|7|V1b4Re#RJJffZ&*pRe5=eu2t)I&>@zw zM#zhfp{5a9e`x!!@A^tlG8AFnS-qj+%TRG_wUhpGBEKiJJ!eTgJgx1N~h}x(M6Fft@Lt&Oyt=MFh0CkT`Qf%p74xiFJs132* zZ&rsS1E>|TGVtv}=^bWHHTLeyjDk5*Zryvfq+pVin<#kY3<&_LKsN!z3D5!%p>#u- z`&26c!CZqGOx9iq9pF_OtchuVHHh#UjWUTi#YN}<=`6bz0|IVNEC;6hT0oGH1iOt? z3JB_(V72j5JzOX262<3_BnRO9kwak~NCqU#S$}1B@oIV#n0F+pd%_DY|C(}gfr3K5 zBy@|&sveZSRACx9?c>?3#rhMTZjHff5C~=bL}o{2{PKmi#S{?SR$~f(IA?@3euBpe zj{h`T(Fc#^c9aG$iR`5D!vqh)_)mlkEvA5GoE1*N6^~mtO#*Ng!VC|mzJYVVq#zfC z8)A7M`il)dWVa+`2eiEfo2ziNBvlFiE7jXLuImlMlUaDNOn3@QNByh#vauA+D$qg$=^L z@K@A`LikWu6rn~2Oz>!)`3ISGY$0{(jCcNUF~Sf&2(2S6Jk6kgEyiCqZf-{rm=UIe zm|jn=(nU~oDyuGuzegfB{^?C}x8T3mQBxuD;5u5pj_0c=jb`$nh+BcQ{}76h&^kfs zaU)bFt6`)3SCl5N*xkd!oN`*!JQOBpkj4LrdL;97gefrQsvUIE-m;od^*Z+UPmd4A z|D5c}3`vw_!xSQaYoRtUWyJ`s6Ob_~_^qKIO;cCR1~Z~iJXYy_kl!MqUCG(ZJ^013t)zk$9nCt+|CW&qsD z<;HQ{rLF2svSPye?JzbH}|4!n#Rjjl8Radl^+^+Wm5yRl_Ka< zNKn3PddH}Lm86IRQ%Za-8-*y6SGDA`FOG=*NqK3^U-lG444Nv^ybx?k=~Jzj92F0^ zRmUfjz5U(s+2rE%&CxFxSzzsyVq9P-Dq27l|EkRFK;sF>@j#f;;**mzf(b3& zb}BaaOif%s1(>@E4ZzfvFE=y*Q(?R<96_HxaA*L3rn!9Sp#hjT<2^J0(^`D(4w$&| z1$r+qv&EMM3-eMwtM>x)SiUUp1AAq9mCxq6zyud>%SOlMIU7+e z)iTW3@zpv^()lCY{xs%JSGPZw%R|r<7^)7Tbv#M1J~GGw@m@>-0E`IpcN(Gl4`u~G zBIDSLgbrww>n?2pNJ<(r`+>~?NN^gR8_xlM9Z_gO-AD3(cni!T^0=j8cF<=H=3&di zIBZ_;!8{6^h!D&})`lT0Kf!pdiRTrM1v#n*%>+&L7UUX)vzfRwZ`p^)nJ-2#cgP{@ zgfNVZ{V8vAm9=ER>uQ9n9L2pic|AGN%JuZ!?k@Xzzcd~(r)oTBiEM`*I?|xZ_GrYU{lF_s-{9UPkH zw1eR;5nBJVAhvd3LQ}gK3veM1qTA)_o+2QI21RK7kBZ^ip>U!)i-qjK)G42_kR6yh zE3sKRXyISBv|9NzPN7 z8wy<}=!>|a&^3f;CmvHqh|oGgds=U(JrhI--cf3=_`Idib%xX~|Hdx*AkN;0^LS>I z26G8hiPZtS0BR>BeYI`$Shi1S3;5`KyD1VjnFzVDdE$n;*G0VsWx8S1TuX=UK5R0tagXOdgEVCFTiiiFx`Va z15@a4{L3n_k$6QID>Vmy+58wuRbt3;<@GRx*RQx!_%*lsN%Kh;oCMNfJltDcpn|=a zBjD7&nWhnwWFkH$_m6FXe2=cvKsn6E^He@?2d3g(Cv5hv@7Yw@*G8K1>_iyzSU=%~ z)g$2NcCgI8qNv3*FJ;FA$o2B(=-uh$?~@6)cPaYdQkP69~oP)L9t(i1|n>mMJDOiu_2MFB+X>Diypqw8=!POsM-%G!E@`~&qoOb{X7 zO)zX>4xiV@SD1_E%Vot@&uWZKsjTcB@uYUJCAgHmJiUpgzjNnNRKbq3-~)eZA#_g& zu84P^G3!^q@bJHX>ric}ZZY5Y;@6K!WTYLKwAU*5BP6fVIGXQ4NIXJZoPc|WnSZ_v zC77z`z6GKB>ut6qLDPvXS$cPTRd$$bw&*MU&Y(^^b+-~;`Wkkt9+a;QOTcOP$ z@e}b9&CiJHEe#E#s0#T#%%^MK{;pia@-y4v(Z%@vc>iGh>R?icL0lZ{pPo(jE{@($ zPTucNe(4i`#zNH8`m4!)?PD}H<=lS{Gy0m;qEiJSs5gQVu3dYA2t@5$ykxDrt-Gy8 zEI3yFaz5*Idr$37!YEo4FLOIMo{mKa@Hwa(q-9L$qD!mzdzg9GMcwf4VH#dz-Eg*3 z=26IOHCc)C=b{3LbzRPMK`1&x>jVY#^l1<;vQ@a4M#)uh!)~8>lm(0Re4Y^mAZQj5X;3@JkVL6Ebt956 z8Q;T9IOnZ&#m*FIFA*$N!d`-@XukFmhJmIBQCu^rhe|(F+M!okUin$VTvMupspZ|2 z4Azx@i~)fMMqy!sbi|h-{>5i%^rQT5AVF0%Vu}w?By3?Z79@1Qr9*Oqcx1vbS{RUp zVN@bAb(8J`LG(SgxEV!LbjdgV9?N!XVJ2aSX@;4kKw_&rBM;>=foW^bh?48{Eu3-=e(Rk-+Gw=%NBy9cexnwDDKn%o9tOqX=Q2^18HST)5eL#oTqI9= z3g)$;B`hc%EnZO*5oBwjLkF9)MNolQ>KQ==Vklz{&Htub+hzYMjW5^y5WNkTyzzYd zzZ~+%*1Qi{%G3beyky^+skUD33_o$fm*MJ$^_Qj7r?+9ec>3?~L-^Fp+xzrpefe~M zo?OS%rwY)PJ>6xFpvL75_`hI-xQge|+5M6Wf3;qSgC5SerioO&Y`(Fv$i&vVoS2kXsItVax5B8veMo{d{W#M5i4Zjc=Dpx(b*NvSPOepTq%M z*!e*E)!86rwm_UlhsolQ`A61)4WF@pQEd&Y0|O7g>%eS{BCs`Te3b>0VYBgUmPT2| zZ5;fXAz+R5QV3WGzJKs|x7{60hub}`VzCxJNGS-|YifK8K7^#k<$z_F~Y za%WG`V}T=ArG}LqHf2p`fvKs2=p*~cEJyy>4YT2MKCO=Du3lhDs}k9?h0-~ z_LnGH1VYwm_64T~wAsvu?I6Q$|~SL$$D2zZ$D3V-;sj6~{G*G@K?IlmRyQ zF(aVmofvza+$=5^3&q%Tx>}wDC()8AIQDH8ggFCCaQ1HE*^J%AG5c_T%CB;2lRg z*(FX^thk(>1QWT)(k0Mah5ujPTk_|rG#qXvh6BGJoDJZBFj!YhmJRl&WtfJy(l7}A z=O=z21VU|m3hr*==}lpO5;CS|=CdGKMk&WmCky+ypL5x^pVQ1%Et`HQjH1~kyI}Ne z2g#KXOUl8)lxj7uk~Emb*>WDWi%rVB|Q55*3-V5Jc4G z&ROysSig1H+s|vd6lMFuaLy#?_sStsGO>8uuWpz%KMKX7XkFY&l zJvJz^-UD@7zj6@!h3!-qd$)?|?7szpKu-^fGU>OPQdqwDAxeDS*=y5s={eC7(Ulbp z9joh`&%W-Lc(7enncbtZH4Q_=+Ug7#^5scqzz8m%IzxT1xKBS>={0sq5!x+BA1jR& zWYJ1p>2Vr=%%ZE1TVo%>`MM@DW)-AMWd?(=S}8M%vVsv=H3zd-R-ghrul}fiuY(0} z)k^qxGB~YwYoFd#trRh-oU2xtxjJyFb++K#-Sw}VZLN4X4YwCP3a8#~t4HCK+x8XG z7k-?bstb;`HqPo|vo`b_6;6fiXH`0hx4@~dT~=j(!mfYXieRh`T{4bjYrxs2y{rbD zYP#)ez^S20Kp1Nmt`RkTOYF?Iufi@@oN+inp!`>;jmV*FLCSn)@i zkXT%Qy9Pd@T{et%0S&PN->mqORx<1H!eP}9|0=NKN}j*T>nnpWhpIKKF1HkZD7TYtp#qbcvW;;C*z zd?K`m-xhFoT`$`LPIBA&jnh?2HE#>s10$S&ezwsacA;q6`^4xDDmByIJ0@hJzZ9ph zxFtEE&sEo3rNP)yC2915;Bx4{6C}VGR3!=cLFB!Q1Bve$Yeb2j9T<$(9^ss`C=Fn3 zx|I!OZPi7uc!Ly;1f=NsHXTwVS+~WS?SDdGku4*8UF$nrqaUl$NKEUVphi||&wxn_=_T5j16a)QjDN z{mJ23m98meo&|D5FN1G~f6Z!0n${eDcQ6!-vSM)aC`D;Z4X|E4nNesJrq|I*=HH+! z7N}gCDxqX+UcSWa8h>ZNz^uBSYx7XReSoUc+dO?^a3(>!c5K_WZQHi(&Bjii*tWf~ z?QCq@wz+Y>yze>ZtLmDWUo%}@HPwAz_XXhK04-Nhhw&%Se<2Lo2MXEb>RJAO#H_nw zZX%4A*Lfw+M7Lf`&?@;1l+ZP7p*3C=@hWQjLELSj`-SRCUU%z#4$L|=0miPheK4|- z%TaGpDnaV{B&#@8>aGZ)Lz#oamCRTe$G`LPn~DiSH{T|6cLAq-N=D>r$`DIEf1n^C zAyV0;=@f4!+hn}OoUrGE@l7qV8c1yjaNZsVoEL1uOEdP|L8GOH28p0`981yflR zn)6-JFAoJxACKb1E*j=E0lIS?b}?R3%twqwd&CRLhJnj@Tu;e-_juQ|q@ci!hnTbx z7y6c)hA|N0K!R-iWJ8zyLCrrt&BBxQb_jJWc zN-qi-Z(aaTN>h8@CV$$s-nweuCqBR;=^*Dpo88fTAw}5Htz4pt?MV}aWBA=Ocj-?TrCruuzW1LU_AW>97K4H1w7H$C3PBwg zk40jO1v(ES0<6eiB*O(<3XO84-G@dgh)bxk^@Nt8-QD!_wbUfSbSB#6s`pVf7cO{I zZ=tlOc%)xW$$bG_sp;oI6i{8|j{R)_Y5;M1hka_vb;Yyz{R9LZZHIkNPo#kk(Z%~Z=2d^p*V zCL+#{-H^3Ag>X!aO@)s#`Xv9~yioTkG zp|4`t(e&B-?=GQqQ#apy)8`o_L$EgunByfk(EJq0fljcjdrIksPAQp!E zZN9cX@86w5rV%K&N-n=fyd8;>2AX-<>OB_;ExtxiuzwF;jxex+BNYr#heL#EB^s`O z2_g!IG}lEtq|ip907DQ^KGX_X32MB}Bmx<4JmX4N3-{Et+u>WK_Y*~MJrI>cD7YTm z{s|Q1o;i9F$_@jS!ypMU4gUHsxs;2t=a-p4X9R1^IsD0`Q~K7!qSPAA!svCj=^P)1 z(S|E-`AAs)qM15J4gh8jcAhUY6c64)bum# z*0`#w7k{3@)Spdu2F1^CZQyxUg9Hy93+RH%n#_*$DJIcn955N9PF79fne{XYtX#wG zQ2O^)=Ql0Xft~*J3+J%|q@&yTCOtdyu@66k1#v3QEybi-YGA)4E*cP@AlaX-Vj#K_ zO7qXzeDrncu=?(=XK3k}@ug{!oTNf8k^5%KNjegv*;$X2cJLxEe!&u8gbeyD$-8VN z3)t$4J8z_#Zou9RKk%>qWiybve}OCEih=r$xMm?X4_P`!CQH#IMy%MR2d+N`*^@!S z>F!+!K7|T-Xfo2k`r3Im3#fnhchz(GH3Paan_Okwb9XZd?D_O_2+M64M+E~5RW293 z!z#nstecr83Y*MoeTydZ!Oymk8EEzumE$K>2pAETCji*CeiUCd6VxC{Gw>>38QTZK zi3-QsYHjNrz2sUI4p#{jd*Tk7vW&gfNQOS6483pc=0Ie4kscGXpz%9wa6&$#0zgl; z<3Lgz^W>RLNE*BN1n5Qodsd(*Eq%!t zF_pCfQP__Che$xeODx|taJLarsuqGT<^FMe8c#$(kSKzBWB1WWDVKkdfH?wRHh7f0 zR|f#u*_1zikUEv=Jl`MV3)3AiZkA2s!$@J+30{-Ow^`iIiK?h_DP6=C01j8}8L)Ae z^}Jg&?+J8mQDqQC`%1k*7wE9jWYDI+1-(sIZ05gRhUBV=-*RCcN8Z=F2T&2R- zb6B>R|1Gm(&Su>JgKeEjze*NG7E~}h()ky?##f@1$GAbFOc_c@pu9}s*dk*I4b zwzn0rF~`}D1~@`Xk2NjLp^sHblbF&Tjg!sFIQl@HTu{MY@4sfBlqm>^o$2G$t_p6z z8Mhmh&n#JPwEV`fliqSl`~^$|cg|wHGP$XAXtwzr;9p2eZ)B*+*Xp*G)^SK>Gb-t1IR1}D#Dq@rmR*8Kh4@a`S{I7&BRS5Osy8L@*(n> zLjlb}XfB@EcsJuT5exYG#bm`bsKKnWMB*^TqsYUvYIF40&6gSP%IA9^Zbk|=c;#v4{CT%gzxk{ZD!p$G`9cnw;drs(#iD#SEm4oI&3 z(n;+*WIhS3TnkN}Q1??n-kGI74px|jyt=-T(a=--+oi9G+>lBhS5L@O0VV{XnSX}~ zrLqQ1+75%bT(kK3Obk;97%?r>OTv9Oc3`^8HP#1Bww`UPK`Zi)y5^C%@;Vb0^m26b zsdGEa)!d1jbdIkPV!m@F8q?!w((tfxtOsQlm!W+oRa+~7h>I9tu1qO&ol%+SOhfPp zs^<8B%>pIONC4&@=cr{p6m;op8b#5DhS=~g^p4LqD)jGEtJh*(OJu|_awMcSuU~9^ z3f)i;9BpkZlyw>~u7xuVzS#`|s`9|^_><~wrmAWaIFbitiK^6BP<@V3J$9S9{1dF| zLJj(wWLOsAV#i+qeT+_`!*To1%`P|(P`)lvUt^;Nu>YCh!JEX+Eb(rk|4$+mHpem}nXRhznYcIO^tub} z&&4LqU=ubN(|ufni$(xMw_iKR=*L_!P`qI^(mt&c;Ek@0!I*L1#~PFR;DB=n2v5V_ zn~_gS9_y0BV6735V}_|0?c(L!yq?d)weLKyFxdnIEth#%xcORRf)q9UhpfR)tz8kt z6)4leGf;WyvLixzr^svj&^PU%<9w2ura; z*WVV<4pS?=6=ZYC(QZ)cn7kxwyekXdF^+7jLw*k5id?tbfQGc^cnnkq#vMEGODT#S zMdIP}?^vNR>OA`OdPJAMCZ+;dh!0*?X^>1;Dz^Iz)y`~0osboV`fckmOv?k0631+k z5vTTcV^oai@tN27C#FammC-)LX>b7#<^o#zE@Fk@J&y3hrA`s5#4 zxze@%RI|+uFe-b+M&T}cr_9UzVmrmNekeGL8BI{orSo6LO&n7#1*l{=yePy8mt*jy z`ZjlJ{sFS!w_Njau%*T}KWTnbP~|m>iGXw6t^VTedOxF*29&azS5MnZ%tGe?uc|M= zm--g&N^NR?TL`qzD=`ObEphbm8LjXlxZJ2GQ}7sA3}@XoGT%zzHbRV@OB9&Fc-BTU z%p`)9FF6nKmwt_yHzHN@BN>-+T;vCRz)0-?O;yB}(!FEc?nPfVaQ~3mO@I;aS!)p& zF5|V~gYdXy=lX8CK8RC2DLM@;%QFN(geJyUD?AxhHp7-AQJO*|N8f~eUgnl{5s}FY zoaWS@c^L|FJi_#6MURljm%if%8#iG_bFM?fuvgiGu)*0i6a7u-qS4gE0EELI-g-3( zWzwQ(Wd`(V7BsTIGi%eFN*~npl0{(;PP29vo7jR5BlBi%od}+AF0!Lz$753Oau!b|YLaXSv)RFH9wPvXV*@M-yTR zmQ5?Uz2p^=eeszy!|P%dZk=(ll zjuQU5Gr3xgQ){ZPh}4!d_)LIppXbbesAt#9RS(BN57bO@EXKFXGb*Vw=0Fz^<=d+d zu+X8Zl*bh$w8X4BudTmLVN}^19xzMmzow0I|0X%1C_`O`CavPBHP%{;Jj-#uTo$kj zWdRblF*cRgKQ5pFHxrQwpXwwE2Jui<75>Wnw0^-zXYOHUvh@VVpM3!QLi%EoF2TQC zzc`O*1OKM}(@KPJ1JTxGyB!~`-$30-FK;1){HAA8rMXH^R)<+n3hb#;9MflY$KQ}w znEfTvh_xifbHKIxM4^Sl5cssO@i_3rxFhA0_Y~Bb<>6HnWl?VWY@bk_#s`pNc! zqNOG4nV~M+b0HOmEtuWSM^;uB#q|~`nXS>3a>(VQ5y8_C4UL#%MPWpkx%!bK(+r^lbZ4hd*Iz=%)FAux+?KVPPH-n??tH4VqG5yO$#1C@?!?l%WrYTFcp5&ps#AK z^LQXF%!So11~Jz%S-bS=2nd*`xd=n9e&U57j%?R5cf03qoPDp5a;Xh|v@hn+VT7j$ z`FhDU0RpQ*rA93W?(m8k>$R3HK_aX?IXA+BfU`Gy)fAuPn&f!N%3G9r#rW95zb~2r z5Qd5Bz^qq*ei?rlVI7#Wc4?gu!e&|8yhrGH6{~sq`C}%{&aSt;BqHW18JARjBPUz1 zlM>wR+hE5-t@A_in;f38nXr>2|JQh z6hQohLr~y%|I(99frtf={;4p^V~&kIhbn9al+W|5Xz$BN{72VYS1D*RrcrQBdN`^<2k2ZpDF6ofEEj50v>~88R`WwS!oPxPvDsyy z2v=W#lB_j(8=5*N_RJe(<=N?~k#SK%T^LWLvWd4sef?$5taC`fK1%hr4Rw)b|fBKmre9l_Tc-6!~#Ryy3L=1;%<{U3r9lknwzMOUmwt$H=>!H)DUyYQoZw~x<~ z&esq!{ye&Q(C2@+QT=jcTr5(Qjr(};4KISqwFo=LX$g9P01Z3CJ2KVnKK`qIgvYI> z|Izhowi*8WKc+JLM`2dmv( zb_uOv2SaeqGS4 z2LRH)f;OSGpbO&jxAHuN({_KVsAbX?Qh;li=zBa91yZB(#7k0O@pASxh$fk(_hj~# zC$MdI+&no4Z>Vixex1r>Q9x^Lv$}&6zHFs(f+iD%5@bYLotf^y z0&|%UL%iEw8ISW6m?unlhX7WVS8of7qgM0?^&?k)UN)56K-a+^kHH|aoXN&ABY>-& zpKROTy(UHZ{t2)YnKx6`-^KDiDTs3v|5NHWYFoUjf~KP--e^PQCyuW{DU^H%5aMuC^M12jSNrYZoMO7z^cLs79nW27QT{=+>lg-q@8O|&{1w`| zw`XV2B7nE0OOBw2~^TZ>d5o-h3CWS&nAoBzb z7`HYIrFN!==zMs2^s9#vbmBYxPkoQqwe|q^c`4L(;M--#^(E+~?=Tz!jiNu)I=4%d z5$e1R>nG_S8sI&1c^;R9-J`1~+yO)L4BaD%MRoog+Sgx*zu$ykNT8X`WH<_4QveaH ziAX6T?%6XxzdB)nz~LwVlO*gXfWCaxcqd+o$7z+5COI7MIR;w&_zBY=#vGIV{qY1W zxCK;opiGI-=sadhK7O3@ITxa0SZ(hDO)W;)-wmeXxkTrT$s&6#VkBlidLq2gER?aM2$+4*vGYW5p+cX{%>ye(JkZ&Dy%*j^?BOxUpZ4sp`W#my%azbkGo>3UM*ol~$tv3!5h#5|k%r^i6Ma!kakKp)4@ON>$S# zzJq8w_2D-6QwShEA^jL+Asir{Z;8GesL+J-hBUpRjIlZN;OT%3J{CsREqj3eZYeB~ ze&qE>fRjtmP$_t*{G_37#CV)806nWdEkGy{qI-jVrXL^NxK6IYV~E!3mIQkRgiR7D zUZceT_T}Q0^x2Z&F+rs9hJunZiJ#(r?eOsPWtVe2G#F4RVoJv!jRB)|{rB)9Oj zH`BNMVkd$cmy4xtKXB{D9cKU`GC5w37@9m3T%Q-qf{y8kwb?MUWma6?w}XYw{1`cA zAF8`ibPNj|Uwi-y3}MmIjRbZdD+(HiP%TGqow*>b!?f5~eHbQbDe@NK*cw;aoTVAj zwhvl8kqY>!_qPmKAx$utP|Uup(YEAjL?Wz9?CTJuESR8{4*Z5}-{Dnc6;g!hNQLO{ zc)B-xhpOy>0$)W!-gIHGkac*`(N5qcLYFW0Df<+E*fUhNHD>1Hzx@9Eoi5=nonbeS z5?LS68!dAbwQ|<3#5ZNb+m66Yi|5SR_37tQ#sr}2-*{oP6?l}dQ$7XuZX&o{QBr{+ zVRf!^<)ZW{$x(oNE3o#;c5^Di8L(jaohyF#-OdgtL=}RlFqX?^c%b*aD7StU;7UXd zFpI?Kwr8OaRKAsrV+v8?>n<`eG`b-vw7IsiHiTY9g1|>ftG0U}ux;|n3)@T0-cLaf z0RX8#p!*w~Y_w{H2N^Uy%N+JAHb#T|9tPjLc6;Sj#0-;IgFZG=8)C`U$yUKF)x z%%u`x7(?&fm*StAv>{ZCbc-wuwPt$#34+Z^yx3~J!EvF1_NL8aOMTI{V3Kdd9d7oFWrtc(F|R<1Wr zWH(-Inytt&`(>=CYK6kKu%wXJa$87UIA=HSWzv*#BZnMsk<@{lYfQr`E`tNsFJT@k zJ&x9H73!eiH{Xw6XAg^$^bMHKr(Lm86#yv%aa=iKyRSH3fRl6EdIUZiiQrgG%zdJFzXaUxJAnXr#r zya8w;&1G*2Q?AFUUd__z(XD!c*A#X0!9G8jl%TgAf#k6e zRa8E9{9k}yjwr!o{yhmJfigD`lw_Zcz7}6N%yu7e-%nkF&S#!DAs{t#u2i% z46FY&JRnk9+Q=UpMT1Z;#Umvvm<)G|c4jh7hJ2xFY63RE%wn`KPdAw??ePQy3!iyk2mVX|K)pGoTrM8BvECl8muxs6dQm5DLGEgC zZqmycTVW=Pf4!uD5--S2Od-)$AqoLnv{8aOYMZ&&DEv@A1>@6-ItoUr&a7t~hQ%6u zK$!z5;jg(BJpCn6`+g=#SGHt+Oa3aYm=lJvB$2kp&%AM}iy}e~|Jr zfK-C1CI6ssyk0d&R)KAAmQZ0s1!OxgM+dOKU1AFezPV}+o=K~#SOOY`3M?Fh)7pJL&m|kxB1i8V4WpA@dLk6bY3o zR^J`J92q(H+r)+Q{RthAM2v_D2O}S^@IKlR#donAj|r#4;~BLOBU^9*&Bt%fAN7Ek ziw##xpVuw~ww9!)qW2hZ2|g@E;>o`t%ky7HPT(kPO#@fconbBg)#HXY>gKR92l%$U zk%dETm45=U`vvARKO5ZSjz!CsujRUb$EH-y(|8?9P#BC7X`^das5T z0v-inX@p6>L^kao_@kbpo|2N0GLbZxiEMa%(U})186oNZSTBX`S|I5r$+Xtq5f<%~ z&{4xl&k_R^hW{|l-fyh%#uE-s4RCc!GfctTS+9sp6Wvf5KLOujFk0+XI%O;*vOjlz zj~4DU95%ze5>guJjzmJp5w$=@5OqSnu){*VUGxv*ma3{8vxG}`_Z_Y3st?v_+q@99 zfR6n%N69-HOffJ^s6tCFpD73~GxTg1w{e7b#Yt=nOPoADDqa|+I|R0(12_SuDDJ_D z>JLjpN<>1W0(~B#8>Pxb5)~=li5sE9iAAyh@MmjV1)?zz+`RfLrqNFwBieo*Nj5*< z@28y28GWg0mpxKmQuKx`K*SA#xY&KoUJ1rDv)d65@X^CPW@e|s9xINnW6pA<^+7T_iqgjBPtTar!I zVJCOQ8?vZd)NaGYKRmPC5WM-9X@LF}%7(hVcB?*{R}&`>8t+mu5_#*o9NIr0 zwP-OBq^Kr0x1m{+q!)^*xU+tj$QM*x4hB2C25ndw+?CVeVP+Lo`wItJRA*;^d~+*Q zk+os1Ec~pWUYFK4`6?9)HdBtBt)u2i) z(I&@@nlvYg^#>QfxKjFk|M>VQwmM*Wqo6oFJu-4*@WtZyIWhLKvh_Ty@A*IzE1N*a z!d+lCj@Os%<4TxU`}uy-?Bnftwgdrhb`r_C8}MPM)tYNN3v^t~S8+tL5LGSS+mm09 zyS+Nt)#vSq2XOkR$cJ-xLF=rX6y2&YFTsf)Y0T&gP@WonkT{$hxiC)^gIzN*HsR3t zsLaCSp)fG~rTznSH*V;M)cP}qVwH8`W+cS~cVy_v-sohCCvnL>gE^wy8728i>72Fo zxj4P&lZ;45+{KX?ke5};14>pBx80=h@`NmWym&<<>i<6vZ}Uhi!> z6+$8pxe|6pzmG4fFZ=lGKPX>+p}V^j+7;93)W|YZ)%;ph`P`TIfR)%|5%$tDOyr}6 zY*1%WRu#XK$YLBL+Q63R9c)~D(|;y=TM_AFsAb!3h-d8-2`9TdY5k3v;{w_bnp|?- zSa;?}4&ePuX|e*Qe)9ck!#C@#yRn{gx^!_DNBO<_?fJ2DF6LMH<->u80EmN-O&aS7 z(uP#y?lT;DQROq7N~GM^y>kxohMN$J@^!>Oy<6P@_&B`W)*>Phw(6Cq4n7LhpiN~< z7*t>~&g^`?+)u&E#^bRQ<8sKp)`qaGMH(8G0fY`9?|O1u#LabBOug3d6EQ`u6y}y> zZ{Yf$2DI$jve}e~2dJ&JRy2DR7`Z&BkcGx&qo)SVtsO_E;|Q+t`Brg(;pPk-pr%D0 zj*a9TpfEMnyq#X^UX4hHYdoLGuFsU0i(XAI;x~7AJ=!=y0$Eob+@_ot4Vd?{;Z6CD z0j%x(gwuPz2Hn@n^~#p7L)2i73UbJ3vEzucxy{QST-JXhqi_H&Xs%qP1K~)B5O>nP zj>tI$p7(q1745q zJ{~+iY(8+3_EdLPep?IpmcH`IT2utJMsQk_?`A9X=F1Y9{{X+sJjgrhf~*8OUrt2>GjGyQK?!~y%>w`N7!-< z+Lk5+-7s4FECw_@_99DRrB+yq#*@)#$q3;0yj$qBJXp}YnPg7MesM~nODs?2B^>g$ zeyy+U`Z10u0}*~J(`u!z=t9{xuF`B;xtFObYFe5PLC{%I&D@uf&?cwx1^n3xxmfpH z)hKRrc&aM~86EMNxMhndUCUc#3${MR>h!cc!!RLIv`#`(B7@X9&SR$ETyeymbR74= z^Do>SajZlEK6620nSgeInrn<)xw9BELRd|FB9ev{z4~+OU^#GXmyZjh+gxqSAdckM zSl>crtFFb1O3>B0gIQ+_2I!;Mt`UU3P_|P|6tAa=j(0_19mAayr^_N|z^u3wE?uO- z>JQ6sY@D#02=RDjPgv=&A*nkqjXJM^FwzoTENH&ctog+j4~q=M14R-m!1aeD^x<4R zdM<}zvly;L1e6}PMO1rYSRhclwS-lcKnq70Y?*K*Ck-vB4KZE}2@ngsePPe@#)hyb zcZre8@)^U=HK3C}VTtf! z5hujB9&RO?qNsnl#gaqrCn^)5g+P?0mahp*0-%|wMRDe}(Wm7R2P+&Rz1~q?reyqI zu~jCND@<_V!u`mA=*7xa4~W$WQH(SsURi@8-h8h5$IhsRMgW~24&z=@pFoziVNM>X zM-YaBK9X#itM~~1<)2l=3YMV$P>4n0nymX2A=LV4)E?>HMka;+#(Efm4#Lr~RgWHr z$N)5mb55Y;-{iQy!6e=N_65M@WQ<`D1u!jZ#fOJBRQY~@C=dUi4U;c0yC(a+;{5TJ z2PUa8@+hsw3!p@^AYfO}9zFA}@DCO*3m>x$rO>cmoVF={Rhzhi!K*r$XvN&>fL4wi ztP&2iA{Z*fVVq{_RBT(&`{A+tMMGSbj3*VQI2rs_b4+4ek{Id`lEo4Bcacxf51WOB zQ7c2Zn$7+3??U?fL#AVQGWJKpte8G5tVLx=eM(n@8$cg7OnUt&Syc&d(LKd;!T&5- z`3a=Lxlv6p>Pmk>nM)bFGnxk`lOH_DaQ)c~=ysyE<@j%cIf=$hMfENCE7>Br2g%cs zO_x?9-<_D>0u9LZ4L$+U6~m4BLRJa{4FffbjT%Huy0Bgx-CMeS&C>6hdBli#P!T&f z%DT-RTmZYWdpLjnuQ)8Q!ZEVIop-b#f9pO^w+1vZ{7-3}0mG^?cE(9@!xwpxGmy|u z`Z+!ax`u;0uxqYHRW?kkIeEx#ZtF@{1Vxm|911WJ4$p~qXoMMYKX)(40b?Gm8F@c0 zJc>Z|m*3sqya!IVO;ujs2rb~p0ZFxi_4L_}ApmX>Dmwkh@|rR>IXLX3Vz=ZiM{5s* zhWBXC)XzvFF8T^v?3T4!g~c!N*aoXSJIwLIBt8l&Y1qxeD@5V9DWmz(z-Y&p^u#%% zkSN#E1yTJ`4=vE(hevT=(BO9r{g0m!B#EhuwA!N=jtpe<{=+j$p}cN2I%qW_9S?j3 zj0eUD8?W?;<9#n8j~p(LDf7EG_&Tc`d~h13lylNScOMxYibk-*!$n5GHVrlE9TfU6 z-$>M=I_fuwanvUw=Zxn#(q6@r(gK`(F%4Z z^y?iK?g#rQg>!Thw$Aai3+sDm=jrdoCtSy=yx0>1&Qn z^2YCv-<|p@Y-UUCn%G}|16Ly^^rb3FMn7&Ier~_C5gUNd>)Y#`C((x*qR11qRB&Nq z))2)P+u{_#4n96%FGleKba5vj%L9xcZYEAa0UK=oQ+X2KhhLxr9*Tj$_29(hpFLWa|X-l zh4^g|Ts=g`s`kD_N|I`yHak{h6?00R!O$}N%;GmQ#nU)~^R*6BU4K8omgpB+XL?8< z5%4Z7aN+79m=LR7;=f9aFhGweRbD?* z1uiZFZZdva3_DSRQi3c&nMS_A_rA#ck-`vLU00C6$sj`4nsbyUQq#X(&2X|6V1tt_}kREEgrF{`IrfLCt}Omq_72&7pvY zm{?{YZa*Krpp(vo`Ckoi=FMATcW*YloC=@TY{>fx1Hv+drq&!{vMHn@l+c*E`MfvE zz6G?~?;Q_RGUn&)1|45967Y0_mhqsv{O5?owKyH_Y!}IM^mGzln(3m1aFGHoyDCbMOszie4srZ10F3trb5{*?DK(P*2$&%Y2mfec3FJ~ z`4-f^_eC$mUGgFTDDnQqDAVP`m0i;GK}zwT7X!<*7F3``0%fKC!gWoBnb&*Y2B~lA zTx8sbEurgqdr2Kir5ovKrGOqf$VGdzckjr&?yqP#ZnjTJp@%zTw5lLP^ zrM#5iKz_&XBz$lt1Z_+3$Z^5A6&Cgjme1r-gKU;X{S8}E0v6= z6|9i0$2uk~KrZ4OMS(EI;FG-fa^X9^YGEP^bK>C2rUa$H>Fe9Eo!})BiJoHg0|B(l zb*vZ9^~wUEz8Gg+c^&g8Ky&m5rE9ZGQL#H1cpp!X)X;QJU<;(3X5-lNYhy^UvTsCq*$J;w3K1*H$p$?YRpbfX zoYZa7!^=3|B}e@|3(t_a&(f-Uf$$PYgRnJ)>jkcmOVFD|PuF_Q0$GqIP+OOrg<|Oi ztQ9njO|csY-Aolo&1i4y?PGPEOA$Q*NBO;Ln}60PkQ&vM?N-%qtRY}Tp^#aDqz{&n z(|s|(?xAjNO8p8q%@uGN`MTyUH%jWjArHDv|CdomoL__eKaszLwP<>fKNpnc7>o3nL8r3>pp z8NnNd{7KINOj(fuT2a+L@c_5!be)Rc5SLU7r9?aGBsbiG9iQPZdk82!*Igzpbdheo zy|5~;0tH}r3s5x0H%!JIe((Q1-OF&KOu6C)`Dhp;D`pCsiArhd8V~HO_WykYK&g;O z3D?(kJpQ+>{%gk_TUTdbzFXXFAT1;QcA?+vc2 z9+wP44$7gj!QtYILz-7MHIY_xg%c5Gm^tQ?N{>eAvg-B1Vp4)Gs{ShQD?271M(3u$8Ir_wdaUX`(7#UGa zgn*uy1jeVw;R=$QN!`K1S1&@g<>g~M4j9dqF8OUU9$Lk0w+`t8?PT%_!|H$vrWMY& zHa$gkfkL^R!Ur(DOktl^E=b9u6wMuaoT*i-fYY#|#-vhq=b~r;fBB4*aSIB??(S7i z-;V3<;^j=OiT9)IUiAx4XKT`T_bAyC0DpVST6B*2ay}ZkpB!(M+{Tw+>hU{+J>^`u z$NW(eLViM1zZgR@astD@lE14yNA!g_I|%gy37(t!t5X|e1^nk&Q4DsYmmeoDCG=$w z8Q89K6rpo?{X3teUTTdNvqTv7yIo-ZXuq4JD%LwF6w$#Fehx?b9fu=xWK%$$d!=Ll;vi)`os_Ch=Helf#0ilcA2R9E%3Iq{F!v z5h|Kd)O`SMY|R-eCG0O8G2Ch)~780H&eu4or9l-LCANE7d;_JxPV0VHnV z@TJT4YNrt^GJ*<4a#V1A293DwVa|8E>80Ot!4-0i#dJ-X6mTlkPMTSLqJ6jX@c}AiC*-CtVy3jBS5I}rTX3;K?(`~0~mnBwg9ggbj9c;QcdM3SjM`3zt^o5 z&k}Frm5LIbPb;9m$Z-5sKrn~= zjt4Nyp&Hd?Cu9*7om%DaZ__{+YQ?P|`}Wtyt7!)mnXj_vb?jDC8PsTlLu}VS0@X{J z<`K7V^cjALA(RUCoaPM-{>LphH-w<1&2INBpazw#N3vXtVtsdvr+(|ptyjnARNX}v z%mg5^7cu6|A{97_U(!B>x+u4O{o0pOvW0-+Leb}b)qnFY=+jKUH{>?HMb;)uih~x$ z9J8#I`_|=lg!&G;kvT-Wx&_3q%Bh$4^*$_CArug9YBuWKT4fLwH~X7HDyxAZO0^{P zJxA^=9vpfNO+Il3&)5;|g!nHfNOJ~FWx_`7aV^;n47ZZY zum)+tWN-xfF@1%|`1X(k4=4O?MSC!L&bg3umWk9Pwp4B83c(3Io64oC;vuwiCaV5F zL=reHBIXx^5O7NKl%N_Jn?2=lvO{xnE3gbDG-4?XV4&w8ZBJ~j*hK0e zy=2q}`$uOd(?aX0M?mYCJ((RWer0kvDu%tW!5$gsI-02X0^U^FSNWDyD1)mzUc{j4 zC#x?r)xviTQwwGy^rL-b4ugWB7TvKNOd{I}3kSxN&?!v{2!w>WmWHbGMT!!>C(~^4 zmk`lxnHH};R3%mIjf#mlo(`artbJll%cjsY_oi|FH8u0E{!!s#?;JHe1$QIWaYX>B zjbtcC>!aWT;V)+^uC!g<0O&ZJDiBnh?D$uYWZA2#Wu;0Q&L%0&l(@GqKaGBM@VAt| zdUK3y#LO%_a~YoZ@k1YkD#nVFFpg!pukH4e<}pOSHGN6jg=gT-<3V|9z#xh4C|ENOc9sXSs^Gj&gOs^)5HEEIP5%O?9!MwMv}I>CfpZLZk{jLX0DHCk=}e z)qw`&?&$PK6ItkCaY6xiYQVnd_{Nhm5tSQ8YWF_(LDXe?NV_{v)7(v(9C6NSRnZ4! z^e}#|z<5ODZRtZ&FvKI3Jdq5;qQ)tr{a&Ldnco>5HKsY9Sf8dFUs{Oi5x)04APR8vPAC!@N98` zGAQxu&r9jLJ`^UFk3#cAHZ4U0CL?0_R5bjk7MM^pj$G*g%6v^Jd+*HXhd9?s{6**z z5o|Qr#VBC;I8PFNz_5`|AN_DD%T*-OCUZ+Ke9)yab|C}p*BVW(!}j%ym^2{tRK!vQXU;s=3;ob7R8Qy+ z@A9>rv08;1c=KLRtNZr$+8Q>)%7J$3X&#p25D}8~?W_O-k7YW1O3$jJ@@5b!p36zc zCCfB?fsM~)qZ;i!&7$yv%L}Q#+EpppdljBhJzVJI6Ma;Um9_mFw8oYbvvi?H4_m5? zyU{qmEfAoI?cc6d6WfI1!nO{GkO=AWEKfPPxvY(d-+Om7wmj@euV_`3N}&D2Usp2 zvQsnd4qWCIrRX?6O>Sq`3Eb^o&rzx#M%UAkIv~<~Rgc{JesENVw z`wKv(HWnC;83m^nImZy{gwztE@TcC&y6y$W)sFk8ftGgO(+-16l&X7Sl&!dffxff! zJuS8YymMyb(I$x=zY*vAoD~}%7t&5N!qIo{PTcYP9N?EFXI|0ifonqxoNESPpC@|cvOSsJQ$gGyO27j(4dzMTRmZ}s4u^@=_C`Kyi|#_e%yo7Mgq=aTjw(#nD3L7rcX!N_s%ezM{-Ec2r0k-~#l8^pA0bf;oXf{mfx%lJ1aKqSLmy1D;z)aIfNM3|(0HLUSggd8*^4Z0p zd^cVz5orC7pZe^Y5kG;{XYMRq0tmNmVi*C9zqA@+>rGc<1Nd~5>K4^pOIq>ECgacj ztF;d??Stu_X{Q|KLeW~)oAJ_Njh48ucUTZUNsdaPb({QZ#f3)$HG^A9YBoSbVVX`O zs%dG5+n_xcizimOUL~zab&lF!1WD=;HV2qkF7_x_VwjC!F0trRgHkQ$AO&kw>by{@ zPcU%0j}qSP438Q~FBJ6k>);N9_?NRyV*Z-kilQHh=0W}fn(fOtKFJnwpSP+c*`TCz z$$Fo~hq5_a*kw$Asj$xf1Ast(zhA>kfAJ=L97!z0Ge_&8k`;|W`q%ea;<{dpG)cTDq>C1GLL*(Y zpydiSV+{}~BsfN@h0Dq)b8fUJA{sm@K1VTU`z4EnnReK%NbC29M04f7#iM z4%+Q#&>csDcKmpq$`q;^!GAFn?~OXx1tx$R_O5PS|LH6N3|Ig!8ktl~E%;dB}a?#nbYX|TFO#ah?0TG6dMZMIe~QSAHPNH4~B_OH{`{^Ns#f46sb>)cy> zXtn?Lj*N@YiKTa^Ex9zG|G*Ti%o8zC8JiJ&p~2`Sqki$GvFuH`#&Wo{~(<%gZd;C{Tw|G| z*|IFzu@0C{EhS3T2nSWp;C3<)9`)(8eZ+LyHnyMRe_&{OCNae$Tid*0CTJKK=iw-KfgSD?fhY49=_ossWEK{qgm*BX z2L8zK`#tsqk#~$rY#er?;P)itb=9jVF6cTD>&>LHwo7j56jAKp8Ws7Z&*Sy`vWp|& z4X#(8wtLT=q*CnRI%i2|@WF14WDXIYZ7>|8Qp%15UmQ&(e?Z!FJD=ZlvPL3oIHPVm z`@uS>qxfX&5d-nKGv71V#Cl=r$~4|xrUc0##%U~qLqsp`;L!m^+zQTluJQI9dOlA~ zALuG%cii3y>3Kj2aW(X@1NyQ4IS!)5=zt=7<@0nPpZ#g!iTPXp{iLb33WOo?p?mk* zyY;yak{aj|e}`$_a_X6;5OLccb#xnUbU+P$nYf^svKk?*Z=gjsiP;C>wgu#Ur|?e|WMpC|wzq7FMWuw3sKhjzVmz zb_K(oGQt&3>7|?-BP)M0N?`$JzLBZO5 zVUyp>BOD?-@~dXBf-K~w(Y<%n?vn%>o4ms^Iq=0{1qpc?u~D7iX5rMjlPXlT7h_n8 zVVdTqe{k+d=v;8!9g&BC?9C|NFq~bXSg+=eeXy+@>nW9OFSHCDRMxl)@KqRR$_Q21 z#Tb?mAyZ2pN|nPq2duzlD1B666=PVev}7rL0!+G4`o=LKQ(a0wzARENlxMnt%1;@p zk$|z@r5b_4YBU^rO*QIjrP*)=ytp}=Onru`$t#P_Y4B#XkS|ea`~WXeXjqC_ zB{>E#9~fLiuJADm5qV0FWCKO0e;KJ%hjB`%G91RR^uR}C*>bECqPo*6Nj;pS37G*7 ze=W#A3&%Zn0I&^cSU;Gw!VLO7ALi+@1tx8zVA8}|xHxH0f8jqLR9c|6#^8;H$2Ndp z#wfEIQmUMYY`9MTcbl%07t6(q?abYt(n$(<(_0%V8d5rXI}Y;(!zV9(IXXQ#&KnHB z`|;)L=SS!C^B^?hCT{{L9qbmm&_1ZMe~?Y)hOd%!x}0_`>3(BcP;j*FJ)t3~bFrXY zX=T20)^&1~d>THFH(Ux=~B&UqcOqT0J zXXy@AR%)n5q?{(H6D`fNVO6>_NCG9^SJJnYE&?00&4n(T4OhuJTQ2g=I!og9f8<)2 zVN-?n${-9Bc^-s4v;KOVY~pmrX~7E$%TN~y6p8TQ71T7y{D@Ks4X2$m`Zqc%Uj3{| z*mA=MJ81<4DSSMDf5mtjv^(*wgKb2$tMV7H2Fuzf5$HB$ppggb@%?}UvKXW@5a;VTk)0M8_55g-rKQ% z`qy7S@9A$2%WupF;`zT<^PL^mj>3+6Plh-ipN`MR@1DJUb2k2YJbpEP?PibRU2)ly zP2yhqJ?6>?8il&Dr>7_57w6C;pdHjwp4atke|+@%=`-ey zZQ8SN$iYpcePc7FEv=3Eh`6-&CqAm5ySEk~8`Nl?Y;iVras~bD2@i$lzSg-9CkgeZ z&4;J)P4@4PN%B7Xx3Ez+*V(^s#BpU@IZ05Q^ua;3=6RT}$IoB>(xR7#ch|{$`5}ai zg2Oe=wa$i#?K?G1E`=@W zRfZABPyIW>ZE8ShUI{Z8scGP z=+g#TlQ?57F{p!sZ@iYlv#>D}=W#Ep_n&WXcOI}d_iy_SdmdVKuu zksjaMR176QgQzEy&az)ot&OQ9KqY&fLcXcNl1E)!Neh%_!9d5 z<%eXwPN&Y2GxtoyfA@^>NLBqyk@8sD*`)MtY)%3RzPK_}YX^)}`2fRAg@c~$Gn=qM zBvfYpZEnz&?xW#c|49*MvfnuL5uI~3eOhlmD-90^wN2MdDB_84m?rU0l|k1|w>AO; zkqpBd;`l+@0uEB8@eqnaP>NYohB zeRLhPP;{Z_Bfdy%`m|DVkf_yLC@MkK()j|-Nt3U22bt2w3B`=GxOh_(UAD+hV|a%m zmEj^&ebKE;V@SycZQan_C(6(`^2^y&(&WHP(GBAv2iCR_uWeJ7d%H`AL>5N+iV_61bf{JH{#|eZyDu4|v0+77WvGBl^a^a)|{4Yj*4%eHNmkVa(8He|Q9jq(r~>YfoFZASDw9gHU!e z?`hOXeF-XfoB9sCk!g#{`=kD7lbdTphM0qKF1v}{-;d{o!_hPvb zoEOh#e>c(6WRyl(DiM^^jr{x7HeSbKI9(Agi^X*wCY@}Cbe3O0&RQkQE&rX~c{*9l z(0cw=KWTv6L7u8RTwXSL;Bbe<1kA^Vv3#WNu1f8J_6F^CdYpG{e&2s=asUZn z-V-~T18^>PfJ9JBQFhB#<(}Kcb6+WmsdbN{MZu;xE{d#QOV;aTdSYU6Rq_kz$=FDq zTZ?hc0g4f~9H1D~QdI7AT=Yf^ye8s{lj0E0&{Gz}mNvboRA=ZH#&KKZdWduwm$aK$ ze`A_oh*Q?n94)5j>Ab|%s8e^yA+9%lV`bOW7_hM-4&8p9tja^uj~8Ja)8M>VrPzlZ znU5ok;IZ?Te2obh@3be^84QE^hjpF7xT&FCXE3^HNY@z*T^h)B=0Gsz`p!DM&kXVy z0dD!#vj?qd6gU7*yD5d^@!|YX4rtSMf5JlADGnUd?w!#J!D6XfvsN77reBG<;=n5P z(Oy=%Pt9nlZ+{re#Q}5L&J+EZE)GQ0e%LdZ0pkE%?WS5H-dyOzKVKdzaw>Gohv}7| z%@Dl-Nk+U-p?Y%W8vx0+b;}Fp-1@p%3t=cFi+L?QkQG7qFYg6sRxRk1Se+C!W znfXl~U=hqvU)E_?)Vg)v3{4K#&UYVo5#LJU0vxPDReqjyUx)*w7EO~=Q$hqDN?^~t z#~bv4`>Yi(RFV9G5fO4BQ~$Mvrw{+bfjl0Lc7>M2RB6aNRxRMzbu5`hI76$k-@6X1 z+wN`pN*}xqkll{mV@yNTI-Ds8e{UAV@Hn_InWIunp^CC>XY`X18%FHuEIqqfY~oLU zKI||;W5&b1(Wo&f!5C;G`2OCgi9w6O`|Ie_4bqH)^}8EMUK0$GMY(h2RE(kQ>-DAV z$17ciJ5i<>L&hW0h3R3ZL6c;An7M3^u$m=Nj#)&e6$KI4-f|Wk7XuGif5EaT?m#=- zE;yMNP^fEAEKKPB-5h_?J|o7Kp&M41eXEv_YZ7Fc-^oATy*PS4wk?XHZPQ}Etqfa| z_CWj((7VA%d-d$)3z)W5CvEVyp_?0b(l&m6baD#PmN03fdiZcy>5f0Z>jyLFI_&mA`le=r~6XAXI<-HWK; z;ssj?AS2+{RLGUowSv8p#d5v5)(cVJCJHk_{#bsOEw}j}=&R$UkjbxNYKw}GNlsMx zouXU+$k~33hHGs~t<@9m75i5WdVRn4dVR!wylP+hpBw_4@R%6w9X1VUIuh&`0-U}z zWb9Yt*Jm$ZygNQQe|vR$^xq1X#t8y{OWo@{huLS74v zEG|KWG#C;=R{bL%3YrkwymcsOuV$96D};KMcX-#}fl+VjyV~`hMd@O--B=B)R0ZEU z5!1*nSJD=#uwArNEe7aRp_+%ZdxhYEF#@jQNdpwJ3lzHYf6*>XXi4Hj&^zSS7|prx z5Pi{{gA>}K8Ag(2U{~pfWRbTB)i&&B*-x}&FVhZH4f1J|_ZqG2Go4s`t2D*lYty_n z23cD*&rUui6J;K{JGVU+vI6pYpc+6LYQBe))Ka}GTg92`eomK(F3S@`$mp2*d-7=| z=uM`Pj+eFVf7^YKQgrJh#=S&$d^C5ndKCWfSngF*Iwx(`H|@z4dF$C(Q(-eU*VT&8O!2qKJ2Ra`Z$rrQy988LZAO;WuN>U6V z^2^Hn1H4Crv^#kg-g;12Vu-3CZt)SefSqESx8P1S{YU)m0wpYAyIMB`o)Q$3*v)W? zbvhlO5XI6_m3jS}kMI)MqPkV*z;hA092d4gf9>tLYO?}lTib_wqh{}O4k&IbtBA{e zm26BP0fCd*ywETTF1gXJ%M}2_*OL0|I*0b^sqP#Vfzf!G#kCSY&PFI^HLlMK#M{gp7 zccn5|A7m#opb|0Zi$>L0MZ81?I271hB7?QdbW#a97nL-I1;EqTECwergq(^mo5cW! z0t00+z>z<97K42dJ?1dLQ9p;nhSb~3`9Oukc8)2J%r$u~>o4c=N-n?nz8#cVf3Nwl z={JKTdFWmkIZ5Zs_sJstr%>w~^PSp}UAr`Jw^EF^TPc6rtreW@TE$bXs8?c9kC7ok zQiBiqW!08-`dtAceDl*_hG99Rt)Lqtl!lg|Q6+lTaT^YS#bLxF-3i2S4F^q};RWMb zla}&pFMZUngdsM+m?eXqFquqnf5@&IneFy+eBk)qts!LC?>_JB9%_rtR*$}WmOiu7 z;9wmm_s>0rNA4LaPsm&?R<;lvVf$J$P~aF{9~mf|m|PzjLY#J#U*>G!m|kdM0EhPi z2?IFF*S-XvOo013VglO%laD|R3O92^W#9Ckb_92CbVa4Z#^@=A6zifqVbxLQr z7h;Qah7MquC7T!VJQ>t=m-=P*8pLl0ZC$$D)Dtq#S|o;Rc(`RE^SIQd^*%4SIU?h{ zUR^I2%>&cFMJ$7TWN^pCa7RXQt#%!mlC1tmhAP)Z9NBmtr?bY9f9c;Mmcc(ViqvKt z8O4#%b!0~U`5ziZQnwx2(R3>4$Qs9%{~om%{?SpyJLBl+Fjc5Slr{_U1f3QP+-MLL z4sf33I*FSHDSz3$nyw>suY=bPw=0bsn1~{o^{Y9)k~XTex#~M`G@GeS$OdIdXGfgr zWqzj69zS^^HdzkZe+3(P2;g$|lD!PK1ZlSD)%axw#y_ZF%&s0 zznqUe=-Kw-<@vku@yYr4xPAA*AS&GPFWA!!ZqMg^xU3q9z@<`f=RC|4zSb5KD3aO* zB^kqg1b58qc760#HU)RdW9*u%U@F|!u}b0CB~)CZy~5nr0mn^xX)>{#o|?Sw?Y@4wh{6CxzD6ANwrj zh54)b7c$Rjv6swOo150;D=-%v?pOye=A<^W{6L&8qUAz%Z(k(hQmSmg=;L)dxt4^* zi%8KGWoo6nf3m6j$8G=fgo0i=)YmkW`|4i0PwKDoHI(pv)$_#V# ztAkR*Ovk^x48gEjW8H@38dhp2gVOWLTyG;suRDiL6lda5u~8&Mf64usUDZ#H&Gd2I zwhT+LK9$awoR(%|c|UjtucNtKi^XfSd(IxiL{HAye??Nnj4?jtW!}ZM;sWGOaJB21 zOvN)v4pZ}ok^1rQf&Q=loDmMvCKHBO^ml8bOz+*9e6~hU)WKLfv)=ABOY{hM(fVF_y{|bw1>k#|50T0Y0@$?yE|LCP^ zJmOxR1i}jrCk;YC{st^fB}iXRJ!7dS_;rn-c{Hs@=%R(8nu*8f5Wb=uF`#lx=JlWHPa!F&uE0h;YYYE zxIGXUtPsNaVYvdQCUYj5XL|8#1I*ES381hRiFp#j$ z4aOvi!gTWlH(esaRo~w1_3Ff*yLdKt8+S=jnylB!R2Gx3Kg2UH*7CEWOV(;q)wQ#H zw&K~{bhd(v#=Y6<2ddD*mXUk0)ep<%dm$3=%!Dl&XE0MvOV=(USqNKp?#)8je-dNC(?ZdleMvY=HkhG26NGbH(mbm3uyvW95~5>>&yLK zu*e4@rX0adcMml)@I*bQc`&QXT}keZ?dB)D!{pLsFk{bYa+E$kO&%f^fK0tQsAW}s z$4;yIQ5@^HMg^^Tb^ozl(nDbGf8SObl`NeMlt|^vFPL=T270~1d|~9xVseA&WgWp& zUX+;e1dI>Xth`DUo1XBwOOl=-SnR=amU>9{36P33S6J*TWrYl7RrQx?iclfrsY#Ik zIl1|`Tu<_a2~(y}f5~rZSXi!{ zChLQItoU1OGti#ZVal&e#>OI^7l?YYf`krkz{mxv(GY7K4No%Yëg4aE12$wMl zkB_b2VzmZ97itB`NV6^#om4^>gG$mFAi=Pm0Uj%m>LzRgrA@(??F>NZVZi7NfUU|h zBG^8NK05sR*e<#yg8ct?1ZdzXghkK*LCJj7Cf0-1ty|8Jq$Sbmc-ioj6 z9s)ERK)dI;r#xC3xJmf}Ee!%;Ei$ui6#BY8-a7U=2QLZLxd7$irC&5E*jAOzvCtHj z*g!*5xMfxtWG(0LBv_b0IW>fa674|Bnk#ud+-ZFi=)>~_sux~se;_$Q%%7o;-%kXU zf>Y|IjUPOb#0z-_#!YmS$Io)9z2xw~h>X+fA+H6TsHeP^AOMLT znJxBf7YThxKO|<33*(S{p#vX4mOC>arTUI|VaYBj$GYAT?ltn{XYEx}yP^6=K21EC zS$}ESteC`nYIuURe|TxhxA3NK#~5WLAuyPX};`(zvbUgD%+Aj`NW^^-RsWn0ivWHr8_e1NF79){UV#A z84TQ#y5G{@5eY{CQT!Bf`9*$`x(V@51TQ%n`#@D&nt$l&f6EtV=dX`WUYwtGr^W#b z;2X?c87;tM{S@Q?69p~E0mf%T!rJ0rJbX*wvnuRXO$4`n(!Ngi$5@GcY?N8&m4dt} zGHLI}mv3Hha`xb63tm{C@H`>?3&8L!yw|{>!f+P^B0O#*yJH}K>x_u&21nU2&Q8;8 zQ@Ia2^h!jye`x|{1^HK%oZ7wH*{%QGx^1jd3Ajl@2%KMdI(D}a3i;_jQ z6(<;NmJ+fwNjKNYI?}us30uTMY8HPNYAjI@r{W)G@ns_aRh(s8@kUV{Q)QsZ3`}1T ztHrHZkVWQhlr5u=Ni>NU(KKBrlg;cV=V~3oYv$sZe`p>ZGXid}z_@1s4E1eZHlDeD zJGYI{+#wv^JQ-e`u7^P@;A`fc#kPj3-q)cU~WHR5s&&_0(?D8kiWM(?> zM@^LGKXy)YxP73fCwJv=DmL`Xbfv>PqKM*>Lx*z2kP{-$m5$?hYiX|GkPbk;g_EJV zpmy*Se?-4jFA1J*>WDt6b}TD+3Yv$hlJwb7My{k!>w_57I+)O&g(ML{QCZp?hGV#f zZYxL7O*A7G5G-5JO%=oa&p0r~W8fBX@Iaaw2#g%r!O57`^1~7cfk5wI0)4Utxw(sO zYIx3kcQwbEUn)X>=Oc4)fb)WQcf{qpdS`lkQj_; ze>l3jF%Gdg*1g5T;Jj!;EUXM$zo)&2C&Fu=+ovuZtZ6tsN*3 zUE-W7FTzP*Hr?K&D>z~rHGO=Vt%+CwE+X@w7Lci9%G^KXMq>V~;TJ;04J^(M)`X>S zq_aKe0niWn@|^pEAAnmQ0Q&$O7YTjve>z#|{Cnx{GY(;;1Y~2_iO zz8qdcwQp3KvffNtGR=wPnWAa3kq{L}bLvi8anpqEOxxzzZIbC*c@7hcX=kg6f2H#_ z3Y0~TeO`6j7K?WHZd>a~VM;K!40o@${^V3W?1;puV`&*T(c zPK`$aQYy-6UnT2w*>3WIbAn30e`w&_KBpGQLpjO0_?c$nHQ$FAJE4J)S2mpP!p3M` zG?X>anDJShU7sZz#&mROIO}4Yrq=WmMi~%|`FJa2brmirT_;z`C-GF+2rH1mKqyU5 zUsQl>uznU@A$ge! zZ5J6`5WPA&KOet-@$QG0e=mPNdGS+;9;5y&CE7~7AG*pkfyRLRrY~>r3}nE5`meu! z-qYV4mfz@5{ve+Jdo|zLLA1v6?wUv+AB)Ilc&&0S<{4X$`JKEt9{;0+F*N-X^_xBx z|6T0;Gg&XA?IKIB7UH5xf6tYW`z?5fBZZG}03e%@LuV}uk&lmee`*a!=O-^;yn8+V z$zI5B|Dz7{_u<_RWJYkO;lzbth(vHo0ttQs+Fq=Wha=|U^Z<-gYq>~%h%?zDM6g!w z*ecRH&2MY|t>`p~rz%-)Aro(6p)te{AFtC*lC9#282n>8n?)B%`$O@tsa@eT1b7`L zVB4x`;7JJBnC)qlf7vRTs7X!p%v7qy53&G18ptc^yr4U7svjx+cz{eVpu62*{=tH$ zRj<63M^=MSbNeeyMaO@1ZUGweGOFiLp4iPzE97C2AVD^QQw)7Dz15Rxqf5^LVwt-`K6NuL*f4N@H zUm9K*m;=b$-EL|p!Qc<9OlB;(7aJ3f^V2odcX*hzRt*(biwqQ?&*xgaP9piVhvr~v z2spo3WrtNrSoAZH8uHjM;2B5RRq8&>Srqz?uFqh!GrB&5SB(`pReh$=y_5iu-wiCj z3#Y_T;AW+`f3m|4s;se5HQbp>rU52q_1FH6TO{{{2cHf1B{8Bxu0=G(1!wjMBwXfzYzC zf~Beg6+dYmsJcS{P7^^FoGK5jMx|JcY=Ztd?@*ISR_D|Y?Mh*5Hga#)>I@`74 z_4cCSf3`HpscyCCM&bB!4?}2|LOl$Dv0=of))OFTM|~>Yy3q|f66|>ht)2Hg%;A=m zb~HZ}b>sTSa2gT?9OclEIWcr8^@#semLs`=Tv zadbd_M5@_y)u>O!ri-N(M+d=Pk(#_PT5)vH?=y0Azeqk}%5 zf0CmE|Ip$lzN$M`&&99kN@#TORXrd_2R*(ZN2q*%x>nSO;h_^p=mJ8HQXHWx2&-CA zFqGDb;+sLqcj5Hm2wz6nREUxihA_ex12*)b+>ac*DZb+CLUhSsp$o;#xh53f+MzD- zBTo~ess&M+P!bnN58_(J^YtLE{d-dnf65DBZ8+!5`+FFUyfgeA!_v{Vy5T*WLCg^c za?q_8Z&rgSM!Z}?XG;+XUyKp<9dB|8< zRb83~C5sNX7QeF4JK_2_CO~0bwMwG8u;rjl@@d*uXjvO0Q6dN8z(WCY==A}Gf5IJD z#0=;0W^$cm1F%G(h8MS5C-MAZmYifqv)S@vGPOtAVYT8J!PNsTfsam&EmuWS*)5w4 zO7C{!y0D6%X;=tdMul5Pz^EyOOBH-tc|enpps^U^lko;Sbh%?1I;7y;=;?Jbd7sIP z7aRSM!<1~biq9`qiH)Q0)-W1;e@voja+%5uko-e&riyuX7}V1-1%+W5mZ)9m!$1V)-eqkf3T`#FP6($5-$KD zoU32+2bLJ-VG^o-oM!qgdJ@5~7d(R4sD)C;6`+yDrtpaHYO`i>F{j#}e}yN=l+bXo zfiHL=G!YAy)$HV@I8oMC5{l)SDjY5vfTy63&ghfg`C5grG&nuaov&5d#jKeNB!AiQ z6apz@y`uv^S3$x!?`Xy}oL4dBxoS=e`&}q}dl>1Q$zC4NgfDy}kR0*&}FKlMT$B}m(x?-tt$>K*H*zx9uAq!FJI|u~98F{(C>oS3$a5sZg%W;pf z8}W`OrtG(n%WHtg@O;4)6nrDsF^lip_=n~4eG$wxKjiZ2e?tElFr*8YOi*Q3P8a9= zc|ub@OlzQhCX%|&sWFe`og%`@b3wyJ7pVJGIm&7NlV!K%$Lq0waN!1B*cnnd6fhsl zxOPg=g!~?PUqZscWg&e?IJo4)OTqz`23-8X1&)L!@D-sNtlU)XuanDUz1E0g>kn~J zeX%+TX!^mGe<4&cDoA2jesJ9f(bM?qq$uY^kK6f4NNw(U%wsv&e{;39L+wa%23TGAN|hh z26zZpji99XBo>O}?VV|Slf4yxqEF3lx~zna=7=04e^~uATwWdvat8U4vChM<4fDl1 ziQjXk<@Hat4&q~yyl0*SA0N5pBz~3j_#FjLrg|R*-_|roF&BTl=A8vxzT$fp&lN#l zhXI$b^nMs{T?^$fZW1A=d1t{FjxA^L-;y4`qwtfQ?4#gI#%XdHZ)Y3M8Sv$z{ObLw z0g=oTf2Z_Ez#&}gf{k0UjVZX$CGZR95H5KM_rf`Zi(lONP}S!Rz(D$~1N>o-H}(Mn zYE%7@a48puaIsB$y0-M>7)pj|HlD9GH=Uju$Lxewr}j-XObOk~M3U1HP`?kg86h+{ zL)}8hiV3}g@@cB?zMOxIs>l!GD%lKn*x4qBe{kJQHy`{3Is=n=0{rPsRw9I(Uokm{ z3cqzLGTuQeF_)6dTEX%uq0!;u8MrT8m2st)fYIy(u5xLgu#8kq?|k*+ZSs48aT@Yg&jO4V{}l)wJ(Sl)jWjDSlXwOUs=szmEZW>YZdVt^uXmV-Q-Aa ze|3daGmNhYqJ_}N(Wa%_g(dw*9D+dk)J{+lW0m7KTT1c*u7_~>O83?{l}94g@AD+f z;;UrPlFHIT5<}Y2;|+&!%}OX80T-aOOV7eL`P*TaSJE*l!*Ij9BOP-xtT_4Q?}v2I z!?51uSNH4QF(1SFB6uDhlQPVxmQAO)e;geI5e%*nyAGGMpmrVQWOU5RtTqneU35^y zFw(sCogvl;{zS*546)X-?G#6%gCM5NWA8dcreR!%j@kY|?@72&CHQ+1Eo!}TtmXHc?74xq)a0ce1Fe}c`E+ZI=$FRo_ijzP5U~K(}m9>63?}&yw&}ytx+BX6woRJWdz;vMcw#-HmwvdV8_2x;5|X zZq55LbtC;Wl%Eu9xJ+jX+e8dfJrfBe>dbo(a?)# z!-q+W8HK( z5Q@3!MiS>q`PdAC*$DZ{9@ej9yht?twWb{WtpFk^0^e@V0bs?+o86zFMv~%>_yrO|c+rZNrne~sQfN!fOltOxmQ-`q#E zRr)u z%gX%0-oYctql39}MvI#g0=aiXaW=D|eo$w_YAG@u+sapGgM$*11kC!%g*{!)C3f~^ z*%`KLIxaEyf2=X#X_~boHH{!>SzkX6I4DMCTl8Ok62@GPyp{=;$YiCw5Rbei5hDFv zwx!zGbK?*GVVlmToG2`;+-Vf4`#uz6JQFXAr?XUinn4Ib@}LMQ5*Jw8LdbkVQS)Yz z{_i$MnW7y>@kYhX#WwCq0GMc& zd`M>WEkiy)j<+je8HwRC2_-9``U@EUfp~We)9fsso5PbW5`^$f#kbBz2NGHFuOL{q z??c47+vJysWiCX5gJ+3OKzNmlMA6^>uEb}6Vt=j(S+*ZpaM zW$OMWf9i*JPsIJb!w1MvmoIIW3^N2?m%rgq*^7;Zj+*VaiILF(bYsxrGI5R1uM?BX zvR!PmtuE|5d>AR**o)b6@;aqs>=~0UU8I{do~8ec)w^4LbT`VD^JJ6C zd>FCi(@28Qepsf{XlkT|_-I?$_dCB}++9KIf97MNda^9C&3Zc#=2|w4&Jw`{o6RbF zvcErFPO{;09ZzP7Gz--8AWQZ)Tk%n`9{pU9|9Sax->h+Xy_q`&srwZ0_`dY92|Za~ zEH|bXP3`pbnU&&uok%k&Sxoi8i31!;_E;+{dF|egKE^j0?NpshAart#qF9)3SJhLc zf6s_-*4m~_;K9*>K)Pap<9uB$HjGrZ;o-Vvd3SYgQ$E6h!7lP_ncPidL#DF`#fn_F zU&47rUe8tMs93>gj1c_nC2f8=aqs9O2lPKaf5^x%V9}vNfIlFcwOnYM2h&LnHFvQs1xAQj zFa-=1ODv``n`_6cCVAwOtl@7(!%^Tlj-W}XQfy5_I^w^f7iJ< zF^ajfX%avqr}tiM)@Z)XHp<+SpNxg1%Z<3=Gjzh>+CPtud+;pWhI`6Z6{0{}I@zH8 z9ot>!3y{XLfm8x_zUhKKqkaZCA#@W5E(TPK!-tZIMgZ3n-iNQ{dqGS0!@Ne=ADFr$zrQ z>&^7JBIXy#NBP`nZ>|NC8RDJj8XVmw%DzG6;|Y2ynw4_iiKM1bHAM4#T6#VKsvT6z zsPbvpZ1M#6cTJ%`I=M&}MHptB=&+&69;YHnnIxDPCprdRBCSkMk$85}{J+ zX0qp7I!!dhSDaNJub;J4F5Gk1+Y8mfrmIDKQy9PDt2IfZ*L3d*25i?h_~LRfqv)Uo=V88 zUwHr*_urEseYKZ2;Izj-{JW%1Q?#f3`R;ujH(({tS9gbQlI4_;* zg&QlLt;Or)M#~O=f6)Q=KB9-~;7#{(Ud7XCD63!uw=P0v6sQilY-K!x`xk}P#v`~D zQ80Bpf}0J6*2g2bu@L5(+FIEAu8!bNLYsX!TT>7nJVzFVV1PU~F!Yh`nm9>i?^u!wPUI&(ODa?_1QjajpRx7y zH>YJ$6+ym1f4=9w%cQ6MGpsCH{yt+7WEsk`vfxyFx~R6z9g@7Z%mI$jCN~G_S7?)) z2sMpGr{uPG3NOAZL;J7qb_`B9#h;hzP%$`j5o7l)O8|o3 zWVi@`c9ScSr_k4#+-eBQ)(m{7;ZlR(cN(repxx=dTxD>50!eF|d+zBiqn9*rE;~t} zF~&!yf0xKq8Hv0R%@gtQDLp@C1Q!^1y8z*e0v0~4dk$>H5(Bi_Jt;QYsSWU=aY+pt zWuTyGozrWaZh$ptB?3|HOZlVU-Z856?Va7CGK21-pjQ(Bl-LqLl2b{be-*&>0p4W)zL<;~Du9@* zSv>=#53|^f88T?55ryZuAYx2NNeGwGSB$~KqU!)q<__%4L1*`S;qkZ3Pbm-&49Gu% zf6D5k5I|}0FyAW`A6t7 z04A5fl>pvcg3r+xUv_DdIx+hfIZ(fSa$L0j5k0#fFo0~}ej9?8|IXnh`sZH?^Xq~B zZ&hu&DD|vG9l@mmVZsz}zQ1>v0#5M{f2%#=JpTZVj@&b{+}?6t!3*2jCcj;yha4_o zWldBkzCViY=D)gE+%QC&B{y00)c!8ADtF3{HfCG0J$nJNgB)~a%u`q!A)w|5ALcaF+;4g$9hy9ok-iszSRvRo&_pSI~)vXPlsjBZ82 zLB-iv>j7FERS5CJTBi%Rc4~Ake-eX`0LC^GguJ`(4Hy^)Cay9Pk6xYR;7&@{D~y=s zLVTtTd)6^8>e1g>R0a%;5kci^Az5F>lYBj0&jrA6AX~=bkn-GyLe75HaK!OUp$R7+ z;@LKq7{yCnM%SWUtTYP1hq^S^Olzj{4Be?ED7bUuD} z_Uz@a?~YDS-#tA&8NWC`%guWUmYqzaJ@XIR9e96rfP=#M%^|6N_VUfy_~-HX)%bN_ z(tX=9Jp%1gtXH5Nu>v+uC@|thcDLB7wQ9GRX(XVcqFw!zE^^+MpOY;ZThQGkVTVwq zF99gL4UNLFYOF^gPaA%df3Kv#{V9G^uCgWW>s+N*;e~T~VK7eM!ST&~Eg*#J#A2FO zW`O4m15M%>9Q%xK9{rWg8STdpPwgczoTK(BFz`KmUB_>FDg5;2MBXfA0W&zFPw{}p z=C+J@$qUwxEN=iP+C2%@x%QL{9 zuPV*kdw9U>M*&gON5zUB4%#IZiu$WUyMz;01EF2gvsSxcF6s3&a5Aee02@8`lvB(G zr;+~QFc;yB)zH;tZ~`lm*)UaQbl!vWU4vCw!Rf4_nUDcve|R;XiJb>V=)j({@NIPw?sh60AGf;Vu3Vi?vqbq+H3=0EHV;Hs{ zn->L5P3K>%V~K;u3Byf?g5wMb!3iT!e7 zC#wUIyYtFxZ)m)TwpN9I^dU_?=IOha>1>m%ld0X4nL!={c8uQQ)Pcd>HVp>&<43av zHUJ2t5Dd;c56Ee^(*2i#luhNddOKhSjSQ2O!)|0ThlT*jd9DEk!eP8#-pmY~Y!<)K zkg^TGf4x~visf!!S{xMp6RV3fjdpk3LxCQy&Z?4zNk69$^;$AIP z?ZNodBw5KSB^kDA5Ei8x*nvYJBY?rUD{y{#r%A9?2MI{vS~maRg`p(=?KF!jdHux> zFflmNm& zJ->G^*MG?R_$!|qMFS0|-6)VotO|o@1;w!Ye0dPpyx@21)%rEvTt5RgqkiR@?<{Bw zITsIAchLp!@*Nt6MTn>3Sf11{S!9a(p3W1si(#J}@-SMS$BXzXS^sB3wSa)On4=Da z(BiE1{bM7v5GtL&+ZzG-lK2z&2F%hEFiT_N*?;otN;1`{`2QAAj*%B|3w=~fx_pmt zFc=Bso_@2A7un@clk@E zQh%OCkN3h(bQ*>ZyjYBgGZ;D(F?1H$c4Z{^W|qv=;-7cm>S%BbCY*|VNvziC2QgZ1 z3tgtdc8#>Yie~!%49rU@OomsTj$pf`!$*s+Vg<~#PX`7q{C+Diiv zG!P6&)DjS1qLW3sN#j}iPZ`;$N};0eOFMyL`(7-jC3m)AmkI7XY#Q-s)EJKJMd89I zj?(hiUUOH)?=FC2Q$iSZis>eIq2XraSL5k9sE~%iQqr%-rn*2O(~yJVu*$nC`w#Z*zkihfl0Die&?fSzs6L~T)w_Fq zIHw>s$fDtLGK^X@W|L*q<`yl|Xy9Wr!4}L=I-53PirC9+LE|{NB{2=f$$y(Y!?mFC zMqo1R*@YC^&X9c6rII04XA_+B1)dITNz=Ii1++vTHC)$X=M==I#ck-I3=V+dmXI7U z^oJ)!BPKCeq8Gt{LO}9l38G-2poDT*geD{^TFVch6xEzFpSk49+E)0{fbQf;XHZlF zPx`1>fx>4{bn{Kapsm=X41bO!b>oDDRv?g6RM$=>Z+HT&IYz}w77yOQN{gECBEge# zc!nZNYEmo=LMp0zCn(LJy$M7U*1(~2FbrJe%fT=JQC}XCW^dDP|NXQ6m(Ge_!FlJX zSe=6HeF{K6q2upP5#5OZ%#hG{B&w(x`my{Je$gHnvMPwr*c*%r9DfxJM#X0s7?P^n zQ_%)y%;=ztZjEZ0eO`$wXs9WAFIE_6iWXM}Mhz!CTv)v@c2sMEie`!~FyfX5?@k0K zdfk50xMO3>!T3?g{=l~ADtClWO9;;zeBd}BC&sYhd}~h30T_;n#;h1%HwN!IFrA3Z z>xVAKL4IUw+65 zVk6Qr5R;r-(=tiF*y9YqqfS0*nT#xXntarOEX?638sL$eqioVV*os^{&S5K(F~u04 zY#{ltm6v#OVg9l>$y+v+)UZu52H=r${5cV9oSkwxAWw9dB!32b)4+@viI`)%?>-$j*T(2s{#R8hN0&1XlTMWb60x7{h%%KO19N0l*1l7mEP zbECmvV@1+ph>j)`aX8EMx8(M(B#bJUbqLNit< zV=4jhp?wRLy8?|JAbABE zme|t=>&gPG5x9!OJyr8M+!{o7=cNGU!-9TukDorYq(GP0=endcfimr=3l2k$>%0R=%*>oXbb7PNCkqkqhQ^#AvA< z!SEV5ZPl$BzA%O*3OcOHf_8@}$M-3OEux`d*Z>?s&3o@E0KyB(>1if!C{ ze}C`bA?W=^*H_4|^fDUg){PaPwyba9O-`wzu-@jI^|l@S*|FD@;$XMjc8~8B@o^4| zE}D>E`}v%DpCAx1y#+Vt6L1>ucFNQrV5}sT5Ogk(tA(c|t9vpE& zIBbG%+RbAVzj6xquoN6C`&6{_sQkuU?0*U{?2i7NTM@VqkRoG%gl!}18f4lvRXYr_ zsM1G%$(=cTp#N(XzB)-PfoK>6vclRRrS)f`liu0~-BdeWP;hyN7u6M8rIU2~(+nTl zA-Wkj{q7&43P})^0>9_OJYBZ6Q>k}Qd7wI|j1K87Q-CtLZ=F+$K?$8x{CY8ft$!c_ zG#r?R!1xc{YrqTQzn9V(jK<)AJyTxhccV8@U|tr08B|^JUZDcg3>0Tn=M(d=QTYOw z@gxB&a@_^Eu6kHhe-!$Pu(l|N3*cH8ex8QDMw!aMpyPYPB`z>E=i&vZ6FokrvstuQ zZX)>^p;QEcH_>#vnkhFzP7;F}w10KW;Zt&;cz+)XX;&PxSII{I%x-Q?3LVpjCtH`S z?xCEnhZyFb700tnPmEWatGk9A;-! zx8RuFa>=qeo}LUt;CP!r25od~1PT^@tGk@~Ad7u5- zED&S=1K*l1=po`;)3--tFTha&UW(xw_Vt5a==oA~0#BiyYVZ@W?5N_lzg_eCJ`r8x z`aKa#cxgI>m)`@?IV$#n*oKWvzon?BBYjlt6R;IDm9ZMkV-JDyi1d6ogLw`!A>m3fUU#|Od zSB${f6BeBebT@jsPQ-Y!C8#NnEI9bHZo@cDF5~TN6Mcwh+qRqQBnIE3wDn~G4^C`0 zQt2+!Y8=AT`C8EMs8|b{#S8eDNH;I2fRPq`i~KW1^2%ohZ{UlL8N5O4I?`L0EZC>m zf&<+lQ{hQy?Epgbz<)xwHl|-RRAXcMs38Kg&cR86S+W1R-+l5a&7>k#jqSB7Kh0eC z&-_}b;5Qz(4&REHaqCc^HrB0E>HH->Hm{z&SXSd@T4G@(2fs2mv87ns>;BPzkfnJRNc;!AhoyrR=)I6 zIZ`M@$1y<;kfnUHyjGOh|rB(y_ zSL=2IZ{yY!(L*R34&BYQHK!RK+Uw!u9F>%?L5{Yg8nFUGBwXh&2ZMM>lQ3Pj(4Afj zsnX)S3B$YoQh&xdv~R^0I4Y{Yt0Wj(c-|Cb=w`28WrObNDOL)vYS2A5r98`$qwPh5 z&exc5YsCL-4j!UhofMye3fyk1xXEHE$-+j7IdB;#Wh1` z4^%@}`lu8uq!-_Ug6R4NOvva_pJzSDiR~BRE@)HI zfqc--Wa*57>Jm#IHFUErU1?x>e%#Gcf5YMpbT?S}rRVu!o6e>}J7yPlgtqdx zws?ZeK7U2yTF9^LVi>Ph$znQqd*`QZ8Wj$NC(+wG(Y?sehk=H_sFU*c?c#JfiD%lk zE;C=EnfO_zT;-I}-b2pKVid0nLQ7U*Oo%}zPT$kD zX#3_#|25?BnZnmEk;(_0>TRa-X|Uwx!sw;VhJO@iYL_DKXtjDH|9^6wOx_=@ueLJN zCs4t&@3v#)O=pT1WSii(vYO}>TYz&i*-Mrgrwd(|WGaqZOMbwuL*}vnw2jxX_&Ld* zMCp9K-N=OYzeQ;#b5>-lqAZ#wlUXbg^;O=2nB#r)|D@S3^3UdK540%W>FVQwOev&h zrhh@ztc0w0otb8q!stXCpb#2b0nvgo*YYxzknqNwdOkioJNjw-?&-@HXXmevPF|d! z<#x{7J7&R27ENNoZ1MXueKEu7Aa?nrtNW&t-9s=Ued?vypN1@jBfknNU~B zE+w(Hf0Q@jxBq!7zOvtkcUi3MUsniRe{>q6S#f2l>VFP* zL>r+wdl6*lG((QgMI{xQn;>jn!Smb6MwJ4abRZ)ITQY$()KIg120HUFVl0a;e7={s z$n*S779E+}EG;v-wHqR}(786E&!}o+7vELasS6ET^Sg7Gc_Z!9(|AS)j7= z5X9o*nct}Z=7R%v0CSzhf4=DDPvh4|uaE!hxp<=>C9%%+MnaM}hYu9dbW-yNjA*i` zn=P->$#4~~vt%t1rO$2_oA}f4==AjEujAu)uU?Ojp8s$E5-5yNeLKl{+Bgw#&urMh95 zVs?QLsC3Ux6Q<Npw-j<>d7Dn}So>L_;%(@g)5R1=8p840`SNPJPQ|O*FDBY4I3!g~k~o5k zE;!&YFu|m#he<7Q(h(zd(?l0$c8sDmT3W5+67Q~fE}k|g+0ksa{FqD!ie~y{gJaC0 zFI&%s6&x21e}CENf=QYlQeJ2FO_MGXX}@nXl|h)FrFbjH8+HHmkq)E5$3&vx2@=W= zi5IN&O?0)u16(|G`>Zr5^6BZbvdp#bt+1WkIRgWycc9!M^$J=n8S@5~#%46@FNm&VOXjC^(p#S0#Z%WH!s6F0~4FT6c^M z)QI564wzI0lJW;kstR-n;FWGY1hxB{be;?qfR3DkzTx0aM^1aWT+idpP)>3#e*RJY zxarXMAQhnH(M^Rq+jVl4d>TGiK>)_oprt{Y`juLA=bZ*Bx4Q%{$385+2lCAtH# z`H1O0+-mEf1XBlk>n|hS{giwZp7E#e7-jokAQgo z@6~)~*q#UmuZ70-90 z)%^3YBR2|O0ztOY2PcS3b@rx9SLN`H5weOOjm3nn045-1|I|G?GHvQLMKkw;p4$E(LR8HAFbN+2Dz1#~V2xjL38-J=P z`tjxK=W4a~V)HdNK0aJtnstlyD#m{PTrf6kL2$BH_k#3F3Kg$}r=E{N13@V?X)v-v z6Cn4AK|r5&ES&%4UL8m6!8u;7*&}7gu3RT9m9DXWEq?;h9*O?NQDfZM5CsYwK_}S83@|>G=FnnSRK?i0$|4=6eAdis?4HHexvK3!V{jg5NaV8%U z`MWTCNi-2lvTS{kljYb$23bTYOjjasZdf2C0_S{%RU&Y1SGy7^(nzyaGEwum^#&v% zWqxG3D3ZI4zmrZnS!~j$Ab(2DFRV!5?6P)pO^EK?~`_`qW6*n0&iW&mW>_qF9 zF1z6jxInTSPJat4yWy<2u96$2VlBs)c>&a9_2qgwZ+i~}5?EyUN`DUkGGyWx6yb0R z9ZH1PkCZ+)xrB=@v*FA-tjsQ#STSKkN@_Uo?(3G+aFSj-&E-}q43f(Gp!nNxc{yG! zC)daE%|OpT67zE?WW=3hDq};Du#S{!BD3!giYTqAxLHRcF7w!$~%Qn-boV-2(R^?0;6f&Ba#@7LEZ2HzEwJ zhv8;|C_P**nz1;d2xTmcAo=Kn^I|*Y3*ai*lPgAu_O2KdH9tNSD7NY~cV1o$0XFBlR^U7-)9rP~pMhAV$ywL$s=%MNz9aB-W zvCC@5i7E<6&XoD(;NbhPs$0&6W%M7?gZ2 zuT;T3thF;}j8g8w82$DvFltGLH>#3@ z42GoPV=BQkaOyK`iPwdw+(b z1a?9xIi_V;I~*qJwKA7nB_X~lZ@>J997-uaNq+>Il7k|?{bRX3Y(S+PQl<6|t3fW8 z{)hH|te++Ve19`}-<9at$m1X*%78ZRdCD%;LtS*NJ- zYJZdK_(QtfuBG2Tj%MQAqEZiM^ehyL9$`4_2}%J%Hj#YEa#H$apManx$8TPpo;%=&= zY_d3y#^Bp~@*BXvg}e=?>FK?CyOYaiUmE1{=d=xoAK5{wCE{o zX`V>ua)g>pHhv4Dq7D%jbb4}jUd0`flJkkAwVTxYO;UUHZV;Ut`92g%9Rh(ehkwV= zyZw4li4O=CvI;$L{n_b1f@OMiP&{HyfAZ=oid0h422nU)))y-DWp^4{DANDh4p zud3%_<@Q?DZ$4fxg?XmL#by~zmVc`o`m>KL%@|M_R5Y)qq_9_Q?FkDOh!MUn^73pc zV$qSih~%F+GKA{SWq|V#q!fK{qN&9K=b;0BA!SIbrNaQ9AqzYD6pXTuraWmi@ZQ;9Gn!z<;D&nLlfl zaH%?T!qj|GL2NiEEdeXwtYUth?I3Y&Cu+;4bi(-cZdH6X`pmZ=!>DL8RT*YBwGV(X zGWLuWDa;SvdV1v~2EkNeSaVj$kX7A8#hzgxsq|^BQGsAsNGc3#&1$Af6rxc)6TCmY ziIPu3FJ?K?cRmX5T}TC-VSmV32Hs4YoUO@Nxt|OfONWqYU|z|Gs&3{QO}8r{qhbl_ zT7$r%N7ZiOsY*qQsikLK$Jued;IJSn3^7-ez~@VK!}=1$R2&-lrCQ9^6~&X{p>bPi zGxAF&Cz*Nk9FXe1@qkj8=}DHB;-$H9;9+>Gih~8in1zw6x z#3m`ZD?wX9n+Ci#B-6Y_Cv7D(@|+V;z6Nv zb?8*|-;jiiv{Fcay*R%|8x?Q`4OC307Xz4DcDIKdZi5qo=JgZWG?feT?iJxB2U8%By6kykAV21 z&mp&}y)*?2^F_|MiPu-j=A={@`Tf|7Mz@6IlD|1LDYe?KLT`yb4J=|=Ff$CNSuy`Q znJ+&i-X!p0^MBgk9y$|xx4Mabj}S6`3=MVn84@VET?N&Sr^{&Mdg?|*=pnDLhPPyBxser=FO_oC5` zs-GH`=w^j(Om{44&)H5Ua=d+@_sSD}yRb>*!o8BwVwh@(T-Jb9%d(zl*WM!*3`+0W zbtI%2#^^kG*_t<5NsMM8l`zq*YKfD1)LT4Vcx3qDTLrB+A>-9>xs4xm^{5Y{7E5q& zH9&E7wSUZ(i>n*?jHO&8pqvjbcyNs`7lB0-f+hpSPTOQ`{3&R5P$IR>UcaEjG#ksZ zH;lIvA^;RxT?AOH`u5I?Woh6Swb-mWPPh=FibV6up?3)S*v>T$PUeJ}5N^eo@oWc^v8Q$5V`KOL=;__OIe zl7H2LC9(LM&X~H^fs~tQx{MY}aai$(1f7-xNMOp#?rs-=34MCXi?7p11dLCRU=X-W zO_)dGhRhP#%RGyUUutvTI#}~G;ut%`2bzI$s9;%0R$-`nCOk-G>LR07ZySS(aKTbw z@ZiBxV2&`A@O8E;awxCT4-yL|mj;}QGk<{S(7{t+3U=^RuT}m>=7|c4N}ihm=uxev z&G{LwO<|K2JTeN*;f3K*p7X@xAbzOYS;ZB`@xzmP9CT&7Z1?|X@7ufM zwvl|l3gfx=oVFvi)skb&-ajUaEhn1sLq}33lRM7(P~DW&ajV(eWLwrw{M|2JB!5A& zKvWe$JIPpQcOt7Lpa2xA3ibF^$r<%9DPI7FhFS(@2!}-k4BjgN_cF<)4a9O(^zdad zStqa?3wR)fs~-Rc=M_TLn`l|A&N?&>R7c&%!M|ytAvu54GY=q0fXeh1s(;PEdE6@?>23jlx$W+PU1 z2LONsX00Y6QyG|afWE81EJIpRWO$CK5BfhaKSMZmga0>P60ArN8KI-jO@F8aaln&1 zK;{E5OSo1!z~KDa@}?ichRtt&*60$@JaSyq0DyWP9;7J*IgPIiy;u;~G##Oq0L>Uq zQ>8MN!SCZ!TLok0!Jm{AFcA9S1NH6!X5zK(2@z%|V{$~b%#%h)W~3B0nFuoehV`Xt zLEqf53LG+ZQ{LR!YPpDdg@2`~03LL1ra*BZM#qJu_w11LH;=g?=%qt?hJ*hkhAitm#sj3OPb&!&Hib1W%|>`63B@_4?;q>Cpql&PqXjJnH*)m9`(Sj=Q$^(N83rfRGO zO|z|Neto^kWujRp&G5bvxz+LozSkWS_wgHD%;Y8*MG29^2{vcs{J#Mihu|rh)p_!5hS8H zH~Jg|$*4@!d(okI8Qhvnd%ckd4PR{fjfF$ZUBu9*pa@gFUVjtCUW(TveL9NVtWCGN zN|%iJC^D}$Um}d-1${n(46M&5UOIwjI=yP}j6`8p%_s~L#&kr9!%-w~xVJ;9X=S3d z!swOYOU0a9(Xr$i%{g1qp*&E1tXmRLOzw8E>sw?&2M2~R`Q!Ra7~oo$3DeLhGI<_b zSkb(t^7?d~$bah@cz_Hu`^e8W;`uewduw*p>}Ro$W)Z0HRhud}G~K~mk;$6?HmLB+ z1yO5oSldll=K~&|A=m>I8k{Hvy^0f>gD&|_l&dLI5g85OtF0*2+Y2(bJQ@_DiYy)J zMi?B)_KGVjdJNoopT7^LgeW*If8STYJ*i4;7_CW&wtt%E#z0;dk_ht*{|Fg1_MYnd zbUqVieGVNdQnZI_6!B>#CrlX8;G;`UI3gWLa>B7@FBgc+V$sqoIsS4OYmj&pKO9WOD<%bRe!vgvV1LmJ6TIFqx2*T@u3n=B!TBi zej}SA=QnAw76y^@N`0@(2bhIij*k*5@Lc3-``)RPFdeL7e10+|Oa!?czbV~(>6Gxa zEcco3kqFE)>?0BG#o${8GpQ1$fG+JKXIiE9p!(7%VLIrttjD;3 z;eQy3g#cm#r|KL{)U-&KG)IX@kA&&z0~DeR9{I2o>T-0qmI$e-tUl~aCxat9g*!ZSo8q0cp2e4L zLiL9}Dj&D0WC`Z(J=JwWjtx~GGJ-B}uYU+OAP;cF{u5e{a8C$=^*GN=ppv6z z;dT*Nxy&-v;2sfy`6F1a8{or*+dlMkSAa9Y9UZ*x3JF;{RVhx%SvsTkIHaf2)n`+Tlypw`7&jAQ ze4Wg+%Z5%mBPc@;U^*Iagp83o`hR5vQm~Fj8AE7TM<)!giX~Q4Ip$`F**@h|4k{QD zviLIfR5F80mQd9n>Ks~_!qK8d<&oLM;NIIHH4L%Vphl&$+0@|P)F3rXxo1&xwK=zG z!M&N`dIh*y28kM(+Gmr4dKp7ILn#n(?Mz#}m!v^99)n1R8C?>IEJbw8Jb!q~jH8bR zJOv^%3s;ONod7l>?%qzndPGwdlBer0m5Hu|+8!l>)%MbTN(4no9-E;4{5c)%;VByJ zo~cZdxT;l*H9C)F5s<0%5#Om&pSrm!$nfQMv`M3=H*Z=8;0WwhzE!acP`M?3O0C=i zNgTqH15QL$QEg97;m4UywttE^&2*QOs?SkG#_F6-EC+~~oqmyn>LPfCP^w6ej#EXG zJ+|seHKNzwliQngJ8L^FKO9L1GX_mGSxKkKmjnaR1Pa)2G6XJ`?_RShb#?La z$j2>P{=@VC3L-8Etbdj!kqc8+xpYeMi~OcO+)oqTARPy@CLtW2hs*nkl&o8nFgP7X z0qCT}=XC-m8Q98%YyCSHfel0elQCo{fM9I0_O#v3xm9razn6!sswHU)7&%g~5+YFq zB84U{0aA>EI}9~+;o78Toy1{C;YmIj&o1Sh>H@oSH~PwItAESl7oPN!Uofv!6lS^D zutGg&ycrh2mvwwj zK0uZBK`ZI!G0<%T6v$rD`Jj3N+NDYENNM@|3}XaFgdkF1p#L=&AYK@>6&%bsOX%mB zFiWr+PT9sQk^VJ@ex8|IYdcZ$Picd-Pp0{iue}sZEKM=cW3Y6oPZw@5q(#6*(4{or z^n(EVMyuD5II<_v^V4`nZ7$%Uw>|7^q#)$;PvXe?cjB44BC+s;vAQh z0Sa|KDDps5okRaN2%sgf-6F(pe^53s_%B()raBu$u|zbQE@D}!C20Ehw_=WW(O>4- zKjg={1Vc;EyH3&L+%wPsXwm4*LvfA^=jSvAu4SKS1ZtkQ7Z0e==ze0?ouk%(gPOjz!^{ktM*u}E*^iexck zz82Kv*^@VKmfa-n3aZ*9VMJY%q{&#dzNq%3*tT@JxQ&b_I*J#ot9U6S@LDqamALKG zT*w>U&HhTrpeS1<)44dG>cg!l`7m8K8V+gy#@Qkf3DR7439gv};C0Drhx z{`TG0+OOkV)y_e%ocLF|juNrJn|Xeva_EXRx>w`oc~G)@R#WZexRWE?v!dj8W7gfV z#-J1br@2!I?ep76zeaZ-eXIXd9KGO;$lM}Xb*OjL`hgtgI-VubW+kto`D78FClZL5 zu_TnZZ!9TGRFQ&Sh_K)0>5RLjaDPsZXa44%$SxwxOAcr9c;=V?-L`nSb_|geiHRU0 z+O@CtB3)iGw+O3v+9WC@#w4Cz)hX21QF2_h23R67DaL9fG{sVy%bq}jn zSu0rc>UJe=l=w)3-pmhwJG&$wTAadn}H{ zYN@W>efIjLumXYYb(2gdlz*dpM%$Rv z{v8y0MAb@)`{$0aITwW0ZiodDmLUbnSRO(38;$K?oDKT<<$mS-J4)qA`k)?xe!1B(oK@Jy2~D-A*azoP+p%;2bGPxiXwTaDUDdBwl1)vV1LW zrqcDZEUJFgyZ58h%cC85d%&rqp9zdb(fjS$4ceju<3iH^l1@Uh6AMl|0+&bk62YlK zZr-+?U3yU+Q4Z&c!MQ>XO;q>qj`XAqH!sCVt~qT-HAkPGe+zQqbWr8;!@!9~4yu$a zDTJt^qjSRj?Fn$;SbzJL?#YC+g!;-XI0q<@%!2cNV3}25@T*Q>s{T--+sk_}mkw;} zp1VcZzUz*oO*6(Fhckb?s=Ny5x7^&SIHc?1J4vBD|BKWyG1u7Cf{vOd1>?%WIX^*e z0G#F1_XfbZJpjSpptpMp^sAQ~>UPgb@sJu`U|LgfN=uj{$A3r=`lwiWz&~<0GsJ!5 zyu?=b^b|?JOlRGb&xFZddv2%&gm!t4hCyrqzHLbxT%PPXdP2lC#1hE5=ZqJ`I1DPG%)N4r8{Z~ zh&m}p{k$Xd$$v@1aCQXTHKeanfqR4mRVr|w5Vum9Yp~p_r{ew3G9utcAQ(odrls2x zaFdTPM?Z)?0e8@7jEW!@mo_K(Y+LdIH(9O($4a-&41}2o zj!nQ!bfGiplgi`E@mYLHKPm!N6?t`my265E6F?FD&3_8p!&AJUjf6hy68BH!BjFv^ z6Z#6|dWpDh$WyUmnI|Jn)Ggf~QELVLYs!@)Bimb5I-svJVSDdLz=+t)AlWM&h2IyjvQ zGo8Yfr_VAZhBfV#}nNi}u)29pDj~bqXAVjRUktL=_WZ43z z{9xL&qZQ$ny}tDGLFGQjND< zQkerf4Cns%mX~ehUh1`(Rhjja>(E3?dKqZMa3+xZpyiiBOS5*PaFEzPD$q!z)Q$dH z`{;?P`LcG_Q^N%_3n(<*bkqBG!d{CsobKiVHu;S%YF1b=Gh0 zSOWh^^sh+eL)Ba0=)~P$WR|c@6c+!qImB8Moj=^)_a9FE33%g!=`>Ml9K|xu8AQ*oydFe_CrMMbIp2YFaVrTgkpfE^-q`LaLQ4r{UyGR5xuxjiATXYZ^Jo8U4QRH zzmpA^h5j0?(g|f!iA-cTPxGrPtRV}3RBe{@n`f#JaVGwJp5H1T+$_#x?V|Jbu!YD4 z1(t_gRZ}@jE@Y@Jie=`b`0ZpZy@B&|DGS9^WL*+?p5!-4vQ%{x_JSCcg5s&0QlEdO zJqw%(HB5VUIPHnho}Gg$2+;w`EPtN^r4OtiLo*(Fm8e~s(j0^Ly77{ zO&qbv^0E&V1qcXH#u8PwfmK1L+u2{o4P12(pfW@mTYkx}8irh>yRd^$Tz~Ijh*Flw z>!j3l9(GWQ>q`t#N)nnVN-Iorm{wfhVwl<<4W>a_b<<)8p{S0=lXguzoUYbyPc?+M zV?))4i~tIp{MJP%LynT*L_hb0#5@yvhw^Bfk_N(l- z+az9Rci-G$M3pK1(to`xJUx4TA~65t{J-sWx$==+NZnhVK z$i}sjq=rdB_EWFGn~q0+{p$bR)dYY2^WDFi?_QSQ{ZxMU?CxJ}>W|mSg|Ivo;;q<) z_i<>eMuFxo6;jAj-6$D5`=3p$LwXWfR8YJXDU!D$O|t}WRb+PpDLTm} zri#MXtt`qN`F`Sp*iMkIa6KQq)NQoED^sq z(`v+Q{kg4LWE6g$N0x%|UQ&o!o|6W;q_1ATeRgyNkA?>uO=sPk-IAfEDvb$g&m~VtA)VbwSL#ld|xoS?ZR#I}AmO|3E zR}h;MMR%jxvzVGu2|+K!R9j?pah}R_;`ml5gMY`Wh-az|%bPnmJO7Q}qXdu$=jdaVPNQ-FP%LseNCZ8%Czx6R zD!z;#HWCD_kCv-VUi`r5LCcY3fcDlSMIWQ6fMM60SWlC>67!Ek22t$NBS3K0e<14z z&VR@6zAJ{Wj6s@-mqB8#j5bcyljaWm64Krl>$AeKVn2+0SBjALAMQ$>igm`93E@_W z{{wD5!_`wo}Rh_(Emx?IC>6Z#F76^2yh)ssc$t!RfK#yE= zcouqnyhPi6pR7%w$4CYPUAr!#Kyi`A?SBjg2{R`azaP(JXv8>JJW(M)$5KlQd>9bW z6!a9b5=5X_>{*YU^1<6+p-_Dkn+tBfPKuNH6!bC*9(=k33$2RP9Y!Nu$M2F;b&y75 z6#FzPD*@Gyy|x&{XspyK?tY!K)(Rd4E`0 zXUQT+#mXl!Y&PfaeKT^Z*afEqX9IP;RDq zC<}?WY6Uq#Ek~!4VNPms^sir{vhRB#B(l|Fp3D9(MU3$1!l2D(|JwPb_-)9gwk3XJ zQvOEEnY2Z=li?x@ym!6hOROvV*MIIW4g3?ig1uj=9pMH?c~u%lMJzYh1qE_H$Jypw zE7{RR@9=n$EHCq`(cNe}nsD--St8s}w^`0}2YEqgV+nSPHvKJQVwR-OZsy{F6OH7| z90|^=>6peszr4Bg^BeIq@{H`-jB0nQNRRS=aTEl<@ZwyE%Xf?kS)$zR^nXj%PP6ME zpq#1N4+ju zF5``b$xbHXaUa{On7uT=c7K0qz3HRB>I4k)yTXotqJEKn?2k#(j6Qsyf-b!wWBp(f zi*IGWK8gOXY;WAoE0rJU&+Oby_3L+hFO;^S|F~C8u6$5!Nqc|Gy0=@!(J`#&$7H!k zzon0deR4kz4O0ww(jJ2X&FPz0XBEt`tr~KdPfNO=8{W0RSjW(&v463S2lsM=^iFmd zXvv?%$?YJQ47N;9IhgE#LbsFiX@2gX1b3H7w|MpA1JpSNS%m>H=|m$#$9 ziIHnc4~kB97+Ib050wcw-`-+`TbOmieF~=7}C-0n3R_5gxhz% z!+XLl_v*Fr%;GDg+uJcIPxy6jJlp*}=~E5G-gjo%FVYF_n17VvK=AH6*BL&cRxbtF zcBX8@xWwTZ;j*Njd*0VIK7osqyj0QMZWFlth+v96tIV9tm^IsNlg$38uk8buBT;Oh zXC9IR)7#sY)Za1^+9q&063JA1#XU~sfeViq_xV`}TMaHoLQ}&GD^B1t zCCcWrQWGX{?SE0f&F^8b!DU8+?><~UMA>~-w!#Fi7wWhBe5(zvEgF9Fc>>Scd{zR( z1g;V4xA|<-4Xy+le((9xj-AsmfeU*2ZG3P0jZyT4ocbCWVW5Iz!`6g=ol=0FXd$zgnyH zDz+D;xGS`qZos@`7uA5YtyVJw4YSR)m353<_}L@~A?Yqp`xZLkR#J zG2ygC37$hsZId$edxz3grA1HZHxFDEgd`@6?t{yHkR*h9`@ls(9(SxxKW4BbT)pF8 z^8NeKk4k?>T&~m2N?{cxAM$l9bceYzjO}Npn6q%f3Sq)w6K0N2IAE{|wL}OlNy^8; zSZLHN88v8Dr#;&Bx0-`!X68e7OB-Wlc2K*=qqdK%Zo2a!vi9#n9)1;yc%p!ki!Sqy zzh*6}kHB{s_#In6+2N46OD3tQtO0T4H6IK)GS}}E~h-mZd+^aqgp%%lAKyM#9^pl81UfeJOH@j@UG&l5L&$R zV~D59n>F1C{jkhoZMIBr{ED_6Oxxwu0~wYol)zV(Jy`GUYJNj@aQ#kUd`p5xcgOSW z;6i_BxskOZ7VX2!H%h$@V{|H(yJpAtsjOYndn$Rc0axx%5d>5cr==BS3a}y5cd2cu zIHyUFUyRYIFzeQ7&XPrvCrIJq*gvjgGsxR=ms$zKI6g|@3uAO%dn0vx@oZLAL^omc zS*n6l-vV2)^`DMci%mAFXk%Cb)G`>(Ne_RSzq3oNVKFCNX=0(zUL_w|Z%m$1z^QJL zp1Y1$uC0)N`>h?dfq$*ZIo8LVLhfBkJ0JToX3UGqwt0E*&!TR3ndVWlOgEQTr8OVF z7ypq7ZCiGmjGMVwl>F`UM0L?fd|e))1%xj6c1**t3e6rtJfLrQJGvR*=2P1SF>Zf8 zr4tZibT&3d?ef0>wjH6g_W*);Y2qEn?^E3n5%lbEADct7(6S~O6VUS)&EXo2t-8_| zTAX*Byj*W{oVZ3ij+yD{-kdX}=XaYeF5W1Y)w6|D%CyU@YNVff$mP z6Ar;#cNC=V^{(sOWmegMh}WN>4t1AVo}UHL4In=cUFgAcB@!5%HGGQdGW z_%}8*3r#FBCLqQ~zJ2{(?A(8R=BW#UdfGFqX6DO0nx@yQc%7W3BQQ-~cHri86W-+% z#Mn71&e+PhqF7Pq{!O228zehyY700;u+$cCbYidq$#swyom#rm$f7Y>NUwDz29DDp zGAQLO1*gftnVPX4nxY1$ZS59p*q2MNj$x(C#B652)K@V3p-_#WLr^|i1B9DUlzZVF1M{;WGsXq+Z`by z{PsD6Y43E3xn(Ny>$iX3;E1%5_+D!7-eu6sl)&<<#ux37dB_^Tx#+8B964Bbm9h+&LQR0RA-;U0grx}+XK&XG}L$J`8Q zEKSCCc>*WpY>!foVzY4BJ46>M(V29Q)5C_IE4Ih!Qqz$vWO?J-+OPVoklWQy(5WhI zp}0q_Vxd2^_eg~*i1B|ZhI=ahY&}2U$ZGqS@k)+fj;f1ItuAR#WV(#)SbFm4!AD8! zD$cLO4B2{m|2lu3FYo^vzmMX^R)z(^Lx&u`k)3C;w_x%Hj8C6;I#Am-SMrv7m3P=o@SL zd~EPdTOtnlejwb%`SmJY=aJmWaX!CJ#$}=(T?i2FragbHV5Y^mIJj|ny7c)8_li6= z;X;|UwfJS4USFrnOs}^{PWo;$U(7r&P>_Fye18%w0S~GPI6TD^xEGxznd(Ov=TRK} z`&)UfrSo50x{t~@e3TVGeHC9PA0tzC9mUJr0uSU}a(k1mXIXSPf1fOUtp}l=Toj5s ziz?yqDdK-fTPssBLl!|&F%tZ@NThDcqVk8zT%JBvx#8-2510T<=8!UrSqld3fHd9c zwgsgEj6OI~=X0(VrMgQQM)2LzOj6!0?GwtAS+q<(LEMay)0`?;wQR36GlG^w&0pfcnO4W1!TB`!QTQHJ)A z3jKfZ1n7}ahllJ_20|T=kJ4WxUOC4w)yk9a<_4pbMkO| zXMcOQ{d@%3wlS#jG-eY0c4|3OwLz7Q*TTS>uaj5l@>Lh8$>fn()%K*lFuFt6kkak@ zJXo!Ml>ePdsIr6gT#8A4FFGk;jU|k;c6Jv2n5BQX zEd`db*jeS~@Hr>idk1RD?G_#1Z{l?<{+(n`qWSgpCYLx9|0P{Mx+EaZqFFLs#JWvS z^zU!Q9PgsP%(H*UkLATS*uHn2a>lu1pl)rE==7O5$Az7_je%=kR=Ezh=5bF1N~XRH z3Oiw&`%>vpb0aV2LXZ{;_2uE|sf2$_efs*<>DkG_(W|pl^9*v5v%kIbczYLsoW#hf zn%Ciu+|JU?mM#~!k^D`eETVX^66U-R2Wz?aSFwbf70jK7ub~hZb9N4o8je^u;(f@u-wxUDP4a^kn4^3 z#B5|7-CWJ{L~XXudE1sMu=5sThI{(8e=}DlX7c|=u|7qE?0#2JBb0{1vDdO@zFckG zy-VEtg%Wj&Cbukc4vrF1-Iwtn2QQAE9h@D#e)aa`@cYAmR)tspdLzD8|2|lVEAjD{ z+P|V-?s?c9ysfYox35To-Lik~U8pVpLRcnJBDfdhoOTeq3-+jjcb9Gj!0u1@f(UC{ zT!qb4*#LHgv-1vov%R;2^k;(8(wBs>n9Pz)7YAj+9GGh@|G`)hUeeGl1lX(T=4Z>! zQOoIgrn(n|l_dIoYTNZAH7DJ=hkcfgDQmX+$TslQ>|2mc(Ls|-K*4`5O$SYd=qQmJ zJH^PpJnaea(83y2bQ2c#ZuWi|Vuc7tLcz{Q_&T2`H%X?PXVNPg>->tMH_N=z-QAab z-(gO`F3CWb9QH(dRds90Ixb%na8z}kNobRVdDPPEx!g%Q|x8SH)x!%G;6Kpzz=3VNJ6(WKx-NZr#@ ztP5snbZ>j-(e|WW4-Uf~b$AF+AsOdv6a&KT{B{oC=gr|BmEuI1VQv`z}?kR;t zXPnbHIoi}{NT%)pr*k^AHNoQyj1ZxZO0f-;Ev(MRwu(pUfP8<2u1*4I?~r;PBw0w4Jb?zn7Hg2#u6j zdVbB>X8z(l=rW~uv=tr|Ya3YZdgmdGJd5`D_F)1kFAslJ30|_ivEh4cIo7w~wndyn z47!zWQxA5=ikE)AMd$SBP;7YLB05qV#J5O_(b7FgsCX=WREoF>>03m{ zRXx5%r>bT-9Z@0Ka85^btd_|#eO_tqQ7QIHw@F*N{@lM}yD8mg&GlcR!@Q8TZTc_W zE|StbWKf8eVRV&-it5r`5?J%euhJfG@9b{xw)cMo72UN|8YM{ToRcE2ycHtxY&Lpx zr(laWcebh*1g3h#O=W)r$T>7dRw0-W=d#>WF3SfKuFF!};s3e5NmAWN|C)`b>0*(n zeN{%k$v`_0CcUS)#JT#u<~EqqhS7&DcWJe@?gzG%;5e72Z^j?u?CLb>a0lK4X6sy+YZv<}Dv*2%Y>&&ut8aK7UyjdWZ=VJrBmVQ% zfN-+^NFY35nNt7KB$Sh|QJYlu!d)kkAxRaA$f^eUdfAG^+>4okF;>5(5)%b6v#qMK zsVfh8B6KF;TSh(aIaNxaT(Q9QASZJyd$oVX)7*HQ&53wiRFn2?L^%!VOTrquvKiq_ z{Bxe)>T`2GK6UCSboJ4N88wf$%A4p;BX)5D-lP)b385Xb;vAYpZeT&vfECp-KX+AOtOQFRLr;rEj3cME`idV1^ zWV+Vw99B|p?c=od(W#Z31bI-nxHORU7}siNRLasVTgYwM(r2rAv9??szg6)Ur)@IH z7ukB-jPxoD{f6?AVo4sO11iZ8se*rkOLVD=OLmjIk!nu0=CaiJ{QNKzF{2)sYJva2U9Je>qF?r(W^GZJt{HByRfLlftYW3N5aVTW@}7z zB}ixV0bWP1>~80%^zN(0@km`O&qn;0)nbI%N4hv7mU?G2k)}7TfD1f0{bzvpH>$+L z_ZW1B0MNRXUayjMEaMc1 zAEwDle$#m&U}Dklj(ajI<5~?oRkNy!?mUn4R->}t(NN>_AKz^s3G?Mzp6&laTM)jfPKudQ=b1{j8YPG1!cvdzNTlhQpoCBd`! zs=?@6q*$rXCXcNAL5I80B|hM0&m_t2S~c9mx$i;3J(`1-zry{Q2P}Vun=iX_X*XG- zWJPqHh(DUCmb%kTmZ#Syex=A!SUJlqPvV&r?qwB_YF?6V)=__Yv!s&>ikdF(y>+1q z{8&ky-}$|z-STu7INa?y$Xgt4&)oMd4!33Q+Eh;;A29k3_e}0Qy0-l?&o%y%?zyt1 z^Ox-p%H|o#x-&-uBoS_s+)ZLF|ZkUQ*kRPtsF14v}b7fH1 zbD>|%x88L^6!m{g|0GtdKdg6(e5A5LrNvU~7s#t?wCHOM4O&l1x6AM#;gJIlTCZKt9|{l}4=*mhlo&x~tGVEy(dF!Pn*)`RI$SC$ z3l6$R2*rO52aUV$PFQHXxM5_y^4hC3V4-VLfQ<`H$q*e17aA*w7~trGJhjkipM1A7 z6*)Wvf-?sroM}}3d2=~?z&8`6LTLDAiX;dOu|mQQwA)PGVp(!`?yp3;e{7OYafFSA=`BqBYj3} z2xo>Jp>#(L|3rJ#)z29qC+KuiM%wKlb_5zNoUc?+h~bt}=^ef%fr-}`p$~L38bO=^ z-8_grfyxyP76{WgDBtXJBV97E_2&z81xov6gQ2j)UQSZ}fMG8db&K?JJ{_;(btc~S zPZxjl)7xbpe;6OUc=7tD!)I@gPYw@We)r<=^zGTt$A@%62?)~UBO-*;{COQnG!;&? zPG0f;Q94TR`o6(BNwGIp=iE37j*CCf1Q?$p1ntnBItU-U1~A`{B98>&((+>=BW}@~ zJ8JDy`No~AC&jriSKqw3GgWyu^1CQqtDk>dRf$IOpB=F!_nHX8lRh{>_GvdNeTtwx zdvm$-tfsv%ag;0qO8MdBD34!>z;!m2fOb}M@E=d z!@)c6`U&A%_tZnmK{#;Nb*<_58V=KSUL8B8yDWmbQkJ@7y6)+TlFJ?1bx%Q;Tqb|Q ztE5yB;FbSitdA_2=+_^P$$8n|GHBG|yp^2L)I`anU*)w}ubP^E@!+Ul_sn3#S8anL zf*9|0lSULr@~am1mDDh%C5WPK|DtmSf;^%RP838OVF$ct_d6Vv*h?vymd0akYqIj()Y^uwtOA z1xFXdUM)Dh*lkBhah%zgO1gz)>Y;dT$$M3tpYFXRubMu_aWuL~OmS)TOXB%1{V~qI zB5u-&W|ox#X6B|(Nw>PbwStmz&*U?zTzj=Q29B*NlMxRrx>SN=m|>+79LRs9N~QK4 zFA~?x2ORkXM?<{;6|y$2m_Cc1M6knN zLgq-hXC#Ug23HV726=D_)J}gtu7G2yUasKfPr0dJhz({Mm6HUjofJa+!-zYfg)$7i z6N*)-PrQhiV&$BlAzK`oR`T)3G9O^*9W?JSH6IMk6PkHojGj;dU4~Jj;#%tL)OSS+ zmO4CN29}c!zS+`F#8L?#zC0`^C4-wYFv?D-1N~&?3=E#*Rb1E{E%$%CJ#86Gs+N25 z!Oa>NVJ8rGz!*93;B?Yqm>e$Yxa2Uoq8cCqyIq!)8dbZxKV80<)4kw1i8kB^C?K7~ zx4It{`#3H)n~pdFO3-jCr004K-1wf>dV;)Onm>w#*hBMp-HXnWEYGxOwyNw^_u*ra zL<5n4iGWl{MxmTtrr&co4=fzx!>M2xl;Ya<)8gC!88mrTST(vcf@Om3CnX0fG%d?am}Dvdf}QCiEn8cy)m{7nGSzAovIgj8M-$Y0=&%J zHiD#P&w zGVaO;itE&XaE_H%I7=6o%GofUiF%sv9fX?;*b*MHy~Vm;>3taE;r@VTWOS^1#m!M- z02UkjViKZxTLOP4YEiZ%z>dHvS=b$6EShE(aXp^E#B_U!XD-0$T7hj6IA1H^LzynY z_~H`I!lH;vRwxM|geRnWMUwz3ctXn7@`!*E;F;jbBRccKSy$nh7tXlyE`%Rh0!RR* z&2@UYSE;n%55fsh7(GZ&v;k)48AwGt z!{jDv_=-nL0m{~w!cvw@^ybc%_A`wuLg_*UPN@pbS2W3mm;e_O5*$!oSsAUcVYK%f z;i3n-+<1S{kIVW0Y)t=^7xOIt^M#DQU}-xeI#p*Xg)Pu(i2R9RwOy+xgy>swx~J*2 zOheC8Z@dZ#yA7XwHQ`a7bWbOjIYHwF_@#SCHmilQzqFVxn*!3WCj~Ts zN~I?5RhmCfH_KTcA_wU{jDpl=Aw8oIr0zur(L!*RjB6C_=2TobSze^;sd!y(lqO!v zo~}i^Hwhu06cJHbvocE)Rji^5S@eU{4Xpam1>ubXq>>bCN@azN_#hL8tc3m0ghuBQ z5?y}^S7~l;GWox?2=`xr)^2w{j-!Jt$~Mz0)m%vak*Z}{&0^IDDZOy6#?^od2jhLO z+;vqq)j^`FP$@g_WvQ&0%2RPp*=B93tW;o1Z_Rn4)-aoijS+vR79ychoPGlLI&iHD zitU%UFv~Ld|`CdvRwM-0xoWZI*Nj0s2{?&_X$=@1X2_cH@nBPaHw6t5mqVUV<8$!+ysOQPl&8Yes=i<-S z;+Nzng~zLA^o`TY`XYX`8u?laBGZZoUN>L$9kcrh*U28) z+uex>KG_v=1Q`v)^VehtkG~KK#GZf9^12CGAoYt9yz)2Wx$fL8-@`&tia#uLQmivn zbR~9dP%`Ke8V$G3g0?5OglvS+iY*wO3GJ*3(EXtXfU{|>vg>#!W?H(Z1P$75IV|m) zGR|^Y0X(`pj+eJDWjba-%#$a!F6+kF2elX)+ns^2-|Io&3&x#$SvRK9?x7n1(N(@?P@9amH9lG>etDt|gV-#vsZ1r$=fp|U}dGF$=}D=@Tz*KR63 zlj#Mx7d3p_(#IFe*O$(IQlu-WA~RsGMTD`q9IVvK;>wcTILXe;*=EKxlJ(m2Diu&aBg;{U6@d;m0 zYJ(n|7DLhY#M40%o|)R5r!qku0lO{>)I|l1?m)Icox}Gs*qozMdiJP{OwAwTnoqla zMQhNCf{z&( z?Sc51aV)QAvr)&WLpB?Q@f%!5myGXeo2%`Py;!H$J)A)>)C0~L6u_q1AF`qGKDkiO zHb-<=Rr!GQ32>~B{T|(o%X#UZpnZzbqvU$+)|;i51bF22E(ArnPmwvjwX%~1C>9dk zjj}(SKYM==fA)W4azQX?p=TpU?AQ1Y*7}_&BSV~9^B66Z+PB7@nr^2*CK*HxO?gnC zevA%3!tJ>qV=bOejS0peANR~JbBv0WI$avmr70ex9Vq2Ip1za5Q6PqSZY*7eb{gQ7g`VbmvB~WG$THk4r6Sri;<@u_kctKGocY6T*9^ z+&hNF3K@QLKCt3DWyk3gml88~8rRuep z%--Db^kafl4V+2sqodn%r8ukkDBow4GZMce7qCqG6rG=oEiy`K9{usWhoV;qUxc@%^+sgKYl4Qhsko z6Y=5KU$Z>7sPt>w&@4&&wang%zLpgH3X>;3;F3mlDi>CHLBOR<8M#}}5VAk}^)Aob z4JUqk2tym`9rIG&b6#V;V;+h-nmY&Ok;fUI;r!`*W_L{0-_zqB8)NDqJV?J3!#saY zJ5a8qQ`JVclAg$I^(x>ZT2+uF_g#UW-x0`_g`o0@@vd}QBv7V^7}OKx0LMjw2b|6? z#UW%B8bpbNpfMlBBYLw?iC0y~*u++&QSnW@PHe=I@;5V6>U%35Bk!w(bMhs@;SrSC z?|1383l3DKGuQ&20!BvFa1LB|s04pHIN69bUMJNDo$3uvgrmJ8-0@p)0yPf`s}S0% zPH6Pz&g+UL)6HTA@}$xFZ|->0shLPx-QwLjG{*Qs42zWRTA1$ykmZiNxG$po4=Kv$ z67NdIsPj~!Zp^eSUL{jSLIGz_rmQbejB8wsIIf9J2fKDi%}!HIi%rU<`-Xpf=koaS z{#ktaySPz;mM`$1-S@3O{O7@HrEou07~;TynS5f*PuI3%E*z)!fKm&qaw&ywR|%AH zB<@C$?=QAeI&t3lDx`trbe!n?eiN@_@$V#i63wr#H@TFR{}nA|b)=A;@8g9;X~?2k zBE*d}ap$rYRZR3Q`pZ1~hx~t7kSm+YnXX=U=`nvC9v!_h0cG9PyTpl|r=v5VOdUqb z0)c}no7G&%S~t0uho`3p-ygnx`uf%B*~!7ttFu!aj8r>yn*!`ebalJBN|qX!Qs_9L@TPyMxGm#1cYIMm zfPNxyK*z5Bv4H`Q6sAxwSUykZ5?Rn9|OX^d0W~TMn zXwa+_4|dJs8Z{JlLBkfLAiDFdVK`8V-&=R%H0)I*pZUa#b5BB)y;6WG`${f!P7({A zkW}_s50u6Raxl}kV=e_6_Ub!92=Q`<0YXU33^1C!h>U_ZtZILS$ieC2q!`J$#-<#YvDe&mQxPN~5e72sm5zMCagy1jOg*TG({T+Eg%edGaAw`DO3t$&GZ9(`OHnW9S?ld&?R5 zwNB4Ft)yHrwF10)^e_FN=70L#LNuh0iV+FHvZo&EP~RhR ztWU;&?w`i8ErpmoR$-vuL)=f&^~nQ&vgW((ydVVrs)(QJThYs!;ECfyC^_Mn=7jQnrSq@nnWE`{luv9G=S+pfhB&~9B#)E4RGd^%pm>nvH1 zkJW#EWU+rfs315E-413mS)cY@n!aPSYy))$hm4aXp1oc!Zu^l#5J;#tcZM1UC865_ z$_)`8bYcj6y7qqu;(~^1@YjQkr;9l&a{&(J^&sR>C|<@ThJ$}S==j0<^jVS%qBy)u z$d#Z`<*5^esRi%>Z1l$%amCi&4gXu z8IOgj#N}3YW-!77V~o98)=m9+(D{;d93>Z;#RP-2SpU~A(PffrV)Rck7B~wWjPw=E zTRng6OL7=R!*Jov;tbN&V?Y%~hGpBS`yh@h;liiM~&67qPfp zr^574@<_}R{blFj_JbX@7QqKXQi%tM_=A6o^;{;>`pF00J#ZuzdmP1=pa#&hqvAO> zPA>$Rnu^J`Sle!NEylc(B%5=Q=9BoHL=dlj=n=s{1d9bm(al%iCF|vUnnXWuT8#Dh z@$RGDN8jwX80%dB&F!W)XTfpf0G#zAU5ibL_M+2dEjTPqm(lm}dX_9R$zqSTC;NYX zdUt>>cVw7l2P>6~t-6xOmzzW|%2tGCbeKQLJt=xJxv=F9` z9tcjKOvDzqgy}MwUtXQ3n>ACOvQ&R-4>l85aW9%gw@JJXDozJb)6e4f^I7y_-e#`J z&fa8qf49Y4i}_6c4UM&+2AqQ^=?8lc+ak2o*AFF&34OiS*4Od%d~wTSFF1Q)Q1%iR zXz#Hw;cr8-7n~;1kG+o87x6MWI$y_E^XoQ`?LK%c2%5BbY%c$-H;2I)8ohrx>``aB7uYkPUT6-s|&c}wcI=wWzMklygq&s-*|ma@#yu-E=KS~KoV+U#XnV;uG( zKY=;ym0Yj#+mVBn=$u4q8{vQHA_TYv&Vq_ za80~SqSNbn-gb#S-hcG)n+JPsWBXU}H<|pC{+ts;)I<8}Vf43+a$Xz?f}(@>$#RoK z`^q)8zdiYeM{TGlTgf}Cc%5&{n)YFtr}q=h!8|YL;!&S0gz4Efa}4ve&FE|WM|l8S z8cy}<&pwa#A4lJ9-pzmW=xlx+UqvTrJd>QWyS?{-MJSvf)`xR0HjBmZoCBwl1>l@R z`LK;%ByDXarH<5CExt+QpDdF8>IzO`>(4cUXz|KlUcR%O@snNcDc#-Uks91nx=QkG z?H$#Qh2dDI_uIg=!)UD1Y(33_FI}J#^l5Glf`pCg~QLJR$5KT;H z_U!|((=|)bE7)D_6f{Jce>?#aGC2MVxHB{6ZWenqj%PFDwzMhisHf7`4QP1G64Z>F zz>=EkC@f82Ho*SL6PII&buw(JX`hU(x>^J?&IsQ(y6b;voHrKV4LT~lXvK2rcM{$F znXwRzIHYI2V+EQgIS(EjU58p>Bg6{(AWO<7qN?=CbmNu{Pc>LVrlAu$Q}JM$@J&}c z)A8WJiKXvGWeF3+;KRq41|hz(O?1)Mcswpv&OuK>cXhUIfv$Qn^%|pMa&oZ-s_S#p zG#g*XD_MWf`{apGl=L~_p3uHIr@AC%RF$U4rV@!X^yoDz=!Vaou&f}Lp*lL#M7JBOL4bcX@PJu}SvT|<98I6$DHx;oLx?Vo z5?lqV%p|t)|7AYLw)`=nq%{))IKE8oTd$;3{iDxZ(`pF&^hmakdm`DY8q9e*K6+hV zbYIgfAdi4J-%?B{4{CfYPTkWK15l%^VpebMtaEjJkWHL}2B^3y5PmB#^06%8c#+04 z@hgA+4)AOtijcwfnhnkKtYBrc)@lhD;9_~ z_^lEgfavW2!*!B{$BZq>GS!mJl*Nw{KdqE-l7;74v`i%?&t^GekcLKNa-N2S+fIFLy=e4%i-wV{zuEzoGf#i` zwfLkSW$Dv^tm*Gf~2LEVr> z7aHpJeL9~-ncxZgdO?A5>tMcxAbE{$v0ch*#Lm)XHy$XLA-mCF zxE#*eieSl&VkDQLkAl$k^=U^#@acY~4=63}3V-F_vUGVci&uFvGs!}KDt~|Fb$Yp3 z&jqPyhqNpp$GI)xv5ntpnqH4D#2m@`!?lDpoW7GlJ4$(|?sH?g@lS;fA(rb~YnvXB zyZY1fk9g6A?Cqik)Tn`WJ^(5e;Eg<5ERxH3q1M~O9T^&&%G|&}e$hZD0IEcI><<0q z93J*}!s81S_BYMBWzKcp=V!fZ6V=yg8=w15K4MT=99xyL8Ss2U7XTS|8a zJmJ|1QcQ)+*Yo#c(0ZGva~z8TvlC<%eQ<&Z@)%m~IY3e5p2N}mseP0Nvdez{sNX#2 z^D!uxx=3a4GC}6ZDZaH79(^)`5VEp8+Iu~!v#}>{0Hg)>wsvf8WIBHunK_G`TJ}wX zJ+f{BI-~pW3`5#duzNJ@U4`AGzPl<^iMpw^TUcJw`BFWt=b4eoG8SgEQ6!W){g%R> z(y+G_c9;%yOJQ#(=av>qE=xD-sV}<+riCb;dD6ykUit766F^Cs=_|gP|qHs zr1`ddM9`-qh#ZS|j5vS4O!9(tILrb&Lc5v8q=B)eIP4z{${Ity%V0ldSSb#BBXLq( z3F_8kA=YB1yy>a#-ep945~n!sf&kRWXlqvJf+g1yQa#5wkJVC%xWKb8MF zSa~W5_yBGxNrD~N!OkE=ADQ7IAi;af@Vnf6=_`Y9iGS%U)8!%m^qpKnHh!s{0(Dc(4raeQJsvQrbnuaGpGTmkGuS9V zpguG0IDo-Z`PR0~WQ%}U;qw(vt32Z zjIDa;U1I3CN3;$u^x?_UoTJ_teNNoL?Lx2hiEV$wRMH`)7@7?Zd$3eZfiZ>&IKzG} zmY~)5+RVyuu2E`w%~#{bO7C=A3>uQgmq}jyqytvQd8^@=M%Y_T>z+X$o-CNYeJ$?V zdOqt6f)koeAo$sEZ>abbOdJa-Pd`#B6QQyT^ov#eyT*#8r&<5H{#{S%1xzjrOizK_ z)y;nxh4A%6saKXWw z=Mo7}q4VD5um`X41cNl+tYW5n#?f5 zga)PG<5XCpRSOffUM)-xtxIOLqR^+rSUpLU(uZeBP|1qM6&yyK@PY9|iW8F#5>BA} zzA^TdKq=O2L`u<_#GLLY#?tp4WxVxb7-kvGXgR1|xmqWg;=CBU zFl;I)49$;QJb?YK_Mz#~~7NbrKtqC%>zC?2~xp4?DvoG2}2kXP9NJTE!bCL|D4GwyZbmmStjY)pWvE zB^kHuQ{AezkrAke`yPaisKLz%Tyr4C$JK&N8ZhkA&bGPp$)sO-NFiSSO!Xmw0Qc#+ z(;?IRfw=K7^!V|OKxzoK0eOGy|0sN;AgS8~ole(B__6)DJ5XN>f~A1MIs$gI8!rZ? ziv$ht%hLhIC&(^W>UCis(amZ~We9z6Vj~|AREeE6M=A244^DiJuxZg#>5(d(R8H=>b!B0Xi8@ zS`~_dyt5`O1$<tAX()x47r8zfkP|d#H_HG@u8i}aCrghcB*(x(6*h_vIE9) z36c;oI?e(4V7H%x(dsPzr*blW0ipQ+$3C; z4*NQ(SU48Xg$2YRx2dQD;xsBq+vwsZZ|xi}(E0()(+4MK0JCs%7~nI$;ETl*tpLoG z#V>rs90vLU12Ko3yxR{kCjg9rwez19HizPhjk>-*Gi=Uq@G}(H91I8z16zlVG>uzY z0js`{OA}NwL~(yO`2NohsY6GluJwtLyV2+s!_!qX*c*($t}pfteR#6iXF=;QKx_OV zPN@pR}Fv3LkLjEnhu#kC0sjrIG0wFwK2^#?$;2?vce9HdP^Xska1qRlYSSif5| zn~>00zYBjfo6yi$zkf8FpwL*uq1l9l#`+_m*$fAb^}9v02?&k#`@pgZ42|^%K(Yx7 zjWrmCO-N|0KLUcyaL`!4OXQm1&{#AqnxVu=aA+(T17`r%Wl7_qps`>8o8KWc7E25> zPKPCCKNU0-hw3zI~MGoeH&JPRS_#y1ByZnms-(P zeK)^@1JHI9wtg6lEuZXwvNhOl^ac5{^At*t9T(|K3b(D+-ZGMiCOe-1?`yL2nE=0b z?e2f?E%>k9u<&0xA^A^Ln756)HIx1Ao&D{}UTaX0w;F>o%J7`?fo$fRk2e*l!hKU^ zxwyC2x=cnSN+!a91c|ir-_nbfl3NI!|<(rcbP;K@g#9Q#@qy$v0efODy&-EF~ z+yWHg)eB_Qe?ryU_1=7pH0ns}bPtRXJ2-#1HN9hQ@F+J87vE+PChwa&dK2V7cOPZZ|INf0$zm4Gv*>!B zWn!GK-rQl-<_;pOX#LXbJ5<}6rLS5Ku2~^_N*vR#yj6MuYS=pFPrN0Zgeo=0{4sx` z))=OM?1gSpfT%zjB>xPqZ|n3Zxi-&N228*O>wO_Hf>5r7qr>2eG+=Oljh@kA&GI~L z6L>50+!SJ@oTiYj<>0C^U~o(wo_iKhrUA3Gs~q&Eeu~OFH}ypDu;S}87uvB?&4#Y4 z^Se5+HDAyrh)izz(#{L((!}m_N110gg*y#{- zJAyz->y0Vt6SV?KJpB*Xasi8DEDZCArH_ggD;(1TE{<}V7GSYsVN-DH9NmA!p~Vct zs(@>nDEi*Kn!UA*ZW1VB#nu&7t(;Ey7+(kx(+Rxdrhy`4YPzE$Lgygf9l!7Fu;BLA zQp8P7kyIq;%q2bvSmRHAHMB}aM3LdZCj%>+lsvQqeMN(eLkR-3GkbKGEc@Yls}7|j zzsA?`s!<*Egi*n1=zjl+s*<=VZMqDSSQhq{GWJv8_nW8j;6}55Q~2e%A)u4bP>zV zn=jR7)%TLIF=(;J(DU?irqWMtG{4dF_#)C!0)G)-Ep9wl+p;5%;}* z5qF^jzJ%L(;r3y}xP&--fWBJ2V)S7G@V}Q3ZZOJk;X6`REg z+oE(TCv1xmFs&f1EV+O0dSgy@g>vBq)(48JM~;qHf`56BRa787P!v6o$%=}QS0-y$ z>_&32qp_9QQ4W*iV@nK1$J*|n>~AAQj0C&6q3R!Xrq7|Pf0TPxirdg6-m}jg9cX2o`ydtuI$p|= zdiby?+9@WHoiH9TB`mq_Fnmyzu_pva;b87C`Anm~&hbt{M$C(tV74Cq?+IUabKRK!$*FjTB(#Y8HyceENZxT1}dOC zOpG>|XLe7!V!vU#UR3~6R-Ku4d|zC!JQu7rnD+ zx1$fwAGf4wnywSMy6ma=eO9NTVcLj^iQ^Y(JQKh2nY)M$So{^Bvsgi$;@0QlGX9ve zx>p5gEmk8%>MbTI!TO4wB=PL^a&c?v&rtovdS79T@MAfqQO~b?(Sh-SiDzIuoyxo? zYnSw6NNRcU-if7uGfm=+M^e^DseTPz#p_u#n`iGBzG>7ej^i=IJhFh+S550GQlLxM ziF^eDpAO_n9?nZ#L~CkAbXucD3;iGCx~mj{%yH7cGIE%pY6lr_h0pAPE;d8jEQ+If z#tX_RJ)A?i=JRbH&8W6Emiw2SlV8kMa8i$*#X67}!H+?I%rSH!Q;~Qix2ei2l?V6S z>=w^SONmpNCqMsq(2i(^mv#`zfOac;yBYK^*D)MWJYsZ76JVy8x~8@G#QJIFsDrHI z?oyP8+Y_L)iBj-mIHyTdDP{(&{9&-tAUQE;|1+y*1Meb^PUqM2MJzjD6uB^eY4Hjp zYXI#?X87)Z@jl^u(YLF39bcD1N*F0qm6#@Tf28p#&C_x8RAsD1=ZPxCVyqVJB(9XLL#zi>V)nGz3qR^*mn8|2IBgB<*AQwQeeZ7Is?kP9Mu-lmC#W$Y|JlqvESL zfUT&5eD*toRDYy`P>n4b&$DCkz4*n>4rO7gk1P#aoa{KcUgftPU<_djju<5-gV<@L z8lilB%Q+EBa11(;^kURx5@E=X?qb0!-IP(}*vCky!|7Eta>TaZvr>Lgg+un{XxG7b zzPw0(M{n*JS|U{uC3CAbOBFhQb0_+`(&S%@e?QSb6J*NGdnqNgA1<8386tQ3NW# zud*Uu_sNAo)c_UT(In9#XDjMqufY9|!tl_4ApUWpR|Dc3E|!|w(Md=<0*0~+)E1XCDd1Zz|Dai ziz%X}B9Yg zc!o;edZd!K9&zhtUC-Jt8C73CncEd!-@h034` zkl&?qh5F?P1xVxynX(ihnd{mH6@R*zi{Jj7sa%E-tD(o2Os*o6YZ)C~UvF}0VAPVh z@~b$PIMsHD2#a^+aH<}`5$B5VLJmjMtr z2o>OiCg7PMiH5p}E;jjQEo9GsRlK}RR856i^UZv*h-8!`zPOM@_fltQAM*^OXa>#S zW8{kwgDPDj9*V8>09ITrbPDD z=3KQ#?gmJy={OHiiqjp1Pts%T10%J$H&6;)U*S{!82SpG>}T{<&2=^;ItnS*&yjsl zd+6I)|BMI~OW-v-jB5pDvW#t&Rp?pHy9Lhg!^mPoj-I>NtQK+gv`xD3g){#!^vQf< z>o~_(ai&Q!FRZSFV~4HBfhVnk1zay z%~|vj!dNiN@NC{^%W$#pjcw2Lc1yrniI}6Ysk5j6F1q!beQ!IQ>Bzk8c58ZT1-yGt z&D{gWzx8EYA&pahlC7&1-F z?!F*{dVMgze$0~f@jAK4{*w{E9&YbE-rfc3mWfGKSYWJ2vU}15=$uEK4-bs>V0(Ac zHY+(fV}4*P*Xnxtt6hTz=!!5HDio-WJ`2_nsI~g!4V7YpkscEORZJ7phlpMkNiKPT z>desPZ*mTd^0PpHXiMcD6);Ql2Ch;AcZp6K%D2+tS8)!E5l=0YrKUc!F_v1NxqT`R zw$pfJ&#H8LiAC? zK|eV6gbV#p@l@-vEOXKHcjPke$z*#MAd*r{4VV9xB%x}1ox9aP&(V3-gFLxV$XWxwO)`aRE#LU{vgz1?vO> zrog^jf_XoD@Nxi+z0z=9D@VIy`J0ROy7o8GyL35hp@;C>0!t3(w{=c|eOh$F%+rmZ zehm+QoU6h5O?qq?R*VdS%1*!UDBmxA7tlSs*&B`a(uP7~^!aiD5(Ahp*wRtroAn#o zn|1dQ|IPX`Ud9r+^*{9KDigcDJY7Hg)0N$8kMy+d`(6&1E7ZHyUVsqI zAO(P}3io;shEmmsh+a9iF0qMv?|NSE@W3d4$MwBP>$0qDwIN>etwwh9rHcA3ieI9K z_fQX9&$Aw0CPrx0lBw!C+)ksy^rw>uL~SA0JMRcy8#=?FUw^uWRpSq~$unjGP}$@H ztpVfKk9;8;;Gu=?=5FX{IdC?OA24Vb#KuCujynX#uAuiD@Ig;VOi*w)iG}x5XQ38< z#812I*Zjf9C|;IW4#hbXpSh#-&NbkZ8=RuXJvgzqV0}+UC~gP5iA`qg$`*67Be@-6 zo3uiN1i7M=f+j^za~BF~0$f$Bl1&^6mb8vrEJMua$;icUGBC$*xo#pt6BpVW%Z<@)4F ztw3`>MpA2wnHnV0)dw0fs?&c7iUU+K7=6^xAr>G9i6~?~Pl_2u7Pa`MPHjaSgMs>s zA?H!|5<|{W2YKwG8z6oPtH$<#{72a}C~ztA*`gac@pRqcL=&)V z8)CTGxgl5?OcyICU?}>ip(EMAo}kMSKWCe90O^eKTz0e>ComgBiJ@CK(jU>N_Kjq2 zLv?PXB-#Un6GhVRpg(k*_0WwX<(Fw_dLjOP^ybb%p34Tjs;hUZsJ1$LOM0Kwdz&)Y zj?^2{Ep?ka+J~Yb^#U-<_DvFhghvgXB-j?aX!xQ}*KE{DDy5dGv)Smd@)nJaM3=WH zTqOFap$nUUDLz3@+ultpLF19sIk;2(MhrrT1lk=#bqv(#B?>l3%>pANLJ{TP{sn7!bqZ4sS~-3iHU4A zQ0`dN4aeb%siAA66pzRUWLDuzNM&7=zEy#W()Mzv$vLUP_mOe4g>!K1+omJt%P4#4 zD>h(!A9M}`Lv)~$w;DWu(L8?X<6vh?qVv2g0!$87q2R~zRd74H`%wa-l=4h6twBS% zNH@!ljss58@L6K?!W{}U4FUsZp?@xKXmuzOVbntyy8f3X35nj zEvpPsX4L~#i-o;J$gwwkb}C-4SuK;X%N%H#dLJXx1;r-|oK^yVI@_zlYbvAB(X=lr z6G0Mw3%Ek6<|h)2b9pOnUwXbsu9c(0_$&%-%AgJ}CK;GaSV8wWif>VQRGuXR>1P;` z77RK@yFK=H2yTzf{Jw4?@ibn~KC`c5GY{nEaAE9wM&HHxJ6xk%o`H)GOI$exk#OH|@0lGbZ=nm=JR_);33DK!teEKZOg_Xj1 zvy(a#k++`IT&PxqQ{CbcSwlC%RzLDJ@Mu#)Ze9Ua%$TO#@*Y$Tx~pb}O6bU&($R_A zNg?b#=_2u4Ne6u%dP8Be73%&)GaRb{6AvrgU}p)UQF6t9YNJ|Dt1apJkU-(9MSPpg zj+V3JgTHqSKp3lAP_~i%Q3^`xRBR~@^fpWZNMW@D0t8J>G!;KHH$u}aW0~dyPbVOl zQdTD**#*c=S<%o<7`m);WVfv}S7w|g`I(SrBVa?vuU@}>c6fGh^y2jG@yY9d96dXH z#@RMjJGYO2QL@N7+iIlb%;-}SaXQMWg|<&O z`S>Kc^n{uxy932d7wP4Es-maj-ehBQfliWavtYb_0t8DN1X=N1LtBqnZh-iyCT|t5 z#l^6RJC;8Qj{DK~_V*5}K2puw+E7g>w8`jRbS6V$M->oclwWBi_H~kppJelMjn6Lr zJx%6+@8!Eo`p6=4{=zt4ZSt%$f(FyqH>m0ym=IJokK9rxm5H^NYi`PhT9Io>q_PWW7$;9nWVS?}Kg$ zwUH3wVPBaHo=3fVw*rJffKjQiA9|6cluV|78(~%#H>vn{r;`~3HR%_*bx9_4|Q~)sQ`wxlj2QUg-_$D`ZHWiSFNzrtxBtMSsbE zlKeEk6)(K>S#l8zlXY}Ay15dT^?PAM=#b-FGV1gyUS1|em@yYuyU5om42^Rk|GNbL zLoiZC=^fmZD`QE<@j4afCo?o8)QWs$3F6nI(Pk;kpxIZp6-~=OAJb9gyXiwUn+%KZwJBT$rSQLzzAoop16yUCPvwOdM4tm~ffXO;$^UHPMK*eK=gpnYhW5_MDe_5v>DoBPD$xldoxV=z@O>nIiF;H^ zxlO*l?O;gPdxZopVJV41k&YAfO=5EehY8Ul#igqX558hWx zpXj%!?q-QPQP7lAasnW2Q0yyZW0jirXgQk;;tE;yJf1H$>%@yX1aSsMRMB-W3cvv| zG+;5HP#ox^VkL+_;SU&`kVt!fn&es2GK?~L{L*|BHkj^qs7)^Y0o`y!qcZqY)|j{q zEhP+@(w%n;UKmBvKzdfu@Kid^gh{+kuG9C)sO3pw+&47l1LHyjaQ^_KhRc8js=d)x ziSI(pjYJfWES*AK{FV4X_#Mzw0 zgfL{BgJT86x6jMej-#S~kdZzcG3Hg3Og4SMbl`Xt(m-*;SWH8D^W2N{T9Ufrm;b-E ziXYc1OMt;N6nWwPNBGdL(c#|@QG2Zsl_S#3o^-FGS;;-2@hIxb!VDt-x( zb6Sjwgr-$FO0r;Rb)LrSj(h>v#29smnE0vwW%~T6+_MG&xvXM6%{{Fa;OiKosZ_9L zV5m&CZh;PU0>X%Y9B)4-Xzy^1k)x;jE-aF@O0SEfE1?yll{hc@l(-gBo~BLEz!(8j z%cZMS8<AmOS%Og6Mga?T;r`4%=0pud*li z@5i^hd%F*^-R)_%JK5RGw{N7mF&2}`D>F~;=PQL3_WfpmK1;?|xwnRGZ+myAy&__B z0B9jU9KJYy`||Mg^x*r$Y8@vMlcC7cP029XeUgm*?O}oT7$Uv?(NBRjXUBRfNibqmLRU zA;dX6H6cWQm!C>y^)kt_PV>S!XWvHe@EZc_gzU~cf>jR%-J?psTqZY`M(hf>IA+De zdeFxvcqt8D$vRE*NU885(i$5-ll;Ks>-Ac12xp~paI{F!TCrNlNUvG0vO9L+n3xi~ zsM1BZ^n_jSTE~18U!`@Ct13`S_jkL>t1wvCB4v6 z3#iBJjhA^HQ=-EU7MhiKNngebaq4;H?$hHxw%;=ZV%cWw1zs2w4=l_fjR;z_f z&5)7JGxdvfmY^hv)pzPXf2#6voT>wLXAUJZ4o*vxIn?3dJw| zb#yxMDe&QrgMa`V>Np6p4|`eU#Sm|)>v(;C8)+vkoh*WU47K}|gtS1rPe?aw?!KvN zo6X}zdZ{ddkE+gSA*GMlccG_Pe2-323%T<|(P!pkDgWurUOi$Y|7qdNyD zJRhE>tGN-vGJT;H=P!OTEi#(i{Ou$s#OuO2I6fbp6Dxg;PC&Oylw?Tx$MvG~203S> zJQNJPP;oZZDHZ7e+(k&^ZqgAUD2S<=@hCF?Ie2(Uc}LZIMtGCWDh+~lQ_z_#njjCCdo1A$LQ)Fvc*RrL18!6&0^7qQ;@ zo{g-3S1gpQL!r8}fVOpxMU9$3$nInyZaSUZy0K-pnA%TwLWk+`G zBZ+khRi%mn;(T zi@9n~DtnWP7t*w&1+SZ~q3RP+6*sjfef1FOSD!f9-es2Rc4D;yVMf)g4&c2f=fD2`bn730>qfc{(I;c4fd3Dj!e5kq zNu3xiI?Wiv!a#3-(<`E<+AK&Lg4QbJgNxt{RWempWfld}73} z7@tfI+q0+riPB{!Uks*4xYq4P7ER0Mmg+ZrCBax&X*O||zBd$J)qRg#GO4moo3YQd z_s-xQnSU`b?x_tutZMhG@>_bq8dZNpuWAa|zyp9#LsuAoSz=2+i3{kW@6r#)(xSLZ z7c-AH3w$W|0-bhmTd2Zh$MDp`eYJ~o`>CgxY|}o-uK#DRACaCgV1$DJO)LV2(>q`rmK3%K~&KY zeQDTa7v|1?Q5%I-J15^an@qf3`|a8wJ;C78oUW^N|32>$!v#6rGnICW>~*IF3O{=k1^^kTo)-uIM($8XkqFz#r23sNOa@>Ox>vF1v zkJ``CE&H{|$$Tc&?bwJ3HWl5K-=G5rRhL7S38eCW8}U{>P4cLCtxo4jMxT(}HO$_( z!hh1w!GMN@E@@EQQcTWtG<;^XXmfy1)8)ndakliUi%d3;{-O0)$7s)C1Jy+x_e5eqz+PLoBlj`MWgnG){Y&|a^fUKKgTDk=wo zo$qRYLt`+ijfO*7L6z>1M@3iX7&W5>l3?RwOBi`dLE(~160)6BQ(n5q%jF*Craf8qX8H~KOo_334REnUw zPrqO23M0egXRn{Veqvfch^OUwvJmEliPr1hToQ9+stwWe&87IE%;pe3mC=4Wc@%?x zN03**-in#CaVlOkzs}yN1mN*9$?u;_;HKpM-=6(_dw;SwdHC=logiY@jCmGa%s+_b z&t<-aYzg~5S!W6t=OQ|N_IHLv3e+mYnTSZLC=yE)w%IK*Y8x5ZFT&r zd{;8Q3UUk4e{ObGepv3f0+i6_F^kS`8H7?m`UIhJ_9i!uvb*#PIN2e!aOK>8K%!87 zF6^9Tdb1VX2ws@U0_w#=gURTvzL+m^jiNn`SGjZ(WSi+#brzZO7D{o+pp`12EliQs zX1z+YWN|ClSW=g5Rx0(c#?O*M&0GazF^Hr}?WHXS#O~IvBZp;ZLYr=^O;CyJ#ROI9 zyI>cUu>M@J$f(F)AOHRE=eNgyCx@q}htIYQ7j1jf)Liep2`afgvc6<*KV7sT8*RsH z@xS7oCnR7V3*$nl&X!)0#O*%R|J$%B$JerXupY0o7odA{Nz&VVm6oO;{`FE9pGdR} z)!JMkhFS$Fovt!BT_j;`zVyBt+1u^ga!pGTy%FcBI>EJ=D8^^4BE&;~8+I>DdN+=6 z3>)I9?LtbMpu0Fol_QLcEZVH1c(Kq3gH>oW(@$HW;JJ9L6I5pgpR9C`jul55jzlc= zXt_+*GHaLTZkoWk;l8rbMka~v#s!n)w1BQ$@mi=Sv!~@aU1G)=4V}OV=sxP9gbnr* z8X;rmI!JZjj#IF503?BbPp{^S*;=C2sph7QUmlm5mPIeAlDuo*yNQPWq9^4&VW(x{ zGGIrbTT{rdTE2_Tcr|0r4_pNm%u(z~SKbY95Vc>$oIuA`^$MprhehYh%db*1H3??&LUOqLy`G2CADZ7? z20KWG>;&D7gVk&foiJ|)WM(>1Aj;yHr z-_J<;erD1~agQ?OGP=fqGj`u3V8^gnA;@wJP@0syUM0(a7OJjvpGY%V`g{T|?v!1o$4lJTo5 zpUg(A=D@U0@LflWH*Gby50l=#%_OlAC5x=f*X>>#DIii`+XWYac7ksl(kZvx;|~X{ zKS6c+U<^xt^70{CK1_DNt--hGXsJprE2B#YIHxg4{_O;v@6URb;PdzIMNb!LW-u}A zz8Z{4Lm+3nN5|f1rq)5{?AKm4TJ0QunCGniD3kxs-nVzRjU4%Y6|Cmob7+r5k(A&0 zBO}Z7jIx&GE6FpPta5Z95)zRi2?hXdE7|$(w;uq12oTkcs%k)TcH&89WJ>C;?yjz? zuE(!PS^9<-Q`sL;&Ni>yt-Jh5@uXU$A-|D7a(2meB13e)j`E*gxJ;kasQ52Q8vLzB z!`MI^MG|QbTT)HfFTYDU1W=w^CB4V(ATUI?`>4rY{*)bhgxsnIG^QPdpvA>jZN`aE z@FtaikcUk!m;(lIVL?-vDG6eP`3Vt7^=ntd-ARpq zif*WM0q(j6B}XD>J4vavR$XeI!zq`+H0+30 z=wLW9{S@XL*N9fWP&qC=EB&}ev^oUVag9(V1dL(n;zhp>Q24`^c}bb5-b5xFd%bNn z=>5;O9t?O)LzOdCEpRC2jbm9CIZ^F@Jg455SvU_e{a(`PRYhUfS)&7$K2h%jJEBzw zAXI{KkDLTaqRO&aH-IXzlwIRl>aopJQL_FS7Y&{B&lwvdoLXzaBv(@D!Sq@+VG^%I zTHB9JqnzJi+Yj)?$ZGo`gqN&kP9qDm_lHfsR!eja_X_kS?f*t<)t&09L%5Xhe@)34wC(YgBMpjT71dQBkEI`-B+sE@YHX3&-9f0zW!r}V)JE!hC97G)VzF*P z>d8GT^kOne&R9;j0steBBCj<3hwJ$6V{HEwXwp)dDS`2PBFcD881Pec8 zcoEPQFU-TDiiF%P;ibN%JEPGzfvQEJuL3I$IQZV^@(~E%J9{&VFHQK~*;`pz{-Nw0 zEp6s$12T=7SbRBuA06YH*1e)+4Q*b|y^2W$HSyjpKQ%cWz46s8UK#tl333E*KH3xa3Z4{c$eQ_cogoT$O(_i zlnS{L-Qv@#kB56hppTrRn+6<|9wMDY^La4Qouu00Idu_1arpgiW@2|&-`;3SXwrk*8DFVFO@leM3ToQQ5^I)O>*0cnLa{0b2!ZU zSnbT=*z9A(w7V%C#Yi?@)hI5et&!{GN4ibAdXvw^O_niiy=95De3TGrC4{bx%OaIh z0TJu1LZHhcdab{m*>i3oZMYzZT9QhMIBT;9(S7_i1O$bS-*WqeZxgBx#Ew`cwz1Au zsAw&JnWxZERbDYN9bmHXm1YVxW7UlHR>fvom93ExQ888eDqE=CGWyz3VNAQ%v0y%v z>#=GiGCB(4@f#W5MmYLOFMsS+muccGPSqnilE&1br4H(*n2cUb?EDatA^pvB}8I>H47&Rl=J7U6REYg10a4pwSoZ}cn&WF=_!G5 zRM#e7wvDQsQ48BC-?XZXq01FKD5F%-XP<*O4yU$mJd{9iQ_c1&j?!QvTL38pk@aeS zDkhQwrgvF{b#9_)9>`p*#VWn$NLDmXV@105OT^@)Xc8EK*G>|8NtlZAkLsKtm*D-+ z|9F+~5fZl0Ij~&WtyO4_d+mD`Hdtx2L~30br=Vy(eiX{i+q?0LcfuJm=z*w zWSY#itS|4p*W^5GFJ9#syXgdK7~{cUIpa|V{8R7HTZi6l6sw1&?!VyO__2OhS;A5anWrTiTL;$%9g>kG2^)GF=C_Qsjv2jEwMVP#1x48j&7F}eL?Pe~2!m2O}R>=ZS>?m3cqoTt<`X+4k@v$(usl5ljD$jHD z$D)hq=%|sX*i1_y8S`P}eJ{4~I#}_q@PnzySy3oB?NtC^3N_J0gW}A2LqxZ>B9oJvbU)GSI-dR|5SdbE~`N zwepfdxyqVeGSK2NqNDPX*=`cp#aqVJc`;%?8E9{rZFSW2nlU8-xnYACM{TRDRVLZj zt1r;ajjMH%iT^qHkO5+U=>21Wx_2UB(60+tz7GMFqn7Wp#b?G+L!n+dSw46O4n~#_ z@m;drSX8d5!ZWtVh^c2K=`n(OHyYFVC@+utRVbbx%2JX6qu$j{|7zz+UqZ&rKL@?a zR`kr77HQ}?3M6sIv&23rZ^yqTE0 z-sIyL-0~dSY@xol+AfA4)uugkHUykQ&l?7 z(JuoUNS2_gQQ($9@j0lmL}5v1F}ZZDj0y0w!E1h@NfAB!JJGQcwVSE)>U+uD{>ee7H`2#-pV zA=Y-8#wn=PfE$%rZr{Gqsg>^SyP5o?M{>#Kf*ZQ}$xM*(XDSA~{Ny zd+(?Id@P&t>9^G3a(Xdar{b8GLXxZRW0NGLG}Vu&ny{h=kPHJo;GW4DTSz}Aaf4tr>H6o&6>g- zCKno+bVD46VX)GQaiXrG2p$zHinQG(F5=qctp`q%$OTaY@Jap6q7J$<|R`K$&s|uVBR>omWtJwDeK2 z;);W*f&!1#?^I7VfKFsnBIR52rs^zZQ=ROsEOY|!kd^?ziy#eR3k;o+I(%y)Pnktx zqFFQ*G|lfbAtVUCm6@B8pmid?nE8o+H`-OBi-^h!`4_v8jLgwYF%6jf6zGq7-L_Y}^; zMS4FEl35U>`8)7x=W`f**?;H9zh2IQMbMulNz+677355PK`|ONfzkpzlML2>Q*6fA zm6sIzPfsdS2_@V16!UWCq(DFvbN*CZj^5^;aAv1Gii_EgHg}-srW9XNUd%8bN?^8W z&m5Yu*Ch_1)(|f#HfOdgQtV~2jD2pI7 z64d?F4Px|9E_A>2-TViF-^_Y{#z-h32B2pC8fF=8W#3(whQg~B;sNHt(eZ%HP$(<} z+w;C^4dC4%Fg7_wz*Su!iU8H$MgH%5PdPnLG}kDwp%#54uPAa5_bls=&(F`!i-$~= zdii%$TDvhji6SENk8NHOTT>xjoHD?qYl$bNx52OC^**I@K+*A__y!(jrErYcG z>D*ds3{T{EkKsY-8J|V5^oK}30_f`i?U#qjzwE?og-ZHoCHdj1gT3=$B|DAF^fzCY zE2p85Xet`E$@%L`b=>!Vv=1`b&8$1|#Y$pri~nvapT%E-bYctb!Y7NW77*kfr+E_x zNv}#F*3iV-diK3Iic)W>{A{<%Uy~cmmliByBULD~!J4pW7#JgJvYZ6}CP`yo97>+K zxT&dbL>o2};P}ikj7oTBd3kKZyN%`&-RsLtn6bK;T58xtw#yTLoE62vw9ndObS<(u zg;G)@p5`CK`~2*~yYYD`8&7$T>@ZaZx*Thl;8B^)EjH5FlhQf+vgEhh{D938ez`Xs z?u`Jz8^_!T!&Ow^nkp7wowq48*dI)dNp)HgcjC`079p7axNvl5e0lHb%O%a zt&~?bl<_$+<*(j%+d`jVIN&otpL#zeLEwG2;ahWqPvdNVc#%cFfaqQo)eD$|#${JQ zbp&NxLVPm|Pp8t#+`jjl``4=wz_^F#3{o2)f?;T+b}q~XvU^2cfCt>26i+~0|gY%uvuxU>FJjhojFRs ztf)*+`lwic>B70J_(V>|Wo^=#E!<>6SZ!N}3Kll2QR9So;YPoj=w!`CHR^IbNgW&- z)hYX)qPslMjayU_D1Fp68g>~6Cp7Fj&$6}TwJhDP+*en2h^ddl++jqwVNofa%~qvj zW@mOCF1?~r3d4#dWnpGnxf^%Lrbi3i+0#lIr6GEM@GYlN!uOt%Mk)7R^LfVNvoMJL zcrv^9ZsTYn)Ra<2(`d4m)!TIaLdlx^L8WI3gC)y>$kEpFd*@0D!NZf0qAveMrkKm} z;1=9722E{vb&P{k3wKp2M#Wx~Mr(c^E-I0f;0IC>31T_3N~!AE@=%SlQ~W~o*B&YhkvViHULSN0B1dgg@&?NWYSpz< zz+?lj$)$KsIJjX=gtwGVXc(NDPM8H49gHmqdYhLK9Vv5f#v=p z&i=iQ182dRHdVp@5syamb@l@qMwU|F>f*8`dA%7H;d7pzg$x-*GS3ARh z{@`lI3zlLoS$CX$`swoh-m9yfKk8(XhQz3P`2i?&Otg_lCxI(vE3amq-38Gi5awL} zcqt6Xgu6^odXNYK+IMh?0c8Y(n5?PCQ8ZsKmf8m_*qFabq*lnybiJQPUu4}3mmE?{ z5w{uto&(V`Y~oFsSR)IkETF>TVY-rt@7QFyLA(#X|yPR5|_7hBtDo2x0@|~?!c9B zsw{pF_uV!T&WXiOuhc=Z@+Tz|UT%k-O}WI9^c8&Ky2n#RSBbB7yhPUHAIX<=p~8as z{Q4%myPnHm$$upO?%wU!y)^im?n&gVH{Q+MpZv;S7+EdBi>ruH1{o}Wr2~`lAA5V= zc$utY6%Wc9&Z(XBZP%Gb_&v_-rgRUZnmPT)2)riEXOKI{S60yx)@)7 zJRiTmzBvBN*yYBv^bm0KT~C{(ineG_*NIC2TYXrsvvl8zM9HUB!cc`H$ebh;P(?1lLq>9-NQrErP2z9^6|5mv4Og-Xgf(<6HF>!6hUQ z?=6ChP9D%(1Q(_}jJpD^K5=@uOf}>k_UY2$8wIX@>HduZ*THoEMuDqf>``wL^Vm|i z%J6T`U!&5tqQ$~rPUQok<&>>GXr*muYH8TU;WJ#O7NKB&2pklX_?fNKmJTI-JnzF` zKIJYBlig{dBTF5*NX5lQ3P^hnpy#2666_K)s_tdWnKmpGm>vTZubb+!WsxI~^?#m5|AQ z6dZ66v0uj_K-1A3#CZVu#Sj*28D~c@EK$4wk;g3j;)g1 zV(fzvhq2Mfpf<+-paKO9u0}(Lw!_tETu@hku0{cT(zzN1?MWXMbJzRX?#s6rgQv-+ zK_;wuJWVkKx)9bVWKa6>qcA<`qhcgLKlN{v|ATS(Xs}Ir99g7Km`Um%#@$1~Z!$K& z6XPERmbuw{^_A8vdoqoRa~c%QzI7S{#%WM){vuo!sVPPJg_=p{vKCr@ zqeG)&ulPLJlkN`&TcKerwKF0S!aegm(BEBX&`LR1<}Tk0W#jOY8^mRP%3}a;x)N=_YfoHzpwSXttXP$h24t1x8V1r#JDT{NP=DCwi({17J5=&^$&Xk^KME$_r= z!0}F?fh0TexS^3G+wr)e5hUewMLz8tZxYC;{GLonW=u*kMqJ!{C?HAt^+Ewf(nlp) z9&c`=$y&x`v(Mt_i+WDHQAWo!|Mr_CmZQH#0-hHoL z)%|sUb^kbhs=Cka?!DJqd!3EoEZ9#1pksHkeP-~_?3LqCm~?hG!Kyery~x8fe(b$) zYV7x~^m)Cul^zi#6a8uTq z*228GG*)@+9IXwBqdOK_CrncFIEWc15WP6i-UDf9sxlatTjm2^iT-YF%;LZv-j4PgwZKJX=RE(A9wYjS+@8!F22M1NUOFDR&rY%Aw zWDj%Tkqrj8tH&Sqc=B%U^H-L|5hkfLcqr~MX1&y^{rYQna4;M*vU=jfL^pc$ZBI>= zO{mBx(iJM{fZoJq^p@3ufpR>Kftq%ES9M4P}CWHmElA zvx_ruu;LnhCXTCCc?RuYW%!+wQ{2OOZmci8BE%#+lZ*0+@5rqYY#0*Asu>9OhR~x* z;}ve${uIr8qsB$ofP?6?zfJZA?x-^|1V(NwA4cyEA%VzvL%^~w1@~W%e^Ue`*hRIhAcyo9)ko`xg9wpqPgRPiN5i?gw0HoD3?Jq$b zsMF#$5|nuzWe*;l;0XP{v?2PaQ)0%kUIP))7Fp0nyWBh>r(OqaF z2L7sO0?OX6`<6856R627`ZG(fG47?6rf|z$@gZqigx+HAPUa5q2`LVk&IecLZ=pw^ zbN)sKHSAtKKy5=kkX9RQ{h(?Pt%B%+`^I2urCF&p=HHYPcoUK`e@4?At&Nt#F)!-IZyR4@OB< z2cQKh(YEzRC&frb;{cqZ^y0_4>($0=I|hG85RAW;AMHenKmx7XVO&5+&^T-->VV_a zOwvqSOb5a`4@J5QLI%IQ;SOf+ zD+NBo+$775!~o5Cc|mE06+HL{F^E?{Yv>)(wrrpICHAa+q|CUB1gq@0oTn6(=(k>&qYFeShH z2_;aMp2g`!^0_@WOkwgG`H5j} zTcZGak?#o8e!3`I1&nf{nK!0n0>sXEDiF;gJUti>q&aJ|bAaHXVmaWD(KHx?X^G|` ziF1?z)8ky=3CyXEf{{ag?0=Ls$*sbQ<2H?%zQJMEVWKYW`(82$5}Zt54M^p>lUL{> ztw~_laFvsuiM7ryCGV51B|W&!f&yCn{FcG+ zAWB{(f7ERE@59dIj6B(IWY!2)%Fa_cLI9pG`Wt_QZvssNe?X9c1t)Y>HX|EGZ|-+$ zrR)5ti>7B{B4tcdG$gEqxnYj*$Q9I_8;X&joYi;_x!Tcuzu*0)vLN3TXH5Q?F2v{o zxoLajKWW{OxtV^Iotg6Wp9qN9IIDuvU@S`zDGn5-UPvVlQdR$CM|SxUqn}wxWIrwA zeE^x1rD4#{hEee}>%BlAJM=e0642kPKUw0#sUrv2DLK3UViDM}m zQI6x<$#HK`|KYV2d}6M-?2A=ez{reO z*@E0(Uw$|5sF&UwTTCzfEw^J-A5A&a%-djiOb?9Fzq^)LPV>Mb2j{e^f*wJh zBPU#6VQD+<*6o%f*qC&1&D*K~FE0~MnD`&I^HF>3=V7`&41_u}RN5rt8RIGWsFcD}OlMocJ%3Z?|5PG$ zmulS*g-QE9@q(H%dPZ&<@Z!sP`)+%$N&c?ALKETZ?2-ub?pfjb3=4pW{f&YDMo@RU zzaP*wehT{H?&bQGt^e>66{F+AcaF6!N}2+}v`0bgTiyx#Jeg|l1<$?_gBunu>*pd4 zu`eVFOJ{`{fft86%cy>W7k@ulub%yyybzWSk22xwJ3Ng3EPEC~|1ExO^}Zu*Oz8SK zh+d)qjuS0wEY}(74ZsBbhffPoe^7$Iku+&MyP|5b)N1Q~Gg35CwEKf4{kI;8HpyTk zg)gGx?&8fk_V0&-+G3tW*YY|wg?E=dYObOhh6P+gsRf1$`*%I$V(z(1W~=2^?D{f} zH7g@3c9?sDP1HJKWku^q_xUz7mHK-w({h|)>_%ec+bZqNLK4hLE*TChl za>I?z`g<2W97X+IZR!9fKE2FtDv=51B7@i%Gxb2jlvr4>bQ$mKN%!N2e(Y2Pn zTdi!bnfp%V98ipPey1_h#2jclW0*l1!k6ZguP;suLO- zi9vBDi#Q}(P&mG`V!+L+R21)h#tP1fS>{NgrggD3kAV2iPRb98-$yHQy@O8NA_sFqkS+ z-&CZtiG`*4o8XgSk3b3HKeIC30fqW+F3_IN#i)+0l#i-9RtkGrU53C^s*UajJyGFg z{B6>go#nboJmu?k`W60(R-@DVZ_vQTj1fDYq2*6<{X2B|e0K=$SF-|8(__XGIz6lo7 z_uPDmNA=0&nvze7j88C3tPVb6h$?p50S)00LckG2-8c6BYL@X3mHX^bjk1=NU%h4g zK^o(C|KE^YK9DR0PZ78&JrUI->q-!`CuU1}SkySJMoU5LSd|igyCoZpLCa8OKLq?Y zCPy=}(1%f8$sri74NArL5CAozOE1(TIdR)#Ucr9@OO&H!)7b&Shc;rCvX^BFX}#=0 zOrG}P06Z~%PO~-Yjq}mmAAMX|1hpDCbmF(4yuJK!cz#cz$M4)@#`S*MznVnz3>^~i zg;R;MULG&-O*d01$SV|T8-WLO(lf&8qT~h);@U)--b6Z#plgLSNothD?q?5gcD*hf zhMu+33eFlEiuRZ*;C?CwyNl?m{7*QpBz0(9mKP20Fnne4lwDWWe}@(BNm|l{Kp8Eb zBdb}Jv^hj80IC~1XO&zs^EuO4;|_o?gf_(VKala zvj@o|a!6y1JI~O0RV_u5x`StvY}G{bKXQ`m`N)S-TnSsNoPU(%o40twoiN+KZqY;+ z_^x&+4dMmBrH;Gu-v&1_*>p)QuOT01QnDyb8{ju6)C7~=M)|)x8dFE^es_Y2m>n+KHT2g^=$Uh?0k$oX{ znAB|d{IkP}^I{hVHvaoP<3OL@{=c=Q*TNueO{pR$)rMO@i_vx%aOm0CU!Aa7UrY3- z->ThEyShr0c#YI?T&r{afy8OvmPU_%@bOpOtNj*JBd_`sf#ORw+Sr2U0GL|w2e{hV z)!ORkvOq_yiY2S*hx}ekABHzqEN(ZrNoI~9BUuM?4)Fr88k77VXbR$Yx}rX(gl|bJ z+3P6&IRJ2e`e;H&_eF##HX`m#Yar!$Ot6xgSlf^24gqYFJYV#WZf(tPMELEv-^~ZK zc*s+tu~!SWH{w_&U45M~%GgESep2A1za#CZDi8ESgE29V`3ol0A)(Mdbf)+cKM!h1 zDaQ*rXdMY&SqK|n(|2Wd|&@rj0et5UKNXz=#mpx+rEMMoy=N zA(a>+bLXT2L?=}&W#uU^y8_-^)w;=dN8lg8=^jPtv_j?G%#&@-770g%3yD7JIzarW zCLw;1D_#kDVbeq%C?KUn0D2G-*X@@k9}b)d1A4vjcr;zc>?d(B1&}0DEDyWPAmlPSyUHo%?&(1yX>#egr9pLtV*;xG9gS2KcreKhZZWD!-;1ben z!xE63rjVlQ%^v$Ev}6!yw8g^mIw1DousJ12Bh!}0+C)-q9UtaBhh1Dk<hQw&u9QEI-{&5Z}bR1bx`S zEIxR~TnM&i4()0$Mpd12XjUknTf`Ma_Q4*$e;#wMcJ)0Z=2C&Dbg?k{uuJ7*;N*!C zr>M|riZEpmO~ru$%OMg06R@^rZAbw&=#_UAU^TEK$dJKn!vi5h_kUjmAP2p%&Z)Jvv3Mih)fu5HPDFUBgCZN$HXCnoD&O z@;$7hUZ3K@*NV3xpTqIM4og|fMJt%$KFx*8+Jk>d(67Vc)++sb1eETp{FY*YRvdMp zK7PAn@zdNFYI>4-Dw?uIQjTZ)!*lp>b7q){){&6Q)fY;)B`L29O8pbuz%)lbprP?{ zyFkt5^Q6NI#q*~ykFH<$>%o=y6zEYI7Jj#A0@B&>1cTP(8j&+XJ6kw04LV^+JjHVI z)GdV4_~VpG@f!%GG+^s97mx&L@vBVw%EB5%bmz13qYAE7YozJZKgSTY#8#~#oinVv zSiW!no1Znk+xy%5pJK$L{p^_PZ;Uvl5KYf|^hYTB57xS<;37p+NdM>{!%Y5J@B7vn zEsy3k=Ru}ei@FC2HWF%y(FZ1kk<|`Sd3~gVhp=0}IU?!R_5JhB)v~e+&QGgK4L{hlW17)(|94$iL=cp-TvMB;`T#?{ z3M&(>5^g%ig)A^8Q0)`s>Z`*PB?)Dw{w$ZQdCb{-y-Qj++I}DG%6s$`yY!@3z5Hb; z>z(YbGMsxlIUZ=XHJ;igJ!EbdrWlz^DOUSL0h-b7kNcWPDdn|fUfs#Du~E=<9aKJ* zKvF^#47aph>)Cf?56RjX@IgXkQj??@?749&>r)BuoM{@ zSM2~#->;q(*_Wc0-rAq4>Yx7H=dUBJ1|C=6A|d_0M8dzD+~1O`Z~P3_*z>%bg%&IX zgR_-ws_Ko??(L)78ISw=25C~d%g?bIsQ8B^-XNcJ2E2s)Zy5!fwCy%dEHApRn#1k2 zoQz=rGF=#Jr2F?JuNv4apL0*Q^XD6 znZ~5yaoj<|BaCvP3AbNzt1k6{XSd%916mJ=KI&`vyn;OND-fl%&*1!M5~b9xzA224 zkNU#l;ij+W-=w<-N2kyR>Ur_&Q2w-Mb3WSx|4#tj5BC=gpfZ!qz8~_fWTd@c?Y8%u zOu$AX>JQcIjvO&@61K}l{iT8eoa;PdPn0e$KO|elss-KP;W+9%>9M`rgvyy{{C%ny z5|0Mgn&)|8Yex^+N2H&e6z_MFp7e1iFwz-y{Fw~(n{X6xRNqWLA@`f@;-&+rU~*+H zeUU#IZYaoYKn-Gkn(RP`+#UQPO(+i*>pu^aimf`vj(i%ovqs{L+9&wgvYkrGUA~^@ z&^j;HY+!#&nR8VEe%ohNeewMhb`f#;<|Z5=$UGYQ6z`qf>OA7x+_}D&$x)GS^C2ae zB+N4*y<8vyKT!tLIL`xXGkY&kuAPq7qE`LX^j7NaKQhiihoLwh$CirF-W(m&>SwewE?@xgX>0=GXtM zggxvcKqcgg9TpphNiV3@j}m-rl)D|z4Iq|c&}mjzx*B)-?a5U zv{mXx^-Lk1mxzBx<>`?q8>Pf{WdGIWJSJ|?8x{}~N?e)%Eszd_C(}jQy#H*_4Kz4h z_$O~=xTzQL-b)O%qwEU`yqt_)Z!Y>VjqA7@PX$nQX@IsTq4i55ED>Q74Qt$Khpvi| z4VL6i_kp4t)_tGF74>r0d%^3^s7!t`q!DnkY8 zQ-hH899%x_ZdrCcIe)?z|LvTA5uG}h$$#ITcPcADYqM7^Vtp7;s2;}n$NokwdTS$e z-F3_QuUUMNZKL!>&05xdbZc}0;URNs5;4O>t)QxAU-!zHgxHv#CQkJk3e{MaWB%)M zb5uTY(OiV6@#rtq=*ba9cK?~Q``#45l?`}z$J&r!am^?ri^Kn^HMnJhMDCQ({=!IP z+QQNDVUh7*lu|={W?{NG+IjIQv(&G~l^$2HSHIsjFX!h}%f(|1b$96pXU)Nb?ME(Q zYwTE?q|~Uj|JcDfqw8#{5wHL5(m5S;A-t0_JMH!e1GfWccj}Gadv46!6N0cHS0)k1 zb(0g1?L!#rGqW>g1Sk}b{6~%!GTfuCuVlJyw_F&@?~75J@E34q`E3rtULRbD)07k( zEA^V41PR9}-6?Fx8+A$|*!#Xh7c)%bEBZjAm&@EDzH8_1iWIDuu6Y@5uN$hb!V>#F zvdNxU69bTk@)R^?o7AW+tG55kcXr;RBdKfSCaF0A#!NU>Jqbo`C&_dJ3Yi86X~84Qc^w zvYQ4JD7N-rUv&vpv$>9mbrYd?`vqDelS0N~82~YXa8P-p^?|{)f4YrlRlX4iYkce^ zeeVA#1W7kfjt*=EJL>A@QIyKe|54%9ur?!0{FR(1x2~z%wrKsA8+C^d4wli1(#}v- z!%T~@3QhE{#fA#j&SFEA;ldi9XsY!3w~jKsYcgROrt6bCU^lv=U-X!5uN>;GvaD}S z?hY_2t}XB?5v!T2)W5XXAdUrxm&~R zPGZ)po;ocxdf<#Abmqht35DwB?%l^8nWr9{VuV_LxZ{&I*9ygby_W%@l=uT?poAGw zIV^z!}7tb;<_U0X*NFrUaGTra;(#Wz&78Em=}78f1g`fRV1L( z2LsQ!e~X}UXVyDORq*S6aWo)R?m!J%@sAc~P%r=bNT!;)QYZtn=r@8u5z~vy;eA9# z4&z;6d$XNR`>INr`N6TnFW=HT5*~!~wGxLL1Ru$}O&Nzn^Z3k)Lq|@LsH6?3*xmSU zV}l=p9;RtfF0wAuqwU>xw(4~0J>o!tB;$%Gqk4R(`JsGB`d6?QM)H9F#>Ta*tHTZx zB5^oqk;Rj`h@s#)xMO3-MNk$rStYZXC~RMd&^(3s)3dt%)bQ#=@(y{d)7! z_|Kz>KE*>_cyhk5dwaXIp}<3}m@YW$tOj6&1SxnRD;|K2=?Z5qLd3_624<|v&~0Pm zAekapWFe=Rxq1ETP`?Xnd+(OTA8NTg7j>6+W}4cFroz(43dpsNNC)W#V4lv^+*EA< zKHmn^Loieh#@ka>4A`-Je+AxY`AVV{M6HAz`;RONTY>EVV#=M%`|AGStLP2Gm+61R zt!F-G$YLa=_)M0=V2{a*1Cp%{6FpuJo#{it~+h@6*Uz$jI1EUXCq zXG|#fsoYTUrWTb;o*5`5V5m^PeqL)S#3ybPf?HGs!lP93z)U`S2t4q1b(9|E=*%HQ zGEn!opz|JTqVZXp#ccjF-kwo90)pb=4`YezM9LIZxIBjqN?+8K5|v1H-43i78_h0y z+Mg85M2);#;;`Q&`7ksfW}8Y+hEwjwB8gT=ZytS z1S4otUtX=y?$W^zY2T&Y@)5HaY|Po(om6eEkEsfOE>T67zrr zDV#%0L8mir*$)2CyeBJ`kc!nL;Nh_y3u^pm@G&zB@c8j!6>rBZ$l8)RkZijpjIZil*TD|pcvXhzzM7BwtP5W^^O0bZ>v5&B&sn_687OFc7rEgCO{ouGKk za_NYHr@?XVr3J5>+bu>;*_t9gsr{VM%TY;kP0h9%I%Dwf(U~%oZIh-qNu`>R3|eH0 zftm_*%_P$$lKLKUS&@WheK}70zp_vEVXkwd{vmT74gaCkpiq=QU)DJ`2IU09)(?^?*u|(Yj(3yQxp{^xt|PHf=7kQL`7iSxTk#*BBfOjZdL?1LU$Tk(dHLotFipE=@Al0I$g6T~roWI`B0v)+BU3Uf^KBqS)e3{K1#jf?Cm; zH*j(3uM_^FTPd{Fks#E^Sh{gR02Ei4C22vTL7 z^tMgjjIG>hL2s!&+xVMT3lFR9`BU63WPw|V5wSh-ctI}IFxhv-srJ$!M}Gv*kePC4318p9&wMv~QKC z&@eXD2oJ5`+oGowJt7!*x8xmDFzQx8H`fmE|3Og_ZYR`*@fxAK@qb2>) zDkF2fBSFMHq+DL-y{v}j=KUCsJ>keE5@8n?k?41v2K{q=F~ijYl1dlyLR)0V##17$ zf+*5cLSO6D1$@>}>c&oGLpy71Uj?-{eC*v?266o3UtY?7392Z7PZN5U{eJIcuhms9 z)6M0xjrr!|XP?3|6Q{sg$JP%RrZ0UKbZ9^JYNV`rb6W zl5Axj*IeEOm1;N?J83oq-U1dR_`8Zn@XO@${2K{Y5RhN!Kr9YsT@z5Xt?KPWubE#r zr7b&aU<9|z_3sz#A+~MZ znM7|-|ECO%d%9$c;l+pYc-nwPSnW#uvXepivB__?HeUqiBGk1u0WY{)@e2i?N}oDH z(x}ae1mhhsqm8*xU^)RYLSoIv%Y2km*DQZG0Ei}A>|T_2IaL7k>!XQT3`!qt#wJR$ zkY`(0mJ#;RhCBE&1_b_NLo{8v2$Aes>s1s!)830nEQUQR1pDRj zoDd`OK{PMOF@|0W<73gKk~+)ls|H+{b;br-QI}S2+&WNt`XghM~};A-4B{N$YeS%qFVW@ zuk43!IlFvx@`s@eJg<%FVxT3lwq*)-w&50?5q{DgcHU@r()(=CH95$Aok*s%K%ORu zo3D0sEWE9Ggx+y(onYybZJEt{tx9He3 zGWV)6=a5H{HkOHcK2#xA*y+??SFD)z`P3aUUx+*Q}bx(o8oCtfyM7e|#eiCCTqt&Y3 zx|L3-31KLP)(>`K%ASAyGe4KX$C&4#Y9Hpq!@-uMcLC9elRR zPs>D1&+i$U#+YIS4I}aC03rnCzQatk8kDryNkWK<(dWBb1EtVB5M7B=G9r{DwjOv* zNRe-cBdeEy9VGw5&&pjpV=!7BQ3$|76( zfQTlqR}W{ZJf5@4ZeYf#I65w>VA`q-TS4+G1Tn<_%;dgncj_4W6%-Gyy0a*QCwYOf zB=xTws2bPsm*zcOX@X&@wr06b_Z-yKRU)j;l~AO_m=YXyg!@N#Y(*Ca31vD{Nm@lZ zli9s~2Z@bl&Q$pW(9cd;gc@b56PFsssON*Tl;*hZi@@G z(-W=FOC{3VWmUfXQ4*}=^nKX;T|C3=kRG;FisHFT9!Crd$m*23et|4Z*|FO0mO4>? z2}aOWj8ftpRnO|gMz#21gXWT#jhQ|pW=%u)*uPQiy*sTVHF~*8&!N3xDz{k(LB~zi zsOwIpS1cKvf%9AN=zC=f;)o+!e&}>3ij2y(*WQ!}5J;sAjivDy25wfEjZlI)$I2<0 z@llX$cdCLO(6}mASF-;+R$ASvd=TYd$LEZ_nVW@jW%MS(P5*ooD9p3jzxPyg>^44I zzkJMkJ1BuYe`6zXHe7c|_O8=-o`bQyZDt{rzDYytr+g-=rED+$K+a($e{mX_>bX1S z^|Eu~`{$tKH!!Gaum1ePVWT7qqpTRBnKA5Of#H4x6tk8@?0nmRbggqYQ!abk3I5@E zsaVLq^Z@?G;0WqOh<)`gH`=4G7;P4Vu#aaD2C1y3ToKIACRPvv*$a}$`j>=hDL}_6 zMS(Dxh;^m(${e4S0TQx$Zu=c9PoL6^x zDP=`^^ShDpimYz`5_d~$9QO;s6Sf`cxiBpcAbpJfjYTM$@2btul-9rhM90khn`L@C z@(^8<-xy`@nb%PrXTd0S(?YnIc(hbTJ{{=;pYVtBn|LiXBl2N9vDKbo_}DTfCiN<% zOtMzF>pDZEq?fp{g*;KU6v&BABpq$#=2t_qZYSUCm5pa61W1BY!jcrDJ89++qJwS` zfZv%Kx;w9@(m0^m{~KwzSd!)C;P<8?pHZ$aHO7>)AqHIuoLsX*F_?PR#mX^y(4k7r zixQajKtDAT;g-|o+I5jtdX0-FQZHSoY@eLe6ZgP2#}jv`E2=(W>rES)$xgkb04GB1 zy|zokBJ94v%J7(6-VY2!|5D(n8IBVk`1iDDamcJ0*%=t}CLm$?X)95Of>eh`inojZ zGfUHOVZh6>z>uEXiHs3aN4S5Fr~@{1hA)K39j_mTuN}StdkP!suZ_A=96#b{Dsl8) z8PdL{$l;pt0Xb8aD_M&CFXcOh)&%JzzhX?W;iS{+8|qB(Yv&r(h+f-(7R2u(Kvn~7 z=32`ZI-1&I>T-SPe4!I(gI)=BE1q=bPG> z1G06yY#jl93nN3rlWOL|6@7C>U|KPt!1zIhmKA#mQ>RMU)Kb~&r`Md#II$Cyd_=i_ zrTLlV1COpnUhCcPI%8<-mU$@2d=4hz{CADZ1(V5@W_=qL{sDz!j?D8CLMIW#_lcHY zH|Sy_t-*{4Is*jG6GrSf5(PZVeaP=w;Vh%M4aappcIf?yGsur|`0t48KuML@S1%6W z`SKCY#L;iGB29Z|OO3nP7!q$dqrXV?M^H_KL2KqMedc3ApT{^$86+PIFh*f)$Z0J~ z)2ffKS1y&~LKr_L{yAR0KWG;iSjKkM?g2==lh04Rn$hAKSX+`R8b{th*_tT<kzB{x`ujqZ5xqXtL7g{xwK>_8+|C7@^HKuT14TBWO*VyP(i%c|gIpi3=d$%sZ} z^DFF@j6yy&9^a>mW*U$)6w-tobERHj(Cfp@e#U#{!FF=C1O`ng7Yky)6t8uIW1-d`Vzn8}v3OkSG{2^K_Kpl=SL%4Iy>n>+-x;1yn#>=&tw*%<1W zIxtNPQN--siUbd6IkiNX|N_A`ZVCu=5?U}M!b3+@nEOZx&kOfb2Z zjXf{DLR1h~E=Q?{=wtd`+RagjDHq-D81MZmS((9zXiy|n8FN|Da+8==D-Nw>x5La> z+i1s|8$b3I(~$xBMBUo39)A2*o)eQK2R{r~M3o0YyaaH1f@cM6AOq(YMCvt3_^cAB zc1J{4>+AdVaq{(r=wcrC5L{P6l@%@uz&=-aF~u2A>Y`WPRmKZr=jd z$C3aoH68%_yS@T?C`94>QhffD7jY858wDSi^(D|$`Kg)sF4QOeL2Y^)KSU`eFQ?DJzgX3A~bMvdm!?LwzeaJNWEKtC+mCnx*zPg#Y- zpn9PjI2;VZi~MwObN6)dc>j3nWk(>`^Q0kCZC3hlb0?6!C4DK)$f;T3YmE_bOy3-K zBGLO%2elGEWPqNjw4h{_D4N+Ct~_5L9Rp~JuKEP*1;_fzhTdYJRD#XV%Smx;ZdI~? za_AdSOj<=#W27Vk(+NMRF*&RK0pNy{%oh;kM6w^71C=DO<^_-A;$E zoOK}}&bs1sl968(f9dFHXX0gjxOwq@xbb$NXX%!1?w-kF-A4rGaQ*yC&J59kFAVf@ z#)EA$FBw?7m#xDHDMoGhog2NV*Yj5}&g=5=tP+ z*z`waQ0T$DlpEIm{>ra9kbM`KVv-y^gMg-4@u4)xPR)GS6t1`0a&UPiNPTkT_%v>c zhTf=weugpD@~MUO5Q-`^PJjAWy9$(b&KT#{vXqTJ4a=GABw?%hUGPY&X-!!F-Bzfs z@c=$=&eoT)$~)RRjTsL$F=1|QPH{TI>%`f0L&>HbkhJA;*-?SXR|n?4w^O-F)+t6G zg=(bbDzoxZlWs-cwo%c%R}TilW|pMdKp5|ViS((U4=z{E&Ol85cP`f*S0IH8C@{X!ZE?h(U-&Msy@z|qlv ztv?zAwx@Cj5*-l+bkeeU`+9!tFLlyAt;Y1@)a16Wu3LN!LO8x9eiypg`t6vAhm)e* z{cu_lGR4J(16^FJ%BfJcX}}+LSbl!~*5=x^!0SOaji^=Obto;BaD7o5qRw%WGb}b% zO9(m&FRJ}wyv;w*r^BSgeJP8>M)?}@Lw9Wh9ryGa7YN_Cq{TDO!eNXSl{d9cehwi! zTyxsDo-(l|W#WnEjvUVHuT-M&{xFD4=Dq`h1E$G#4uZBD>Iu}wnt+muKqPKT1~uwU zln1)#!ebmE>{CPG0?ir~~JhxUN8Jg36}j z@QJW;j(y1Ji$qqV4f>}s>ImZdNY)Y~32dAzRY%))7gcy7f^U!dlAIx5`lu$8NKJh` zk0k>>Kn{NkeG=c(5vT-qy(kZ@~}JV+zd{@OYxaz}K5vTjC{)DQn(_q%EO4GW3Kn&ut_b=ETRwU? zHH>Bh?K#i8N!mMPr$p3@=O(Ue{?Q;818hk83*z5+uuh2yte!^QR3a#@&yOxA>{mm= znbCT-$D};0U%8+&NOP{gtavay^9Z}=hEu!c_o^J`1%(ubVMg(-S^oR>CZhz>=!+@X zcpw#Gi&P$v2*k;bhx~5sYlS+PMtc{igAHxTwrkc5JM8ehF4`ufe`H~u3Ak*vlHy>2 zy~xD*77<$iia5+Ob#(+f8!PrR5fvI<*1Ipje>OwfHyUnTP3#{FB?YCMxu8q|=GMO^ zjGEP7XiV?{eQWtGTerg946|bWp?tW=xmAfV(#3t|AplI&;qBH$7T$oX^il87g3SIZJBnZaIM_3xCPcjx^Jf@ zq~^Cg0}--Y#cX@SR5}qG?V+eRT3T@E*XE3{nD*Ab{wtnkHX^2!WHeAXy7djPYp=~e zuMafHZ9oHDG;Q*>eADC?^+y=zDkV=p0s6X6$W_{4jm}K(9#Go?L1+{(h> z1&%_n*XhYo4riR6?aggetYe#~LxVgDYssODIkXlAzk1uTs{Oxo!7ujcBq>qax_rl^ zMYW{3(;QsFd>Lck?Fo9=CF+?WllpaMi^xLpI6Po#kvz>TrYR5Rd)h$ll{c&g)BJmM zfrA=4ffe=TN7cYy^fxIK!7tTfwd#ETg(SnJNaM}8QZQ^JcV91qEe!dWw$gGPQED== zFOOjsA;YJrEMsb9oq8j=)-07Pdsm*CHKJ`&0DEKO&xhy5Gu!l`wDv2K4M#}g$N1Yu z9AB1*_5J`#hgC})CPLrXwIY`gLt5ZD@Q@KSC?m>!r_8*q4vrk#W>t6uxgqZe9lH>+ zix=fwrc3|2p^jyw-5k}+SHY`bc?=?|CVucTl$n{3UDrkmYoR5+#iB?Bh$(Sn<1FEg zihkFrMw97P#8x#(lVglIKTY!ETa4w_oVdh@Q$pG-PNRJ{U}Iz3Fk+nk131bI@_J;IeYYh#clVXprD<_Jx%WBRBib~^YdTk47bRQV)xMsWPZA% zImGU14@?BfFs@?H1c%d-h#f*nKN;Cp?c(u1kI`J-R*H;v zn)Elf%o$-#GM2uavATxo#|dT^nB&!{Ds>WlnS@rD8CTz>UH2Ikk2ORXsc>sa-cQUtjU$flugQ_)I|V8>feO zASIIPdhtTgV*=K_3`9aDz&KtU}s73 zce@UveK~l2xWCDI?yf&|9u3amc18GZ$rXLNdpwLD-%l?O4{sm0CT81UlgHyre>kMx zMctu+Ra|ekx*qx+ox1LZ<(>A%@y$wr&Fi7%N6NuR@v$R9Q_j&s^6+qDa7{r`9?%}W zJz&qVdFjg80r!ZX{aa@IFvbZpQNu zNI|7q@2$Tn4$MjMEyXAQA{yK`(o-){c$j0)H(Rf+Zn1{?SMybu4bQ3L?)$okLjO2$ z79~eEb;qDqz3fTmhP`VOjwXKlv2f$ElO!JQO^LflkEw~@SvPicv|K}K6SYA}yz2ym+$e=xxSbk9?q(anyeW7bY}h_=YouX z-Hi9Hajj?4p+kM#VXBnpZm19!6~a3Q6+;4^;7I{o&m@%5t9jSPErb(-}br_asA{>C zr|8rZm0|a5@Fh9z=b>+6U!Y6*rvEXG*jWE4dk5YA6C!4a1jGwd%&IqVc}QNIA4qLa z`6VF_dh%X4S1CMCB-}>j6X$ z0nE83P2jBE#>mVp?npzYeqU{9#jcJ=c%yF%v0NQvscUO$N_HD%xA;7}>v;P#6&%hO zl)+5{T8GT?K6CBPvCqkoxuBsNQJgPw5@B-l{aBb>mMUtJP4+ImSIYa|n-sSa;NSud zz37-0V4|cDwP=0r{$cZ{K^o$(10p@Ft*uG;P~&XdgsbgH$F09|Z@)OQ<0Em;lA}bG z5|SC@l;!d<%uyKKau5rb%ghVo*lF@T!Y^y3ZPQM4Qe@Z&T~M9yvEn)3k6oEjrN}F` zyjwZVHJ6I1;0**60}V&CHUY`rw_B)s;YA%_2+4Xn9JhkWqluq>!Co| zDKRt5KTFD=pk0pTw^Hu7lzURgzSI3l^SJrkA+zmuBk0^tyYw4Y28#HZ&)rAOkj*8z z`M!+Y^h?g~hGohyf@Q%#O3dZXyQ~qVZQq6~Hw2|b>7=TGU}(pG>gIkD+4E?KFh>k1hRjVJU&^5x=p z;7~s#LEwD{soJcPYu7u{A|rqQtD=!!qD6p?vK9In?iMw~tfV~nsw-TItM%q}mwmX! zW4rWCp!gHzA079rut)J|-?qqhy{hk#@s`H}Pl-R3j65&a|Hk= z0#%_5v;ObfCzg?^)LkZ2E+ZMuv37Ge6GpdZw+YjsjRseMg@QJqhT(rpj-Dg&)DV~d&BKtTC?Fab`0 zy0S=c^O~uNHYE|h6>}ko@CF;*Kq?(>Wb0(Aq*ck!P4sO_tqydUP!zgVqXBLh+o`nP zJSbkdNgW3fBD*vOzDhrm=#JkMFZ!$+(ej7IrGR8JhaZKn^%RGNKCGrD2OpS@Dx|~8h zxk|Z!y(hcs2a8NP>jO+7bsRtk-?F5wpJDCMzx5htyxGtYPga>bg6n%-WiC7{8m6g1 z<{CzSeAg%*)2ZSCOprND59u-`U`Bm&K2rjM6sR_< z?n8HdiEm@haF>7L5TpJT^d+fzxmjQC!j9Gk=qN}bp+T)S3Mq@*VN_2oYzKN+IXZ~} zdByW&8h5TO5G#n^-Kuy@33)gWt0t{z#<-yL=T*p;Qd;T?9ibRk(Ng?~~Ic9c7!~Hes98(fdx!N*d zICLy%FBIvh3J+J}O{2cZ9!2H?p@Qa5+m%8bSQ;mA{$7QjBv(ldI@Px@k+Z*+7`uXE z(-VKBJ?Tq3?$Wc z(Ho6y`Q|ov106#~hc_(y=-zb13|NT~(+CIAU-My(A{%VDIDyjnOPJ}s?0sLZZ+t_C z70*HY_BX=nSdf3G)Ab)8XuLobd|y{DcuG-bajmGY3;d8z|>;`LM(gg;RqDL1)%aAz@S+08DC)@^LX-NdI&&^l$@3L5(MLK37HFe2f2SEb3voFiOhvXowhkvAbbjOE?U)<;ET)=9FtcC zPN+lr$ux*kgOkj`Er!aUqi;XOwf*3Ey)en3?BcrOO2@`I6sPWr#ub8+jDC43d$dpgk=2{+gNA8&Ne)uQ$uc$CqVGO^{BV49 zcsag4`fxlxy=3ekobA@`-Gx)%TD!Y&I$Qg97fwK9-`%ot*y06-6V87qwqgnQ7kiaU zzwUUS;lwtV`wW;1wH5MjHk|uLxY-s9VROBII{S1n{?GCF30 zbr=Vy(eiXXw}dcWss4YnKqDzK4RAJtZoaL$gqDj8n+h6{DJ^Xf^j?r-&ImHng9*m4 z=(&v7407l}--qd&PH$*RZksMNz?e=Ly|pQou(xM#8NqVbcn~O2P}p9)?&d=%iiiUJ zD$l1GE{=VL#@tYB3@wn_uzoY4MHU%nBUzBOX@%mGMWSiMNv40G_NiAh-maG_8KM6% z4yMYsZVKT5i+0V`gSXN-S&x@5=bV%RuZGZxUY^eFS7Ce1=fOlPfU_GRYClUvg~nR| z!d=6uE40)fX$whOCQ%&pe_V$bK`Ki@IJQx1E$sQ(gB|p(Z?`LZYe{`>jlNq;>tiNa zw$Yt_(PHEC)*64(=j1r#T(;Mo-ZAI0z3%jFrt-j}w$>{J9-h-HMSLeoDzl{U|svuJm!D9o|D=>nvahHQKG20NY^)-FtHjfB?LzW zSr|lqx0XU;`jv)W_wfF*0wE8S`H2FvqA!^jd#?2Lm{k5&TDvvnumGkj&bGDm9_LMQ zkeM0e-8X-c*+{~q%KubOlimdd%y#5u_*6Djd)E4XqJo`3?yBUVzLsr?k^r2{2KQDe zCZ0l}OwmWhidde)p{M9T3a1qMeE_XPPxpCX_0w`5(Bq_>qF|@!{KgWzcx{A9V{An) z(NcUm&hEh}C`{VqmX@++#WM62J*%iC#noc|5k`M;0a>$3dzHI?b5$5U7m1NvMp6q8 zkl({hE+fm^2TlxyGkw01_XwOY^lfS@9`x0=)$aM*A7I})42oG2zA#A|ES6uwbf%4! zGMPYHJcDqO45tt8AdoY6mI>wxo$^apY%tyxRczPheyQ%h#(4`N5Jst9tUN;p`VhR zsOW1K)K_tXCxJ}~NGPIHe<6{l59QBZ?Kpo3+t(~%Th;?N(M_W+D3Sa&x^W|zC0C(m zh1xvKt3sU!hg6o`Y*b`o=g;=V0mU86pBS~xFmRG5@e&!OY&p$A;<0? z!gWWjz1@az1rqiM7^=oX3fB&7GOm9Bb<>)GHH0giT4kIDwPT^JTj-G?T=axs9w$X) zp@)^Uuq8O_hhfu47Gg-gRL1yR;Yrs}79t$Pre(*usjfq~(yF~p$ASAojIN6r+OiB# zSil6!0IR4h6k(0P2J{1P>~2gu6dbT5+3uqk`vYT$?AWsGEdA( zfpQDfs&a4Em1W7Xt)8Q2%b?tqsuJ8&zGMa4L=|x{hQ*5YhAsyNzyv~1>qBoE z-1;&>Qw5j2L;uUoQVaPlJy&L*3TJJ;=5f`xFPlic=s8@~ zjch`7pKpPyNbTq|u99eJUKRfJeK-%~$2{RgZbbj^Y((lh&tM~`{_vJzA4oW%TE82F z6U0V}#r*m=cOCP#1; z0mZ(b2J;|?*l-tYBU1grqp;M7RGUE8l_Te>1H-TnV|jm#;0gmeOLZi)MySGrN9M3@ zt+5eYnc&P}sD>sja2T(^VC(r-e zbdiA7)-!)9HFTmyT~)NL#|>nACgoKIFqjlh?{9yRNgrBz!pZ-9Cf$~g55lS6{-YXS zZD8X|^Mirb&xO9la4A8Dd-mBZk8eSlP*tn{IUt z#$kWabq$=7x)Gyqima_W*{Z3NKjMeW#PhvG{MJ0kLMNWAN-a6Mjm355Bg5A^FpBF& z=rRREaoq-*w6I1tg?F}u9jV;w2|FXWtfBFOXT;rxOMmWFf>#U+nBJ46PJ+H_ zbylE}s=uRunuE?h;;-`~YM%kM;Wu?fX^PwWda2-c`T+eHY;lTB6Rd#e`2=WU( z+BF1uMI5D@P!r3*btwIe`<-ZMWt_W-WJ_%`a&58wih2bb9gaK#6P zj=Hdx-0VsYMWE4N)CbNTB|s;@0jU^+?~*z|6=iI3avK%P5G|xij*^nk5Og<_TT#Ca zb5k$@=uVvjbZG{I1yMB>jA4HXRY6p{Uc#0 z=lH%7`n)fHOHh0p&V$SQm84V-wl|6N-4V-AcHaE=R<$Lx4F%zq-B^G5lVAP2k~cs? z)C#)#imrZ67b6SD@q}Lp)mcAb{KCS;DvDDtN&Qp^fQIGuOFRB44d;E0#GHM4v7SuC zO{MPv$c`*><(aP~VS)!Fa~!U@f3-vz}z_2p7_a*>^f7Q1fx9Q2tc<{II%X6L8`$ zh3IJvM+0;a1e~3Y0&bT8A#Z;$aKfcUzit6qTEKd! zj|vwLTKn!)^>pN@{im%G)SvTTS@NyEJnU<+YQ^@avL z(5`eMh0q;^cvlzIRLFF7m(g$Fl_1C(3d z0?o#IOOcKhYWsg%=ykPMGXp#ot`T&WO%$KRwx50n4p#0R;SLL?UYV2zS%!)O8 z?N+35c&vlEVnyoaYRzq$fcYpuK$ZRTCY8UHjIhd&^{#eqgJ60iZzMVfrWrt{Z*3x@m3pA0D-i2C!jNiUI7N)Rp3}y8xb&HGkgwcDPkAza6Q#q30YnXqwdmI#D=zJWRH6u@jcN|!uY3+gp z58a6*M1$+_o<#UwzNIJ8%ui<0_r!V>ks9|t#-j+;@s~a-(G;^iiq!Y=L!eVax6H*Y@X!&@s%&^T9#$t(kkkU0VuG}B zOmu&q(=FG!B<{Ckji>YRDMprFikWG-QkfQiP`7jv_dm6ICIouRQ%Sh4jc@ zMoSs|KNY5k*uC$)tDS#V^`ai&ioq@vd76L!`M$cRlE(KHaxx-!3x$x=SNqj4xyXK` z_k>J5sj>2gcuANPdlsU`;@jCGe!JSCa|5XrbH(h-d17~qru+_BrI?W%_hJF#&=>)U z5RS;CeiiS3;gZ3>l}i4*jP~m+3n1I%cN6XBMY2KN>QLaY@?$|v|7adw+%HrAYyW@a z`S|_ue_bEGdv`v*xS(?dsGYkY@O*qorw-KN9Z)wuIXwPACy!o5z$5SU@MQcD)df82 zKK^ue${>$Xe88jc^6Zwb_^}a|O79N2Py@!Wtt=+d(R{NfZbDa5)XW_K)Si8BEwh{nS>) zUhq}nMM?THi));J!l19U$||S&E;xzd0Smm~yaf&c8nLV|_d$HadNa(_fTGKRnj;h( zD?kXn?$l052}OZ}Z{IRC^3^XNMG|5AKZE-(Q9MlwM0N&!bR*WR1IN=a)y03V?}B6! zhpRM-->$>?l(lo6h+0(6L<5W&8k)V9pjw5`a;OnW&lNr-Ax1SKZHtACBKC%l-QBpU|sh4YY$Na_p55ZS|v6=_cykgOZb)F;Xt8Cm&bmL4P)_2}WU*;bH2Kw&h$)`DuHqMhAoX}GNX+19rnGu(6{SOA(0Jko-xRbSaA^2r=B#$moQT#YQKRkc;r<1|(73ZAK z$A?vRTndwFW+BgvR{|=G7RamcU=ppFp4VhF#8ntf0DNd@<;5;njapq1(LICc1h1-NK_p zS}}^|ZBwQ~w)m-n?8HH>TK%I=h1(cVCscSZz+F=zPuI`T)w=GYHm==S39qVL%*^zA70dI7A-leYC#F+ ztJ)~T21TeG3;%KNYbTam+9FJ3cgbvtKV(Zx?iV-FoW7hT7%l z)y_l=8~gLh^3>b?OQ0LC)R*bUfltrbaSeOGo7ci?QS8X!$=eU(>tB94z8qhCJUkk2 zHtp&v^}MUASpI8i_qGh-%)u5Ohy{hGXQx7Re7r2F^V1B8?4#_@a5Hc4(Hm%V)PnG+ z==N~X%4L7ZEr*+e!f#$~*wC#kxSd?9bg^t~xQ(3a4S}1&0jtfHX$@z=Gf)agx9w5s z-LiyNdr$gb!gQum!mF+ta~`#kPD*uF{zpy!QCbweEmwx7Y`pNpd2j0luD_LKVf1Rx zMh5AWvaJf~mqI1=wqH|E`ZscW8z4SmN+=Zy+ctkZ@36%Hj2)vCDl{CnB*1Xk#kb(Y z=8?`RR)7vWdx!4UUegZekM6K%1;2xbb`6Weqhif^PI3g?R}MO=r`}jYhbF3*;$8ST zSbG2bK_=kmX%WB4VuF1Ttyb#% z<}H6@-zTwvjO@IIW9z4oR2vb`&{8_5IwQxQq-%e!a?XsT>hIbT;z4*yxVarj6Fmb3 zZd=!Aj_AHP5Q=B^*PN|(GYrVoP4j;&q=AK6Ro2J|W>lKOE%K<;WL%8f7}Ldr zyW|;2`OTY1k>d5X^L)KYzyW-Q8{S#=A(g53x@S*bdulv2!QtJa5ycSlb#9&ig?IDk>HQqE>j7_SGuJ+jQW6h?nU z7%V4&_a*jMGV3ypa^3x%O*dpZVM`BWpFW{0$RWN1-cxPcr2el$J^Q(Xa9d9cTK&7= zH*=z>8DtbK?ku|6JUY)w?53=@>Zr5L`Ty*_{a4#avOoN<=wyF!5-^xdGRfW_o+02& z*a(5HPJ$clD>LtLsxm zx6eJe5#Pfb=pNjJ55;>24V0b#UYSHr?Mk>)pOf`mS@h*%mzLRLYJF>~_t35U=*1m+ zer^2h!-l|ED=P`#yzc={Z9RNDKY0L(3vsG`$(Lx9X{TZ0FA^S8^D|k^OS*s4`^|bV z%K_hCR03V6B=POyO16mpeIvRajpxZsoPsqoB^t{dJ>^m*V_nE1|HWtmo;_#DT`YdJ zm<(>?$xSk3&^Ym71^Rijhhi~eY}h;DS1x9WhYe#H3u-Os&xyRT66+CPjT7l14U_9+ zl8L=Mz85l2@74M%GLpKS6t90Vjb|gZ^g^21MwF#;kU>0QOg1HQD}+raLa1RXA9*OY_yU` z8DtZ}tkXsv1qH3|o0`0#wiZlJ^%J|Y2duJ(*(+EhM-PkiUPO~+IGjw!M9@i6hIx@q9SjL1I{d$6mcEU%L>30r7FT}@Y(u?nHu|@-n4?2> z&-&oP?|#t(hUHBQBq6! zbkV}@^|*g{7atm(#?`uy^x z|7ZI*SABHHd-#9G;Vo#wJ0Fy6d~c(@U5Je`HDpRauZ|+Ux`q|L=y$-dbbNMLaQoCS z7^r9qe!KF%EN0yNM3XINyc?lROa5ZoUkGl?8BA4&Rd+ncH-UL+)eXrK6)I5k3lid z`g_Mm`+Pa+#YC}kYEF&nq>=x`s|qYC1%ZC`K(G`c`%`8@FchX8^QAhr077x^qBvDYs8}oEsnYkrlHvjCkc#dsG zw`IO&?^RtyRFc#3wz71*bLM!<46yof19!d5NR30)IxZChuANjF<$zJOjp>I(H2Z!w z`Xqlwi;PICnI>f7UfpHSEfG>rAn)6-3sj+ z;I)2>1Yfl_Nl>~aK2P<&!rvCx4-wSZG4OvPAgVRJNR9|fz#=hr2>i_0V!)pOFT{C+ zRtQk=y=&9FzzM*6rK|w`nXb^nyLjFKrlot>KRes~Q5KB)&_C~A?tM7uADv&Gecam< zzpyf5>=Oh+Z_}$3UxlBX3#=vWlvS9cc;2_W;Ig615vx}-P`}JTvD${^CiO85u;hOr zh&QcLN$Re-1*=QMSfN&2Nch6G={-S)5r8-w#Vsnh1<^bs`<#$)pFTVbjX}d^T;9>e z03o$W49m@Eqn(3qNZT-W@Rcvl*cnomEgtZTn%S#=CXDTaFMflmBYZo{GlDMjSD&7$ z4Saw6@vQ$-zb|HrZwTT0S*9U0WbS_e+Rjl=_Pn-lgXJTY%)Ea34rS6O&=AT_{ckRQ;X}C&fKGk z_0+AnvRRc9ggAu1u8YV*(~yU7xR`B|1UkPiUCfWK-=>R+o~H5V?4M*?Ap%_a2Z(Eh6J1o%&xR$vT?U2D|FJ%fx$jOj2DB;)&|?IaP?V_ z?dot#tb5ixGx%>@RN-2lhk}2qUP~VpTLFRRp`Z)Rx^D&Eg}M`ftH+{FH|vW1*>$Ux z5H?&LcI`$1uJqa@MxFmy&?7>`O;811$rBFOcKr%3h2V0sU(=-!s%9;Hfmtz!N<2)z zEg~w`>ZK4|f%c&r!Q2wK3hhJQvB1@2G2nQV<}&zRX~2bJgUx?ATr{?|`<~M7 z^1tsv)s-dV2wWd_?Uos?4U17efWsKlJi~Qk!>J?-`yT)G7F=caE56=>Yukp?gAh3$ z#=AeBn=ZJ*?&G=XvXs&dwz8H2xg1L${z}MFUl(WeO>umUo2684z*PvH>w&nPs_#dC zF92T+mr z4}K44sYm;;As$P8*>K1HDJP848x-upYrA*2N}k zX4-W>Ewx{LE;ZMFooOlW8g7nYj@jCe%9i@8kKn9~tF1~mD=>e7Y>n{7E=mH;QM&;J zOCi%oaZk*eu6Dz)meQ$T_4Tl&U~8aSwyluo@O4n#M+6&#(NYPu>4>1q6mc@rEcHy+ z>I%bTIli~^ZZym0>%Tv<)ImkQN9hgD67jhq;}uHhE!I1qmk+uELBjKpl-++;Bx2b+8k48~2ql$JODEdwr%hX(G0yxo6PptayJ*C=aYb#7P-M5CrL z#(x|c2bSufo(E;MNDp~WZ7D~}_m;h0#@la(IcucjCRm<~*d>hXB|9Vt=p_R;`E@U* z{vjSZ_*2-x>7ZPYd3eWm31FIAJ8%H|$*n;Gj~*9P*Vt||Osw6V36#?tc8JD zWb}|aI4kWy9E!>%MRteOZ8gYyXi}FMQlFil8*6k0b^rNk{FmX^g9kfh` zG~w#xa0C4?XKPIy8M8YKXJds(d@W>z$SSICq{@F$i6`kqmQvKsL!#%=#gqRS((5rU zo`_$V>LNe(<>CqF)mV`TuqEaOv@+ddGx08>Vd7c1b3TuP7XF;?!ypTNA?~?ZU@93l zmAJf10Q329TZPAFb8Z#j{XF*zIkBRtnGE!hmeU>Rw6o@hbI@bxsP5A-c9KTvBx!2d z2FZU(hv>$RZNOvb#IvGE@Um6gl4EzcDjVF~jSZ581CT(7pcB8pU4J+#4o!dQ?shMsRK;)I?N;)9>uzWCG~4f=?OpC3 z{`!bJ+9?s=9>0CWUF>v*_tEZQpC{0OWxmBD`+mj>xj8LW$GE{)#4bU|PmBu$W|$<%A}b}(y|#9zFu9S| ze-xewjQdyWKU#?-x@!T!tLmHL2ak%)@OvcPN4;C_f$NEGx#v!Kvks4~yAFTVnTp5b zccWxH%+99CKs_*E7gCt~_hbKb_jLashvM(x3yQqnb0UJhM{K zI86FadENaCFiiNgz72hRnzf*h&qIH(T64|SBlYEG??0H?NlnNCH=#E#6CM?t(8)VH z!^}(M**Qz^lJ*YIFzJ7?QQI`OY`o^3lhipGQFT-rXpC0y9$SLFT;t4H*0{2bn8wRVl*EQAqz&0yHh{ zTqrz*8uCIrZ7YAIUEVO41^M@mD;(gm0P_1v*9DyS@xLSh^b=;*0A68<@T`c;}2q9iE3t$e!W(v0;KegYYno`A-lohbhm&!sX+t zsRnA_-*p@uxPg`F?1?`7#> z`S4DyUU}AfdAGrY*9+#BS|S{Pv0tNwcf3S9kPY)fEpyXk8f``q-DX!(>3W+xkZJ_F zzXj)@mC%2TrMqP~YltFC+N@!)+geMjO02ce1f7G4+3NR!tp-fn^f7<+D=O%du;DUpDJ*(H!p3^t2*U~97SYEHC zuO)vE0pA6~KPDlzR!gdrs}-XW6C_nDH+z4O0mm16Za|EY!6fbYZrs=Rwz8 z8n3ghH)j+!H%!v#BQZBH&oqp~4KqHyu?T-AZiaKXVTvWv+>9ol;_)ay04jVB>2t%h zN+iu7UCfWK-=>Snu&GNChDQ=Tj~va6912GXEd+A6J;IP$O?GyG7g-}ZSC-D#@ea^o z6C9QoWkw_6GKN+F;K7kz&OF$*e{gp4VfWYm{-v^JoSA`1nqjO7L8?v)5i-sH=O@jG@{*`~uiG9>F z0UeR>NESd3^|>%13<)SW2Oe1m>GXadeQfPCuYyBZ|GeG2WcV)vhtI@h{;cPctV`vW zW@!{9R$w>@m2FTo?FQeg(VT#j+)`10O8m4?_4Mjr$zUEz)#-Txt{JcVm^Ifh-_Cok zVFI0ft|trO3zM7FTb_+Qvaf$;S@)*5OtX}YH@B@+mBu%l%;#1Nd@at4lX*11p8~MW zoo33-K4zL#&SMfUNvltJla4_(#;{mNt~Tj9JQHfteQw_yryrS@ur#2o!yQcH@^5m2 zbt`KNWJJ8ftdgaPW!tL+_?q%y$5|vxzf4A?7Mh&^un2X~#KNNc++u%gYPbVawi?bY zMaS~PMEv2#DLha40L1ReDR`eBp1&Js0ftp!Bcj}7qMSUZn* z%~MI{E<~u&4DpnUy(uwR1prS$Y#_{6Gf7Hw9zrA=Oexwyi{tAA>;-mEUL{Yb* z%GYyPg`|96E}k$Hg~WgKGP|O7ikaRpHKkkZcV`^UE{#9x+Q;@nUHh=!y@j=r_^lXb zFLm@5migP8Ik(N+5`X{xJHO__Rh9aycNqp+yY3-re6n?Vp`} z6^(}bhr0(KzK%x2{N~N;>oV-$y?Jd7hC_634sZsCn)uQe1rxohb)19T%f{Ao(BZI+S3(o0F$5EAvt9rDURzcZ%!Y35MibjHmzRU< zz9r;eZDQN(Hs4JZk1QgTHrbnl`Pi1b-ug}q<$K-(VteP(r+O8KXH0E?C_J|PZ41|a z*lxFo>!|9i;;w)DuuW~fXOxI$Aujs>DJYQUn%tMHnQg_r!ZoFZX4YaXm{UtZBiGcf zE_@g>+={P+Cfn9#cp@P;%>1HQxsA6L$#D1X9!rQ>;<7I>26~-PFt>awj=rEc!}L+v zST~h*yhAAr1?xO@!%}~ouN~Z+jIi3#irWVBburqJ+{J&RP;Lf^gzKpteJOXR5^eL* z4tn}o3)%rQdVRG6X4*EAG*(I?xfdiAA+};|M@4c5MyD1&_D~Zv1Grr^@h`Q&?VJj` z)A3Cxmybl!^;8hQzAEUBs%zH{EDSeYJp)5~os4a_m1ycKFFOgvewD)qPEJD8W1Zgh zI&y;WRNH^ZnN3rbr6Hk4o@APmWb86?C}41oj1*AI)lFx8xgS-WBTwy7{xe@p3aB=V zshwg_PUXq*p}AXGzST zSidspjwu#W!SYH@uf!8c>t)MLY_f`%`>mEPXYGHQ;?rdW&CpFMo_TXGp3x+tJB^Rn zSCyW{SDPKLbUsvDR4EZXn-9eeMz}t>tUH-mV636caof}`SSbhZg+~hBAIp2`zjWr^ zD=1+eRHHWXI-tt5^f@3D455i@D9NfC^gj>IFL(ETIy(O4Lx2Cr{$c; z%toKYXn7g(J7@WEhmEw7^U>v(OLE}Kp*!X2?QCwpsmtRPb+W!C_JGuwVFNEFHl764 z7fOUKVS8D@Pp2GIa;-g0vc-75T*mTG%^rUk<}W%f(BIIpxDAz&!C82EPDZ7Ky9!pU zHfHB(t&n@^Z32{Y4^qn*TvJq{8DdzRfB90AI$rYq$9JR2@SFcAXT4XirTCD{4Un4f zjk&Q_=Ekzj(X&TP(Fk+)2uIgg<|GUJkTG2y8W4w&4& zWF$}j#3&aRiizQijVM1je{pG4y6O#gXS4X;0ese{5ukYWw7qmZ7LJ0%6~-fduTkMq z36L3-XyKb#0>4cF4ujY67Ir=#;CvhGoV{!=#bLmQ5<=Iu?@He@9!;{JlKao;Y?ukT zhN>k3L$+2x2*r?Ss4ol;j5=LEi;904l1(F$n^`QeCX#rbMIHI0S*+kEk_iRT{5C&@ zKaH-_S@fSDq*omo9{86oT~O3Tr@OWVwLHtE%FPDRAmxP7c1{oFBt|GY?{w)Vj zU@}R#6=6ZC2W{Lg2?;n$JEykc^$+&a>3!SVodw4XHCnw9M~Pt0NicsUg2^WcCGukH z5(y}{MbWwX?p5irmY`i^h3O)QC7@H#?J{^^DrVjrnCW)8+J#V<5kk`byoqU`Wncj* zeifzG7i`^>4f4G;$ZO za=>+q#u2^ncliwmB-r>*{8|!J1a?uH+A<@hn+gAYD9(B{THm z$&UWd=R{q&Fl2vcp=UkdKEQ|Bryi~j+}o{5+)}PVcQGA`=M-&_jh?e!f_X#@DolXV zRMuDkxq74X|Lqccpm$DxHLn1ZyXpL1lYlo?Eq;Mn=72V;%^U)>0sKR?nxl`}E@-1# z!`VRlZZV#ZrsHG@+{F*_lv_T2!>#40&1X;m{{HymS^s~heqZ*hs-yT0N5=xEAz(oK zr^W2wQD1DL=%>Zx-x|t`|L42{uj8>L`ZGWWdVGKr?u^$cvkTG<3B7S0?wCg*b`1gn zxs}KTcf>=si_4K*r=)k|Oih?%DQrZF699pEb$(fW{Ll^e=#bun8|ZoGd8519xk24l zm7#~~Y*&9p^#E0vdT{T%fY9g8hAJ!H#gpIlCwi>prXJjA51ZX&k!45aV_AOrf|u&l zgFEx_l3iN&ynAr}K5l2Zns5z;u$H15-Q`wl#xDKRgIoR4YQGrs?^p7r2Y2raQuC$f zSAD=fEVgtUhk?*T7aEA3MJMqrOR|DdAWYQkU^0JQ%)dxlLK?-zFQiskvB*I_u(I>f zMF=p`Kon)G~cSrnRD0@2hWZY3D)sPg;q{kD<)zoVKuQ;xMO*1k4L_&G8reQaYxF6ue-JPmV!2_N3!61ezDPHDyu5FB`?bZWmWyB5Atv zf6IUBY}Gx>*sqR8SM=*L&T7MCFV|y=ZA;&>az-}_QyXih%wqCmAp2MYO00CT5rfMGmpBH9Hx{A{3hqF)pqwhja|gvTrYSoer7E zSE~E=ieIi&{8sNR_`7_o_vWaM zvHp5*6`1^1?=74>f4O>Zw?db`l6r3t*y{psd9}9(tMg`T$ZvJt)>!9FI_uy3MM|Bw zzkciJ=Lb-pL z^tcDcX=L3_;K~lM>m$jasN6gGXCiJg zqwq52$46LxMKxZ0+q>O6JSz6Q%FBP`gsYG_Z;60Y`Cyq|dyo}bT9?^v`Z+TbZyWD` zzN?Gpkt7Tpd=>1MQc_mOU(>V|S)OMf_x8lMWU=8gX_Q7n@pzo)v}dYw7(Uth#pX`0 zE)W(S>1t0ahDM)C@;#YzBiNrq&T|0hKo`FN!&Bwd#OiLSWiB$d1g~6~b4vgzwJq&` z3$L1H#lA2mnYuY(smP=b>n^cB1LN2QyZd}qzWRKlB3C=~4p&o|H!<51RyfxHl}Isr z1i>pUS)kArECG4!&=IU<<@;jW9USRaxO>Nkhr37nm+y{G4|f?2qguP`tcKc(j?P8% z+(6N*)X6pPoU0YXw1Vd2PjE3un&>(2Bu}md+$TkT`aaZ&Epsf>- z(jM&|_PN5+ql2Epp1eOkVoOUfGGU~Zz0sMnuI<`ox%@oPf`gsy3d#a4ILg_Eper3^ zPU+e#mLVx`PS<9#PEPx~hi^ahFOQCo1iqe}bLMqzc55l^FYgb|`)4P+dyI5{GDh1B zrnm)6UA{X#=pXH`rMZT$sP8|Xz1?NWx;C3t_FY&T3=V9!C#?2dc%rV&Vi|4=PtvuS zEYoMvanhH5&(kzr}dWXRsU=wt{LATwZx;ZUY=UOkR({DTG8Q8EmWvxB_4wG?*wLt>N?^fhvZ^2#Gt!>+io#VZqo@z z4!SRGkz*d;bkF0PP+do8A}lSDR?oMK(Rj$Yaf4fw_`){aZp4-H2VG(|=44@8hB$KO zs?UwIJ7VTORX^gQ0@>t(dxZE-Gu#@4nSF$9_0f<|r{?c69*^IRlCdInXX1lcQV>`; zj@I2{$qrH*W5t`%|1|l3K<3Wr2p8^YSLWD?EuD3$=isN^EBQIc(pz&2;N~ITOHVAR z{P|Y+ciA)^BvCpU-^*G7@!i$fRo1r$mUN-@`zR;4n0|amZ?ugFh>}Lnqf(e({JR{Z zrZ0k5Q@iI;`L0y_pn4%KepHE{ZY;s0l+sq#$L1;kz`J--9W3jAia}1Yn!-&&>}pyR zn~a2U&7#dnCKSa&U#4Ql=nv<$Cxvk1Fqcb$0~bR!qFTi2DS7eXZX}ioExsDTOOj2$ zhvbI9ej4vaaIKdqu*y-)d-*WdXRk4M9Pt|2;}l>a7& z8RCv13k~-NX+RW=0ko^ORTQ7foc2+PJwKKD!S1}RTmN&g`?{Ns{02*7s}bC zVRZrBOT-ZIA4UOE$7Zf2>xadAxZB1fIv1e&ZO})5r5xK0RZy-V`Dysx7D#1Sfp%DJ zz%|MUp$=?+5Z82rF)S1K)IpK)IEn*`(1?{?53Lat(Dcy=wjs2%&G6RtP247zLHmEFUPP%`1ACY z&_%uiXvE5oVrT@ZJlMndN~qdkjA02WmZ5wlRC%vJYGL|O9K~4IDci?af_X=bl2p)I zwUTPogSkGzvLSouDqZzNgLEnj0mXSv0t_48Te~fwokDlNl631={frQ4AbF1ytaItpaF<4p9YaAW$jX5k>{j1fakw z026-vRe(T21T;aMOB?jSQFSU%z7IWreZE$HhNB0ZJfIMI(2i?}BG4ELAW10G{A^ul z1LLWb2qDEGsGEa27=+LQ5|<~S7Qi%~FozEmorWhO_A+0bMMhY&4f z&^Vsv%R9v6(r~#I)`K(5eK9-SdeAI#_7lWIk{tczd2H|a=qA@us;r_xp?SL)f9ut7ry!fGh*7;A5~l-lmej$IE)o#-b_2MA{~!oaRz;S zx%$NnX%Bui{(jye< zhptB?ZjYfr^O$jrfJr)!S%F}G(vBYlRZD9xk2ogX{ye@3ra7$?@#v9gKtglopVM-h zShk_dd0dZX*}Rf}KTBlkAV%GU9?biB?7lY41o8x`u&y+URzyD`!=xd*8cov4W^y;3 zdz69c!9*Sp9jVv$4qpbQ2a|pXI>ISW0a!M=>Yx}tRe1wl<#D1mXzmbyBWiy)lOf4b>`X<=zO-Y7d5ns6S_WlYrU;P7YDBi`tj(eqvKzW z3PB&f{Zg%9^zMfb$G`M{_b&^3cXoOH>j|TDbhyIc%UY6J8w*Xmou!`{1z5us1g}G`(!-j%M+j^ctswg|L|| z#(MDu3IN(mf%G(g$^Iyz8sd1L&oO>)wcdL@9IiYDjEVm zD~uEHdDuSDC~ka zmK0d1U@dQKQqzZLaimw<;dXVPqd%LK8eK_QTMZEgr*n|W2i81Hx zZ5EH*%GzeBzm;pp01L#BA8T~zMi|B2p^qA{{}?npyZ=~Wgp=WD9>xUo8sP}ck#Q}q z0p_)-$&aanhJqU&$5fd4(Lk`r?wn_Y1sGycMiRE{UsfCGAO|rfdN?1PpUe|t7IB~Vl2J+uv zVieZhsY&IE@zZ5vx%_pP?DypUb2=M;X5DNq347ucGDyecWH9gS>Hns)toyHYG!bKV zl-Kx_WPsRxV{x?V0#4B)U(N)o9)(<7pUwqsi&w zWOd4nq++`dX?%#`i_w}nG3AAwNMFIR&N|(T#PxY%42yMqdHVq0hRM1S#uC2*Z3IF_ zGE%?X?C9PbKnOqXzmY``D6|UKz_dMSq)c5m25PJi@EUjxLf&$FbLm&`g+G_QpmPZ` z{2E`QVLIJ!r#;0A{!!ioApWC&+erNN*;iEEyh5 zri=NdhQcyy#aS0oaj~Jw2c+ImCfBx8etK7B%5M;hIGDD%T*YA{>O5t<4Yl^`W`1CW zcF)BVc`|9>w}Vn(<0YI;;9uVm92V=XGB*LLom0am_}DZ@XXokf z$z=5JziuUySDU@<&EBippnsi8Chvqep-P#Akmo36&k@E1uCdySSM0{7m>472LgfnI ztIQsJgdx)rA>4A9KHDsRqMUX5sOUt<5*<tddA?Vc8e1C#E6-3!a}Ljs^G?M+J?JnEB+hL-|8G#5|NU>CG+sq? zt)pTcbGMgk9UdD|Hl5sgzKJhYjYF}uGkt`*oTRGky}RR{RTN5pk;S~jR=j+6v62_! zBNtETtB3aXlV}2SxLQ-Z_>uSxLp^x6(rHWL%ThQv$H%u92R$cK67th5mmw#%Rb)CHYG3%iR z9jdUezTUpBwdX7`x~FR;G;CeY?kLleauycd)0MuksEQW!QL#9*_3W8zHeN#(1YM3I zdKT%ERi;`s&2MG4jMkGZ8cm}A{2(I@rmB32WT)BU7rM89)0gNjo)2!-pXa|Qwz2ja zoKYC~4bZXEXOT>mQKh`)^W|gmD&C_knkDnaY?2J4#WbBn1M!X$;c^+PJK}Fb9hJNt z?Jz$5(xuCd20nZ0fqihaOIHVj;$?BBpg3o!|19I^-EL)FS-8;(PLi6qZf!+BC$rJD zOJnE~(DAT;V)FEy{!jUz-ElIx5gTqZ>it%;g<4znDm|4yXu{4{P)QtAVGR0w5PQrR zD>6|-MCo;2seiSN#RA3IQVHoY(aU0hYm_faZ9R6!u z`JzbMP+f|6mY8dyP*_-ubT+i}knD0%{Ke~Z7Ij8{lX)~MPGsBvReV2)z?BlefBu|v zbS1ZPb?xj?eFxVyM(*MfOJgXfY`PnS?gGmgx|IVjx&^DlTINSjg0bY7L{!t(vVy5A zf~qfFHV31uu=N~mf(ucES?*S#4c%##7fwSpRJDfFCh1Au1@%&3>3J-Eyqm3#J`7+Y zbz*gY#?-R(E{SFWzSFxX)4$!C%MMH0(;p}CQ2nvM_xUUyDGxfE#sgstIN>-_GuL3@ zI7S%GukeHI_0feNatnMWSs__DG9&HobQvGHTFi?@+Nv&4cAGB7!{{mzOE%R%NUftkFxVx*%1>$6C?oX|!RTP6y!X()%@hu9ROdtBC*S z)VQ#aAt|o;C-oC`n15-Wirtz2ZgZ{^WH#0LT)q+DXR@Z@R5eWfwzx1I@P%F<|%eoAJ4+25nn zWRXb>NUzmpYq7&-QQ^l$;^mXfm7ri3teqroG?6_=V)=^Zo28Q|oiu^##i6Yt zn54i-g_MZ^)BIjd?45a(O_PC=K;DqV`R^P+wzI8BfDi?>mCGMIBRz+O6Z7o~5D=(z zGy0TFB!-m{JiqRdAJ%yq0`~56FkuKw3Xs-tqD-EVB!6|&h;c4oZf*mA)Fd=#=20LB zno)z>!KK;cY-9$v9(j@X^uMI4e$)aMn@$+fxxD69ca^cEzFjxRlI_C#H`%ePc`Kwq z95-Hy%%u0ANj12b-7lm0?P)SiVrKXbPpZ$M?YtDao2f@9!wsE|a2tP0a(|7BUL+>H zS3vK7|6Be~{4f^4dn;gnSkvJ?<%jCXJZ?pj5XacPB=*ju3;E%=`lPdVpqO6|%?Dcl zDZ7Uv6nP)BS*@W2Qi#sBB3_3Ta>)KVp5c5 z%(~@Ljdam`E6{^ekAb*`S_I&@C^zcavd2Lr3(d>RXyxO7Wa^HmxbMjqH7{71IobK3 zET~(Z24+4yFvhDYl}!Ty&wX-+pWF)Cps!ju8iBtVSyiW)i<5`G2^SNVXD{Ss9K@!Z zsY1kGqO1F5VG1>`U*t7JwipbOEW2KeHHS?MQYg}3rh?A&Hz3s4&@Q{YtE-g8$Th%S zWCDIXzBmSdLzRiNpWND*b!X(it+bEV7#c{N2@FNL1iIb zveeE$l}Xo;fPY1+y`vV1F53mxtZH+z|p*&u>>M8dcE$bF9;>)Spkf&XCn>iG`4? zl=}d-8G@&Y+HC?f#kmqnOCu|aB9n1qIY!LfG&o{7#f3sh+%QDvll9M_Tm*c zbhe+2lX+4*PyR)NXRn~tK@hu~v78+E-60)+IA~e76ZBaCA#V)==chKh!1TbKO<<{{ z3n`XR+R-2$A54bHA4%4&w;~S|)ALm>49vAq{@=g#4)897F2U}gXKpwcngqw_ykfvP zLYnPG8FG11TWk}K3g0!HL*Ri?{+c|4M4wfQWL-jam`a!Q^Q}CTjBK zYiI)^jfZ*%x_l_t@R>0;t3p;v<%IWsbzc!hIX!eyP;R9As0j~@aUx4s0v1QEsk12X zY*d_(J}Ua~oEKCCUMN2nn&~9Kr#g*QYys(7@f^{?y~Y$wczAX@#!D3*lpQ*ME;ZFB zE6rn57A7H*hihV93i=l@kBcXH1Nfc{UK)#CYH?oo>^L3R(K*Krt>&Or@^ASKjT*4! zH#9uE<@e=ivQjQ`YeSoI!Err;auq?hnsUWbxhkzbbN91b?fI$o>vI3#?Bv7lul@Z? zrF2-#-Uc?l&f4F<_!DCKA+t;$7tQjRV zfcF!$*jT0#(8Z;PT0F&F&F@-*GM>^N?H=~I!V(Ne7-3J|A0M%$B^VihKWUd!$^!y8 zqSS_tvd9ul;whu$T&?dlqSoc=Iu*NWcNmN0%c3$2D6J^Q^yje6-J(Gn_4Q%X$9(;M7A*uSO2K78($I z#@rjVkaU8|Z=}CX0Ir?1&XQXFy4PGnN5@t1fs* z(!Uedn;{3?Gk42z6yI@jEa^VCTa1(2bi$D%0O?uFF^_M$=kX0gga81%G@{V9dAk^m zhnyQYR0#;O!9mr3b13EJfVY}Wg|46{dsTa|jf(EgT4d(rp3wDZ5|0ZWiafyf4^Pg2 zHCix<|2>Zo2MfDozFCv-sMOZ3(EC>JN%j3`{_=E@sQj2p!h-YCcEi-a^MoOE(xhtjdFv-yiPU+W7vC>?LDPo=4?q_l5@h8Cqgu_omeM6x8cUzJLn+z21;Q=(Ow{??2lr*PKk=1b)jm$E77>e{oB zPf90>ACX3nrcQQ+xXBu8uM(Y%KrnlRj=m1%N-N2~CzSa4bGD_iJC8}SvoP|=S zce*I_rh%4)=;^BbGhsi{yJgSifNOzj$V#37R4-OwE%Fu?!4?ADy%n(#qpeovAB&E3 z8;R=cN*@)AXFMB;?yzdLk*c`9*O?3MlS(;r4Z@wd;NGadF5jT!e~bUtvOhN>8Qfhu z<9o+{M`!1!y9Y<-XS(Z5v1KRXQ}mbOoocx+wMrJ;h*Ye&`L(9(&z>3E!e)-+qh zlG&wb<=l?gV&aEo=7V$3(bue%gFUI`t5~yt&$pxTs%ltXf@>A7{}RPxxtO0vyBRLZ>= z3%7VQ(RIz}Qmw~yRT8YtpX6zQ`H$2c%SLn_--Ob|^_VgE1@()-Tk#r^Xtv+H=8>s%;-CmOE4t=!66a(y~ayV94F_|+-jZ#r9+Tjb|Jr+U6}`a2coixy3PomD#( zQk4Exe%|ZU3;{=WO6a{LyYMdx5e#<8MpPxoJnde|Id7<%W04NT?WVFEwPez20rgty zMycY9fdCtZW-+R8cy{l#PYWfC@2G%dl>4ogn5Rc+@jZVT2Hd-5lx0{f`Z5hTy6}75 zfXh3Lpcb4|3BJLCqevWf0}c~^${xai`_`Ypb-`sQ4kgwS)Fi?tiSY)Ma7)RsSS%mk ziopD_ug8j@ie=HK1z*d4omM1FxQMNvsXV|NrgeQi;EnF2yH=EcMK#)`FBYnG zu7MBE8)V00coEq!jw7?^4<$wr&Uf?Nd@%c~Y4bhUR%7P&wY=5Zi2isn&P(BorYq$F_wlv#Wgk@C)uXQ;Hi09HvhV& zJrr@xcgNX--afky#O6nTyXzih*cWEsdG9(Zk51+dF`mMs&Ux&&0HqEo;LF`^mD?Tv zs~nh?_gJ?Y%;K2z5@`M$z(3B@iB6NLYP79yTQFJiJ1^u4 z^&oL5X%Ygp4rTio)tWPt?6IPke0m)X7gHgxB%ljvBD!Z9o{ETL1!%q-(Pos9A5$8+lj zbNAK|%LMbEy^9m0NP~<83q%k!kbl|yKunD4^_u_ST{_z@cKL~7btPHHEad3w{9%6q zpLl~~SSEF_maETycyt>v2--bykXq_qJVN{QkcfnjQDadIM8>d0j*0LG^8DglbCo|3 z6()`$01t43g{k4Rz;b|%p~akxF(_r7E^K`mx)nr|C(Gj35TV*+r7SF*9?CG_+lf|Mr4+7Uj8dzMiy?tOh)gufr*5FWLgB{eLx&;6R$we5F$B( zTnIXLk!Xjj&F?2BN3&X?rT0+0z?OGCiADG*cReY(56;XhIU|9+ZvA9OM)P$AxSG&XFDWPS@+YXw4@>Ve+tp>(-&_p>pChwq_Z-{Y!D~8!i9sN#a#*NwV^tEbus&aKr2>JWY zD{c$accV!?ocm{Lfl4aO1ho;szt*3t_i5{GQQGR#(^^*)UknBH3xlBf>&so)RdvgE zXS4X;{sz{E`8t%~pcq7Kp}z;r`}KVpMnle~J`DVFdA>7q+-hxx-EjVg7IjQ z{gm8)PG`eR9N&iO92csirng>T4$Gx7{GerRDn1H5xfR$!aZ%MFEiZgtdmW(gdF?X| zzBVjbD>EMx;?H`L-D$Bz@-Kc%=v)CK@LrE;Zd+G|$+TH;swKlzjBT%u7zfHE(6h~rq zqj;-$t4P046wkJ#{E-%Y1JW(d+xXJ7-~%qV?v}A>qpM{8IY}nb@405urC=q5Zf!Y# z*DAWWm_&M=e~zK^JaFwb~U_->*GurlNc zA2pNmye~eJ%mRnbf~f}_39}7f3J`&Rrp!Szu!;ZzXt*~dUwsxKquL7sA*0%78hYiy zBDM=~aIDNV1J0AZ{W;`gW58&VT`JZ&&>dDHhm^=t!vQ($>DACmbO6gP3W>~3AD#qo zEr$K*lC#cy?W_?AL!GBN`!h&DN*|tF9g~Mr^mv=K@k~&h;sxED`ydx{4LiYqE7lft zC(uG>^x;{REu5<~5aZ9=Un4k9_AqNi0#5qyWH4-8BjxQ!+Ld3!Qn9l2+F2?xD$@-M zT$V1JI*@^tXISX9-4Hii#$vLp3S6))zzu@j186Ks(E(R*3#I~aB{#2GxLuv? z&8es#`FZm}b}i}K4ld#rZq7-6Achd16|aBsnj5Lt$9WmU{IiAVNomtSa}!L~K{;>? zhf8LtOxWXEl`iJT*QfF1CJC)o^g^IctpX#EQrYN|QCsVOxwZL2Dvnz7R3lyIKn!q` z%({oW|GX4}e(Xojqn?Y3V;3_}Q4UCH0(gh@QPG`4c$yBk_`qwr0iCN_Nm|{brM5Mm zECIQQbfBXY%ie<@N2$SP-g0#6A?OV|K)cb|R=o-C_2I2p#I|`KJQ$O(0CX&4%y|^` zWD+53-UAhXRfFC=fTIPB8q(3KJFV#M7d5Pq5yQ*LVm!_*;gR_EBpr#rnV~u6plb=Y z%D~t|NCbqhr5Xu#v{`x@$yaK$LO{JfbhnHq%>ovwmHP{H>j|c2vHdNjS-A(VEB%vw zt=Fok;&xrAz`jej3Yx1#6*0B1A!DOj)I&Cz2z`W7>sO5Iql&Nl!tCBT}222yyO>0td zVCVo&7BH7sV8f_5AT;_;0ioh`{XU9}Vp_M_@smj{6a4&StyiVHd5&J8dL;1l z3e_ipK5Dy|h3-IL(JO?jtXGciL;z@p>O)X}=$m@((n9Nh878{coSfk=Ga49FjI@%X zZl&wOHAx4}7S=^<&~<2N|28ntbYejcq3e*)ShPavy47b6sP8>=Cj-N4p33K=-DaJg zLGYVFF)3%*(EAb;$onAc+?c==b2exX)#iX_je4kF2aI7u9&4fT+2`6kTelTAy2t2$ zGvMb(7yZS(J?UPkW(44BwUQRsL(v*MlnljTa4K0l{&Ww;b_nB87YbI%D`lw|iaEhl zG4E>HmSJ1QF;vlPr-~t5>tYSVI2-7S-0~}b^wN$O|28anAzfL&IE*8Dcfg7@&qb-* zb67@>El1b)rhD5xRB>+xwF(P^Jb$}?hc29r+yhpZJM2C{u_-D}cdR8qyWK?svZv#X zW?{6sWkJEbPsWW~7Mya{)~$#40yuU{MF0Y3 z(Sc&K)94_Lw>sKEwVsk>m%G`Cd_LOA)&x3F7n{Ux2)#K$fxJ({&dmu-F>jLwIuAp; z3B``ZPN4j#>=IDwsB&54EBScOD*1{gYu(6X@hh+u`G^%y%ca*EXr|p z3QZ@4bjr_*wyzT%qPSkP)F*@N&r_=wLw6|V1Y_8ip$bh?0M!cNKg)Fs<42%q4~4Rc z$1csY{N6CmQX+%c&aruDu7uSz3nA);xhfe;v_J`U;Mo2db>Of8Q|iEf@!2_bbse{Q z%mMYBl5Cgz%k%gK?Jeta4xZjJnt9RwW+V|SXq&M%t*kAHW?L|}B#JJ<7`9z9SPxB_ zfVQMx>W9@kKr<}@y2u&dM@ADZ80Rh&L4q-CyKJx?ny3J4)nHjJQ*QbL?J}$1g!7nD zgoj`rb5?2BY9Q@KRPv^OIU0zjSuivZ#j#)v+cK`9=?t(2s-8-#s;#RSwD|E^GUqU~ zAR!q*H(MkfP{E8Evt1>=QnaT}yCW^OtEjp|#1_E~MX_KE+cLPJ84Vb4`*{g%t7BR? z1w%0;mL6;}R{%B;BIHOG59Y!@(;^klA{E_?GGQzYMDsB$?_l_Umd0C1mp3nwT=|2_ zyFkA22H-L8IHBAAcJ06`iML^M#l_rglvIHAg6;9jdMLgHV%*<~VfIo-n*^C7yQxr{ z&>!JWRF*EP89_<2=9UPrHhVjpJ3td{#GrqUmI&{JIH7tXgph~Vq9I)8 zgG$@iyy?rb{c$OO74Guw@!N;&hJcb);{W@PXK#0p_5<}qcmy3K=#|W|9VJdwP4TQN z=FSoF3fT#nDj7@Z7#)$Ra@{2J{3nJ*3DqFk7tm3h1acz|>(dBu4K?CmJdps%#MU3y zM`9eD+9Rdk%6OJn=9zU=%o(qZW*lBTDcjqiXaUB0T>sI39T>;*cmMR#1{8b1{`BK3 zVGcgUSL1}IATYVWqp5`MfyZ!1L7?#v#OOfBkOl-I4{3}BE&Gey3N_yemE=J=aYsLb!v{}kxtQ}vVR-g~X7%24!sT>m>5g+R_TY)`t*92WU-FTgX zuA{!M(_iF&k2{X&f>kiD3Lw@|!&CsV4$r9oB7T$2XN$o+ojLD2tPk~Q@S8`5ECJ>X zb8V%Es?i~jKGXYn@;dplBsH*uFRnisz`ACwz)~P8fOU8d6F@9VG8bdV{xl{iu+uh+ z$yBT5tFSMW(Odw!MxpZf>7#~WE?I}?5SLaO^|`ozWjRga;qhdAZ`hp6Su!2Vg4$}q zIJk0{EBS zunygdYZa*FfOU9I-Hr0zshmNI91Pphq=^M6iGX!6S(n%^c- zCToL#j)vlgqxrq?MU(N+S~1^h*Wo<8*m9A}TC%(>d zrq(r)Ajmeo8G1(T&jsABLk)tB5_0duc^Ma<=1zIF21E#G`A{oF8hnIka>$asm3 z#a@YR{Lmu1Sn-XO_Hg6|(Y{G;!*-v|7gtpyUpev0k91b6uu*+AhS+}O2b&e)cYd&0 z3A_`X`yvcKIzZzG>x6h^ZCFPQlM|7fTK>ZihRrw}gP9Oayt`d}A70B~LWGBZmYFCfPhbp13qWkJc|(4@2J5Kpx^OV7fs0h2 z0x5z4OMiGMW$29fzJyE+ePNxC4Q54PphP#3VCb(`IMOyMn%ltBUzm^JkA`728D<<1 zHMxp@bmf7m0eoc+fX8TB0bQR_JOTQsVTyrRhbQBW3y&oq=q$cV4)W0TI~BQq4y@a( zcwAVNhTB4X-Jx|_Ej@>YL5&9x%SI z(`GSx>wpVOcZjvyLQ6Y{Kf_&;rCmh(mr0gh5@8&S)!hq6GITo%C%F&aj;K}?jA6qh z4T`~cK#o7muE3&5DJ}2vPCizDCB@|-(~pyEF_nq7$?#aLUM$0uez8+a7YS1E)G1X% z6t$9v*qtSJ>8GT#%~MA*g45$&mi`sN0$!G86X7FXmgW%zO|7J5u18&curP?a){;^E zbQY$n1lC!YkrGa4Vakc?CAOY1wHDoj!c^9Is>^;ICgKl=O@(M+V2AmCBTbrDl;_Ra z`pYZ`L#LF+DIkm|=|rX$=FO#_M;A~2qsb)3%E# zca}4;Pd3?|{qk&!@zP$I+ji-(;l!J^QJ z{zQX#5`7w_V@VBBccIsRvM`>eG{oWuS=V)HdjYk=CbXuoFQ9|Uiq4zN8811Lx5nd9 zX+Wd9={UJlnO4w@(X);%Jt&$$qfE~!^8tYbu|YXIti)dIrpv!pnO7Po82A9QVf^2u zo;Y?3WR11-PF@|rKNtzOu^Zq^sc&AIOS} z=1yHBBv$<*hT6j%9E`TbOHI_L2MBMiP{denmE5~2Q|8FE z$qwcJAI6jTCYk-^ij(QO%k^;Xx8h_C^89IwlPN9is!h>7IqmNs?CqZSFVEf||8lwe z;lt(LhlBpn`PoC3Bnw;StA+AoVaj~9Uw`av|LE-a=+9n%fXo*PQ5Rcg4XVi~?Mma( zJrP#OmD$kift8!6WyDI)b3m(3002TstV&`{b<3>N8KCPCFe;%?SkN+C{_QHEx1obl zZD+}njdCXq(pl2|aWOhe=5z5o213GDLmma5WEfsLckyVF{gm8)PG`gHWR?sSQI6pN z(c#EpQ&!P`B7QlgR&WT_+q_gxsp{D__J9E%>RX-}Ocp>l5ii1==9@%!=0A*F7V|@# zlrq#!4Sm#58JMuOK;5($$8=ILCF?`k4I$+^eH8x|+xPqy^gHbQNvW>u@29v!jl;a zt=O8Ye=%!3S;b?w5l2!qOA2Pb7rV|=fXZRk+3<49tfPjh9A+J!Q#q`pVX9Bi>Ysyj zI!ZDFQQdmA1DP*U?XcyeqQ&w%!$2F7(D4Yq*MPmeLY}1*>RM`ri0{N{NgkFu>ck}B zvUBl&L`DR!#4oqxS!zp05HFrIXC48ODoVeOl7yy#soJC7MzpgLz1WDpVx z87XzjR=YYKuh0eF*hme5g(94KSvy>ax)p4Hm$N-ha}qr?8k|COH8r|PMP2XEM-7uT zZXKSJ)L2Gh<+hps4(zy*YLbO;+)7r4>AIm>moxRutF^Cn)G(cWt;2H~`&RT!IdA3< z#P74xnUkYk6qqs|7Tp-%8%S?)N$9p0RjAA6k(g2#f^x)Qx9l~Z8$MJJpmdjYXipM< zp=H!ibssFlbGli=9)ZGh^-W+PNA)BR3FMHw!v%D7=W~X_d3Cw8jvA)PrEPe0S8;^G zDPULMNkoTMjiYXGaW1#FEFTt0pLf;Evf=#8xaX%Fe=#a8C1F4)svkLs?DBziNC(%A zBUgwL5|*KT&$IBT?Us=uYHJ%?ny5r-j;g9uTLWYJo0(<*@d!3svKbK57{3 zvZYMWYjQnQ9YvqAU9c{-R=6uH8yv3S6^u#*m+}fs+R zD=oFR0@pgA72INsPewSNep||DJ+>l@ma<$_T@O)u%A+A2sP6&roKcsHqw*vuWQ$A*)i7=G|y4juFXl-9?mG>{+j>G}X9I{ms3rDUlhvoN7uWG-ZrW22rN!((7nh zRQExuD)~TXSp5xLUI|6GaG%eA?4{(|AyuGSv7=6Cmhn0Hdx?%YH?;M94RQV$C9dQb ztt)X+6;juHEP1NtPc)V6sYfwJ6lnr_2l0e!q2LoULeFTiY^Q%wE;K@9K-wkoC1Y5I zrDULNZRz%cpW^W%$(E>-d%MwG_g>eIn`oN9!JX4oOwI5rvv&daAHPm8-@Ba(_%K!dey->w_^Y#m6fx%XNN=kw=$M z>p~)G=%Snd^IPoJ{OaxutCJ;x3JH6ilM0ITJR4#e?GMzHfnlg4ZC4o=OW*Enu^< zw>wXx(PT6q#bZ@aBZ;olS+tlA(mP2XksNkA6~rzWtCSW_$Ls}USUS{>GfARylu&7P z#-l-!we$y?zfnGGE+uMU=WweHime=vf%2`1S z+CnLxR(MC4<4vh%OG)<`Y2mFT+qau*k8XDJa3nocWwE+lF8qUFBzSa_9V6;QN(L$Pnf8g#oXJV(n>ZX+hp zSf7m$Ls{>|&}-~3nf@oabbR^wFsJqLKvIbKeK3(u7o zM%ucoqEfM%4X$-~PKh)`cD(g@6rd}-!no{z9hxrK#S^7j#lM~TJT{s9(yFYZ5X(E+2*u6MwPv#kIKoH=OiCn1z`Aez~3Fk<`$I}L?4ynNtNc-0=>-1 z<>pm7f5G>7ew)mq5D*-oQml1o3H?teU)13Z?{#C?6yj+$|Jk0QZjudH&t4zO~Jq2Qa$V~m0po>cT^4M z@I*e2elgSb^^}^0ZfQ!s?yIS*aXk6Gakc|re@X$f_}~{(piFl<+MHm*x*jIZXr_{7amFUDE3ASwHCi zMA`k_RqEVHu-x3Ri(Bp=YSIo<@tH|9iSL{YXIKS%nXLTVCqs>kyL6@+(<_>wCVF*m ze_6=qHPbVX%e zc9g`4j_eX6bpsZe8~%n3Tv_I-$m1j)O4v}Mll6gdk%yk$T+)?+p3lU`JY;Rha{K^J z>o67mbrQyOuqz?h1^>aS50J#ZTafOue>>#gY|!VWoHDd23`iu4&P8!_dq2HRCf3Mh zPgc~}sh`(KRT%JEv)LqkG8uY{9^MjmyO@c;jk9R}IaN`UWU!czJ|zN$W}|dyHRtx1 zXwguLSNH*=`(9uk-eM~GyD;i31+8emo_;cBlJ0|f_}&GjH`Sjjdr&iKID)j9e|K+Q zyY%f_*3HJ5=gQuarCrLtatYF@@L)bA-I9~Ne)QdT zeiG8>3|{C4b=h5B1eNmxuEB|1gMWxMxa{@bY=ih;K4dhz3-+mJmZWqG-n9y@;l)>I z2J^UC=;v0UwT*htaMSFsz=-@ef4{<}^%XR@cnVGG3fm-f{KM72h^I_Ocd>on*}#v{ zAl5FCyoLWkP0wwb&6l#p6defM%H+hlPkHq^lM2jhuf zumshC7QM*5=T}L0Sg2&L67u_Fz7PnOUh6q7UPit_HcbYyklHe3oo-doe@$;OFQV+? zr8114lG**{>i=X4I_RaS+;pG#54x=`<^@LA-TQRW9nO;Yt~;7v%6|;vNq3lve_75L ze!*i-$6c%ViR1^oeD(bgi|%BRb(7&@rAE>UDi1_*999NKPd#02{Cn+Mx0Y8ni!ISE zP_JFv@T^|D9?Sr^bFM{gfAk%EV&25BuDdUuD3|UB^=lR*0M#v*J}NOcH8>*x-Q>2i zGu1?zDXH*0a}rVgn&VnWC0>RE=K{d(bBQyZAo4Zfr?-MP=)Sf2qz2>xp!(WEXWg>q zGFbqq{($Ys|*KrTZ0YEpebt|m_f48a3|L^*PF5LGv zNcKP6vbL@4e_gTa^($`nztMf^&&C0`OK%plk&qX)m*m(lAg>sN2YBoj7y(wXK->r@ z)=@f_nQU~yKsfbCe~i<;SGqQXf7sN%tZ$Fs(q#p~u0>f-`@1|rLD#K4LEj!9|8#Kl5gvvZ!n zFngjsiTj7U2OoF}3sW-M7L_-vps8q2)T7OT^77^+DJM7J+e;VcuG%rxn6$h%x{A?Z%em|eZ1BB0j&HrzBd-_v|m`Q&EoKGKU3&E-Jq0fPE zc02AI*qkJ4e=GrfR@lJKq_oSya~X|HzZ?UKG#`n@3_O5S#Y1Tl18h8!DeZEAnBy_o ze+B+>CY%64^cQ7#Ypg^|s|0Y;H*%_V_F84G82byR&zq@gw%PE+lrkr;W zc1-z8)_fB@FZw$YqlUHl&SPaqcYEusgc`A;Nqu7$-wCOX#N$&*3(VVV8io20%)nPuY={_NmxChg8;71^aM-o)ULzj8-*2?pkeHKDStYXh?(^bKAp}EvS;_| z9mdY?C9r?UuSrioSA2o_=q~AgkhO;7Bj~eBPc&aW_C!?-qCb<6Ku#W;f6ajjMIQ#G z;*&9hvA|)u2*9ON$!)Odc241k6EMp-b)MfQ(ICCM8ckHvZgeY-pwZ3fQz9+=RLLY$ zS4KOniJijBb*-%x)1cFi?Yc=`Te9%i^Ufnex}- z&BoDkPe=Rxce@`yoL}zmf1dY?lkM`iI!UT?A!T}@Wa_yJHreH7^eG4B)}XKy`lNq) zaJ*lLt$*1~uMfpww^^shk+e+|rm!Z9X=pqY!cQU~Z}BAEyq4iig**n`mbaLf7qRrJ-VKycaiuTy8KK} zGmw##uMxmFdeAx_jd6tepbu^wVM1uA?aT};v|=1#Dracp2$M1c%_q#Sw7&w+Fv4U> z`%|n&k#7!Rj--37)^7@7vSp~XW;m88s{wH}H1tw)SV)LW1EikVW zDStb51tx)pf4VGXc+0KW6qqY&7ldw4V4i5Gc_hLt&z`_sPli3YO0LtHk6D4)o{!C} zz_ig&OU?+DwsyLL$)EvjT=#A?aUQJ-i>FnJY4~8e>DOfVm~_=gWB6c_>w_9Tm>L^s z_rhFPjNwy>w888iOm+=v_h80rsA(j6tUS91vr}<)e{Y${Qn}?1Vg_Mm>ti#6Fy}Rp z2EcsOwLo{^izArE`t?9K%#?jl2#5Kyp)`*Xk!=IQVHRsh2#2Yxp{9`tt~>~bNu>S| z&c|+;L;BdTn?gpV56-yw$3@2IqA>2OT&Jo3*FQaGNWt(5gPuc*a~5549=re17%wJU zwN2v%e{)bnZ9PWxpbg^%6Hh}LFPL~5D$N)so`$ww7UHSD`SQ(nu<%kJn-#P0R)Z-4 z!xL=Dj#((I4-^)(a9F2Y7uLo?}co)zfRt7D#fGWVj z?yOs%1)E3TH-JqY&_dmL^by1Nc0e@8z=<5*thFP4lg(#~!91N^%Cft8Qzcn){v;iV zf4`ccdMVk3!oX4G*sR+XK_UQMilmFE>UK614bA}pO9Lh~wzs}K2sU^%vW$v>3XB?U zzubHQ6g|O!hD(h`lTYz@G?a^yYtzAaoZQ6Y-Pz6JPW(Mqqb%}a(528Q-I^#eL@NCB zizgRP?8;(&I0l74b+*lcOQj95IhqZVe|w3V4bKD2!X*GCJSrB!8Z{flUzp$8pxLAB z=VA?-)D?ax7GC66QJ7tpQ6}R8Oll1XwQ>%+=6rA=7beE~;v&q5wa;|EyP783vaA#o zGEdI6Nt8hJROf3YchmX3@HZu9(IuiolU1T0~n=PjBOiK+~CY`EKJ`JP-<;(Z$5NWe72+i4fu0Qdar*@o18TmA9Q^BgIh@ zuja9LU~;M(sN_|OZN8&_iR1Zl&eb$uC3CLQGEmeaTyN*acQ2Q6P1FOpQek~Q?3BrJ zKs%FRdDcQGCk2Gvg6@d}=sX@rf9LUJDW(kmMuYqp<7Cd0k&fLq8TaE)Vi%mIH)2Zv zA+%7o9ypEfqkqgwvpY_O6Ds!#Ls%@VJDoUiXqbSD1rlN0cQ$uk)JF|-%C!#9IpsEY zkFr0Hf{W^aF)>aVOIQBliBcQ&4_CD+yBrwMq>oBLJCCMVb^(~cCMS8>e=f)}$qlY4 zEDr|1=%Z2)$D!?pwKmPo$58OuFg?_FN?~4T!?}u7uigG=ECf{@#?ovypPk@` zWAKPRD)E#$EOoUa7Q(knLHE7t6Z^8eea)I!uS2PIRN|p@HL(_yWzH=3xN5=KW8pu} zB5$;X8IvUE#x^v}m#hqpfAE=bcbWnbHsvgHFEUjNp>H>t-)=I$-DG~d$*kREF45uJ zRpy`lDpU88`*xT4xb8C5sywpGOeND-a+|5O+7$fTedfd7XX+JM+l8iX?WsfHkMCkr zO-8pgGk=b&O>^4mp=b6TCorE6e#;5U^uYI=piFOit80TqIDhloe|QqTz%1fRNOjn^ zo1kz?p;lK~>0~p%Giv7+6F+I&z20>DyB=^0D6fo0lV~^+&tP1?(49V)m@j%eQSar8 z@2Yy|DWuokK#-fz<&Cf(3wBcn&BzptoiNI(oOX%Y3#RK%W$`rrJ4P9Z5i^~(gCwCzui^(-BrqK$vkz$tKq~JA-XDKF>;Kg6pY%^%?_hMj=e-C4zv+V$P`EMH zV1EjTs*bfVe?krtM&(1B3LU`@CgA4EgVabZ%TvciL6vwiRDQZq@JRf6rJxlb(|O9Y zOG`jv;IIkqFJ*>0!sav-M1cir6P)1--+*gV+IZCka-IRKGQ+pNm=)4T0Xu?ttrL7> zY!}N}J_UY4n+_^`cN`jo;JacR2Z(2Ll4_Yhj`ZydcIWIBNpmEr&X#5;2S&m9$Gh^cWk!y}UIV zf|Yim+VuY5yV}M%FNZEe%{~Jo8)yG=XBpCDO@5olZukzDF!>fFVopB;64A;Z7>0ki-RhW2*g>s{oLE7jSZY<~y7>upqRaRi^tvuKdcW>T>gxD@3agB-9p z-B_CsSov&qo)+qE96g}uaJLj8_>X)|9X`;n`o)=tVQ(Z#z)$+bvCh%(f*QxNKt z`HFL-R;$|}R}Xn>-Q0aue)+1BG09wgBA_fif6C4{M{jNA>hyUgvw;BDgK7HUi*Tg= zxSbCV?V)yoeO%fD-?4|%9-iA;QXif28%TlLa9u&W!Y~%F#6&!&yHN0@J^Td3=(yWt zu@1{8D2yqU_TAxLGJl+m{%?`!$m55R4oCl)?wJY6xormAiH@2_z{t=O5nPgo| ze^SmG$-0E<{tb8BVZ)%&?Q4Id8n`kclBtxNX)`1pt+m=^`__2#zx zAM#2X#sO(wx>^Nhv-sWtg4U-IV0rblf4y`(7H2hyF^oqNfOqvsX;K-_^5OtnN5y0? zw!rO2k%P&G8NR=D?l1R&At{K9S$BUi9jkML-f2rpBV)7C@d+)Z7VapWze^XBp@)$0 z%`Z*JB}SFn$S`DS1)Wd?;Zm9u~D0Me;Hf7O>$ zr>=osx%|+$sC>lC0)qcs{~@Ob4~ln8U-K{}53Iv8OCG2?wW@B0oT2l zwQGvjKmBqjCigoB#PzX)5e`TtQ7Yb=rDeH;4G+?O-1$b(z5f6vCRxp%;$zW?i zKT&j9o_?Y@v-DBJluoe@&ncZ!(a&E-^V_rdE;$&AkB{c}??%aZm<7^W6m7N@t%WZ& zT~3_*%6lOuLvbh@?usc(>^&T{WU7(l?r=CuvaC~!TIpY($2Z0Aj3|-we_{u|Sfj9Y zmp3|1%^U4g$Sf6L-}uJ7vbH}K0~y;N19Ie1QS@8>_DAz@&FwEXRg3;HgP-f^A4`zn zy2dCzFHfORq+a@{SduPNp|Ai`Rj6S(q?2ovEzrZ$ED9P0H6;xCZm!d|3Bc-gqoZV1 z?Do!lD3&jM)OOE&uQ+GEe=M2j>MZf)Jf7Vwe-IcoU$tG6v!-3kcT?E85wSJxReMLq zSFIcwU$uK=e8o93mNl)fyrh;iZSC=^m8K~j+laWv`c-?F_I)du_I0-PF@vAA=fw-qi{+K2Mv0&AYws~Lmno?cLCZN}jMe?-Es6xQERK-CHBo|8)VN7n)FZ`$)S-?ZXqzG>Ibd=t*k6yUyJ zP+x-}{F?{!H{XD0*n|kpI3;sk8GE|7{bzDKd)q9$bz&8JVjrgq+S_i=2kmXQ;)M3L z+x0?w+dWaqPjV%!w z&^^(ZyAj>q%-oH$Le^RrwuYnod%IZp?H>T5mUkovE!@lb&#RdDuyD~WwQbh9+({zr2l zz(a**z*HA2xKjf&DM)^_cUD2x=`?S*r%g!*_C159XE1crui=?}*p?5xXwrp6H>-;& zEYx%?`^O!BR{xe6=_j-F(`Z-+9Hyc^+;JD?ZG5d3e+1@&JV=BL%>@D1)W8p$bez>j zcV1hwg+=pF7$}A!p)iKU`kYJ@L-$^DSlCvqD$Md&yHyQtNzrr?jt*ixNXD?(<1|wT z(fkmL4vrhFC*NX{TD*m|m@tK;N&hWYa$2*CMwyasCWad)^W3%IS|T)yq{$LZy)YhT zoP4dGe+JBSc@R$n&5BvGQAaak7=Vi6yfB7s8BkH=lmTvm{_APro;ry zK2Gk`Gvcdpa(pG0{geDoxykAm_lC#(agr^jf3n-cc5{WH6SsS~`VU z=_W(BD7ixN%T5S%%x>pt5$fLN?SLRH&S6#ZBiHC=qxC-ay+G_5`}iDsO;LIGFcE(^ zM07ic9?VWqq^iuSPH^2JF@D+DWfpn~|8z$C*cj|XDC%#;Fng(^GO*YghDlZ>=Qh=8 zf0kSmcpl$uoyRwipa!szWbFljdply>+MuAWKZ3%iURGOI&#k{Kp_p&T3XxvP7Pf`M zSlV)DRIT~WDu3{!ypAHaLBkwGY@?$SvnqvoviWQ=n5Q!pUF1dR}q+ z;Bt|>i zc)UBiS=@;susUTCkrErx4n@`>)&mcM&=aCUZZ^yB5bgZ_v8%ftTJ+3t`1%Xi18hr8#DzDbYtBo(e@ zh^+y2oRr&WVj;e4AWV+=gpf2aY`%m8>E#_DtWCIF8@9cpUN63%E6-xb{<(pgh; z2tl!!y3fbSZ93t|5xSFybf!Y}>hRs0s8dcUe^>_kicNRS z(38=Z7iMge zy`2}|vBbijd@y3=^-xxVMJ$of0U(4({lndZ4=aI^KjORTIFX>w5)FMpj1cX7_s5lB zf4iQIlF5)I6aiGxvi*8uf9Th3x@vIhkWjau?7gW==$}^uy*DR^ zK#OrFNM9Q?W2RZg(w<)lsZ5Wrl<0s|qm-rnwvtl$3%*i@fOQb4R&o~gojfJ=!unON zlVK3g3CJ6w0G|^gti3 zI;%sLSTudf&sj5a0y;v?PW!unj)}#=DVWt`LsNSY8HLbXa46sN^iaB@(gnR#HwM~= z+fU|V>t{t%jU^#hU&}Dp|V9>hl3P;VGkPuJ4kFd&w*D=9aqIi?qR?T5lakhcptUdZ+D7IEyo zcwXw{ z3Qwe3w*n?GRcGB`!ei>V!Nf#@^@9kyFHJLu=-+m))7f1-@3`*BHZ2%1t9){D`I6UvQ2^Ohb3=%C3?bkIRjkm#cZEUp9%&*5DHZj8ER2#z~&^Pjcj z4y&XR9(PJkOzHNtbpWE2?{ou@Qh+dS4BTDlu_6k(e|-=gQBZw>=%cn9+(otaX>w!Q zffKkt(7NFSZX?tZoRmPKB@`hwAPVQkXv7KS#=yOd9xdp!7Xe0fB%+VnZUh+J?5Dwv z$&(O*BM;mJXx+#I_xx!Ic}i|fB~2|j1fg0E;UFkifiSKNx@pm)KoxWkBnGOq661y2 z69q#Re@nX|qA$}HrZC$Fg$5N%>!5X@iU}OSpakD?D6BhE;7%xq2G`!`(O?h0Z4w=P za4nMZAD-A)-WUwVqtyJD|wc$D20$nOYei?G9l8zO$ zk|cd2r<}D-VY1oUQ5jzyds>o--==OQdb?I?Q&UAiIki2)`DFaNJSgo zrs?lz`p4g@1FhIi_(B~ISRE*YK<|V&_F1>e^VhBYqbk@3D*Y2wFxhN^adq3eTnGER zjO(1%#gdF&{SyNTIluPj97;S%|_wKs_n(;Q0S4hc@6}AA# ziy(iN!(ik@AR*0Da5g?YyV&15+Y<-A_xt0MCDKFMF1hmz&ZVn@6PemJrXy zQ>)w_PAV%*MY7(A{Z$Sjmj>Qc>;+B4(+W%=*@zpR!BG)Ig7%lmiwYLdTcz5nk|pz4 z4Q4pi7puT_U>Msx2zH&X6+dJmltcwhW>SeQHqGRqG_y-7WwoMuKf=l6e=L#uCLIL% zorCM6B$ErS@>>iloBom*P*t$$tzuIciY26stY!4_1#&l!u2X4I4rayov{mM$8lXvW zDhtFYK=79$!9a*h7lo4aP`v)$atXwGOq1!CXkZ>EI)??t&K9qiY8d`YY2&&JvnXw( zQM$N|Q&|>Pu7L~TC}sC2e^I)aW`1~@&_$=qy;p?<2Tgl!=rR4$Tz9Tt{4Q?qZf?azlKhE}$-!M_}bj@f9^j48|RL0zFb$Jsb?-Lus<7zVr8MX+OLg6GqWI8;NEQV(<)XXn(oE>N;LM+VMW69 zFn*{vda;RUz7^hzL=&g9R^)7Q8h(kY>n@y54`#=6;lf{}i>oU|Y3sw4L(`?mmpY{t z2iYS2Scb-y$B*+he;J$u78N~shOXc&UzH~Y$vpm~f~UEd;ME+53z$@$84e}{zrt^~ z2uoX0h-DOkA$KoWDRjwY`P$qJrg;Dl)O(V|_*uym-<9j|iJ z!v+1SRWDaIXu1^!;ZQH0Cz`B;cX&e)mNXA<4MnN~^~>l1{SMrj{-hN?K;D5j4TA5Zdpf6QaGp{2pUe~{_(^3JrForfUI zg6t+LOe0qLrOM)PEVC#Sr1y-1q@B2_Z*d%b}=EM^8x-2I3NfxDUZqm|fijgGz>T5GN6jvw(7DRx3nWVeJ$Y*opCc zp3G(Bf9xij3l$bl>U5$UmrLor29f+Ykf%<$l(R%By2@Ra$$e6A&WKTbM-D+ok0^8$ zu?M4Bti9uT6?k%wF1Nxpug;ww#G6ym@Qoj7Feb;Tz_W*Ncn>h<&>J*ww~ox)QNX-i zE->#jn#bWZ{w=(mR>%Io=)C_hbl&d(4cCj^eNcX*u553Q=*Z zM%I3EAI2xA$493ZZw}rsYcw0vtwj%OE0~n|U_{_JRhm|v ze_2*CQk}u}r7KsB(G{n1)T%4{A3wYo6LU5uc4o4;6Z$FI^x2(W98fewkO}B=CD5-g zag|u^H4_Pq{F5(>^-!1eZ|2FZ6tP$##eSgygiq-Z(La6_|B!`Nq}=qAR7|qhJ~3OwYqOIlOD4CmY)%mm3!9H4*qc)YVG$ zfi=<<`f#Ec0qLz0X#c$O*AZ+}e-He1PIOqtv80<53L2!Y zO99Y!yIl$xhly}0z@)!x1S}US-FB-f9cGOBiWzbM1|n#t@^3UZET)Xm%FhWd*?Od2ehF@+_?wK zwN~lE@&gC{9&}WjvCMigU}%~@BF$*WmTbK>0yi;K^t-W%S%tvSjT*;|V(yBUg>KY7 zUi8u8u%UKQj+({-O-D#y^eB!%daHgiD2&Z>GAQb{^;)fh8d=q~f0&zl3Doqyb)$&~ zk!}LUnJe{c+ zwDnwI&coePAdF4-5_?0_3i8wq%>Zatw=eP{JUz@^<@|#AViH}4!c|tcC6wUctaxJm4PeDb-?DkA zSN4HU(yPAnX_n0USnd=buJ?@w#pXv=zH$_OZ8j)=Kys@j+CSf07@FFTuFxp*J$kFu zf*$310avT#0AyOOB)+}!@ymlnl^WAYZ(x=^gCNVt57Q{Cf83m^-J$yL(bm@1dhk^K zu_ONw|F%OEMVh<=G8_%+Mta*Son71qX?70uYRlUXvg ziXyz@@0@7nyC!!;c>$$=V%|PIS4nt4x9MIMoiU<*`{ap)3Qe9zH{~d{J9?}A`erC< zIcSCXz2-D7e>95y@vzXEX8`WKCyD@%xy*X;uh8UoHm)<%EaF+~8eC_~t;Ec9W-NU4 zpvaPBDzKRY%_uP1zF9cXjEz&Bv$oC+0EcPGdd4c5WfYd;#@T7mjE|tAij0@NmN>t8 zP|VS4b?rOaZVSwTf6CXeK8eez>$-Y|WS|&E4)vLFf3~PM2_Bixx{1$>Qd2G%tj;Ca zJf1j@Ztrm{cZ_EHy;Za+e4uNtDjyAZ$O+WWffG^+G`!3SppG zXzcYR!8&8SDS0NP`G5%3TT<2o!ib=+Nk)pFXrN4AQlv91n;RjNxmk+A)N4}AdwWT$ zRhTlKPjU0G2K(uHkpIWB)o3oMRj3BVg055{f6!!3Jt+hlZo%+K`$0a8P|yd2xH!b{ zQ-v57tC;~A&KJvJI1_))|D0f93D9me`sV=)=YfUa1zZ?IgY+MYA9lp^Iwc61`ru5% z`YO6k=FvF3vh>J&X!uT8Tg-maAJ*2%S{bpn9+*`l&T_H%pWwT?6^H{SGU<*YH>m7f9_^(f;laY}_jGGTa@v+KY>X2KW}&KlMou z(%L_*q3|aly4y9z3HJ(pO6z12^KupX#6 zjpr)YJ0Q4KG^(zOrfN=brP$U{c-vJ^$s6Psh{`WTpxb&sP+oYHT|<*_tG=MT()K-T zH_w6cDn*xGpG@MQu`e3spct@Cb83poZ9xNV)$4H}j{VWg;Or(&1My!t3uK1Tf2Vn< zx+j;U=yaF`U!u7bAXO3I#s)5a?{1#lMf2%>@HL)Cll+RCEIXP^Gnf6}KZxJ{3|j36 z?O>WSWlV8S5<8}l;ZW@TLG(?0kj7skHDc0uB-hJ}i#&k7DTAN#BQac)WTr~UTRI>Y zIlmJmqD)K5k8!4WH#puefJrQtf7t5;mH+%q{_#Zo&GAyu+?MTKo^zLAm?O$nPxY2f zY=6<067JEEk9?nCkdB@R30x=SqHT?W0-e7GpATB$%+reX`vJ)J|#a1}XK?f4Wl|W{X?P zqPbU+Ye9%p-E$}kfC3p?HmB<29kwSlDp|gu0?C+-sy0;ItqKirwro|+3ZdoJ#X%%` zxe5oj0TkSr-m0I%Kqhw=1tM{OFb&%s-@u}sSq@U~u(|ltLfem0~Y8U0AJP!5(x%T7iKEF;B9`#K$y%YX* zb`xAm)s&9pUWptIlFMJCtIQfwfh9tDE04vYC%nCz%3B7Zt}nG`e{yv>*Wf(*%_hq8 zc&zr796nYnhjv*Fw6v|3aEatd=`@?c`Pz@k%}nzO?67*KFwxa{!{Cs1(9kqb7A3h~wpZIhy_EcbE9?KWr46#Q%hqsi=`UuWraK zl@$-v)$RUdF+hF4)V@-4u3=U}le)l20ENBl!><>!D@Cm|{uW&=GFgC?E``(K+SDk< z#qIRs1`VXsIm^MgB+aQ%zYa&Ei9u7-C)@ zCLO>t2RtsbHN>I}@1!%P*Q=I2o_$F^D`GB{T2R`Yzt&jSUQZRlT4@X(J*-O~_%@7Z znfN~te~(R7wUn!SdT-E~9FKKKJ6X(wt3{e6w}srGv^s&gE_L2{#*m{gH^q=A65BbO zg!4)Kn>ZbOI0&x7=`@u&9MTVz889;buCvqAf+Q<|(`mW;dI!Q-Ze|7bl?03#ASXJWcuvB!vv*-*oLXG4aUX^2G{G}pbZ}Iy+d(!k%?<` zT|`GrMPClC<+JCJX5C4HSrW{mXrg=^DU{CiyV41OiTZM|EWuR#lIDH8)dH_8Q%Iix ze}eh7?FqHLAUCj#A;g^rBTUmidL|VkjhjV*g*!(32XL8=8NT@S#!jULb{Vj8>0Xi zV~c1O7tPVpo1Gm_^hV!+{J|2r{M}Sge_F2+on-NCG<=_kO;0|A9&09D1GFCeLF~`T zg#J|0wLtZ$inr!nnBJU5ota`lMz7OjS&t-LYLZ(AcT$Jcw>(@<*A8&kbrED9g$%w8 zaO3KHMZTe~uj9 z5?HhF)9@_(^gY>fw53$pnc}hGN7h~ohjYAHO*o)qYMzr407qMl7s}Wa+dP-0E4$X5 zMM6vIU|jgau@}=5YIgxO2a%Jf)31jHhiDL~4EYK3TA|GHBjWz}&ECiNXBS6%hvVY3 zbiTHCdmp@tqVqLIeh@jG10mgqe|N`674cp?-Ff|L) z&RGRN8Sj-+e-)ClL?dUcY1d5`u%wC=-}wBEHqtNr9zgG0*P+1f5au{*^|e?>IUy+maK_kEW*|iBAY`cf0En+s`7|`52_v` zM-mpmLT&<8N%Eku-YfJ*VL_Ogg<%0LfZd=bTl?d|GG;%#3+HLM-rK(IBjXLCIlfM} z$(5Im>JO9aL-CcHbZ{WPC}|UvpyD3`vt#?nazAF4mTaQwNE4Xq$lF#6GadQfYGF>I zj;;1!7H4rdjepAtf0OEQmU5#Fvrwj3-le>F!5{Ow+2C|L5>%z1`RA^We`J-8{MIL4*6EDE!TEI-$>e=|2FD|Tj%Y-Gbs-@#z| zBX2txOl0JH2ZK3{I(9Izq-wd0(kwm{>3~fPv=?+FOp@e#`+CL=Hnz8LwNvC_$C;f? z+nlPvvW|)-06b03td!bjF<3^?3F`cuZ2jo!`rO?fvf*Myi$d3^UDkz)lM?Te z?HFB&cl*sX+$Gx~mJ-uFrnVBRuv))LJlbMh7SpwOv_;QgF{!Z*HWtt>`45g7kG6OL zHmS#ke>+Jn3tg#3TdY8ulOm6{RuCW?ZS@-=8*Qy5L^j&;5hIg<;J$TvB|);$mcJ;O zijEiVwfLE($uP(S=UhX#=SmQUO2HVDe$^PplXzBR7#`wJjVZVfwh~i79R?K!vIctA zXbKF3t-_e9UQ?B6T4(?$`7MQ%ui&fJ`5j$ zAHisSB@wa_9VsG||3pnqnqNwmX&Im5FVRdTXE5}cjtXIEG#lKJCth?CGg=U*VDZu46@XaFNRQJg{nSdXr1>d!?m`n@a z=miR<1@)INVu9~K`QXje@+lwO>)k+Z4u-m{gFP2+7+2{ENu&Vnm)%9njIyCf$n4Cc zaKjh}uSTL^ahkg-K0(jNxPA0iv0RHwq%AaClWs@HEI}_W9-3J(pE1i^b=T*Df1XdN zI9v{2?PduOsk2TOBnp;=v7=5Gbmnno{)Ss6)@8TNUB`0eOf8A#P{kh!^IH*(KGS}< z4dJGHu|6>TozC(83~Zdhi(N$g!rAfy9+;gR3N0Q#ourZmUDBb;EiC^X?T0)RT(~(* znl88}0&Tc)B7wF|x%B&aw{5EQe_~@x@_@93p%7tvvy$Mrpo`hmMH!|!GA#E&mq4*D z5w_d)2}zZ0>LTRXL`xZRgcwH%igl|Cp;IABA#!LKM+h_pcT0#OL9!HMi3#Hfg67X| z38M1CODVdbR%Q`csa}mik$2mb5mCUjl|kp@>!5geoaQn9M=W*)R_dyJf7MW>h55*_ zrjK$1wkoiEdwPn?Q!QQ%{W?B0zsR9Gk zSso!3{wQU7u`vQ>p63`Yf4#9f?$NsI8t$Da?jWk{qv;F;!A(CetXhN z7`%;p$PDX}#--Rv)P1_QjEZ?^j^ zng=7Zak>fO8T!;s7~<_oH(`J`UpGm(2BU7mfN;Xmy@_XF=q3!`f9^v!VFFlv5djZ3*J=qHwbY>Cj@vKa4Fgh* zTwm4TdgbTfvizBc0cQcP&36J-c~*kS_OS5CH;bHwN4hd(f3)A1VY49`Ck`k^22#7V z@Cw-qIXIL59V{Ikt<6C!_iX9llzW=D*p0F?ZsZ0;w%y5b$#wG~EH~7$s`9dZ6zBC`Ubc@K zy(=j%+eh(UPvvF%4fQYz>$+D$Wt7bIQ3;h%`qoP&e^hdS#$P2=cAZ<7N~r8QxBe=j zvTNQNqEx*FP+ZOOK8ytj?ry;$xI4iuXmAhi?g17F?z*_U`=Y^had&qK!7aeI@BQ8P ze)Zp~XRD^CdwQpL_UxQz=Jf2KV9K_{L#9S1&LkW@s(NMD)@y=SI&aB_cd2_>Ge|3% z9^oEGIzq;`@}TPl1yprBuHssvGA0UnBW@L)_#}VZyatwipYp)5Lhs9Rct+$mtrheN zj)i#n%7FKoOGhh$Zrm^T+5q!bew;rOt9dwKv4(U&Rq>`R0@|)D=E|S+g%}t}ihA`In}E}BjU>hnUl zMz=5?f%yl#A53gx0#bkuTml+me(As&e@D6FW?LQHV15uaeNGG+PNr&kYT@!*je<}r zQE^IRHAC~IT49v}4oI!gENY0Jd)4ujv&)0Ia-P1h1S2-15W(GIzUlx6l~#|hL*Rvh zUp~x;Wnsm2P?cN=7(rzEhp7IG9eM zcFpoY)rVBy($B(}g&%3dQ9A}YV1I$^0B$h@$)IggJH(K)Vx=K6&Ic|1?gMV=LQi$M zfRpe+a)l+7={?Gt!3U)*_!Z-(?!@Wzd};fzcKii|3hEL6$k^EcB0I&B9d=_yj|!nv zHGe$=N1%)GSR7z%!bjMt$Tx3~kI!62t_5tgGE;4_GDC_sq`PK9!4iZgR-V3i!f^kDEk*+6p6Q&p8^U;~t&BKY^AiUBYtv-+d4-ar0csaQ%;B;3_n z)wJJGA?onM7~7!a_xFkBw6gk4$k~J3TFZUJ=Dr2rLhwv0kFWEEq4q&VU;&>Qyhv^S zURIXP&a`kExtD-`;;?9KSPLn7uN!SFUzwt1%lE%3=~f1jm9QVW8`)Rw$)^xEsXZiZ z|NN!j@4W$h|Jj^md>Jd66Z_6i2H@lK=@1pcwr$|JXdHAKOPp)AL2WgeZdSc2f*#`J ztkAZ((;=vVx|tiH$-=~eJ}k|T`J6!5^H;KI!_4GnLYcPJMFYC%lE};ejmb{9ER-2Q zJ)q_zA?oy;7dk*t-hY{6KyJg>v76AyebjK(&mim|s2gu+bVk zBiq5vJxm{qEgFfX0;&qSVDX%&B~MceMwlxoBi9??HMExf3qSleU^84{L8y~ikS=?z z7u{|E7&M5a(HM6&7{uma)M)Qn(;D$yxR#j|L#8byQ)KRm!&@FP_P%X1Jc<&+Y^Ekw z)2b6JF7Sl`k1j=v#>x54Ca;;#(iy|c6{JlU)qUYHJks_Okrf(97u5?0RLgkLsU!xA zP0b)4n&Vw9wx}=VM&H(SGb!EJ8PlZl<}vI5=T(ZI+WB$DO;pAZOO05|(@?cG6)I`WRqQ;b1nFvV@FcTlqrRmEOMQL4x|wt3OI@^HJv+_*;9Tz|p< z-Mls|?a~#EhXuAdv)uR^1Ie3=i}Q7-fC5rtuAfI+s~SZWP)2;Vc5fYmJfK&HeLYAtDNyj zJx-yZ__|4}?D())6+NWI2y-LJic98Co60O=B4Z@30ZoK2Uw-!!P> z0h)KFaP-p}V-EJ#Ycwuq)~UvzW9bi*wg5qq6~UGFD<_3w_ZKIGZAtetS4N6^*|L~v zvg|LU)Hf{Zf)XOrzuiYY2}=Mo)Up=LwIMr^Jts$`SZtk`e8A4Lw17$$hkzw^6ct8` zyHi?~w?Q_Ara4ZpforereaDxZ+JSLRwR;gzN|qIXgK6jTlRS#z)2KF`~4JL<&D14f^O~ zS;LT4Z%;3_^5K1LP&y!(E?fS^=z|u5a%W=~=og|8;^AreGF^bmhXM_vyBLOG@>l^A zL1ViGSgp{U>dO6lo-9Q*IY438`qFduWq;NTUd68XHO5>5ArBNYtPG1B8RMY;i z0;nh1oCVZQw-{ocX_paC&GAYJwJURhZ(3x+dq3lMFsKue>KP{g++FSLY|gw5P7Tw& z^lk;+a6fHr741L&koqbF1d<(um}dCPVeEL7@Y<;Ik&No2Uc`*6A0{{RX=~7o4bG%a zHi$DCv82jr_`(C&;nK~Me`#(%mfnowXP)=f?>qg$lH>mzywit2wO?%XyCvMc9IvS9 z*1Sw4F3na75U-`MHZ|v9*6N&fb>ew@0fnaE!qwn#kQKv8;(k6W%Bq4-(A=M|Kfz~B{aW|dJ*12h&3yDm|{hG85VW1CO|isM46KwBI^rb!AhJod?N9ZBDb@jmh6<(zovK zy5=zQV#O&SQU?oFot2Xi>mF={o|Hi0$Ip&tzC~crf2f#QYjL}|fu@^(EHzSH@KK_j zlr7I$x(%fTR?|6uql+z#|K~vnbiX){IxQ;-pPZKvPVYWND4ZGjue2G*kQ1@iU)tu{ ze+A6gJQ3GE*^ZomKL=aOE*t7d$Q#uVezo1*&fwk$+#cojk}&AMS22{3)1j8gog~(O zisDs9ov55mO0wu&p>(cZz93i^0ZTPMTEq}u@8|WpecmMD!b(9JW#x3Buv$%K=|-_y zjaV3UlZq%1I=Kc%$6#w`xBez@gPbJ}j!wk3(irzouXm>0_y#5oe%3FezD*|x+Z{%; zpw~78L^faV<`UB6$5$t3*LWFS-67PI;_DPxe5-x@6!oyL1@vFLHn4x;@5+1ZxHH80 zrL%&HI>LP~k@OYMv4ZtXaZ`eq{;+v7rqBCxN4{9hkb_mu*skK8x#LD&5Bb>!yV_0M@BS2V2i$9~tXehfqnT8mJ7f+}X-J zsUE2InvO%6sWyf3a59h}=Oy2t^yc=m%S06WGoj=BUX7#NFONZc#l&fxvdY0-EBmbB z4G>~b)c%c>VM#4|&UBRbhx9WYN$AJ^#wWOW&TwbA4b%Ri6807h=ce9#XtNTN=Fs9! z%dL2PF%qsGYc8##`kezV0c^)#sXDR%9^)R)QSthP8WD+VtMtLXPyV_3A>UT+b?ho< zzWdNt)*Nj5l5OhQA`#?JVL=eb-dMYqJwT_N zEETC0{^;n)_F9(Z9nG);kh3vhjRB4%vMDb6lyX^nvtQt&TCD#qzi)VndoB&ng##}C zQ8$F*UF%~*y@|kI}KeWA6<1DqDHxFVn;Db-5Xf=a_R#vXla6 zMb-VD&VF5M`O!)R&YDK{OU9q#FU1R)Ma$*ZZ$fH?z1YD%i3=t|f5@bT+sDF$mw)e! z$MtDzUT+3bUa0&~FvLJw)i*P{+qLtB5b$%GFL5c6fIL)CGA)<y(?WgKYHTWbJ|r*gj7F8PuBPssNL%V>(A3$J(@~;WNhS+n_26=EP_MDPt#P-uYDa3`483oe~4wDV)qLHszYV}@B9D;M;L}p zT!V-+4d694Z;NcI>Y?FRB0yHA1Hs3#+C+69l^?cVUQPoifdm5=+U+tR-~Q zOd3sgL5}MxAq*$gYSF~=b2}T9Nj{Zv(f7eW#o!_}I3w$rrQ(mIVgZOnx=GTQ9?6KO zbt6~>_-i4`?=1E}@-4hcR0w&iaqiu$$)1{4mS#oITe&pimohP)zME`O=SAC2wyEq9AEml8n)e{r=&JyU9h~^ zN{Ui@zMXStWsxqyv^rIaAZ?!_TLi2osz5y`7Sw%V1S%*$UKmhZ7!&DFP+gVDvFRKO z2%Df36MaC)wE*;`ehmV@Y};q8EQW{)k<-{K#uU2Z_t-jFzXZ>96~1Z>ck6fZ`*(|q zFrW?D=&5K2xSs4D&lB_0K9|a+g*=yXWht^GIWEekT4Re93r!CXAoQkQMG_bxu`GXE zS+j;lPX>Qo;-C6Ve3bo3CE}^9Je7iL5xvx&*-ZIWn&LSj;Q@V==SQXH?lw zE4#KjPu_`=CtqQS8Y!M>W4$#w+dAqezD68tA}o!EuT}@m!qzVqSJDAQ(y~u~+q$YI z|7N7EgDr)bf-Ubn_`B)QzLQXV=*BSRQFgKEFBDhPU`8ebnT}!d`6x!ri-x0WrJ$6z zJ_Nc)E5ZT-YT_G6jxxQkH8#4km@GIFd>MLrG{xp0edXb`Wb$FkyrutEiKIw;S4@QL zDzDQYy={BlJ5+K@W!bRSsxpgzT(~*_U72yjz__b1L{=XhB<|{ZQyz@5&g?&FmGEGH zEqbELFy0I2Vu}}x<6=8IS<>Pm-Mjz4?X3yx0>EOr^C(>k=u=v(^`ry?b zI+nA2N|gODS!Iih#mtH%W7=s-uPmD8S%k4LR6yx*eomY`7nTIgi0bzPYa!s<+WSFQfcf->jJxvTTnu`4DBK}XEE7IbT z`+_F8cK)pl#G}w{ZuVN0j-tg{#x0+kQX4pccE+)Igxwarxw^g)b7bzDGM92wO@mv! z9S5O+EJxb@;Z7&kmH^^WJce6*2ddAsG@slch^OzT8;O0@;`Uv6BHIdy7R{PqzD$=S z_SlSaFnuDgBZGqCW(G6DW=7*n$0K7_g$Bm!38HOIW#EJAXv=UBZYg4Wc^HAgF(L;b z;G%%#Y&C-Dx}Pm)l({vRI!PuC5)o&FL(Qxn)i$k;mMl6_03>kJ+(*LfaHhJ zbM_B)24B_7au!wRM1NEZ{D~NVThOfuXn94DdD$~!*(Axz$}#XI$jwUSV(Qs3H?w4h zml~MarZ5vC?G_PPy~LZv`pktq+OG%#gb4lcbP9@h4x=j6vp8?iS?6i2Zb_L*?Qbb~ zjT7ByDRB59bK&yv3%Q8(Z2EBUIrV8o^rB02nYGNA^&aj0>D9KF%G}TW@9B${(q-bE zS?4gZ`WEgydr*V)yeIP=ni%dohoh|Dl7@`j7}2*anngisjcB5(Pv&L}9SUPa05z|< z-^yxIo|7c%PBJHY>YHUXUbzBmKYm;t?i>3;m?W2*$%bDqUe7jhG*#H{$u3(h>H1zI z72hscMI1#jTz!Jbt;C86azpvQVYVs7Ot~;CA+#XTxw)#4drJjq$z7-K%+AIXllm6G z9;1jImrS$B(%6l}52b+7-0oEQ0js2=r%wH4^t8-<1##9n5=^a~_CLh=gkT76U_a-DIkB%}4(mCR{uqhUjM_N4Yn2x++%nSaC-jeLBo4U|HCn@t3D-f#S0hrw z)ppTr@$pfe+V{1mPG)&@X2&Omtdl=h{ku-CEnhez8(!ouw&ctYFhVZw6qVfSTkEi< z_B@U)u-Yc+OJ8>!ru#wnB1+~EW9TMZYrB_Kdm*yoEwJj}{tdBQ-Y%=wV9N9(3d5!b zx6rwFT*&LITmdR-0Y2b?#?Zu!bx^ z(w!q@xkA0G3GM0>fPI^03vWv<4{)q@bi!^{oAK`C$JO7JIXc0$DzZRn(yc<@a%vL| z5+v*2+^a~2{Hn+8EqnM*sqM1M`$->bQAl|6GDMEzR&iF}-Rd(r*s zMH~ve?una3#uo0mvy{vgTj|G$ToY-3GoZFkSx#^W=B2gvIR=HU-njUj$B$d!PA1`N|$9fDhgv=L$hV~vVZS~v_IGs+1 z=B%k{fBzD8?oc+gb95Bl87D@O%bQwTk{w@L7qJChEhyeHWPR8HBF-{cnj!>KWYL~X z^j^)7nWt_J07jW`LLC=*d`(hw>_jamu>9T;EUkS+Pt=&5wMPa7z==~2AB&_Wf1#kf zIAs)p_V$uM)CNApG&jnse;6;n+Gga`3BeLziRYF$@tma<(=oqjX;44#7kH!I-Wx#D z$tB?s9oM%Jl7u#fEbm+fJ8?wN-pb5?1i@%;zX>j40o@9WlU{xgnuj5vkJG%oP8%gU zZlsec_cS>l74~1!;7s+hzJhy2MxV*Q_H8?1Mr0FZ<<3lobBeM-h3?#kHqMI(YVlra zJTgFgSRG9eN=eA0{U~IR))OGN+sCYxCOz5~&>2@B`5YI;T>~Y+@tFd0F$rQGaD7xx zt}fep2WTvr?BPY#ll5Ng@H{oeGr^V(F1KD)*Y<1fiVqGt8sg~`Z>=oDV;IGT$rfYW zkwD=$|8d2uTCLI=uKmMP>HlP-OM6Y_vsBiE8+uotjBH2_jw3#!>dw?=oBWGF9{|x*ifY_k3f2JA&N4177gMepuFSjrKW&?FA=#ANw+U>c7e8 z?saXuy1jF!D?=Ve84uEv!^J8Nd`4~m(`9CpzhZ%mR`QG+Onu`UZ_t$~V>AH#R$m^j znrU9&6`wc8ihu$nmZ+}RaAYF-!mK4UY8P>W2o!WYD7g6)?}Iavmj&l#=93rPA=Dh7 z1IRy*VSqj5ZiiD-OkvzeF^=(N*Vt@s=qLIipMPE+iD9@X-=sd6M_1jaU7&=_n7$6* zwwDBZVyHPJ4M@~Qj?Qdcdo*e?HZb=+1)naOD4Vlk+E;yjlV1c3R7J8^_q{-+_T0jY=I`_oEjriXc#7c@+x zKGivmd%Na%qIHKgGXe7LhbeztvxgxfEdg>Hf)b>YlA6n<8{}1Y_l=gEtxGr44XFGR zyjTZ)!|5u5F25x&XZ}N6su^7pcj6(PPeRzz`k$_6tqiv0tB#x<7svht1;O1th5$H` z)YcS9grrJ@SzytznAHX)Z8SZ-jf}G4ui&A_8^U?b_m3t(YbW*c(a#QSsZyOTP+%)! zYNY)llha;KOMiz;SxX|MWd8^Q+5BCnQaJ`Xyh~T523??7E?Rt_bg_1sL=Mx^XPC!{nRVCv{k}8=@ zdvdgp<9H>p+|A_Z!<;g4_RSsYmcnlT%ZFH$%|zrtfZg$wU+;yGc>knl0R|LsilCcn z=?)weqc*Gc5Rsjv<=I-L=-LUOyNw1Ge(u&g?5@|Kz6s~9ow_~m&T5{(xG%8QU_cx+-e15NoWKoxtI9;Y|P;aO@@3n zJ8@T;Pzq{S)wjn99YrhOBNG6Kbc_x+U-A&{J1VScP*#tKG(KVFmM94z;_ybBoYX3g zVsl9!NmTl=PVDv_Z-haLi)*Hq+uy`)b5J}@ulOe+FYirec_n=tnnT};WU691bIDxtn=v5LJN|5!^=Yh3 zR%L6c8rr;&V7}wXH$oqIW4j7d%>eG1aQR?pX`QjSLaaYf%XQIh^!e745CI^q z@l$AwZ9FDx-G1?tPMAmc1XEHR(Z@P5_i6|af@^Ak(MMV6oDm#NVDv%&Ks>5&_yaJt z{kg15wyAWO8`{lcQ4b*K95l$1y7}&fkNz;Lo^@sF%}Z86J}gf)Ub9p)o=SA(HLMLo zO0$x%{QVf~Y0sM>JkVvwrFYWof5YiBzYl;l6cN|4GHj%F@LnK! z$3WUFT4{S`_7E}~yV%&M&WP`4VA6_8NPVH8^SR5Wa#6wU6Pk7Ma`ItJg5DzOBscP1 z7W|<_3zurJ30b9A_ti^f`S$t5H>N&%S|}XP89mmmq{Lv|>z*cS2%FA%!$#* zt7|uP2OOchoW4ZaYnrx!1;J+ipZ2)aWJD%Q@hg6RXM6>mqRTP)dmAnapO29GA+@a* zxx{H)dP7C9sjsd3P)M$f+&ChI%m~!p7&h(hudu@IjEkt{(<@{s_^Uga(VytNx!)b^ z&c-YdSD}_5kgLq-`&2GleN=Xx4%A6HRM(GH^G-!r_~%)_LH#pOaKldqDs81v2HelI zWeS=bh68}o;8|(3#{E4ZGND936gpWoD4Y339QJ~q!At*J=JU2QPRXWgYK98sbeH_4 z*a2idEgn*JawUB`h_7%k^T{@8Ol#dEYHW@>3#TfT$PmA1+R5E0$Kt6Ycv1D|j&Om* zqHvi+R}#sG9<7ygJs(eV>A~G}AVQbdFDvm6B^-bbpI_V>IkY>}Dev1Stb=nY&r#Ec zo*N+_QL8GAhMy2(U{3{FSI=Y?d>59uG#A$rN*(mdNgHoppDG>9V1_hbA1g}`;l^Qm zbS};L;JUA4)KvYxt&TZ<@TuAs3l7HtG+~yfM~OB3wB(zeepRTIZ>xF!`AyN3eEn74 zbS@U4CFoR1KQ0LPToAMsBStVtZ~~kRRX1=;#_Jhp@>)=on^SbEo?4Bb8sJqps98>4b41C3in zSVvT6XwX&B2uiv$=DY;)`gCk?EJ2rOUef@QDpgA>CDtc6`ctUprW*xq?`uPqSkK#ool{>o&mQ7E+GsDkN1N;K6Sk&i+fF)oUa06NyovXD5dZeviyIHUm_ z2ca{En4-u7+IrbQ0hJsDa!}gK-(hZ&c+%VF!>O|q<|rE5kI@Gk1wJ6?#BWkZoj?|B z=3dOpv86au9P?;2`B96sc@xn5%RoWaF1YgJb&OOjMUU%W2ifs)cs-#mN;p*dSkqQi zX@Wp_r6Uhr$9lAcOR&eB?HZfzyDb3D7WsND(Gi_e(I69tRA1*i?S)y}Bxh2o#D{0v z_UEdP*U8#qeApJMGsDHbOJ;BBES9XJk{vk1b^3A~f|T(e4Zx&3UlBkA&f^A=wsb}( z;)zlVIW;+oaU~aOyGggW+hey&-XmXc?9^PrC+`77t(u7wX#DuR z_ZL_eBgWiE24q=)8b@RJh53sG-k(m%d1a=i2;KeZUsw$31e!DgA3$rkY4swRWXgjv z7PGb259Ql9sfx?wZ=s;5QKFqMRyCevbL1}j>f@=S21G|D!(SR4f@=-y! zvZ;Xr|JsFh2Bks(1a$_bxjX->ox9ac0*#g+f&y~6O`}ryS2=eRA|?ZVxn}tQBwvUB z5Vj|p4nYQJPc*Y0^j~A@T%i^cXkyU9L*@nFe=TWpg&{JuT#*1=Xv{D~_ACgpL5S=* zf!Y7FQUU$bVf0ZFXcW-cWR9}bzqVmtaB?BY1AW2C_p10u>TD8A1*C8(g#%7sx~AOwO51&n(inn{$Iqy zGWUugCjngI6Ds>}<6#r+r4W>XCfdu9O#iDx19~H^2xNnl!UB~lK!Hk? z-edo*q6SeAR)x_1QwmI#pvnE+P6ACDb|P8@L3QbgXpPtZ+Q4Y7Inw@*qEZE27zJi6 z1a%P9L(l-Cz-)v?{4g5*yfH*h8aAWd2tgAB&7c|W77fP# z+EL|V^pZfs<@P|d2tby>Eo2=3)cg~)++Pscf1?&Q+S~#fZ3fw$|Ico^iv$|upTUCy z@+fGP`OmldpIGY`w4&v1Lu%2(px0UB8M@q)V5c~oq;&%^G{Lj~aJ|hs_xf=z@LXL(4O6TiV{Qn&S_`1=6@l^oKFec}2 z2zo$F&b_In|5*R?n*gGl_o3z1b^kMlUN(9HWF=m(*h57fl}qn;3NND11$ z8=zH$l#&A2D1ndy22cqn7duQ*Vi1BM2!=t55+ix<|Ieo*0kKGozJK{g_Mh0{XWS)e)q?M>}E(9RKu0?Cf$h|U};Dnkvx2$;lO_H?0H$Z^Sy#D z?PS-D2&?C^S+iaOx-&zW#20fF!@-!4U2Ickn~H$t%FyYWr|%}DsQ zEVF;_J=&jT!7rH$4c@0jz@@+HFc>h^4WkLXJUAnpR>Ys+O8wLY67Dyx-=a^h5p?xu zUJeUcHgP+3W-FugbXl$<{WEGDPPa0Ste+gNZwy|slE8f3Mz5V&X1Z6NMutKnuVLPA zedssH=8&B~er<&Z2TYFO7R+iwfBn~Yx0WI)s+&Q1^wCDJ??lM*m)Ag3(2NU0DMC6bwHaffUt| zH6jz(>CC#UtD*h&tHWbmFA6$mx zA4MeevW0N@_3FLy>R0(`ijM3&0)Zz)4KIVG*ureJsU&7tBzzIg%Oy*gm@n+ zRv-IS{t4%GdGGG#eb!gAM9UHIYkiaCgfbJuecHf`PS`tpdd)5vhb2WlS)K>Mwjd{(Vt&>8Q2FpXE zI$$t!$$GNR!t#5v18dCNv(0oWz`cIAYxyZbtqHak#~xuvjiUjMH4%HLFqI@DOP;3i zK${T*iOLvJ0$A@K*W3Z96jj`P)o2u4JZyY+aSgisVR11K&TU;wPQvkJ%Qm1~g=v$% zwm3xu+!xD32PAZnijOd}fYMZQuGXzJI2&fYSrWxE>^2CVUP5lqewVM+@@fV}1GM|+ z@352Zuw|YW3>VFcCDYSI;(NZbTc`J?nc?Ime~Eo%PPP*?yKDhuyqt85qTdKH8+q+* z)IFpFM=cACXn6@v=yz|U>s!U(r?*r4wbl7-C1|fhp1vvJNtu!B;|Nl!&~`8prtdM3 zjFlOnHP=I>{)&?K11p{Ti@C!tiUPVlObY+RVGjxzVS31lC2bp(FDKI+eq~U#IB4*T z`c|~c*1y2*moo*Zxdswvbs4;Sig~}?R(pDx+zhyB9!9M-6FWRE?)#@6aoVhZ^%Hz= zb>0N422p9(k!V#bA;En^GTA<*w!$RHZIpw0kzIo;F8r`$5TsS-*4>>%9!@}PFA+$` z`t9e9@k_MP z;mOM1peUmQV)v_uz4f$H^J$&Wh3?aa&sbHw1eAhobScTY_+})ycCr2>krnlEGkq=s z9U1H6wI$`4cEsvgTiJ452*ig~5rYI36u2RF&1MK+Hg%<07FHQW>$7oto9f*rbeYix1k*}n&wK_lr{?0-$*`1lbk zs;-Ac#7D>frfJNTXFAb<^h>P#>OE12VP4ZsI>KTj{%3-8--deabl6}!HWU;#enRFO z_S_;^e0{7FxFgdEG$ny}YhSg#qmxq~Qy?xiDL#7vAU188vVmP17hf2z(hrx_%Rb$p z&{bfx&}00$bQJxZXH!%);rYx6ls=NL?cKoL+^F>yFEMjLTI!q29Z23JOl;@O_uUbx zm_E2gRf0*|#ROhr>~rNO)!mQ>)#u)y=3x&zHd2k_1W|i4L|?n0z~Ag2%lCT^?1kxk zKouJ+fU1k1h2kMn)}KN~89tvx#|EYw!XGk<1$*-66~&r4AFr5zB5oTpt3k+pC z0z_4@L%D?yu;-@flbytI*|1E|7<^Rugi_cNCq>P;?g{_GcE1Z5bxI2Tj%ZX#W2op0 zprXS>@yT_E!K3S;Roh!5xp*lWi$2aXl`b+!) z-_+eaBtHm^GR34x(A-n-N4&_^ltV65KQv62zeQA3^pVDM`kXn(jH?w7i?yXa3NAM= zUUFY_n%{yp=Nw9DESe7xD%F!otWS4I4)E_HF19n~%Eo~^%I4XW!m*NI3T?}lZc1_Jie<+iX z{6|3dnpVM`T3BH2V=zz0FkQ=qSNiP7Sm}XJyzIZ?YsjJkqvch(7(d2N$EqW&69B6C zS<&Ej4qxucqPW3q`ZUrXDmiqg;r?d#F8lCJDusP#zg!yFhx}{ER1}Twn0Dr8M4Kmr z1QHuO%MtF;0u1f><0zTMcEoDi&X~6CUc(I0rz4#^(dV2;R6Kv!%+n+3Bcy(jfwqED({2dni zXqUF1PzbAAL}<4!C&Z2Gu#!?#lSZHh(+>YW;Ee1qcukOK#~k$zZW$Q}kpbyEz^yQV zZ@?W7FekJk2-g!F4Gp~nEbs!$L!SUIyud=x^FT&#Fe}V^C{WKETnNnyeD?+)!ia8w zj(os%FbGE0^;uJILckn9a2&J&ki{Q72h+U=gav@B0bB-1%ES0z;MpxgqwD#Fk6wr; z)S%ZMfiZ!`OtNe;RnoEQ2@{PFw#ic1ny1pzD3hei9 zcH?=7X{XNmCc0)FlOVKxs$BW;MeZY3sH|}%Z=Lt=jjPDIdJ-*meJ}!#a6e1p4^_-? zV28K40RoucFjar>61X(+{Z>%v$|elz(p+C!Kgx^6Mb_qc=_IIF^T14$nQn1;8?Qij zD8jrXu_Zh0Akk;}G5<3V6L%I0g`d!(;ZUMitrHf0HJtD)KxfcR)$*{nv`Wk|;hS>4 z*gI4pW~ofNTyWH;_8FyaQb-JnxOrKze7Y|NHNa$g@7dq~%rN~*gBPuFe!sZ<#yTi) z^$g>u@ibO&oT?AG+{_>EMq zK0sd&=t?9q`$KYNFdbjAd8T6im8PvFEC3$kjn z$WjEd<)eC_ef1naUKSzLZf!= zQ;T7EbFpmueuj_U;ZMS!NCWkSa6&tsPY0fsrSn~=c_BJzZ6>zdJXQv*WJuikz{ijx zSr{3F+|Y+Jp{Dzb-XN`{RW$t<{wKf*e%(p-&Zn-ra!0s~05!Go;(1m1uP?&<24BD1 zjeeJMgmjW@(%nt)x+O;apZwClm6b}6Bn#>rwc1JYK@D! zZ*saXJuB@M(N+m~<)?lUr|azqHj|Dnx9bp>CRWuOJ72_9D=TL{>(MLyRt5xM;*63( z?-`G7<+|LuX~TC##p#{sN1V4vjS)meiCf^#*cxO$*K0GJ?$8Z#5nPLq(%BQbnoB4% z`bGRyCdj#R_A7mn!rxqu4i$EEC{L2uoFB@c;0gQy)1ODvvz>8qql|Qx-ka!}JhUi2 zgN6Fyc{^^`+(g?jTw%bCA(_X#TqL@AfGA;L6P#RL znTdB*;JD75 zQfK~s90tGp-Wh=XG~Gp98M?oo0eXe|d90J%YOR&;2K| z=|ultOacGy0}TBES9fRKfB!?-MYRxB`+b6fqR)Z)FJ%Y+f1KU_QA;XzV6=Z20!-lM z{VHOZd@LA(agcoM1OwSWxBdT65V>1@5Gv*WxQnK$i9YgwD*nUhZ9*!@!rI3tK<(p` zzBT_EfDC?2O^N=i1=RmBh5nBZtT5M(DF~(^m;t$V%!YsbuLX6k$^e9M0kI9vHpu^CyO&vg6V4PGz;Eqd}Gq33&49Iy}$TZrV zSd0sJ`u(7k_TvHZ-M@;U>=$YfY3Brrm|?nAN3{y?mujpym@5q#p6RUy`4lPb4bunQ z_OS%~s{lxn17xD^@twZ07ZN8I+nJ6{wOmZ8bDe)M32K3GkVh<_RW3Q3_nAMOG@oQa_G+8%lPH)v8kC z5*;g}k?}>&mippMp2M&K^<)#4F&6`{jXWeZ+J(!YN?MEuKkbAQ?L(Ky%O@)><);)- z8)%5oJ3f_yy+0=Pz_yK5`2s^4Ubg}}G)Py?rqfFj98xan%l5IOpU>PYmMF}(7a_K| zXwvz{mD4+)qcGu;;!>YVbs53SA%~(vR=Su$g3lqhTEu zETzq;#M=d;m`!vs+Dn-|yfuL6+fQit&&65jC^*H70`xV-Xzc73+1TsW_JxE-my5&( zzhjp2(kh6V`MMoe8D0)7U@L2BSKSBy%)!m8=!8z_as*A{f6C^?nl_uAWk{zo*S?i4 zD@c7ii8-Q`u8sEmNF0jY11%s3n1153t_H1|HoD$07|1KS?1X! zD;;&bSw9uBE^?i21GjM?eq0?byWDPcBcmCceQuEUi}@tB{Q~r5iwb+cGh3Y?zc8q0gf2yjOemx)Nv?Cw`RG@2P6loVZMUE?`7yz2YLK|Xu}fp z2WAJO`RY&@`=Jrr7X_VTy_a3bA*Ylp+grNL0FKHjrbJ6_13vBIPLI-sp$2SAaQUKL z1{AxV{UXL8&U>;BIkXMl9z}923&Zk6^I{4a@l(@D7zxx2raY!e1~9s$ex&dIH5pZC ztw~CiCO`QXjn+s=_(P|3`P{nEGE;JVIP-XuN5F`0G#9L0%8(5W=?(vy+l);pN9B#JLDZ~M(Ge9&hAwo?sbaxpsm2rxF2CCU`{h z9m}Pz&1jWZ95I9qxC6ylu|rZ!uzUwib6tR+BdWSQ8?JN;s ztPW-w_%myPIYGccQv2a<>-Wq==0^?$OJo3&2TKg*LXi9bK&&ITvpxMU+KBafjH90 z=Kf)DXaXC)ki9M_CK(RJvn~%Sg;H(@YSNh8kAYH~Fekx!aW2g;jBZ$Rdl$T$aRpGe z@!;!{!Y>2_>VY1%#g(2LE`M}CsiLoS>J8}k>7#-72YsSiqv~)KiHV}_AW2+ zC#=-fw@WKJSi1c>*OI=6XN6{bmpP}T6h>$hrzd!2f0T{B3sNbM9%i3g4Y{(O7Vc1M z*Y0#hZarlXbS8>K;SMWJ#K0(6j@vTr?>MLCq$a3CE}URUfZ~ZfBTfW7RBoWKR-30I)Yzp& zV6DQ+flX8Sc#a~>P+TT)otCteJk+zsONGY5aC991w?toFdRoes>raytS-&V+aI;en z{9?KJ$bA-OgYJX(YMf7C&h<$043JxD-T+gtTAfxBw+Z$cF4_^hbaGZQ@u$R{*pVFx zz+zl-CrzX@Ph#$)YN9}n(`yBz;G3_C2LMAzr*z_eC*s(vb)lR#4=g?aEg$`PevN_V zkdOdT5)1u#vbE<~fGp?Bu;AQ{iaD?6chzZ!d_!$cW^7J5?0_f z#W%68tkUR;1%Zq_Xb0%_o_h58VDlQ>5wp^7J&$SmPF#ig+HG)q6kZr%GAiHWjaZcP z>`CWx=8149BDS%$&7?8Np={tuEX1%1Y2j5^6Rkz6Cm`unxXSf+Mq3`5l+exU0H>`< z0~<<}Kz^KuYziJeU=8|Ta1u&Yrbgl(_JW2rTz#%;U1e~kkPO2o}?F8|GtnJMSlgdNf{s>_A0^RnL|)npdhZ&Ur0eqqzIM8PALnuQ(ARGY{W?v zPUuSM{i7&j!<6vrmOuZGZ%>yGq(IB+iU5-;HwV7&9>|`_aP~bxkfbcJbh}uMf z7Joa;*8|=%1ty*(C9a~lFbMe!;>vSG{yzYbKyJUHj|{9M<#UF&_a*{+N~gRvGU8OR zbCQv4Z}LvltNd!ST=(}XKh@EELcm(%q(DF)ggfc6=NP3?TAw%%9M6brFoVZ?L7vjt z`_jI^qd3X**5ENRICG-{#u^w%E#jMxgelKVf;O@&D5)KTP2jM63jofa)%=5yqvjt~$J#5Ph^y_c74ubZ z16!o{y1{Mfwy^KqTwgw6l6A&8APna+gHU1`3xAa+8k6&|S4a|yV2b)#i#^VNO&`@y z^-0F@7xM7I05lxzV+ChPYyx9AE3E-{7z`OIo)WiW>S+0%yeC}84``_MreYlDc2(^= znzVpjb;-?Q-sr5-`F`E59`R{kB7(m?st{S0ZUC+tSBSX?7|_P{=lFy9i0m&+^lHDt z&0-%2s^j9l5oi46@%?ZF>O%>Cp10OHYl_P8u1%AeB~UiL`KF|8)CDpxtJ{|(5!mDU z+Pq!WDJw_Y^)y}Bi6hW9nxla#7K{jvMiQOyl%T3F^y#Ky*cyp_dKyUZyI!x?@k&`4~qJq2+mPW5=FrImT8Jx|WNMQ{H z`RLCpyru2z<4Px7rP9goYTwE4Xsu&<{Y}WR3)y>>l*2lJ99@Xin#?np>dFReUI0MA z%hCOI-`9qDKR@NhBDquoFB_!O($QW3U?UzOO}1c*n}~DCy*FMuLa}AVd3~%@A8dR3 z-4&2wNxeQ*IepXEl$bcu z*n>Tv`#WksNu>>DO+~47QaZ!`5=R{|MB!9OPK`*^Yt4Ns?KH=y8W#U`nb~p}yg(kS z137Pcb6tKb2~*fZVp0D(w0~W)jt@dXP0xw>x~;?x)z_jPGK9K+V11PJT#e8!7@~B? z0Yy-a;HsJ=mCUB92B-BZ>(YPlC8pZ#)2&KM4t#gBsB$9bo4LE2|5x2KtKOAr7I$}T zsI#z>RyA&*QnWV(o$xrmc#3ec&u1dAlw7E9B`4|P4KyIJ67+@-_Eyqskh za2U$2u5^j5z2NJAS0WRc~!Pftu=&43MD8Z^O21H|*2R;$gX5-8~`; zKe(y|@Vr8;Z6J0)iK&@5s;Z?P7>{NUR{CYyFcOaxMY*h^==sbFApr;O-rPoX&J z2Y!=QHATj4sB`YS&utP&FERj$cl>qZXRNgQkK$P4l&uH!AS~v!M?gq6`kW~-2%aLB zvTtCM)pl2InBz{=#5aGkkjA`(Wy?9MUL z1ooLve5!4K@`c`LL;0`W-|lQP6wG&zB_$gxzw5UDT{EDnl}A&+Egp-NU&P${1AGED zK%wp`c=fWD@~wjSlC8R{WBL4HS!Zswo+9d#u>9^BfpmWi8Hm`OMh_RA_Ct9<& zE$2S5T;6B9XgVB$4GJdJ9IZ}-31A>^7mG#<988(RZ125`y%FElEB9_mQQZN)TNY~E ziSLSk^2#bt=4Ky07yAQlak|*e;-X!d+Ucf)8U4}@L}|u0d^<;!Guz+h{O8p?q~E_P zIlF1~`)2w3+vOIR{dkN<)fI16eozmhtbT<1Tm5MERn7Z_d{}(=%OtZy`mBx3R&(X8 z7C2FoIT|ADj?7rGqny^hFM0Iryn->!F{fF7!ICQ*QveG>0xC;HaV;`u1k5KbEQl6R zNI^}SzJcMV*&A$A*~x*1R(F>e-AnMlL<-QNA9(+DTDd zz1E>URzUn5JJ9bRP-@;vd&0VQ<|5sH2}caoLnt|fBS}y>CT)R_0W>PcGC*vXxeq=m z<%JC?VwJ=beB8SxU%kh=Zvl4NpFO*Cg{=m?+Rd@=P++mqg6gECyO6_Tr5A|rFffaA4Fxmp;sMC_DZ{_gA%}}Iq`;nGPI50 z3dC~8*m2O2fNkKI^a_mWWUORP6Nf{A#vbRd%hjeq@s$JQaX&-1_goJK?Ur6ra07I8 zz(FjQB@}=dt^Wk^^h(v-4%HvxoDXgli)e)}?hi)i;72jJh)#{2G{(p7a2FB;wn0T- z(@%{xP*!mIY>{nOyIK~s4b~ff99dSa=Mvnj2h86@Epa?6DY=9b} z=LJ1R%!;1acV`0|e_6U3FH6*Ji*cz7InO$-li?w1Vkle81KWEmY;uAT=aNyF8I`@j z{^Zz7#U+_l9xc<6dj1M$gWcRb?aKT_?D?$aGRs8uHfR8bK4OKPHk$8NnkF>mjaEpEZu!+!Wy zHRHmWV?IFXTEFZzr`&`6+Q(N}T+QtctLf`^1VQ$)R+Zaz<<==HIHZ#uI;p4HREFL~ zTsQQ{FgQ#lwl+|!NG61PLktgAQ=>xS!5JAd2Jcy47sG)znyra&|F|_#1OD#kw;!sw z2JB*U&bzs=g;2H_$bq$@Y-qL9IDV7P&G%5@D|=8f06j4_cyBKjB5Z*91s$=i`OY7B{Pm1!C@UtQ{LA%dBVZS6S1aKE9hmb zrak<>VNTD8#_)#$)evP4GGkwSZITws_=L^UwTS_237d?E1y79of3g4dZwG>|vGY+9 zyAtfF`Uma1?-W!GmsP>mTD+DIeG9lB8;wbpzXb>G;vBdb#9vBOVCKY*x$4-fMaO0F69WL_>V5>{>d;<-B29EFT8!f9VB`;%Y4 z)N)*UExkbp651RZn8fIWE%2~L$8gG>NtX9@uA0C)z4Nh9`j(ubq5QU!t;@e0kA=N> z;kKZee^=ku*Y=#+KHRWZ2$G1G$HysfaK*t{FpFon6Vv;jQ%!q*E=~LAx>$$Rj_iLc z@T#NVf_Q8FR$*71ntCKohB_}a8y5`IeTHDz}9f5JtyKmGXQH!t?D)4Ari_dk9IxBC9|k1twp*tzWQ zuYdjd`WmkK?!`a<`TzW1P)i308rb|vph*A#+c5zEP)h>@6aWYa2mq;8g;)Rp00000 zmuYfoAD@249041b7a86V0-{8hDH+}^e`q#IGzp;DPX1bnB~c{03Ml+gRj9-J-=9pq zeEj6($@Tf^%h%`KN${leWEe*Lb~feka*+5Lyb^^m&z_vT|DAq%Q%nXteR9(4Jn@Qr zoWPI2KN*GjMF5|;_dgPs1=Kk6Uf^!Lwh`n|)W+x^?aulM^0`Sif^^Dv3CUF6Ek^4Cca4nrQi^m634 zf7n0XKRnt$di78 zYq%Yy-gG>ltbfmwdmeu%4iArl7q2hQeti1%(Z%hq^|)(iufN}WzQX8nli8~q^r^w1 zU%Y=8{=9>7d=O5&5zh|Zh23d9s%N2Yt)8_Z0MBjq(3k8Y&eJ3)NQSK?fA}livr?Ys zvzhrqz<*CyM*iA{iywFdTa>drVJ~2p|C946PdjXu6e-J+s6gJ>Fi9C74nseL4>7;U za`;HfCSD9{IKkKO9eaD(#ET*}C^AH-j3tjTPcs(AEFW_Qppkmf`g!UduW-{lv|%TV z1E4OQ?d^3L?JR$g(sypXe?UDeM71AY3t@G`-;TqKdDCeW`W`I_{2K5q9K}4qwF92H zH^K4e%M*oJ4j+mG#^bRU``@kv%I~;H+b1QAl{k z9^s?_Vkcn^yufh-qUUo#I7rwudE{xA{eW*;l2GP*G2>nqMl&gke{<%;82FpeTy_y>kT`LG%*rzq6j}1MackQ{*;_~*ySPR5D9D4=whBy%L93Bo!4aY!%;2{J$8Ny#d zszFA7;eOs>8DG0+f3?up(;~Qz8l>d?T%On?A7mha^TXGh;c=Vw_x%iy+k8LA|z3Fe`MnAKnUsZ^vAT56i+y5yAL~ zBP@wW2>=@$Xv6%`OXu%G4D=94@AG83fUi3~Y)%l;kEcQfe@0RHxQlxm=I|0K18?76v7wiZVVdpXtZxNp z^mJHkIO9+f;B@g2m~z{vg*< zdekn|9$7){m+Tey@&XvNe~^{pYd^e|GWzA0>`duqf085nCt3lb{qR*Ag% z8MA+)u})_%#8!v{T;Sd=wP!GNa2KlI(Xi`3&%pQr%W~wP8y~f+j2&4iW9Of|$u#08 z><*Aa8m}eiu{Ytuj=i%c)~z%m`{C_;cYu=pE_=x%o^yAg zJZ{g4cWi|nl93F)(dH@zWSAzC?PBKBcG2XiC7LMA48#m<5jLN;tEW7*0-MIL`BaNM zTM^Z#tz*YiE9_W+&6H1)hqb_2ZV^OId(y0Mf5(aWc9oQ;b{-=D&Z90n55n9XHlJxB zWGk}x%nm+~jaAUB_>S3tPF{2#O_G!^{3$DZFx4}5I^rF6HBMsA1R3xf5Y47V>W|5g zO}U?>LC1cgtRUz`nC9can{|}MY!B|wtU$?rcq{d14(=S+X^YVQtX-e@Gb^}i4DHX1 zf1Td;+sO)hT+r>A75pqf`+BLUZdGflo?9t7E_^?4_jd8Q6>=b|A9vaJ7gz3}{=7Yp z^K&cMxQGLC;sa#oV=ouCN*U}ic$!}U`HY2=X_Dq%oZAEC^L7#Bxg~-qpnM3Y+r-J| z?fQqGTcJy1oP2KV>a~{8uUf~8udMK5e*q^mz78fqfq{K*PmdMAIC0#rF7lNXr~p8| z#S4CCC-GP90>)QXfKhQ06Ib?+Yft6)$_f;Ohd5>weSu*T!b42IF1b27EKf!p{+fzQ zwyIZzHpGTgKogtvm6h^hJ#<+mw*H*A{sx}IkrEI`?EWOGY&`^6q*wbW%MNV9|tCxIj1wo6xWH&thx;@pT zcW8wok_{my6qChQm1l=2w8NI8DGx0{W3%75Ge1RKK(cq(uKvh#`ck4#N;((rZ5!MdlZ`m;m*ck;%-HiETLnv)KhFKrP+#ZyghbcQq zYWv7x7i4VXvrXJ~zFicu6VG;$$PVMXIBc)dFiFE4(+nIjv&A^!o?W1De}xxULjdz}}udvbR0JG>_7?7gM{qS|{+Zi>+M%%(S7mt3%L1x$RF`?$kmhEvkS;|7~jR0i(Jh^nO{=gh{K~>R7~uGZHXU!HlK>S zcti5PDf&VMU$8BNNA&C>e|jA<4jnzd4>(&}y!h+c1@$_N|9O49J$-2Jb_CllsMiTZ z?ZR`v^D;~hy7gk(I4A6Vx7+>M;i*`mp!ya7YlZoXY=U2uX=+>4Au+nV$e;>N->MFS%cXn~UPIB6EWN*(dv{!oj z>4d;4RAH8fzI`fbe@`FCyB+Ybi{iZ*CyxyOpLp?1h-X&02}0#LW#&Ye-$+10D76I%^*&3dfiZ| z*C{>v$ldL&qh0v!l2V_FrF0NayO>^w@jtVZMIW)d9oe)C*L6Y*yAa*mWXgIc>?-9M zPcg&r+gSjjFyfw4?>kER=`OrRk+t6pcA>tG8mT_Oce~TwvIE90I2W+_CQ0)~7Xx; zf|55Y*RAxS^_AOdW}#)zi(M>lMG?n2A+C^Xhn;8_ux2__p}Shd-7sl7l(mb{ovicUGT2`_;#_l@*;pR_^f(~LxoqO>DU|aJoND<$SJ_JuaDc^&hEC0 z*(KmzNIFF?s>8{mkJ;Vg3OXhO5QB<22gz(Xe^j?`8>-v%V9^KRZb|go2MT@6tr5iA zKg=!&cWy|?Xd{OQeujJ9e*59I{g%UP`_|#LZ;~9w7Ilyh!0w!Y9?jDO_L6%6j(h-C zX)?n2OLmKG8C*cU1F=-z|$##QKB6# z-*iv5tA6_uvl6!TWGjW`N_w-z!~b*Pf8ie-1k^69)@f1gB5NJSx7B3cW!O>bTOLgv z9@a8o*j2<;^`446QITj4k8BY$?4oGt*uvgf(|1T;0~!jeY?P0`|<4pWSbuW`oPxhENA=itbMz9)`JO*yfd7+H1cUZfAFN= zayi<*T_mg2ao=U4!(*|jXQTFsEnToOmP1+l zwxO&_(H+B)5cfGQU+ltP-PUx=i1D);?hHPZh68HX``Vl0 z=#^20e^p98wYk}Ua`Nm?Bu{o69~5B}bVsQdM5r28nvN$}F%u~Xjk}I7H8Y$>#VCw3 z_In*ay=VJ}U+wq5UY#$4(HVS&qBcVR`7hpsCw{7Z*7N;dU)!0=_F4XzfBW}YK8v{H z6HU5sFFrAusQ#nBB;y!V+Yygo*LSnA7bK73P3(cEStygAVB>Uq-Trz4`#{|@*N)x` z1XdboZkUs2G$&uJJkq4C_tJ{{VAE`1@DSzeaFszVsw_S2Piv{w!iZsO^4dYQz_B#w z#0%py7&gPo2*UJN)0A-@e-vHWlCb+4-ne0bzQ)F)ng!BFf0%QpUv_=W$I_^xF*F=> zfLY-Hz%8FCCclGy|Gkj=?)T@{Hy3Z;eC+ksGuJ;{CBp=8axWe6yj3zxuxPym>E_r3 zZ&D66b(kk<$TtGE?ir?#G4URFd~~hAf05h?s$XXU`v6<4 zViXkh>y#fns7}E_7JJidoaEVoMAv#a_zHDJSnbv9mF6g;n}X&rqZ`!(XXYp0S`q0T z!fszZ(@g*bmo86|==;i9R$^K2(Bwor)+!VxIJ0goYIrii4f|1z?U%HO>sLZ(i+!CN z-E@3h4o=;OPqPgEe~#Vj)tcmKvB8Wx4_*s$G$1n+Lk`X z!*ui24{Nfg?MF3J1+shQC!leABff(t$qDEHI89=TcGv96f7%C|8X`g+dKsqN7l&1s zI@zJ=mhFf?-tau@qE^`TqUeTR>Sn1ApULVyp|ymW+ABV)poVk_=Z*t0riupt#C@`g zVN9<|$+9?i7vAYWk*P}J4RfBJ<2?lCC^-m-2?#OywQem||AsGj{UpMMcrKKgLYVp@ zH$%$#P7tOie=N*9Ok`}qHhM2k_`SV@z3wlbECc$p!?Kt{9e(|3KfXSGL^HlUu<7GO zG()E(z-#pN`bU_0Snz9{Poi$he=R^{0;A)<&at465UF|Wr>#BJ6u=yo$^?$qnhx4? zS|1i-s#n&IY62i4A%@4kn<1zV0@2L%O`c+$!Y`=Ne`vM+r`_Z3p^3Aiw`xf1<3!d_ z0rvZ=PkN){dH1mUe1q9>1hTQ;*ErG|IZf(ZG5UxQowE!*@Duo51nG^^q?n#azQFSB zCa~1M3_pn%Iuw3?QgNsbKkegaE&o`f!uK5o;6A zcV*4kf6@FGu?EBzpIn(U_Gvd}4#!KADEq8pY3vdI3)yQRn#SJuzmUB~;%TZnH)n7N zYRhL8P16JSuVSr%Sel;Ve-&#@L{cC2)e3W?)SHe&|Fa^dKFaKG#-6)q>I2>WX6!W* z&qh~KbvNJom^#a8!`tv7JeH?uA^zg|_gNBmfBhuo`dOsE?+0G)4Z=8BnMUzKzx#Zn zwIS>(&0K9mJJ555RHJ)w6KD9I{a>>5sCT%A!DCkj8=0fE!eDwRqhtMI!#?_@06P-? zorbyU9kVoB_=bJ?hJ9}uuI{IbDQaz7>w^=UTI~8j!l zXLBIYQqT ze0b7>Q|}4mv7cbtkb3pq?W_H-K0Nt%`n}fSTDvwTdq-`N?hOOc90rq?|>I5>Y(pEiZslQ!Pde^kx+ z@I*zWRMsD3Qi43l4*V)LAA28SPHV0Q93r&;UHPZ8pd(pr2+HmueAHL@7+TE#MOyd-i+__pb!y~w7{bx z3^*}~_xUtum#;eP?3w{Yo?TzQ!dwo|2b(krFjyhr4;l68nWlWmQwHR~ zHyDlK!V%;bZVKIf77Z~POtfhf12LFQb!!eb%rE;fTJ-ay}J1E^*PoViIbdC z_z;LNzYji`bwM3?`|>URSqN*&g9hNFkCn8OOwj^sStNIM4i36|yMOF__^=1xcZn-_ z(`NCknN(9R)EY`BJj2}gB~r;WTA5UY2%@lDfb^P4HoJeaf81I6N10%?{itTJ zTf4Jvis=*+G(Zmo_%}K2pOdkzL5?jT>5xvKMQQz)--UktF-rVD53)JE8QQCxLA5UB z!6-J=Zt3f$rcu0T{iqE=^%BOqnYg+T28!A%fi>|e;;m?uzH%du3pwZs-d5}M#5~=OVa3~h%%Dc>CG+6rrd`I`Q#$T zEa3;v3are=FaYxhFS^Hcf8yHUm?Ro?Nt6u%a88RE^65x0K|bqIjl(?W(|@gE7EyQG7Zm%caJTP?~@v$-OZ?;FeDdw&vo&1k_ zvj3&mfH*s)w3&6^ENZrPR8udciJ!A(mQ1boi`Q3guWy+UBzsOwbwg+OV6%AF+EMMm zZoyoXZC|LsfBz6K;IURQcCVw$Wb_FWLgO2SlUO;un7lh;=YAAUGtPt+2MCEKXMG_l zJV||2+NX9ACdWKf5@+ z{3yiZ241=S_5$8^b$WgKlX@R)Yj{o;q85-0Ys;$Cf75Rck=T8RXg;B-2IWIcd~Ku8 z`iGi>Tb~}fIzK0KM?ZPk@t;rb1epRFqw?m93v+@(1%m~m3--vJ3e$j1hK&a`!mvPz zpG@2-F-1oc)l&ZiJC~;Jf`AItTo8xU!^A|#)YD>ba4AE?va7@u^K((C*!Pq0De^{eC z@!C;M!Ffep!3%0I9Kk&I;(S$EvDZ0_L+noDf0f6fOQ=GOgT`PK6DQ*8?8XCQ$EArCp$v29zb0a^)pfgE1 ze`*b)qY2enRWCcxYkC4Ws}Dwjd~4N*Yqbdk3c6#PKIE?{+!#ge)xu2?iwm^oSYs6C zw+3qzB@RGi6bmS%{z69jiOWN}%i;hO!9py9Jprw2!TK77He&pa=2xEN4TQLno3+lw z*Eiy}Vej-I34@#5OHFs_SIA(0)#Iygf6i^UOEnDI!H`R|oW2XU<`HjBUthfW#?_0Y zZ^*q(FOt3=cViK=SIfTlqLAWWyul#l51}V~_&exFp_(BNa0GhO5Sx8R9DPICF8qL( zd59-rfT4Yuks~^rnQZ=JU6lcSQ*Nu>QDNXT`yok#ix{KGO)OzON#?rU8rvcqf5o7$ zy~1Kc%VxyTi!w7iLQkK$9=C=*y1wB-b@tRBI+iqr zjYP6;gXYi=m4fN*I(KQA-Z~kLKHl zp{Snj{}%};d`B5Y@oW-Rtna42hWZK5JgoHb zx3q_P`o`*wBeV6*)U7TLK-bH`_;0k6ditj8##;&fGt)GDfL}Up`$}!9osa6rf9y8i zVdiGH{SI54cXuf^FPgVb4}=4McAH#@C2&+#>uI#rrDd2dHaAi^eDK-~e@@ru(zW34)f9u7{)JpO1?}vX@e`VP?DWU)yuz;0xdU^Tr?DXn}?Sw-X zN-wZ4SAQ2165xGO_}LEmgCE0;?;2c<)aM)7o(-QFdyNvJwuZeeB|sTwK&^{WBcxLz z)eM1+)1cNXGl;~sz`I?;pl4iE-34EDbL%dzwkLtL4O3MNKmL0If6Jw3n635K?R`7N zzvLWK zo{(l5bj?niD&p4qFf@lllig?BMc^+wAB=knY)5cgabWk1y8_e-?q%Y85#0`2*?{#F zHFIb$OK^nbNjKbsB=B=ev2kwNUnIqrNoozH*eL(ZVc5p-e@jxl9Raq^^)eCQzeIHZ z<^XJzO13@GZ3lpj(#jl$wJR~;63WywN+iQ)T%N!A=Js3W#Q{5e`?5h;Q_ncd%-zH{ zN&#~iwplq9FHOA}!wRx2;C|$#GR#S)#!)8u4W=t^P{1`E5G~TT=rNQPeZr>2APRkz zJBERM44X#ne~75)_df&4qimNQ9AK(D2Ix3YW)47SiY)kAPZ`nm{%4}>O_DRunL1PW zF$^iwJ)(I`8OjY_gp+WXnrS*x8sSv^u+})WP!_}Ya(~PQa7NzaofMx;;q*bA2@)=% zhjA2Ge0XtIDL-VmBpP$oIGL+4(%ryxe>O_Zau~L8q}U}N=4VBUc}K1= zY>^qYA{rDK7J0r1TTh0f<2}%Xxe(Ee4N~|U+mZL4;@fT$x3FZoV+aT6Qle8wBv_DEfrlmk3S1B)+=c`b3rbXV_$g{>gZhxy+RP^!NZcL9w?PHBf6Zi^Ikb(Im!yd;NVt;-fwRa{bIQBg<=P#vNqnJV3(!Lm2L4|v0Q@Pa6FSF)@VgPi{#Ru$scyYnJ9y&y_h8&AIx$!q=asoYgvxjgovEI5USNL~+Lx zf6pRohAm2idZ>(?^`b{_mSJG*q=@p6lxzob%#|94qp_W|n4WQ7OhpDAo?@e$Snu1~ z63!MmE6zCF-%jEQ@ksurOE?`~B!OcgnA(!cpEdua-%kEX-!lJX*)`8Se_YS)gp*j*iMo<&~C01X32yzQJ;&BD1?H?aR?{Y zBj729TU~b=BmL_zLtwgr!_^=7eGYdiRndqZ}k?sZ<&6fS&{FK02AoyKt@T27yNa6V&wM2z5EA^Dn*@GwiyKf(B- zANwtzOkaknX=|Kg4I_41xl^e|7WAT}2y3e12_Z zMg3uAoC-l-{~_MmVgDif9K%nPVFKTUn+|?J_2n^xAIiQg@N>pF{u{e}+`0-;2q1p#q`w3e1LeG-BU48G_m;2-0>$oayddE9x>@3>6~V zVdb&kDGQcGpfN>kC#DXbVB2DMCsI*%JF1SxrhTZR-~8^U--QW9-w@2_-+^*-7spW- zTYzVvfcSZmuI+|U^DJ{O#c`L3JWZF!nBuu}d~n|~1EK;Se@x*=#no#CAv$UrT_)8J zYu_%ndM>J?4olVyu`>*s*yx=h=e)-D!svnv-4^6xHhj@Vb- zUbokQZ%6nIe~uvsLT#e?;OndIF+5GQ7(&0NpN0cC+7zYsF=>5^3=jI!p}#6@<_!RO zJwIP6an@n*D$E~@)nN}w1b>Qn$AMIv+jsPD&SD=lMLPXEAZA$Z7fDM)KOasVo^PYc zx|W6I%cW=P}h!QW5XROm%q&EYNf6_GUSvGEl)4)(RPQUo!+l$-t zo2%2abJu*jzHyd?yQmxGMmP-H%vx5dKy)t}#+Y*p7@P8l5JcXPg(;gRSt#!E#U&8+ z1$E9I>RYy*(QFynyfV8WnrW}NXAt#`aw;5#ZEV*5Fb;E`fz82BDZJ5LPq4^`(2ELM zM@fOLf0yrhECePiQlbh(W-!D1G)b$&9hpUX1bvC_I_%h>=9;B>~&ljEU9 zMAq^>pFM)gp!`2BflgN06z~O8k@8W2m&Zw3O|@FnsHFbk=IWh0Hd!QEtnoq%!C3Y- zpWfVDeDkKmUYx#pDgOOfzV!CmK{c{S*kJgGfBEBXuIZoo3qQWS7XOwnoxQz$3*TN| zd{6(V*Bz*|QQ*%1^WEuXhkbJn|KE1lB~8`k*}Ln@pWr*ZdI=}o^(odKr9>(9>&v(E zpDB52UF2GSzqi`2yKj*!!pdj8x_EPXNwldKa3a+&7q8|&U!UK;yLOsC^E;e5T{l0y ze>wa1`t6&G|2ls;r{VUxLMbQPZ@&AjPTl`j1QQ0;(x2MkwbE4f0zCKr%~098p^gDd0O?==`RsChJDr3>f!^a z&Z4MqB`1(71q_SWZ#;!tIacOVD9xj-&z?)6n(FLfISM&TwVUm>F0m^qp4_aFGQe>e=Fbq zoVw&#FU+Yo83dl3RoKmPx*AU1_PP~`sS`wQd-7UoRaAS@wv)uvZ{Dn^VnCwT-`#$6 z>R7bwYVfiS%lIVplL+rD(Lh7+^u0{FAe5E1WKX(R@9J--Ws%;tIeYv1^(m-A=dUk1 z?DnUt^Rv^N+Xf+o#yMBpk=a&~e>wX`xm0Uq_D!-qsclfELWPs0G8eugkn##mxkQRZ z$3vH4CI!Wo3aOSkR*l4XE2yg%;}>9nfVq2q2LIqs7jNLFOM3C$o73x`J~|pnM;0k! zOg;)tANL(}w8eZeT*DW%hOWtCbu@m?WU-@mlEsc3lEvO6csUkQ3Pxosf0=0_S{fRM z#$NLg$9DG46tvh&;ywHDA^-UwMy2KJ$lHpR8%7Zyc~O}Z;FvjCL*iBfU}ck`mCk3Y z;?{)JHbPu$pJtR$<}hsIxP`a!nEN61Ht(G0`-e~W`>W^Kk#S1dx;RhFLIQg`9K{r| zLS-Sgk@{}mje}#T}1nSquXVs8x8N{%7P4VH$zkhhrfo~_`o19WPvG~dt z)n5+8w||Il`{LW4`1Y@r5u}W1UQw?*FlreqvGCwvft2~rzWjIjm0;l&`uV@bw?E{! zKj!b~KU?^@@=7QJ`I4a<%a$=0b8-M*c+5mgc$Baak9ivUGO?73e-}SuVhG-qWzuEo zg>jy_P-zuoj9+B^i@CjJ9E1J?;i3}cvlm|Kyo+tT^fYBBCkxZ%VFR_YvpwE7d#czz z-kr^TrWA{WNt|9fDn#{42Xbwk_Vc+D1yfH>z=EBEI)9s7P`<^Px28l=Jq_lHyvhB# z{vpP>Xb#pwc^{!Jf6L_6MdcQQuFu3(hAK@BIi zr=NCxlBo!LSX`etYC@P@d1m7@o|>mM?s&Q#WyCngZk;k>f1rp=u`@e53^-Q47;Z@? zvB=5O>LiOQN9C7)RDap8{<2s7tew{9`?yr93-#}>rOK%bfKEC2IQCrNzu7Ai@ z44U<^6qU$?#k=Cgi{{D|?ZSn#15-8^$u|oj7jtSZ7XmM;Q6L|yK_bSN%C*#PryG~m1CZp1#BPh_f~UGkDQu3EyFe-iGY{?fTcFD8BJ5U zb@XoKB3BO$dl^cgM)ZK~XnQ9h)t9M(@pD@i^_&2t*7x7siGFiG8es~s7) zoU**ue;yEBpYdM%$T*ME;V=*gPnyxy+nd{ubi++QUA#GKaDi)`a`_irGF$f9YPji) zGAkX1ZG6GIy6MnsTc#IB23bS(z-E*r=`gHwHT3mcJAdRnmfrP)s%xDR;i(ww6yAU? z?idEiLW2fTYq)5vM~iS@Y6yJg1x?neNllOXe_@-qz`DYzCf-~(o^c|k+d<$*Nye)Z zfwwXu_Q_sW>JI_qRL{Sr$-9NJfR!Xe1oyA#M zf7of_L-p0)>&Y|4*^S$?{t=CJ-y14bdxH#@-jR)f0BX4f~u+~xI>paF^?e|v`zmAO4CBHlU{`BSBGlLSVe>D%< zX5;IcM>MTVQZsC`QgT>1jykOE=iW$mXvI23fSG=hrrgh?SrgZRafV^7zG+ttw4M^9 zBtnN_t;;7Z%s;lD4-#MY`xa|3opP)<5=S$2i#On-Fh;|-?ED;>^w(KKb>n12NjUZU zzV$|ziEmc8XAMnFaB9u4&C0{$e+E&DG(ROtrx~WnL^K@cFjCNbQ5w5QC81~H-D*vU zohG+Fjj{{Z4BN~(N=>TNeYRSnF_?T2_s9(Nurhj>-8b@m8fP7DS`^t#;ZhKHDrsx7 zUs`d69vdh6tyvXxFv+xa&HAk5UM??KgY`N#&Kfjauch?W=IeHBlr!isf2^Hjb9vpU z`)YXzbz}iK(e#bXBkHRne#hr#GROqhF3Z`mFsYjCv}4OO#QK$kL@q8W;$Wd()NT_|Zr&45of$;9yD(dK#j6))9?W~ltVl8zsZGOxW4D+r z?=W$lei}vU$8$KvJ4~E-_$vJ*Uc4y=qJFb`hnZuGjKp<(Qn7ydf7sPZTtb){K)yv1 zp@A>ymSVD&i5z-Sws|J|ha|eI%_xp7QV9QI__N3_G^F&J8mj=Q+orU|v=5nb_VWA{ zY^pbJ-rk;K{@uq{7w4DsY7??Q>-l1omS``}#(9CYP<#>7j+2OdC5s(5*kVQreh$Mn z)7Kjxm}H81Yz(#+e@~Tbqsb}SJOfbf>xIKqIxn0TZz~u+31f`zJ4=eyc-meQ(b_(G z%Qq-ZYrDv}oo;-h#hqAQ>S{-&Tb4=P0m<#|{V}3{CteuuZl36){ln+F3UbHBnS9&9 z#-@#@^urqG!WkgOCd;q^I_Q-t%XGPo=pd{{XWgz*KHZvOf3={V;ue^#k7;>J4UJ1r zvskx{(~Y(2^|GP`<4uIrTQ)cOEaDQ2H%)pyQCcw85#=zp8I;=W@4E22W1}oKrzica z21W-K7+D4G%-7x&pCjk#1Vn6~R`^dOZ0hA>7zCa>3`Ymkl<(ta4fB0~&tiJu1;NL0 zlH7L(9(EKTe})mqodchs4%$c&I`f{KykF!|yIXZD^&i|HCoCBb*Dsl_k)G)zZq9En z-=3Xbvhx^Qy1nF)H{-$ir>RFRPpuzpyhp7^Hr{mC=damIK1Anu*`Nbg604?k;e!Xb zX0;94YM*bszhFw)hbQz9>=jFUz1uy&|H`M=w+yd+f4+7PZe?b*JFaeK38%0p)|?p@ zgm{^qzzN7dg;|as?jehlocSron3yoPrb(+)=xDllg%wrU`HvSjIPG7kdH(`*o*nDQ zYL$yRWS`sv<4e!9exlx&SocT*gfp7eU_R|9Y)*nb0mg7t8wgiFwlNOb4{eMz3sO4= zafVaIf4m4LGf;wSPlYimft;?&Xyr_C5?8$!txkAwB3^j@eK8g6qAj~LANCX&!xB>9 zC({`__-V}?)cggG*n5}FWejcQ<~pyL88(2KgG~pMmnYQ?w?w5qjmA*tu>Xwl%wEGV z#x2@^xbUK0#A9Qb)BCY>kDkk$iI6!6nBIT2f1L?71~`)2H>(rNNKHipa~knAZFc7* zn5fA8BP-oF8@HkwfBD71AdC+N9*y6Ua@?Nw`(+y%s_|L0sGDM$i^kgNmaNYvdheH? zOE)z>RNzVP*%xd-0L1y1a?+o$pZ^W9(B8N*J}Ktf>Hc)_+3jk?ghU^nXcW{YB$%tn zf5Wgv^|wXs_sjMaRAWdYVcj2A#br@7bCp_i9T`RF%k8VER!Xuzt)Bt?A6#`)E6rK% zEJN*dn`9cJoy+DkMzj`H-!HeUof@MR0AfI$zloZGfVt?U?V*~v$}45oKr=Pr&`3A! zS9Q}M@w0=|K~m)JvhE~U)I;%)c53K770J(el7B4A4?TmutM9cgxzIG8ZgNvXgX)Sw znJ&-|Jc1>la?&qgRsPBOl&2jwONx}`X_4iWsWO>*v21DVN7%8QN1RQ(*c)+iarFad z*xWY7s^S6eBWsF{PY8ePMG=ojJY#s1Mrri$mz0Bm#k@!}kyHm9blKkC71o+fVtD-C z9)I&_k+QLeMXK3=!vn)%5wRf^9j`BwT}!m_u`-`qjO(RB5-{Ug2*Mu@XJWb^lk^@b z>0nDTs)9~04~h&06tq^H+A)u&_&UsSDjL@(^sDd1ESqAorAWmLC-zHVd>W}4B>JM{ zfm4j3^DH*W+>)37s~x4a$4c$~{gPd!Nq%VK*x%JW! zM?iuVv1Vag3bAIb%@yLeh(LmiB2&dPK*my3f>m>M{N0N%njWAk#YSiey)T0GLkXqW z*Wobq5wzH&H^Zjf61habc6$ztvDF8f09#>;5XrcGfk^I6C~HG>i!a|ZM^iW{6Mu}n z#Bl%HG0&*meE1Lsg%^og@Ksv`fquBzSx_LP*mGlyyRy4Ire}=tp0M2S?1wPNOd&Yg zfu59SfC@lA@e5oLl!3{eBl00zaUQ~w;mW{}6I>50={O00Q*)w#kcP15$QYC--Y4odw(5(73nmoZ?jOp*|(&C>t;rag>^h!h%F80T^>;< zq9l!|c7VsS2_@2&Cm~5Zh!Y(7K9=9>RsfrM;e>WMtSW38jvvQ82OosPG9sOkq>pwS zJjh;SGgt4`?iM~i*tX+viYGaSl*tnmNgXEeP6l*6VkFVT6ETI8B+J=8P=6oMe8~Mq z8wNe78KE5=zqFBlfrl|~1KMj=$=pzw6#f{CzL0K(_&f!!Fv|b~6bPaTs`rN}z-Py!^*;JK8Ml`; zEk3V-fp>BED;xzkQfRIccz>V$Q@7;H)yd#S(af!kEtYMK7b{$cI70IYzCbU0C(2Bc;`5_!cEy*mt-(VK#?>dVDL;~R5zg_eiHHdnK$ z4iJcCK&b(s>xuYzX_%i~zsA~#_OoP#gy)}p9x=6bZpbnw6@UOghNETV<+7OBG~%Ct z#<ls)XV=%5>NUe(7+lfYj zn)ZTgtdOpFo#0nG{bJ5R+(30y_F@OK;z4-{QE8fyI4|oiVtvEkgl!Y@D1c8@U$ke$ z3PVL+xQY@V$*6HGAjO2^l!H}OQtcpxM$H85N3}-EGf->y0e>wxT3q(_ioRC=R!(w# zVgAkjyntgrE7(_X@($2EuQDjKOD~(@UqLeTGRH5slFY6 zj+xgwJGks3NJY#M1<5$`;(G^D8sT4^PfTCSe~oJVJ?6ilqi-s+*6d}kJuOmSjK7YX zS0FlzMlnksV}FFP$SY!hjO#_G7l;m=-s#AT!{6w*ThubqZ9Je-v*c5UcL>AI3xX5} z9pFuk(l+g<%L)KZby>EcZI<@q0(T2{6Kho)Yo_!K1?rfxSDeClTI8gf1YYhTrPAJK z*$h57SyZFg>(Eb=EE(pER37_d!Kkf(_2$$U{$J;?hJRIL7jyf-o{x47aedwXT6LO> zt`96nwg#T;cZ(4E{>C3CNrc+T8R(t`E_H{!@uaQ{_WJ|uHbh`}2UY|2zqvw>Mc<(EO9Uze=gNQBgKm;uH7)WA;zCa-H7& z;$@gb>3_xlQK(71V|V=U>u1ludfHofG4$eYUc{s2cRv04=;?9gMSGI1(BFP|DQ1q4KWJ@1K34DPA0AFI@qc&B!_hb|U+q7|S52}Eb+MRDO77QB zh!q~ae-G~%7Xtx`8K9#09f9%SJ2fM_KijW%)2kdkb5?k?$F7rzpRiXcytID~TEa{I zz@xfUf=}4?n%cKj9@IH7S?n zG=Hm?Gjm<2%g*DhNbM~^eUbe-u2`k-@S-C25M~AFy)#h~G@^4jl{0{$6;;DcdW=M* z1Kmg4AG$`x_^qW&UrK)+E`F1Y*-yBNKNeoxVK-y%A&F!Abug;7Z_m%xurZU2joQIR z&4jdqjryYZX4tq0jpc+mK%-GTdwbrTpnvh*#lgED0T#*YVvmaY3i39nc&2c$ac$UNzeuSU1XUGx|0p!S%?x+li$1vr?6l;Zui`q2F6YR_`9g@Po zwFLO8fG;+|TLIE#rvra8RXySbZ{z^@YkeFgk=ko8ac z8@uHj!U1)`tF1tlzVy5cRLwv0xqslwsJ^}ZjBE|A=AUtZtY($xYngLW>TF?4$4+C# z?v)C}8x&y_DAdB66rS#97)^-2*CfWfhfP@ZEdn2BxtHB%EEAz~_AJ?87e+GRod;z% zsCyxT+)f$oC}G(5BDz?CT_p`&w8iHP`vvxg6t^z$UXP||rdVF!b2Cn^%YWOctPb55 zm3chJREMemY$ctil#g!;SdcAb^(@Kzetj#QT9G$_&B&W2MSjAjFz40}FsWvlhdFMf za()<1ko~=COLMfX{P5MTs3s`3$8IUIgRWiZ#rn-yYpohQhq2#J^2GmhI|(a|q1bFK zKl|5~5@1ZHr-y|rk565^ABSnMKlM^-K{80a z6i!dJzYpp&R>-9WO7|4ry)hL~vz=|S#gjCIQw1pN4}WbGqf)y%CeZY^ z+JLp3w34M~R12Io;0+f+5yiAa)t4#41^YztV9j2veQqmRdPYUNulW#;X0bKc2v2DC z{^OiG+Fwfye*AeyzTw>z^qn>L{k4>}669f2y8CY>-L;%FYK~Srs);H^(k*=14uWh{ zfZKjl6W9`VdJsNV%NtohNWd+7KfTQ&&u za?UqhJ!l?g0+zD=Fo?gS5I4*EsI?PKfDE04r>T#v*Zh3l4SX%_tvJPu(j?Y-2dg~2 z6w9x56Ml7Q(0{J6miJbCW=5$Lh%$gYk1hitQ>XRjwM*W639PkLh1pDK$UyIPcXTWg!5b{T43tJgf zope+*1F>h!Wj?Cs=Q6DV!wo64)_xM2B~#RnYJxm_dw;K&cvN1wid<~8Pc;v31(3{h zD)#p7kg+?EDuA1(K9Gt6=kXl+25JPKtxVtr<@;5 zD4hEM(C7eV@8B2j!Gq6KK5~F#ck%U2V1EM3w^X|#y01v9YQ%^&4Jc0x6P^d6 z&KxNEvIfMEvP;Ves;?kc%XBNit;^I$`CvO242)xF!1A;j0!Y&}@F~wHR;?+Fq2+h(@q4QmkGE6xrri7<&>S8rN%%OKJ4X5 z5#`}DS_L`>@M^^=X_SqzxA(2kkr$N6#edUBuR1&Utn`^2jrlar3nnw_MjoG~0VU0f zY>b7cq{Uz|0cB_>MlgA4n8;IX9wMJ*#m3}%&84QX;+$8&?GCVp=bZKK?6soLncCrK z)vHxoW8FV}er#afQ`s$Dddp|b09hLKoJ49UwSyvEF=cnWC`(8{W2FpACzmk#cYo`X zS?g>*eS%0+GghCVv2qjzRR11!7Vx%rdUdgfTzN6OD}(Uv#Ac)2V27nwnDa z1$irRY3}h6uc4eNj69Rh9i{#T?huvNCtcdcLVK$At8NP4@$eqNOK=hRt z^9WzMf#a^oUU=!NB*{^^<+&XvP2+fCE9^zba0PISOing7y?*rxw*w`eqI;Z5oih<4FK0HR4I}2- zqeB%ncT%DzUM^}}-F1hb=217eO!gCHe#4gX(p)IfxUA52fPXj8^8lU|Q>5h0oHAb&*3zG51XNm)9`CXzV%kPF3TS8Z6`8E-{W3{WHox(rfWnY9j(>3cBA z;?F2FDUa}YP2z=5zyNYh%GGe8-|TWO;8+WoXvnbfkvifPu*;dRaDg^Fh7*!TlqrSi zjwJ&skp;UuBvof|1Q!lk(ZqX)CaO5vdbAu3%)Q=WD}Oq6@6cGuCS%V&^~1coBp8w> za7t91g)N=1bcKB|e~$er(KAYJvR@6OG^TF>8O&xE_l`adsyVYJ zpt#NnMyxGcuPawpPY*vlarJ@qnq@B4vu><)3RjrCPF?V2R-B(g^H;8C@|xk%6~=Xk zM=q)k-+#%YVdujWb+!57$?hF<+vvtRr;k~29!4uEE#BS)>ltM?IjoF{{`bZEi|Slo z#N;o>xfU=#zo%07*Ym4mCS3xh1Lh_DMRWOD4@ThH-)WEffwJdIWqx?##7v+}}U^S~IsMkZ+t2 zQNM)kV7NXDt1J__ba2VQk0o7*Lijc{_tad7_VoE#H4k?fUJKGS!}q%EhcS;OZ(%0G zFn@!p0$$e1rdUoygi#6JD#iqbF=nSiQ^D#NLZqcajGi1ATWZIf+eK^HGRA3a*Gwrz zsAo(C9Sb+=$~-BFpG`U2LC0r@Y4+u=sACCxhXQe74&d{2YE4s~Z+7@;xv^>5F6p$t zd++IUzG`HlFPBO78e}6L^HffwoDj8yJAb090bOiKKa7tNfiNxDcte!=#K>0oh8Me8 zF_1=8htWLSv!YM;s$m5tZDApI=e<5q`jlt~D)M&WHr;_X?LkvR+fkRj6lGNe6_i0= z6-S@uv3ehmesO&vc-Rn4en+729^1gAmD?oUVniM!?IA^sN+;mohMXrpi(lnMz7wEW_x$dlDtl9M=!?nV2yc zy6_?gmW-oESfzxHIA$l_j6gENi(M7yxuC=DsH=kNqRNeW=IA;W4uAZl$f=#QwCv=BC`+*11JnvM_PuEaLZQ4^82qKM zN8CcmiR>(GXaM3O#hZZP#%gd{zKjhUm_%WL<6)MV8(+N}bIrYcouw`RGlrC%n#Ctv~9s7@D@C~@b z{xeSlbQs&lhS-<2kA)2?mVZYm-M9x`IMV`Hy~e>L1*loDJHTaZr2BUzNnlAF;aPaFh|4f%e=;H0Jiak&I#K5%+LVxy=-KvD}_fJas z5l|+1QGU+111u(qmFO^{W>b=emJ^%9V|BYq^~GVQ>eCDzcWPA{6if?<_7%aj)Y*b8 zi#4ICAA1jcaTm~)i33|U_5pkWp+W&wS)OS!O+%FDxd4k}sx&<1;!{2cQR%YmHmd)o z9jTjrX=BnNs96tFDSy&}1Ne1WfW<&A{1~5TmEBm`bV??&3hjegNiNu#UQh-VzPorS zj$`dy48t_b;gsh7y#v(i^DfuOj|K+jloKJvtF zPu^$mC<>*FnxKWHpUb=_O4>*s@bXDz`D0JVVv0S%OSNB~N?lbad7;yg0}B>eQTX_k z{iwXx8!D)4pMPz4Oo}+3d06C+j7yV9o*Em2Kea^I7-IYEyLWMzvs<3!Ck)K82cCw* z**xkEUH6HyiCD(Q{6tw08hOBo58d~h5_tr)6)u*#=$M`l+McrpN z91T5nrk*9S&(kfHpS{|*|AAS z)!FVH%6}!;?WhZJTs*P1s+{nAE$NnEVNQHGC(=-ua4*h81{OvjZH&Fva%3E?&)m)` zeRgXtw23Cb|>)*(hbf(VH~Vv;Y9Up27f(L-Wtg?p$>MYMkesoUd+T5Vl2^K z=)jA&IoXC7IxQ;}R*JkRs^~5i%|^C+h6m5YZJ?@dhPlX~?1$LQdnV;3n;J)KISFO7Pxa@#==w~ zbOfd85kq*!;-(!-MR`-zjsva55UYVj7&R1!Q@T!*JmIGWJ5(DHm=Fr460+czBFih9 zrUNq;HcEBwq>VKX+*oL$H*dkYaHm|oXn!4e{ykSsq)Kqe${W|ATzz|%^tr!!mKOWr zIY_oXw|8s0l|IS0W_VO064D=%4!dAT@Oey$ne#9sWhN=5g=!0lh%01hkyaH`R;IAZYHw1}5z!wao=HuW14|ahQ+Xk# z$gk{puR7VKFKcIox00*6MHKfO86CHqo0sW0vM`>!l?yUAm8Dr+ zCkq{YKzE0AyWL&3l7xOI|L(wy#g)&znocEMaHf(4bLsGwu4y>kM2)&>l8F>^;I#v1 zxM%>!$ux19{dO`@jJgz}^Gk$HZcbpU#b13+vMB@g^J3mk)h&U|yi1@=V56C8HGyq{ zPdJ!A$3B6rZhqT`Xqj(p|q94zI~(IWQSo* za^-HdIkwh2wQrQ|>%fCq5nZgAD-{7L?+o{dut&o#hjRn-$Cgrs%kqC-D)MwZRnG#> zzISo>Yr*HmR@8^qRNC9)fjtQwbQGPAFU#YHt)x=T(V zvG)bbV*kntJ@QBulakP9$|=GLS<2HNB!$79mzGZp?+V?9(4;O^3xEL<%v3{VepX(B zJ&vU#MF?yxQ^+U^0)MST`?J4qkwa}Gb0SLMbBde}i1n$|?T8$4+`hzV*|fUr_?!}_ zrPe~%mlB6K3)6R%^5OiBf1$QhR$5m7`#=95rbnqV7wS%Fad~r*^FX<^4hB-+rq!i~ z#ksuTZ5+*(nQ&-w)z_zu>!&YBVDiv2CaPzkBhZV>ZqULO&VR?C87`J9&K62)ROXn3 z0Dcnpl5&_JL0ytu3Nr_GEbcXA>Mh=`093@8@@$4FLpxqM!UVJ8mS&~AyMsR4tc7On zX>XKe{#i1gPh$~R5qlKSyW^#!0>Ew7p{qPldfvXh+GS)J;6577yE%2)MK13&?{2-( zoqz^)?^1D1+<$eJL*7<)sEk8f_!L1gdUd5Yl=2nDlOzmazwCl^FqV6xPBny(E|AOT z#bD;hYg8#O)p0V@6ukQ7Y^A1Y-ze>Vox$^h=diR!X3z1{CPiKQZ8atsn>iG0qYAUKvR^Of*q;H-!F5MtLl+Ys%c3tT+9c(Xh`<fl0z#l4e^Z+*gvDlnCeMG zA9RSG?ducB>)3M6iRc@(3UwIP9IEtSErrdf@Q^!D8#Nns7*-2)b&E$HCDqZWQn3Sz z5)>)M(tkuM5*-A$jFpP`Vt9&>Q;&{z)$K^MA5)e6i61s_7~;JM$jYB&9r0LoR-uBczxxs-uB7R8T!qQ$V56|AT7MFWn-D6)A&$+89q*q|yM6KzUvcOn+ISezjnLJc?Zws%2Eyr&HIB-|MnB{E^8r z9ikiOawzfLcUcmj2Hq6(eNp8|rju1(mzM!$RsN(Bq$k7LV_5eLhIC-b3eqv-P6niY zck}iQ6K=6G0Clkhnecd(cNljI{0XKUnr-#<3E5j*WGjU3cV#x9h`FX<6uH(_SASf& zspb(YkCa3dOl5S_p+n&h)OxVaH z4)8{J$*^74u^o<4eIE51mTW_J~T5YKsOn}jgCY~Z%A2U=`*Uv%MR`9^NhF1qkk1(|4`;B znVZg;vdij?C5?B6tAk$lP@O}SF@c?NlxbJQ0mjbLc`36S7JM}1f|CgyE?d&-6mb~e z3eH~%2B#5bsa8u(4vUm-n}3sO4tmFL$~~!Ie8O>E!)$^DRzFQ6A=%ZNSM^SzmBQN` zQq}tUwC7rHRV?%DgfCE4OQa)->XwK_mt{-lh%Dnl@WUX6UG|m?x2RL=rgJDC(AQ^K z*RfKA0}hY1Isx!vo=T;TVzOC*ajKRIi}>iJ6elPqqI6f!4=&mlm4EE2RmgJKE&9~w z?d=wQ=5yWn`+vcg15d5=Q19#WkTtizXVk||X?hM1YNZEF->5~c^bb(M9IR(kR@|-T z6IOe$;XP}&a`Dg=UHr1S$HsxucJ5h?I@SKIM7)+2qxQHC!Z+u z$aYZ3u3ha^aZ{8_Q>vb5L(ZMA1lM=p3)d?Ts*!gT*(bbv%YQL>qWye4AKu_Y{J-qRdsxgCSiGIg$o&u4h|MSD zGCRaWn`c|r5r2(xEJ?oRl^lnuypYwAO=+SH3AYI3))S6Q?#&T?0K)dX&O4BCm+?{z7^GOFx^ccp%E$Qi)Y@8KOO}MYz-e0X583 zsW=sVVJ$O9`dm|e`(=8b24p(rwW{_YW>fs3Z1n^Si$Pk;F)TEaz0e;SWwkmiw27Ad z#d}nWuYW;+iQ&VtAK&83ZjJbk+G#g?WS)FVBHXWtaM_tzwIY0aS8X~bUqnH83i3Fm zgp9J8P-U^De2e#&LpZFxG45ir+lKQ1TOljYU3q~h4pDjSv>>nEP!=fFO@^8%2bPR2 z08zs{1F)PQf?5@M)AmGjcN`A$dB$AKAMq|ChJQ7uGRzge?Kv_}JavVDb{gp(88y;f zf`FbL0(y=R&`#IfBlE0Af`B6}1b|eq_~51Y5C-gj|L6bw@BjQicd}@h>I*~rU+#5y zdA>b1*WuDGv#}m+vD>{^Bo3B4UZX=V?lgx~@gwu($NFvTvN0MZG}eociSuJ=WAybK zqkr$ZG1^geEt2qBPSv~^&Rc!5A$c0nimP-f40E9h;@vTILtZQIS+aVB3F$5eS&;EH z=ZS+h-cH8g(dWq+JZdLn@JOFASc}5P6%>xafC{)D24qfnxvIKL-VC93JyNpn1QyJ@ zml}Hc2`VNmb#Ya_bEaf#Q{0{oX!Hq*wSV}APcKgcc|a_@CWNvo)vIQ@iVCB*k^)n& z<2Z0+jM!MxS}9HuALgC8y(7BQZg4SmR8iHMnl+`-* zQpH7e^my^Rm3>OBS}>|aw964CI>=d!^+b_JtZ1uFGugTc{YPnRsc34o8 z(+Bn#JT}kyWU8hSkQ7&^bX7SVd`5|)4#S$9NX-vEeWGV`>P>trw+n3|GX86U8BJvl zGgkD>$dM>7sOJ7*HcALbso9CxK!4P)vJxt^_9~{ofB3bA=ytp@`t(UHjNZsOkom$3 zSi1DLebE+oEv(ja+REMLkwq`rmSOdlN*fJ1l1JXxJDkF@xT&l@gLQN~)hQ>-(_}_8 z0S@i_xJ$v2K|u$<2ZK$*c_`~uPzkdGu79-C`1VMj zHo0|N(dSDxr``k=E14pu=<#}~9HQ`;VPzS*?{EMUeGZ~US%R8j&7IaZU_$&mf{8vO zu{ozUmxt^Q@0jK)OOU7{(bH*?g?j#biig!pl z`DHeike$1Te1GgrHF77gklp&odp=viln&J-v4;}#-m@6w5s6DK5`W1eD=1{l%qd#y zTf*eD+GD^08_hE>Z^wnobkfJWr5p=cWekG}FnMTAWNAG)?YM;W$&%|`LdSZS(6OUS zNS_DUm^1U1tF*VCX)nyEEl;ULY`mkwq-Jt0t~+x;&h3}qy!&c-Oi4pX+AVAEnj>9^ zNLIZs*D@o+S{%4B4u8p+7Afu*cFnyEyNzAsc$#7xX6hY;t=vSlQ94G0`5nm0J!i#r zJwGE=n^J*{lO!WtP8t@s9MFhK>2xXAnPq4g{@Sjk*^JfA!m9UQ_Ywxs@rrTpXDx%#VC!x=G z(GHx4yTc#Cbbl$d&4Dx%Xu=lqdzinHov?E+qe@w2I)lqYO@K>0^b7@*z4m5|I*LpC zjhgI*SyqTvbueiY%5k6YNs`V))UOL&?ckG9df)Q$_sQyy!PE-_Fe^$^=ss3=5Ar5m z#4r!)tD@J^Wt6MOF!X~*Lx<@!O4_T+)(^sp!mI2oQ-6y|T^)p{T*hp67&a%Rc#&$* z!GMdN-uRwiP06HsdQDKRDwaQRHbF|N9p&{ECMcRbTwP7k?1f5>xDecqF>jRn_wjcs z+U^k+t5%++_+~P0jjFBu`O$%fR;o-N>5~96z?LMA`Do?HWZz?VT+wTHW9ngD-uIC{ zN3iCp4u8XIVXK}g`&7jGM{A*NYn=sZ~3(NRKI+i6Rm2S ziF%plk6%)+O}T=boo8AWv{<;k8PdXB&G1fXPJh(iJ6YZcc8N~)+^&jN@!om6rvr0a7wqZ6-dpoDJq#605`by|KuFt zND4<~GzXS!fM3zN;H4Gi>R!o?Wkd)%Jy)`amakPa1q9SI2TT7D4-PEYoE0Lv7j@#) z^MCK>0A8u5ytFGrMH!9hkB?q2z(A8dsg)+?;-M{_*DB z*%|zJ2k4q13@aZyAoPbP->REal(!jHT@urO0)MmLc*pvD!|iQ6o72d}p;Z6mRu7V6 zecEBo@QV&6LW||px^>Q_dLnF)-(h$gP=7XaHeHLd_*|HGrTC*P%krWUKFfaAs-vQ; zIf|I$Am;k4y&6`k4ul(0(1}_s)rui1Wr4H>OUH#M8wg)^UWuNRqMK_5`Wsftueh>E zVFPNZg5%tUB?2L|vx@K%dFjU9h+0ls)%uV1d4q<6DBNCU;r46>n(2fzwyHTKq<@ae zbYkJkDDg1wFDnKaubgqH-Fia5bKt@TY7L!O*n<=Q;$tvorBWlE(-=4-YZ_wN86Ue6 z@UjjmNRAlFp%(bDK6%kZbdyvRSc~|ln!2f~g@$BQ(CtEFyC;A?8?p8Tpjx=uLfM{5 zEnFA$*XJ$T*T2?|Z3q3L5h9j=_J4$)0+63^VHaVZUxqw~K2_X&0Z^2OfH+FO)L{_@ zg~)!@gPF=<=b}ufJvaJ1$XaRDs*G63mI8{rm4o2Xqx%a9CkuX+c?cQ#fT;egxS9{q zPR>FMBCxM8daTbttmQ~er^7DNCnaue7a1iZYRb30q#iM;KMo((rTEpkZGVrA`Wre7 zYvN@7`1|=MkQ4x53WHSURItF3@(s_O1#{SNaDN}`GXR@2+)C`#u~9nS{}uHskK0M> zJ2pz|qxzLE6Tc`A*$${SqY=nghf3Jf5AgnBI4V;4hJZipC(~?wp-XK=#N%fD3F~<^ zxklS#?-w{_qXO{y=beQYyML2lZM01dTSid??ES5nQT1f`tK&0G01BRYDV9?`Q~v7s zOtYwh_h(gsQBPiY(ee2v7=`Q1AKp&0a)IeL$0xP}Uq(4+|98NbQJ$OqutphQ1Yf69 zYK#8qgk4v9usM|BJvK@Qa~ReHo#Y)UcA#RJpG@ro?T?M}!5oG)0)LvlTXYTNswH0n zN;}`%vya$2HcIMp7*-1%-(fI8n*a7`8A4uR7X$3zGC)5!^Q znZ{b`wD`1*!Nz9p<7egXE-EH=%Y6-K0*|)Tu=mdRhaA&E*C4Ev*%>x&g3&64zr;5KhlkI~i>>>0h2|w6; zhpr_}3z=(4`+t^4(`++}2Rs7#PO(dXhjO*C8Iq1XebQ0=nS+rN8U8AKJ+eX0hP|(S zux+Q!%9<_Yp-_m%0OqKeij|wi{y0rwL1nWcZ|YG)oKSAVV6oYdy?E=Bfh^L^YlgK$ z<2~BSG7>HnO)wlVxLG!iSYF+*S_G|?tJf05;Uy2lOn-;)v@)}o<+CX)H#YJGMfc#F zcNZ*3DMkte!A0iVak?3$>7d0yS_1W=Ti={VZydLiTyt!cTyvF%NlH8Egnb*1#%zb; zqA`{Rlg{tqZD6{9;gQPwWs^%8w54F8e5~QUJKjC#1-XmiIDMqkJB|%uJ zv&As64dS(^Zs3I(3?O@D3Zi$gCH%vV6a^+DVh=G6fMsX^iJ<;(Ze4 z?1IxtNmLj=$lD-nr1=R`pz&#E*RN#=l7I0|be}Jq@W6HQMRts-;Zr+bVqY)p!79j8 z#9!HiG2joN(FqG#Cc{x63HJ-pxV4S>vI%-wH(x}h0x~i+Qgnh)7zs}&VV03SneiM2 zL_cMJQ0b#I#QOr29g@}Rd{t(K)@KTais#P+ZiVQ-wh}Oh`O;^5uAQ$t!Pp%k8luk_y zMjBE~B|+H~riD!lIKVw@XYW2=HbFZz^EKiz21R3B-;_AR?N{CnC=fE5FE|pT*>4z7 zPkCv=!+EcS3?r}9-3ZoF5+Ym9oqvecl3ln&Kj2i<*`sd2%d_P+UpApfHS;C)uar-) zm|0pz)i}skmV2|(gBJ*%sSE}KSR~)jTzpY!o!|nYNrwKsY<^@8!ZaTTc)gS0bxw?~ zwah~ky}Dst=F48m*U#62K7qx~sGggM=8GSa5|}ZzG@Rzz-CEiUrNq+7!GA?4-H;Oo zdeMFa<^p9|%PiRa6N==4i@% ztW3?$BoP+_ONhmS5XsjjkE5J7R8>nF}-zHIgT&GW_g(b(pxKYu6LP!|Jzq5$?m zj(jRvh&IAp$V6=G{0?ZLG1IQ5j}l*DB93yqE(Kyrt=%$KcxubD4_HaJN| ztg?TV7PO=TY??0_QNAc*DrO<7SVFIVcHO zE(BJ#1udC08E=BwMn+KYJYTl@ef@l?NkX+K^HHg$W@wo4Jb#5hEQo}>`dc{oaL`c- zsytbbAx%6v2sK*%G(nP3Wr(;3hLiNmwy%F#6~8dU`z#^d2dur&vqSt+pYZYFe!h%; z!aXrU2~?#GCZ%un0gFl$m?i{E#f_ZOF7sup-)rVefpi#WnDUc}ZesIujZYGo&gnSx zl~yoU+Lz{Q?th<<4nr`M;l1Pm5=W!*TKL{%>V+erS>z({vNQ`kI0D4@)ySi*%$Kcx zzh=J3xsa<_DQBuk7@1dQPe#v(vr*_^9OkJUKBnNf(qW-I z5};z_m>eoTK7==+W3%ftUt7@cH^^58@RSW@Q!}-D6o1juD#UEH4D~O00q4cEDgBa3 zHFs2<;sK0t%(hlfK*K2|fok0!ZB=}wX1-|4EIBB=5xG)85dbKmBfvljL;Ze48NqmW zDfg66zm_%}oD0QNo{(Y>bM0nbKYuRswFUiNo{ys>fn8AKs!YZp`BYhXqxA+cqGKXQ z-4riMmVb-jly_+$p0ZAi$}B?XJuM8(H8vWdy}AAQY9&?SsZqmt8Er$I1?)p@p0?B9 z{i%6>_nlYhjFfri#DpjdC5pH2?cLCw)!v?}4t=*!&`4Dd+S@xtmwM%GsP5l&SP@h1 zy4+LTzB%?&^Um(n0rxS?_}cz1HBV_JE%d2T`+s!`>ZZ9rVJ}4wZciGA4%seG+v&Id zRA2aHg_YMgH%>&i5_0y`ybXD;D}v_KwKbv`83JMsIml;K}{AdQO4kOyf`m{o~%--)#d4}WK%uW7x`GN_^P%# z_J1H)v!eCSX(f&7slH~$%I-eLT9$Mp=(5S%>Er#>sE_v^>w8_pgZP*I-1k)uPQ57DtI6yeM4L0;c}C?d)cwDiNryB1=6j zdaG_y^6tQew|2I=Q9%fyi4AsGKLOu?Dm@;yY-Y9j`KPIm|oSO4%H=CYvoHi@wsqXOc~Q8H6n{W(+M=4e>k(b8{6@b13UeA2_h2 z8`~I1%=ARvBesPWy0MMXLZ>J4>VL{OXiNIq0mgp0N}nLnnFi_E+`m*uh%v4x?;Jj= zq5n%?Ex^G0Hs@Y2>`sDt8&Zd{je*2gUDZ9z7+D;~Hii!?byfEyV=!?T+ZaVw)KzM4 zj}4GXUv*g>W0Y|i+ZaQ(s;=rNu~kkyv)cw4ClpS?$V*x5O*R()&{DT8g?~jewmvJr z4TVMbaATaAdp+G1UL64~Vvjy+yk4dn`#|d{X%U8RddGH#!) zBVk)6lWuHFR643LnUv^I$3tI4hsOyMOp7U)c!85-wTMjm1j)}NS^8|lEivX~O1;9u z1x>u|`UJP_Scm##u&uh>^?&(OTOz-aDK)IF3|8F7bKXVfnweA@H{pRuiMduUBRCGZrNv<=JdO8$cUIsX9Q0a$!b2&SJgI|l5e7Rr z7Ph5fF%%cKQ+|gIRDX47n=DrFQ+{D}_(r?BJ-^ zZp?{0I0&|-fskcJabI6T2CGE$-kLSRPIWYnGv*xcNVJ=qOc(w#lLb+s;XG zQ5@I|hpIN%%0SS(V3*#{&ctv^} z+^Gj+;p?a@`JJmeO$Ww0w9U{a9Cs`o3hU4|SsGwFcDT4Y4x5LLlwH`ls`I32?;T!M z=xEp$wr+>O*MA*4@U;XRdJ0kv(1;;Hz{H95J5(JwC|K8>+o7sJhrgo8p@qe9*gA9! z?83%{zFqbz9T@A-HpkD~^ma?fzB;r`hnW=i>aohysB%=f+z{!QSBJJ4dV}KymyT+6 zXuDC|EhM(^#*xV<=0C{0C9IJH&(Sfh3%fOftb&S$ynjM@BRbe|xT=VIq7v>ypDG*~ zW(16RF4{UB1iJwH)9FkTO@+#9=So3`N(UVPV?dn058Hy$(Hb%qYn!2TG(!FD&{41s zZPS$uZ`**Q6n{}-LG8VEhv?X$LsqqGYr88%)D9is>d-bT2&Y{{-3}e_>d-a=G}b(m+9D7hqiwia>7xKr$byF+9nGKT#e7y#f8tvV#2Bu%=Hq-vycv5b!htwBH(vA zM4|4`QK*ZN-Olc+4&kOdbhxRrN>2xsI_+5TrIYm#XaxRfu758&(33awSO*!Jv&p-o$j(r$A>mo zC3opiP=|lEzm)xRmyYaoXq#dGEUS`DgPwQkI8T1t^n|7ztCG8P{3kK!+0>H8Z8NV)orOH_wgw!<+HUKbVnEq%wF!?d3RRaT{)Vd5>*`Bv=ww!c(< zk6k+I)S+!=evcLpNIKlqVOT9?`DmPMc$bbvb!eNFKe5RHiFMvdv8i1ge~Q$LJB`BL zn^~xeJNjeqLJH#`7EqJ0vVt7mD~?QUJQ#l*X4+diPA>1G*?8nVM)7B;wh1*TKTZ4~ zOwt%?HlJO7@_YczL0R4essY~1|NQ7b_}=wka1G@f{TrxJ34h^_$5mz>JFS%BGn+ZB zH}arU^&=ziK9axBrtsrnV`HO~oB~Q3`XDBPp-}H9PYB<+PZwRnn52beBKE~hMetWDgd7t!C`+l1AF#ScsG{h zd#QLzy_KLZ`br26qmfusKP9TxpXZMzL8yvF`||912?9k=TlG#Gyh4V=@k?ck0!6|n zQ$^||O7hZ`sh@mKyjw|t9QQ0yB{+W#jq-ab@ANZxbrQ+RsSyk)xn$Y9opV!G$kjxJ zs-m~1zO-DFk_=Yr7A%`$A0^J@*k&OVD^&*u2mYWC?%n7K04NH<_m8?}%!b3EcXU*W zT26!?rUnX=-1|@*TAjwK46TDAhl95*RiA-wo9F||4@Dxk?oC!Kvsn6EzI7i4aQ_E6 zH_}$|B)ALJw>Pt3tf1P33ePnf_IJow=st$L#_+<~0;4#Oqg#1&s*^AQ)qg6Lvj9Z7 zswwS<{+$$(Yk9e8^$UNDLS9+bZ&|Rn6juo>;X$i8i&B;P>B9P zo&>_Q6Agzmt$a$k>hs6MfxaivZTbjqPb0VC$}s0m2Z4=4;TwO8JsbtU&}{E3d>n?- z&B1^p?3a!-E!spl3ZC}7V>lsZ>Z+V%yM8A15l|@P26re!yNjdkn~#oCSM#k(j;1QC z8!${^c%V(oVd;v1)2SJ1l@4turjufuyEx2#q1lhKjg770D0q+qh(F5%JycIdA73O> zKm7PYUX}bL$)11tW4Y@+^=}VuP9OE(i@p3B6@{OYXciB}p5%49Ft6 z$Itn7Oe(9XA1n04G?F(NeM1K=R9{<+!Qy{9%mKyBll25^oL}$Yq>bd|R6bjk566)@ z>7G|JW_DO-9QxmQopIDZy3Xrzq4kP6bVCuD4$V@;7pQ;E?|eWL>Ero+mIA9f^hS|t z4$V@e)Sxc~q&%0UKpd;FIP^miTMo@q1Q1wu~)A`{1rVyK%3>I3Yi9zS#2UEtgBA6uva+F zAF*5e4{$b^iJQjaR>UG43jW3I6%OogJ`!pTaygm{p_V?Kvx43-W_c82^t}@>6ED2u zNqW@K(>&Wv-#ZvX^@aJH{DbKg9wg9wQmDnt)uey)v{1|ys+(td0MEByc0tT`U|*kT zH?iY+_6mh4`IP}$t^79Ih5LjN1 zr4fI4kN4`>9glN27-+9ILV1(!U38;Yc*H>SF;aw!kpk!P^a2NK5=hS5^WH(gM{$gE zuhBIGgIs4$B`Gdv<1~P?Hhb07pcz+!2JA$4qG-Ls!v*lUxXSk4o_B4Ku!HNSLXR6$ zP>_6Yf*1%gHdZO#G*Kg+XDpv<@6h1?jVFIFdn@}x#hlsd$ZKCZOWa`(ujpY4W;|Dc z>@1aP*#ZeS@>r2$noYsm?{dB@u}~NV{aR(oEBhe2(faUM27GbOl$|yRhfyq5hcpAX&%NT{oqf(%?s|VM zU&AN(x!>#JQNZ+>I&Yx>AwVVt?^er}<>5%+R| zqu7Nt@vw{Lb3n9%HQQ&uWStyDkX8L=1{baqe+qqmmPbnBhhYU-!=veQvCOx6K|{dN|NM1KOP9$0^jtLLdO zUjwyr29g(hAIft<;d2*%4~2Qh{&O@-_f)Y6b_WzTPJ?tTwG0JMS98Peg~ER>)6P*KmdYlhur-RFMwU^0fXmn{o<eZ8M+oODpwRy;gp`9Y)|xN~24XjRkMjMb7m7zoc7fWSd9(L0*mi%Q92HGfly8CI zLUD+J@=P<{+3HR87roK^3kQ-=sa8eOb|3Iqf13&KQjC=%bqq)h2mec?}W4Rww zMaBRes`3|y?m2%#sL=hUcLuSXs`t&FitBXfoFk+7t#icAhn>C$czExP@BzdP?7Pzg zD|PSIJaHIbr&0&cP+=S2E?g3FL?6Vg&C<+NH8W@fb>EW%-|ZE^e?9eTPrlkqBe)m# z=rALl$|^j$g?(4=!kL$0UA_H1?@D3wA>Jm7>VSXQ81#JePS5Y9*(<#}^NPbP zaAcdJbF)C__j}%1D3m408{SLiOzwpMIk3AqC-kNlg`x-V^ycsIDa8|MR8hKBp!8tR zd$a%VK-t!uvSIJm|C<9PEnd2pBPQ^?8n(Uks_*?dRGuysZzl)%s`nWl^z;LV(RJd@ z!t-kUGeUpj@$?;y=LeOb1$*)WNxkIKANnl5Nv>W4`;?nr~-o2NfN}KR!DU0O_tsBUWA^pQ1EvMM`lVQALU5o z!S%P9s3{46_J*hbXzQH96M$G+KbysioR*>NlYDz;9j$%5W#{c@y|5q-FQ5Pkr`;)Oq5;>*b z)xCe*Rqx-z-Wtl`0bm@`A3*uc?f*D+p-(sJJ}bQ z;6;4v%iXrZCy=8SAG|w$X~2R>8jQ!Vk1~G@-HiyvE#zvK$CK~9js5ApQfHL_DNy+K z{qakAA-MIPqnS4Zyvg%asN@c7MX>43&yq7JbiUjsF7h2cO>9T+?@C3o9rt)5n%1-lJRwbmuC(BH<9CRjD(#I274d)e z@xXwrjy8Vps4Q-8aHu%7HNPP7O0nm2nO1n|{kd#>nxJZA`39gN*Lo`=Mv!m;FCXceAKlN_{t>M5KHeUq( z6ye!QY-9LA#9Ax8iG}~!gIGjGmPw4IH-pNbl1L@U#KI>colUh$^jSRTs^8i?0Yat( zdj2SyYRemF-}2lJlG@}B_^?=l7-}obRK$LM+(T5suQPy_W)Zq-v62bE@{NBs>SgZ6 zk~$#QRiRZg)fHOHJgI46NASnQlJ$z*jKD$`1qT*k9RmF3SyEn~F)YjkpCZ=5z;B)< z#S4Ri!RUB`3>JPHjpcnqW#5-mkYB2l6omv$4?1C=!b3Ua!Eip*(i2Z`Lc6$V0ThA^ zf@HiNpa<8CsZ@gxjJk>uOukGbMOA+ zeIP|`0ABm&l1nIp^#732VLHuHu4=9b{;q`o2BS zpc;*5CeA7C>6%v6LAlWE<`P0dLMwlBCmFN6V+C%9D5xwNq4qSo!_4 z2fCueuvp?4+k3%NN8!M&dDH?Qwr39?Mm|)5<|k4t;hkBk`~;Tl)je zWJTzJ+-*=QSqn;KQq6~}4?t7r14=3j=rqqTmGPovLaAED&x#=)0qa!OUmXU;61kq2 zZE~px3)#J|ol{V$BnYE%boZ>2_}@I|s7lmxY|>DvE-8sM-+f2CSV6O!^DXd>1M*Q7t5iC6T+qf)`*_j0x^i%F^0HJH!WeqIvY{uDZ@xQD zUILFejEQyH$O%n+#=U=A zn4S?>Q6nvLABE$XxbDhgsV6-&z@$nUstD7fJ`cB23z-J>&|!?SMzJ&YX8-AeXY501 z6g^{amK#1(j(m3Lu#>6^13YYSImOkHb{d0|LY+cYWfZ;aW`AH#B!1?+0UjpUc(`~> zUxi**$`21I&7@{_ZM>}DWbOaz$Jc*4XXpoTB2cbHM|qnR>^a6R0X8(n z48Vs;9nDs6V<7*BjE0y9`I~Mptg1I)>QQdRmgMcjS*%NuRHoRs zb7nURE2+e~8M2BZE{?b1W+T;McNh{i1-l%QcnXy8IC=tziaE$#hSH6ah=;N*>&h2U z;wRf%9|~!9^87kRr@1X8l#gyb;ScZgq7V+`b&@$^fXA!-o~?fa_MvnmsCW@--+t>A za){~UQrIcX~-FBO57LU7{C(*_Rm1iES=?-Cuj>D}6c)XQmIREhW zl|fw{`Ty|VC>-gUl(I@;Nxa|X=N}Ghj0!;8q!dNTKWsAQclL3a6jXd$Ic0TKDueP; z1}l(hy{G#pM^b;|J^$hC^yt&+`;+gFE~M6bbh3Z^PHMXQhldwOmzUm$bp2}o?JqhN z{fUNr=l8tW4&$j%48VyhHqXk7;Y0U>?<f{-!+zf%mq~v?54DO((Q2rim4D>w`0?rC z(O<4{PMB-#U;pDWJ?JT1F+E44AXWQHPLB!~RFmU<(A(=5??ZWm$p>bO$)EB~_RGR9 z!=_fZzL{^ccS2;FYb-=@cU^ZoMR+h{#T2~>!cjIwxAJH2&qsg#`RwA*`*3o0arDXj zcKM5iqtt(&=rRB3e-@n4HU79v532A~Ob?h;vgy%gmf!iuWl}h58cfO$Vm!?zMHv*o z_Mq!NE|b!+GKq(p*67A2EiPX*#v?{8y*V_`({~D*v0k3vhkES7C7jG!%L?!BL=^ZMb@{^7gh(<6UxxPE?dd~oEA(~9)uVq7nr;8{N$#u(X&(%h>_H||^BG=f?<`Xd= z=DHbY>78!%His#|!+0yW0Mw+joD+;zcE;fZFIm65+P`{#X=90bi-QHW7;NkffGxH+ z<~)BPn>#o=Ie&L_b#&--kHJHYTa&E3VB)VKJorZ+FM`>jeQxx{VsdteF1s-U;~~Tg z&FXD13Ld z)z!U1aP}u1-n6Fx35m%*Uv!k~H}_Uo8-PKW@Gpw2H!VIlOCQRW#;|>!lel_}Vi&p9UY6zH?fMPUPbz9?ff62?cPz{;&W1 zU)NAJ)W6j^U&W*}4U?=YJOrmFCWr|zGJh9wq#rh4G8&Xg?V#%g3-98R{qO(p+FJ?w zqVH{J>R!rCmM>o6XIN1Hem`G(A{~FaEMX^*s7*XbcxegG=d#UA0ie;sXB~ppcuDY3 zVvA6_EgdZ;;!h;`{wf<4VG$PW_(mM&h9>TlO?B#v*259~9+gh&enQ9-ioDZaDExJT`WrcWvBmz#X03vp0FsrNHgV1)n7;gD^limG-hz znJ*-Gk)izddBLA*bV+G!D(Fbb+CtJt2Vu*L*mP*0WhKn{(RJPMkjNH?!%l3iPm&-9Arl~F^!v~m_`G(*CWWa z7Sc|#cifHr4G&th$#HjtmIGzoT<=IBh<3{|sL)l0JCH+$ad>Qyk^ zTU~V^m!iq+XRM|&FQ`Ng;js(2NK2HD)KCt z-n9mDs5DI~%h{6`i(BK9OY>*uR4RqXjev`6DZts z0~wH}QKC~7tF)&IurXNkHrG5U7xf}K5JnS=`>6*h8z6u2rpQuuW&Sdg|JBO~%@PGU zY$a0MA6T}{K7R1WGnFStn_Xwqk)P_MQF>V+*?@k>g&2yMT=jkiTc9wKQl-FEo#(Pf zsW@iJ3=?Ja#$uw%umpW2giJ;&^#>-;>2NlgL0+S(WTy53P-O0^_g52Zt*KF$?K!O~ z?X#i?9M*q2X8k%{zgDihXl4%yvQtHiqSo8jn2nz`3EDvzRBS+duiXe~QmkPE?F|n) zY)yN^0|Bj~R-ZBh(B3lr#%OQR0-(MilaOB3BI7pKC5=m~GiSdDZD0 z+GnNO%yrjNl$1lS-4+tv_dO9z!GTrJIRC@7#%DLns24^3}@62DS|3c;8258o!S`H!`<~@eya?_<4SVg>oEfB3;abTckJ#)1@jd zujeB(x2Yk^V?Un`GZkj4+?Q;N6xFcmof`?DI#Wk&(X49LuV5WaXEBs2(O~lHvx{pp zc@=qc?IhC7ZWya*Ld?^*@k}-d7+`|0<$;V30%jQmU2L4MPF8 z@PGtMKqusz)ylfUxLFf&GNjmj&t9MV|5G1$5-UH zSb*^95N;}h58EM}TuKhjbHqdu(HCk(YR@DusJkyAUE`p4x1-@Zqx&7%^*(tLluv-IFJgDP99$v9A-w!(ozPF@&?<~fOAR&~DQG*|w! z0(DRT-qp;E5yeR#;|^HRssHEpX!W3~rcWgT{uz5qWZM#|~%)d*>W+CvOL; zC`RV^_O1)8e66Wc!P|$2y_1vPU**U9;fKAG6Q|YXNXk`61*DChW=DS+a@I`fpwKZ~ zV8a+m+9&=Pitj>6CGD`^oL^}mwo3BltRkDSm1sP4z{--4Nf`*&H=51<>({TZ5kg=C zU2pX_HeBWr4DTIJ8C>m=ArqXMj*Rm1}i zu(lUG*u|_-4&9=%q@^LDf&^>3?7r5^)t>iy3lAE=32EZF)`Yt`uD3`51z*r#z11xA zz}{>-p$GQ%8yW5G&5~u%YI$cOPU-B9RN!`3rfC!fWo;G@0jPgCQgY0Gb^+Wg|* zP)NZ74&&nFvRDT2=j+z!6d^?qI5f-AcghI<KX+I$1z!+05s!RD4k(%jQs3J+=0yb2cG* z7!H@`rGmnmgaybESDAW-SQGY`}E4*BsDiv3x@-@hpXL95a2L*}G{O815(P_Pd zTRBdp%|UV=c`S@zI-*&cNUbv)`8GKnmc6oI1kJHi=nv*3q#%{N%k}_~9S< z20T14p*4>XtKP)iS|^X}03`hk?v}UeaM#1!lLt?5C(nk-3=W*TScp)bTe0vb&)&0u z$Q=zDkV?tKyNRV5{JtQcw#B!k5!=FA^{|>3Q*z;k|#D z7*9I@meo0#sIZoYAd#0NPyS^L=-}ry??&zlWB!q|JC0&ig0}+Dn5D5l&gNh$)zLJC z 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 q=OLK!~8AWVJ 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

q<>PySMF_PYC7fFkm&(Q zs!c?qxk$?5^7T!k>3ZI=;l2*9!EjtOQbuGnBB9!0nL#NZ^9~uB7ZK>*G543~&XIiu z=PVQ%A@DXNPJgd6@mw`r7^s}SEKN%hgjKo3X%NNhcZz||n}=V7rV6LA=qdWLq!`8u^?xUZL*gCPV<3y%*^=wR)n7AUL38D;yF@L6Lbo{E|v6ETx%KKgJk1Uyu zoJk4`z-(pEjyW(7_cepxFGao_*wUFSTy@?;mV#>;Oq>Ng<;c`Q#nu-_)YU_e=LC;E z?pg=4wxRt~qK(atZJQdfrdb{KRY~_CU5^UIIz!N%kWy^Ag{8NuXb7)_!p2BWO}Lp5 zz{K@=*?(?hu73>Mm7b|@wrwbbK<-m9Wh(9C>3$3CW7tv28m&;&Og6~YaDzlpKL)e< z$UVWlS2(udgw<^%9SoFQTI|o9EyGs+?;rlJ6-jglKO2hxg@x}-_>3&yg*TQkGEZ{Q zAg>h3&`w-;m3a$v$SwKR(14d#Z;p;pkb#j({(@&1?*lhrT?)(^nmc1L}8Y`Y^@=)IyRbKBjpn|S4+R={!- zL!m)!GHD$iweesXb`y&{)CxwnXjV6BV*LuhVrn|^e*ze) zR}Y7HMOx6#N!4pkYkhw5-> zjY*M74*|WU4VROPpKj&LKIIpgp9w@{tJD zvT}!b9j1YF1@vM;+{$I6Q^`##?i^#Gy5^xGQm>=e#T};krPoj$f88M1$t7IbWVD|o zL&i#n0p`n=RXWy}as!>C^)lW=&H7D}Iy@;ce;zk}lS^Gyca%7n+y42F|BZ=fvU}B7 zT2ZR|gk(YK;VFbK42yXa_{-IPEbdT;T7l#}=7yM&7Sl`9H7cVTlgmsi4yDT~u-~d5 zdR#GolxBc-5&A8Y`;KhJ4Uu8*3W-bFdFR4h5X4;GA$t)+Nf?(Gy-5T;6gwKM#lDz( ze{l`lg}m1{t7MsKtokh0_7luP4iFWHbg(;4G))0*&?qPTLEpT2`-G98g!^$?L}U-x zdBSF5Ctfv`r0}^$YE)@KG=hTR=m1Jv%207d4O>nx5c440KHDlKruUZ?oiMM`BR~Of5|Jl zs3iC0GWB;CZ(hp;_9E7qDsodQ1+u+S$*O8Fn2uPhR-e={?RDdl7PDBG%xG{`j-Agn zMVDrxY4&L*2+XNiq?fE3)SNt3KJxh;??y0x3URE2YlZR~d<=vK)aG;&ddb5h^ZtP@Q z;qZToT#3Whg^X&N)saRiTjF^o#?mJJXX^q+HO=b92~wRqk!!-`Se@cJf2)TUfc|(N zM#*ehL=1}Dd=t<>F%bO*5S_wwR*LFa9Zpvs_gOU>`nQ!RaNN%!dyjF)6Tg z?W3BF<~F5vMUU#6H3PKAgw3)9Om)v%^xX=U>YG)a=zwn(Ry<0yB#dC9 z+aRQjedr!Tae7JQU=^b{5f$Hr85WwLx^rl5o1rLKNo%m1m4rgVWal2`_{hry(+#w+ zg*kW$UBtds<Q zOP{gotW@pals^ECRA?oSfM?gdMpiL|O;|9u@OvV$XYgYjimG1F4$5<6n-&X{CpW4# zC$p(JQAGApssTBP!WeNm#sU{MhU|8s=k?8++3|&5`bEEg8NR@Ax^B4&F={vIB4J{= z{)6@VIz~AqS*@5ye|@uN%wsi`W$qIXQY6}D@{~QL1eUeHb@e{spHdYC*zAN z5GioX`+4X<_Ca&BKs^E7Ah0?hy?K#GrA0bc3UYQQ-NO8Ln=bq3xFG1~JtU#?4#iKxfOm z6?Hh)woD*cYquL`WU+DDg+SLgYX-de#u=?{oRQ_mQAa-45@6AR8Jf}-IxKCW02r%k z8wn;$n`xMBe$(Q5sZK&|NIJ6EV?x7Q|0$O`f)4LOCqBA9L~i3}4ukM_D;* zX5|4bI47D+ev92FNHTj|>v#7&B@YY+T>0 zr39N{e@UN4T8A{^TRXfNwF^kDZ`RzbU6NMExd=;9Ri${8fBxft{_`LI3;q?C?7kn% zZSYvUE%c#EM$$qVg7(ByaiR2#vEsOw2t$j7fn}r>Ky1-$s|*qK&6sXG-l`)=ki2OQ&a6G zEzhHRn$6&~iRKsivFV=dc2TPJ&05?Fih6${nWQT@Ohfc$ec#={r#b?)$$^kA!m#GW zz54o2fZcJ!U41<<-5{JgLb4$~0!CSK=^nD3>>_kB3%v<{f->d%Sl;uI2@O!+0@2ms zM2WS8G5FI%V_kgA&YXCO^Pl?#4AvaKRVKMugsYJ8&4yqz6Mt z1V_lG>ru>#CvF5`Hf?A!gO?^A;Uj)5%|NoeN6zPY{I3#P#FcvP z2QVR>?V8Ka*DDv;P~WiycBGD?{3=>H!OPJB<&W6lGD8P>?|mRnw2t4*dex1QI=*t7 z<5Yrf!#FJ+XjEfU!fIXD7VRrhu&(`zBaK+Qw7hmzKd;=Mrf{R7C@yC*;R`omnebd0 zI7x4#HCH;Ah^RJ54tsB`%Tq>C%GAek%s!LZ!Cnhn@=tQ68b%&S! z9^n^%f)VB*G21379lXSH5=JPb6 z0N4|Gt#T=_6I1T2xn-?CorQdD)KgU>RWg7r&ZH8e>yIDEJM!96#!llYfsxN>$h#zs zRA#_fTV1?woPnPl=KLU0y; zp-)bHf(Io_7B8@ZkHvTmIVz0xLJSfOu^2DzikKdxR|Nl{lVDNaEgK;66dZmYt6yMh zoQ2ZJ_Oc{ux_*MHVQs%!2r!lQ;9iZ!YL*H6zD>`1C+jd;}; zR|0uf9QBINbnX~bR2VT2i}sChU(07tEG+GaQQ}&A=l1-HFKsQPM7^6MJmX`7f(R#GV{jA=oX4PQgMC!?V3+L zk-W!d>vYT})$yHm?f;(sk?0Fl2x`BdzocpsJLYHV2-YSmrnaA6NoUxmtDb5Q9rG1+ zgsTn+u6ymRePs!X>X6s%jaeQ0+I)JoJ;PM}bqwcZ}2O zC{UB#z3MMk^MLJ6--5@Zs@X00_o$lHvG)9KeoiWax8PW=XjUB+*^D1GZch1j+Oo@# zit1Jwrs|v3F}K(|3aNT*l`N{hStBf3^AjSYDjQccpz+>#O-~vN0|we~H@gt2$n4lM zuMSzPodyF}BC`8kteEb9bDxGan>(4>g<4s@!@*mR{ANQG_khQ2jMwTY%DR!3eN7PK z<{>7;#k365Spr1equ&pJSrmdAGhn2FXTS0|PmTi5+$59&wMfGt6Q&?v_4z|-bX52= zOP12&Hb)(<**sF=u!0p5@H&;W7Sid}xs>-IbW%}UK{VokK@pQ7e zB9xL4Bf+=4@6ISiiU+3x_R+l)B*jUmYtA+IiPCoSuu>3(WEQe(yzspwxBiM<7py&5 zI1cQU4Ul*+Gmi{^uc`iQ{X}%bvebc~x|{DnvH9AVK-E#BI@|7h;V}by&hwYqG8eaW z+|3;05Fc`bV|K%NkNKeKE(u-waKZdAT!^$Na^=LrdakfB<#tT8YuXIdh()f#Dbkxn z%R**=ZS03mc6C5kvvk8t318OkI!YUT8s<9}_()b|4wD9d5f264BPKG$`SJ41%Mo%c z=+(8lUhAfW??@e5s?IT~@EQEt3uKfNNDk<0WihaBlm&GZYVE+b=Ooy!l5TyoN=#Re zr|cPcv${gcBwK}3AnaG+5*QZ_AFbX0+7;QYZ`Po`_+@cHNaoY)j5&!4^Y=42$Wru$ zgNrs;^iR1dhvORO;!@@gEMCtlNU&=M(@g@dfif-g?4v^=PIjDmyr55m4?vrMsF$uJ z;U9l7xopY^?p8-!6f2lJiRF$`!l9Z}i`ETL5$ikvYlA%@HwzpsQ5V$RMPBKZZbIq& z!E}9iG#ANqgdR5WJ!tF0qkPuL93y6z3w1=i@!`>K(HQMRoJ8Dc2e<9G5*?_+Ubi+s2AIB0f1-aDK%FPYu{_thOZ~ifTdWpZh+(4yeTN1iG_dM z`q|mASU`1j?Y8Df9b~(4d#v0LtnUxS6@tb7P>11eZS0*QtvbB6LD$;SmBfKM0C#J{ zGO53i-%EU-DFLA%euS0s5`%y2ZTvSbS*2E66W?p)99506Q@L0jZd+H_L+7UF zZxqvoWk|BS9E(A#18mh~t%QtwV#60!Yg&&mnmU1p%PyC{sOw0fGqa*vN5n;O_EK7F zivbv5C=Q@p3Sv&~1XIJ`hvxxHrrr#`k>;}HHYB>Hm;HzEiWqq^S@O84Fa>EbENy*EHLU4aA3OpUO3uvrw zRtKF>Nd|cUM1h3GlW<{PGW9^K2%|-_hB>c#mrgY0NmfxY#Q5o64~2{XMB@nUN@24c zp*o1_n7sCbGc9;Nr%~X4ic}f()${6yW0q>FCreYtxosL-0|9oC)>n|N@7y#E6?A$N zMoHmE2qdJG3yfpdC$xVEqo)L}v^h216cRizEF{?L{he}7EXdcv6E)(Fv*j+V4mWh? zf)_1l8%>rAOp3@ay>0SO&3+?=rw_I$4sUZmGyo>JZ!lY z)KP3TTcI=&nv)<#hA9n16i)6C+w?f4^m2-4LCuQzB#d0m4x1)|w!(0|WbuJIyl%@A zAfO^?&zNEaZr7QQcL2V}!k>>nwn!pJGR{qfM4iO+F7 zlv82kw!OszB9^-DapeIKuWUXXwo_qXk+(k{BCOb{By(|UX5-hDbdaEpQ+RQ@ARliL zhJoAVI!%8{4Vg@Y5-AMskgX>oPcr7LB%M(mmtV7RsR`(EQ-P46?k&Q5%)sE&c0u!H zW0w{aVH79T{%}+?8hfQoAO&w|J{DsWIPlT?aEe?lSc(3(TU@nk6 z$E~aY-SGHIwp1!LC%hjw?S{M!i>WY*Bx`X%iQwaI$nGOx75=jPN}Yhd zovAR2WwV|NvRGw~6%+x~_;__!;NhTmI2n5=(3C$2Q`k1A!YJQ_Jyu{)l&F%uX(E_t zThz6puqg@*bFwPii-_NOVH(4JX==k_Dh!+rcnnO9Bk1$F~Pc_d+&Ol0x zmvAfL94$2!nK1ZnI5_xigDanMqjz)Ts1DCoTWcw}$HG+Gu9j{s>1I*ZJ70$+z7b59 zxhvr%f2QbTu%|rj7zc*lpZ8wOH#h;SR$Cpo-G0gp3>3Xyw&cf5X4@}S0@&z{s(>hU zv~>GHX?Z;KUR_++T>h$KjoTA#pa2dBOk9>=x(XgA6qrbYyyi`#O5ZSv_Z9eezFy{3niFXfQ+&8KdF8@=dOog7 z8rp{!tB^;lG%fPw3>~oS=qA5NWk>BpftAf_`CRqR9uf>u4TC0+kor#Ahutch)$^ko zIRja6Hl`GClo{V<1=?pRQ#Pw3scd2Yv`-hHX!cMYs#>4Y<3KKkDA4IqNeh_-)O=8f zf9f#P_Jgv>19RYDkf{pwvuvevkasqFwJYiA(wjQ+t^J@Z z^15{?y{RMG+7DCb?AuFk_5F4O2kKC?&9=6amBLu%@|*d!yM_7f(5ybB`L-~tf68br z)0q`#v}oVJM%smC?ob^y_Pbl=4$VpuD&@L1!me4x!gZOg8(~)+dZu2iBh{4Tb@2MR zk4mlKGXH&50v5oa6qf1d?0FCRw6J#`s>9vXqkOtH^Rh5}F~+LtGfT0#S&&we*0GAG zj$>(ntmm=#HDzfNXF(=6IILkD&Q>vR$Rtl}oc|-v}*)Ds|MMDrHv3%%Xkc zOxaD!)!w1a5IY7Ib%5HB;Vf8&;mslDnDt#c!CvFeZ7vm4+se}&IVI^DJwuZTrjQG2%zpbSQRkm(qlroU~6@97Q__s9@ zwP$=?9xyAZU)Af@l5;9se>Y0@)^?|vxK3NNZj`63g&khicc+M;b^~t8rnWU>yo#Dm z@j~q$TtC(}jundT)t}4{ejk>0Gf8P3#mGHS~$QtUKsx!4y^0tShb~|qF zrIk9TB*Fstx=`zsf3ztf&O)urgEF_^1f?X@0vy*BIzi=%O4mZ0Q@d7geHU9Go~d@H z?AHPVEqbvsiRo*5%04Zi&bXH&wRiT0ky&Yf%HA!o&!QI#aBICYkJK*NTOXSR=Csic zl{9<~ggH_>Z*NAJ?P-fjsy+w)9I3s#H;=uA_NXM|vp|yCe+PW)TBMW)6ndnPi(3_) zIZ}I)8*7r1NCnZW+N2=bOrKQIZGn{*y;xx5@25tttKCQ4c$*(-d7ESK`0Fs}f1Ouv zsU&2!=(Q8~(<3d{bJS!mW?|~PSmf~*(}!W!gimvaG7oZR&fZ*nLJ=4fY2kl8%nKT` z@0>e_jfX=jf7k9@WAZJ0!|{FIz{Bc^HH_YsG-D?zy@oo0wlEp2P_7z6DY8rYoj5>MtxVEBt$;aiV8rK{KgMK zu8Woye_eEv4EadQ(I1QKyeh*V=Ewft3tSLcciBrXNFR3D`@n;LUpbRE7fm~B)Zc%u zAVaUbL$CKX^6nhW+y<84FH|oQrM$~{^RhwxxEK%kLi*H-VW9ra@_9M{&7qQ~+IIT-kf2@<( z$#QjQ)duVpYO^cPFd&CUp0F(Q@PM6yqELR)Vs*Qzu5+Z0PNgJ{0K@Wm%QqK3VkIe~mt>j%KJWFD}yHP;GnrJZneY)YUmshb`2)!z+d& z6L43{IiNgvO&PiI&Zu69sUL2uv|6>pH3?u4`0zI3=ndh;UV?R&US^5Qi?J3~wK3l8 z=9dhBq^X~H$RpR%+2Vs1=1FyEMEhCML?pZr%ns%;8_V=K!*N?gREI?w_wmS|ZOU!O@l+^JZt(Qq1*wMAbq7Lk6KN#H_ zuTtH?8ySmUx&bwH2*>(Lyx@*6bT!N(@5RWL_Y}8G7OGn}ncR=me<2)7DERaXTG9a0 zvI253Xl%Yi+3D8Dio@K^bA{)IxobXy^$jDdo!O1{s+IV?^)dUHb#fZY+CiWxy>b@V zXDI~um^>CsQ2@uNx8&^W82zaGkB$$}No~#T;`rd`Hyqx=NoLT!8&2ZA3!b2~{C+W* zqh~BG%jI&x<=03zf6PVv==iESD>~3)bK#)_F21u2)8v>ffTJ3BpaV0Bm-rxb$f?1* zf83{2`72qodA%EPZJw)+rmPbUQtv+VlCI1_Y&{hpn&XxZy!>*Ugp=Qlo9+Y+I??&m zj&Xm+`%1NUT>IaB2;N&e_;t%d$qM5l@1`--{9Rl zQ2>*XU*hoxcvM{C;qBe2LmcL~`Px=lrbNq`&3rm^Am{7Q$NO5LS@A_~thk}iaqXum z-Z_G>KJjAiFVW-=AIHKo5KaB!x-lhhL)aFevD|qmq(Dn?IG61<3i;|u`7GCe-6Uky zaw#KY#xCrfe;b&gSa`(xxIW0Qi2I3_g*)X{ArfDQDG`@TB zH}uyjod~h@uRdMHywBZqkA9Co60yfDdpolP!uy{-f9}kZWDy_l?TJ_9wMiIF<;#0X zie={=Ki>1?*uQgc2eV}EKOx;dWITwGq8+DbM+hk~xYAKiqF%!P zDwiM+e~*SKpt7ev9D)Q+L2>;?)=jVUR)F3kzVPgouUc#aO&z<}`#X=ko26h9JV_U@ z;O4#Qa3gs=mkJ&)}@!L8yqvA9pUL zOUvASQaZ2jz>;nW79c-Z(9@O?sayS*aop?1e{WCMZSO07gO-TD!9@OYmjv1g$g>(-@ICF=(;1)Kns2#D{#vous5Y!L4QCZ_ zsd?IyWD^G+j3jG5m=1RFIn*y;RX}LC_W3+!pPcv;4FaJ}90+sXrR9B?@1GXhnwCGJ zd8^tA!-Y8Ar{@-kspX7lPP=B^sY_HYe={i)q^2w>J4m2j@@;y}PNb)?P&LG*3EP4F zGaf*zv-Elo_52&y$ zvU^@A`63_&Uzoxw3X>7Y)Opluh(UH(-JB){UG=b0QiQJ2>~vKLSpVlg{x`ZJO=ceM zMv!(s?!4f4+z%H#`UX)I#P-MKfA61cauZO@NjHv4Iw(q;<%P^zpK%9^&7$iqDPj@w zp2T6Eaet97m^1k)bxC(AG~6;N@clcE5||w!nld&J0=5tt&p5fUWm146+l(j$ftWWRf0#Ht7*dV`Qj774 z>|30iTh15Q)#O%+0v`GV`X0&y*Cbu84<=(xU$A!=wow##k@xCyZ^T)gA_n+SFia@j z3pvTbLM4*1x$&)s$qEM5CddDk;(He;*NpS`;7goOX>!K&A}IO>gy+&VXZ$sHQ1FP0 zw`Aw#$o(W=JdE1Ue-;zPXc>#NgzXup6<_46N3@TU!YICgO*x&(u224p(m;&=7NAe% zIkk|}5eo|j$D2HSTy}s9oj&e7{t18UlhE9ln?~8Ue_3tV5p0gWfO-oH5LjR5nvejdUM6SLQ^fQ0tK73?Bf>99> zAmIo|K$l#g0slip_iPAY_me{U^FF|9`OC6Iy!He47AvjRejRk>akBn8eKKI!Ab7IYbvC;_^j16|0K zOPjWjztcY!{Tl%z-iPhW9ZRCY%C@D?`u+TC3wn%j6X_Y|dqz%6v2Vo0^owulgHN8t zI;q_zn&=wI4V2GQwu{6h!44vdO1sB$%GACWO{5|2e~NN=*-oNg@|_eGo4a2;XF-`M zAP*6dv+|>ow(M6Wb>(L*=rcv@A;L9k-ar@rC*NZDi$(vYC_Q{i^CKw`KjbusUoEIm zqI8pmZ-_WO0RcV&D(JsC-$KP6_cMLEiI(;IEwz_GBP|Hj{6TQ82f?{OAni+8xZlSQ zEeKKKe{v%sh|Cv-vWBq-KvPVg5J~un1trD?*bzeXnc(6%DP)i@arca%K7MXNl@U&l z5Trr(K=IP~$$X2N)ejya^p+JI=$5pSzEEf^`Zt2u5#np6;a{Y4y!pg~B0lNI;u8xh zem@6-KZlFRXY@&^RUIF*k|Jj;x3|0B7fCo3JsU?e@x__&WI{v3%(>%@nIm&2@KYUE z)ZhIUzdpLXocINUtKx)>k)et!M_?m^ADw6{eDJQ&(otO7i;I`%Kj9yL=@Vm@_7Z2h zcQ+i2HeEO=7O8?V30w&N^*Bm4C_e4stHKo?p7_(T}6`2(M%7^9I4$Tui|%V68uxUEoIH4_Oi_X)VuhIih8wU$VOE&v=*LRH#kn z5fRx&;%d4PbB3XHy}zZ)`NmN>uFHbG@4{ICoR+i2-t#Y?Jv}-+7%{$w;k535%H>2Z z${g_|=5yuAF1z-BLy)9~pr*6ObkcEtPFy#Zsn|r~2(+NMY@GEm#{F%=VN}!CO-3Yx zs)us=WNL>49606S;exRiiFnZEBLD6Dg-q_w4lD+(g_;(5B2>-lRHGmqm?(%pNc_LZ;L`bIcjm8;JDp>9EE!DPaYGTEIp_Bcjyy^%DaS}!{tHGwh zDb}GApi?JTQX~O^F`*>}hjjMfC2=MN)DNVNyLXciNh=@HaODnId2c4gp_@_$oA5^X zG-g?%%&F@HkhC%q{V7y`tt3e1t?Gz&pz&wBz`TP_?z*+I4b}Vd6W7&EWo%AdCorUy z5UAHvCSFE=y(E^tq-D`rJbB#fwG?i(vI?2Es#TnTeIG_H1$B?#zkPf5?$hbX#o3sA zHOOJai9mSD@`4OdGSzy`|a;_gaaFm{3EIP$4qDK6!P939abA!V@c}7X70T zO&v@(jxu+sBs0>=Wz=Km3C3e!(ELw-DWy_G$0weMyo#X=IcdEXdQq6L z7HllmfL$efmnYwR9Is7xNvu!yZX%Bdt}qlrVPZKZGK9gyFc?N6d$%;FTIc?Iy+;zQX)sv`g;Ap|Ib*KpxGD1 zJ%QtYm9JdsXIxHa?)l3x`DrQbv))xus<*J-ZWsryV72=n`sp|!%}H_k{2!W zrU5EUx{E%fDlm#c>X{QaEIOIXhNFXV5fnw6lWe?{o-`j_{p!||*vbf5+p1pm8|j;h zd`kGDI_&L>uh|`}8#%Y$h}0%-I7!i|co)Y#fv0a$A3cQwO0l1L$S#~XS*>D~FpMvM zE%27S{BgSA;|a7ibFdU3Zj(5TqA(2zh4HEWb;O<9n9|Z?O8U8%P@szJ6(t=EFUs_} zvO&E`FMZk{JzbwIeX+Ym2&B5Mck3)%I*^UYBL6P@G==f^SngNz?m7{P)up-B_O%OH zfLrE~Wirzu4Nd012e6If!qUCiTwQK|e|=M^OLDg!sSfOZLB6%w2=jXm{P2~`o@;gC zp)Ql%dPsWNsz@cX-gcb`mg@6IkRSXJ=0psW>0)HmCIZ9Y89 zoDTKmDse@$_=t^H9^Qj!1GQ zF5u$&yVLsijl2N!>%bH5mIp6V&J#FWUycrjAQlhdTsipp%7vhKto}yO+{4@~IwmLj zD-ao9crIq^$`xh4ca63D@WT~2PUzBXbC!(2%e;NFkP#eOMUu+6SayeKv)u=lO%PiExqJ2YAtEj$K;d!$9k2%v-hkK~|w`ko! zH$%KYBny9gHest zI5VSrfy*CQK#f zMHo{OmfW-p^NzO{{M>yjziPJd)@KiB6=6}|td5@7!W^LvVyN52(&JiW?i4OBC4XDD z*4q|l{=iftRB2V+q#PWo;}M#)s+Te{y`=EMTvYt4W4!CZ7~p zc?UYxt2gh?KFQxMK3c3}yO@IdW{s3a!F*zl862rHf)n$;7hu9j0K7Xc!&%0l5Iu~= zExX9KJU+osES6Fo3(!m-`I=;VN$w)N0Ef+n{tY5aRz~W74?LW)6D7S2zq2CRNaO6W zH-W!oH!1WkNX^_6h!(8KDM$sH#zo^(c7D!kVDzYWggp2f#!b=o|Kc5Fvzzza`5OOUetNS%i?m6F3&tAE7IznLk z3TE9DLmp~{Eo=t;`t}XwK5?SH=lm8#l`JUGd{NZV2%EaSNUza#5P?@zP_XH_8+=lS z7c}a7rQ2JP;8k7?(l0h6>jtCLaRB=Fw_Q-o*?)xPUCx1Y+^jm$y9BrOKnu{m1p_`W?W zhKUP&#XK!WZ)2mbSpkDvLF3j(CXVsChH9x!R7}6`#AloClvETNq;#_|RmAFi+-~5^xV{Y!UR? zmKCv6`8sAgp|;nP(s5*@_T=CCXqBMU+)IzCS2q*Pb9GS^tXy{`srXUZYy^w+Y8JgH zp{}_XdqN|f=Vszr^^qsNg8rCO#@-STY8qo<_a0vpYHF$*t1?0qkPizU>c zZ@HGj2K-f2Z5nMaxS*ze3&hJtym~sx4p&-kbCqhey_kWT;Tm~xNyxZc7&%czJFi(5fSU1-8vb)bRk#z2Nxr)8~l#kQRJW9W1c*0a{3PIh^9s z>E3Io`u;4!nK~w5leCmA;>s1(8j9L1tcCby(Tjzc)j}p!`~7c}N$K!cfYK462iYA- ziC@XIhG7)(coC9y7^G4xckau3pdhd3(_CJ=eiRmvCP%@VgY9ejvjDMwtiO>>e-?0N z(TfFg2?=~&WeuWcm(4gWP|czj3;Yse%-Dm?7PWvgi(V`+sw8E%WDM%~fNhUa9WJox z@D&T#0c%hP5o{tUQ&%yaB~b??$#NrP@uv@@AOfGkrg4tK+_g?CDgNaunH5L@7t)QX;SB2Frn> zMqs;=1GUYnee!E7BGRbh%9srOuxiNILOhhJS)(*%woB8lpg?`II=*R?$>pIaPnngi zKbFZ{ExK(R=3UdQj$2w$%|edDW-DzWL{inP&cQFzuvpH0H-}t*%c~uC(n`ryb4zZ! z{QULJ8u_f&~L$`@>MrxP%hOiEp5)U0ySim`z!ovvy0We5$CTvEy1>{gQt5-Rs$Y@n5 z(`(URCo$F|wd1>g)gE5ivZ!8sck$-6sDya+-N`%glcQ6#hw<$BOk<+)Y^rUxOeeA3BQ4i_`-rT2 zC&KK;c|;a}fJa3o6b#Hdg|6{Oi!@OqGw*+qEj%jVDXeaPei+#;23{pu0#ATH(mQsm z5}R;`0yvx?ETVKLb{uA1$J)Dv^L7|{Q_KcbE-@*(azw?KfIlQyRCB<-<*>0RK|6(s zA)fNU6;MN2=^b|MOm5Rf<}pXj2#qt}VP0ZTjk9J-%`&N_5zrE0R;^t&fz?L$QBDcv zFuHBxV1?0t>g16!O+|j;(G(^CRDH^f?kr=rgZ^i`n9H72zLcZj%rRgNW+hCM*mHR{ z0Yyy$7U68zP3XHC2~4M87?+NEr{qxPkVtcC1Y0N<_70M!zzk;7(`SGF-b$D~r7vGY9*a0HjoV!aDQ=m1O%!^8^FDQNvrMsBa zh_N`c;w0zg?#g6Kp$^2tAXCuFUprGc=8Z*SYNouE_E6XCfjTthk9=b5htkR(Q{Su+ zyFhEWG^SjnbKHf-hxVXdS%*64InXNWa5AA?`YRLWyU-3G z5m0-*Z@Itd^R6YWIG-M7*C?`4iFvTgyMJIxCIM8>XOUgYe6G~- zF?Dk#0`6BfjUrEO&BDtkEv{M*)bTTa%|{=Nk%B~Za;F+9x01K!z$_F;ZbJZVK$5=- zEGxF4W!8`bb@)wv-*Q=t`BEf_Xj)Nv@W6&pgRnw*TuM{4IUu?Iyi@}FjKk>;Y@&F2 zJ@PXyX1U^%q$X85Loka2W8-AnlMZhMjVqp0YASQ54I4TQxt0t_%sh-ruIZA)H-}Ty zf3fl6t>FfIQp=8J#Yu3YWo%D1f4Wnddb_by-WzUkrBRPY9jmk^(2=KxAa;XaL#^m& z7KH>t%Y&ClSw-Xe8zARn*8XXT&Lr1#ZSu-lV0Wc%MB&GhOUf}oQw~JO=)2sP8LQXM z(DC8^Z#b}plgyxZH=M+KpJG^qJ&<5Pe+-JX-n?p33X6y!j?#JHG{Fwb4j-a1^@bBgetdcNxE3c%czJ5hymStz4X&wWe-Q<+*>GHamRsSr_uQM#6889)6%PE{UiK08(x1^| zzm?y-aps=CG(XJhK#r84pTtk>0#Ec(`g0mfhf zu5Z1hPs7BC?>p{~X$*@r+~5Bn7Tsz|0eQD#CApITcj<#%fX0aUn0@P~;%{jd`Xw16uA(*XtQP-wLXj=d0T4)AWkx9Chy$dCyskJ*jS zA1r#&gE-KMBwW!Mx|><_qz6$rjJ|LwB(FI@igX@Wbf*VX=zwtJhxh&a$XOh->xetI zeM}f;(W4GHnTtN^@aEPRe_WjiDe9Qy)~)Isd>he6tI8ONJ{O?djfFJdzYdcmoKvQu zx#Ni>lCX!!=axmYWip$a)1h_LErcVj5@Xxa_p}O+DHJ~Qj&zPTDtM^qxw)ce(UH!H z{vX-u_r>a4$eHR0;2M2W?m&>IuzCWpn0^{~3EN{MbI8)F8fIbPf9V7Uw90+WB8&Og zs`!=9e-bWMCf|JGwaR=ouee30I%r_N+Ui)_)&@PDLv925>KNB`&>thbk26D_c{h5N zLvu{mieE+AZ4QE-ke|z(1m*wE_Asmajg$I`^kffj*jPR^re7*^iJoJk@VXaZ@8W0l z5L}Q@d%ImwYi+BYRAtbLVYRZXYYFH*c1~qi&70Rd=H@$1 zD_+%`Pc4q0R)i{Yg@^vV=O!~-dxloXD$B*%zTG+?e}Uo2Ug1m&7xVI18a4%^qkC4P6}=(sD9$tQ`CFIBDk50`K1T z=>S?QShMJCNio=oyE|0J+n_l%0!Dj8d z@jlgbe-#_V;ly+N{+zp>)2E8wt+#`&i`cf%Ov@w8!ZBL!xWgP`ZZs?%XER%x{#{$& z(3&1!R$E%r$IGVWj{M5CoVF~Q?dEK2d2LzAf?A$i=mnlT?^sBLT8>;+5}}qSSK)YM zb6)kFv~pH=9Xa-X&O?RH9?mOED-f}*k*+W906 zwcNWH`%f>J_^FHOXnY5Y{T4?4o#6oZ_7j`F^|-z0DOvjbn0blgdlQ?!y1@u7pRU{( zc#N(0Co|8tlE<|?y|!Z(9BTQ0Suqza|1XPX^$^3`W!%PVaH!?amAk^r?P}|eKGbsa zf3lnYu42Zz;q6+UT^7xDqnc~EbXkcES}s>0GMt7kmsw^Lo6xbLmJ^nh*r4TzW#ywh z)bhrf;M7>0d@ZM}EChx^%78UvXYHcQhI&3*<@@*j!SjP>M|^J6nI10|GSD#_Zdd%# za`Vb1u*h+}G(KhriwB#&^jNkcq>k3Ke|=otP|G9C0)pGsEvRi)%k|6laA|pfm13`P z;~iP8yOvj&#jI=jg;_MKbNUx{5%qc=Va23>36nk?+0DA%$<8Cg9*!xmzD-Zvuyie_ zuw25oJ_fp`_6&e+WO^-^G3+E$Gb3?pY1Nmm!L6#&T6Lu-nOhufEw?e7b~|w#e;aCf zjtyq8sKlpj_NkT|*_If!o@ZH!QE!n&>-n9r|Ktw|X0lujOS9>*8|JO)iB{|iT(&Ts za(O{vvq`jE(Fn}CSUN3_H7hvK@>;WLw;MR}Wpf|EQrCQ#13QeM=e~FXg&f764z==iHrjeG{odq0d`PEr8 z+s(Pva;mdvwyVpzkzTU2e;zxB-^@LEMtUxCHdvtL7H83{&Y2v9R9(>qS~NZ1ITGEFbgd&IlGqia3q=Svc$$qbflLH zjg_wVcUH}P2T#^Ne;e7@iL~78?50ro|d~Fv)uoh?t0xJy{6xu&AfG^H)wj_+{*9_4PAN$m4J<4FV(4xw@qrV|?*f0CBF9xMIn&*KsS!f_ox z!@py}afaU44G=o_{3=o|L;hyCGD(X0+G$jhWf^))m7yoK|(scf-KQ8qx>mBgTTTZdEn!bHl6AY$j!egpx4%~38?e}B{;eW~c)EPRi`X$~4)-s?x&Hg>NT zX|)^$ZFWK{y&`Y+W7f)P*jPw(NR>iiG;1|MLG+nM&OF{baa~;V{lOxg`;RImLGeMP z#nY|`e_AeDS{1h9#EBBoL+yT27BW}vrrLf)&h=T6EaKz6JwVR@JH=Y}d*L-QqrM!t zF&)aSR!fI*^UD2J+x%N+a*F~Vw9kF!#NvnSQ&Ean{QC~Z>;zMvi?9jtZ#}5gk*D0Y zwd9GZMn40hAr-wIuV4$(UHQnEDkXojp$b!`e-;GcZ^pDJIpX&AhmsT4HeZ=m*0&#( zk|ox5TMvkJ?W^6}wl{5RH@141;(@CLQcVC{soXpqZiL?9U(ov(^mYrquQ*4wi?FT) zyyDX)ij*bU&0x3G6Fa7U&s{N3E*o|Xv!9C*nW1yHjK~bKyGHD-aUw$`&-#&FYHW3N zf3Id3Xu$wG1~;{P^5jzFEOL7Sff*`pOCT@<%c9qQt23q!2im3_Vuoqv?VI6N2Xe@>jdIAr zUvkJ_a>%yikl)3axn0I?c4W89*te!pe{YqsZ%y3T24DYUnNGLI*UjaLt#DW~aI@gB zX7JXvh|mFtJ=(}&PbP_X=OxP*;`4tEejDF<0gJ+zcg#<*pM?X{#GAuRM~px4Nt*B&@H!Ff6C|d&6S$2&5L;lJf5)%+ zJ;N@sfcPZh4i=Gtemmxwj_X1{Nmylx=7TlkiN_bt9cLocUCcP3N!Pp&7INWpSX=Ya z8FIlm2^U>+ybh3iv=O;4_)jShCcIBl_P+*jf04P_lPh*Mrq2Z7IgDc8474=Q{1|jB zQJ5k1b@(84u~%F;O5S>osCJ#_<(O zHYp#iC^Lh4%=!e&^C!Pbyz0x;uVP`3nIoWS=SkP7?x4H{jf$ST#`msO7cqU=WLEcN zt4TG3qkK|Z+S)rd%NQC)SJYtjB)6DjbDKxO`h{+%XWTe-ky;1Cg-j z^!t{0pw8E%GmV!0b&NmigiW7OejOcX%ddY)u763cD#`U_IQ1s%<(qHLPk$%Ll_+@S z1kRL4LR>6=QYP(plw;pIQJj&d_@Wh+X3V8ZWqK^n`Khqk2nws8wIa@p1KA4Pe=wW= z)>Jw}3Ajt0&QMskUP&{Af6H~7%9%gTjFLNO9<-1a&2TUmGs;B#**ys=6RMQQC3GFL z1^ytx!gj_DZLmuDSP=AQmy(4gdj*5LmX%ctn=N`@e}|PlUT|S^exOeK z+Bs;b)530Xmd!wE6*RVH$5p3|?aGd;PA0p>Sv7+pX~*3Xds8Q!?anBrPCmQE$ut9+ zI=;37w-Jw1-`pQTox1ija5i;jTkTo6nt86vgO6LD4Ks9dd7MPyvh`GS?Y(NK@nuHj zR?3z-SFX;+YS*n9e^PDV;(PeC!QvZDW?sT4NgDCY?7K~ev(-Fen{2+r=l%U>sxTs* zL@5TA-r9b2vZPqrcMq`3(K9{!u4bB(+HvUQPC1z*VZ_Lx%ZXWv|9yXP_O97jRNJFY z0;RWAW7Yd}VW~79g zPR=FT>|(8oOXjWWKnsu!vv*#dJ8>=wZLU0xwW>!w9Xe=~&tv;D*{X6=eXB~Ssmm26 zM$x}2jU$`ff4S7<#FU=R7k;?pe22>)HmG*P=bDz(y7_I7Ia+0)%vrn+h6v*OS0(au ziJPX}yjvZRDG7t~CKax}7ab@uZ&e8!Q|HbL4i1Le8#3bo$1Ha4c*S%@w*CCKOLS=%;YoB zJO#BIsW$(y4(61O>4tvl6@X488Lg65o2JeV-?YkJZDZm(5n;57T}fzDVq5B&_o;&) zr5UqamrjHft$J9g*IyU;(uOOF`tEcfp)^%CtD$r7H&{)I#+$4rE7?GEHY!tt9yCS8 z$FVmJe~@!-#cWb1RO0E3u-k^^RlW*QryYN*#4I z@z9yFAawWaH)B$i&|^r7*z%n0%(3(#D}Q86l#zO6+`1B|>RQhxmi1eXNr_!s8ZB?^`GcCE3@D*SYhvUWXfC|U=8MhYPjd&M&mEmAxQKb&6gwfrT z`H+p6mmIPO@a-g2x=d8XYd3N;4p$6437H>;x9ld2^4?kYb;o>+inGm~WHQ5a#2zI8 zqFQZu-gsl-tnKhI;VB~X9K|f)_qoZ3f98M`%5>qvx0`(Y+OoX7P#qFcv562RYdWpP z)EMEOO>U&NimrBQq_!%rMrI^M7e>IgeHlZ`I{uE|bm3;GzVX%-GWPX^40R{w;pOYy z8QkKxiY;I7S$XEvJsY>JJX`9v=Ro@nf+~w$CJ_yeHE0TmygBAUzrMSP_pB45e>{6? zLM+4E*ZWi+Ms=Un2wvy7I4#ux?bVMBVzk%kQ%WLg`t-tj*Skbrz#<<>5kixVSrmzGU_g}+L2=bX104;Eii0rQyT!)IvT7- zicNX)wdaF;B;+(SyKIaaQ_y4pe`K##f~?j^JSM4K!vLh9!vL_%8#jO|qlquuyeuYP z?Gb4``CQ)ur=Z0E{LC9S05ox@0ZQS5r9tBPw5Rg)=~=B9p)fiVP+FK5*zY?N4@*H= z{RY9$XnTl+?=~C40OABSd}H+2|Ht0DZMThN*`mLKw7bWU)eh+BCx?lDWoDZunIk8p*Ze#?wA^=FvDtUBg*&-G9 zn6YkiEw|xk;evNxeRux; z{`u#(!r$TKgarnqjo>4frexwxxAguYeo(lfCmap<{sRV+Ifl+RR@k{TsABVE8lDG61LHX&C1gW(1)i`s(>CzIOK~aA! z=Fcml3Er1*K9_lpQ`70_gF)xl)1H~MhUv~JAd@U%j(@I!`&0Z;kH8w{uxevfXKcTx1`ZLqxg8v4t& zu}LJEd7-jhj-_#H?;LZcfZnhHqkL?+cSa2F#<~q*7mYK68@ymx&A_3VrV_b9G}FZs zTKtEJWV-MfsK-#aoCRMM3xR+3HP9UiD8{ok45n#PVB)h@OR(%p7&HvRZ3+Cy2OP{! zsA1zn#QavR(!8Kpq}DuLJ0X<8Y!W`saMexmSU26QilmQ*T$kLhP-jzc&Eo1sYid|0KEy)N%1Fb zYB2Srpo}{A-v*aT?49n<$|41Bq|tEC~C>+sS;^ z;`^capFD6+jItSHdNAo)n{3xnJn^TubvY6_TSvFyTx{~Cm@#n@R5f>HQw}PET2!@B z)GjF4V9O3g!PXW`AK`=Pa?(rZRt7saDG0Arq+OcQ4a52Mm=S+|m#%(k_0AuXx5pBS zH+#%F%QZnp2LuIsNtxy=2huKAQ^8#XA-Fz;TXFcQ%lCpxh>ny`yneT|K3@}z%OZ7&7}i_R=WSDMV4e2qyM zR7cyo0XYs;PUSs}UzHf>$GIEwQzpG6r)jWA29@D6gkf-9L&8X#_{5*4QG7R;XP*~O zfBD9r)c#2R0fOcl3pp@L+{Ofe1sQbpuV1B)!ME2MRjMvGj@HAtw^MzO!T z4W|i=3H5*0iL@JbCDhdWb*biwdXS%sJ zhC*D$Q5sCsV5T!@)~lK5Mk**M5Ox(s^FV_7WWppzWs^yX%4&O95^f`tmW82>`ZNov zoJ09nc)oCP^ zk<8?PDlMU?ljws4m5CKzuSX083_hMuKK%6Y^my{=H0=!n=`@W_Y{G;OV-}nYigCgvCOq27+-Qe5j>lz_r9!jG7Le7l;p8m85Ek zRb^5&cM~cxkbLUUv`%d>f7l*EC*b8%sSO}+8m;cQwvbz1p0QPQp-SsS8Jp)N-pI@9 zOkDF;qr%uHMnBPC4p>aQJvSP@deDD~ca`9lbUu_$AiY<7qAVv3_E_0$zE zuK=O`WvaKl3DgfVT0*Dsc0qz8PVbD;C}IGO{UoY$%5KX^~IFWB!hp3FWE?B$@@qWB+8iiQf-2andES_5?VkLDP5>vq;Cm0 z84oj4yZoubTO*yV4uOyswK^FqjK2(XCM)rnRY+zTv!05JU;54Ia^ksYyIT$dadubB zLC}5J!y*rccuOt(_|DU=S-MyR{n*v)!`XGc&OV$)hnoEieKQOFd31lHEP-!w75ur> zK4RX*J;mDhaH?F-Gfz}~S%2(H37_)DAgV(rsb!|4CZxS>u^df?Jt}W4UnlM38(xdQ zA6#yo>n*bJ%6tBm)SB}6`kM=F*pgLkh}KbFXay``sOQ1Th(Ctds9vDeSf#tEa&f*} zo=@XI<}1=)f-kU&ivE8ReCgyYK2VYUCJENdE?EAJjWbyO(|8@^?D8d>T3spYI2M01 zzw@pFxl`rtSlWoc4N~FNi}|=48%L8c>EoV5=kWAiLY4AbZOg{`nDc5 zxNEG&G4FU|(@xPZW2+s|t4L~Z@h}ArDZxsAb` zWg8oMqfnh}_OI^G%EJzKhgAf&t!rr731DMv6?@D%%KCut!a0ei>qKnc%(_SJUqiq6 zR}NhrAE1LhrTu#?N5|5`2k7Hp*}$qrDxsP>KQg5JF`ipbkg-R~ zLqWp;3XIuim2x;h@goUaIKNBMU{QR;G4Eed-W4_JG6bBrj_0{}(raJ;IZG^x+7bN^ zSL-yR5-7+sI{(B_Bdm5!0jAj<|U1Y&iJHBHP)&)k1DMn55*a5flqvzCe&5&=Jb zCVuo6e!74B^b0Ux;|SaW8>Qo?gU{mA;h|dU$!9CR*2r|!4`^Gg)wnrASMc;%uw2VL zE_%;g{B+*4gbAEVNOOi_rBAdQkouS4?kHMZi7TbGA~HCB4vf0mJ#&9i@YE3f%y}x* zkDWXGrKErLgb>f5zA@okEi(LStEH1A%`gGiT_V>BRj)0`^`F+^d63HbZmq=3Okj35 z=y{VCMM1bh5yYhsPG#TWv~A?fDz}zy<@o*OERj{dH|-+;b{)HHc1?~_ zJ?~5;T**6FDt0MtE!E18#ha`w(|h@egG6rFYg2!c1qyr3NwUBprJs7T(1)}Pz05T9 z-pA4B!qIr;C*ial&B;UKvJFksM3)R#W83q+g}A+i2(hAsPFAua_7_!OQlls`@I+pi zM%JK_bzfF<@r(8{x(;}2Mve#yXS`)WgsA^`1OO2TkKgrauXrC+&sEn)} z(D~$Qy1AA7H$CGD4e`!<)Ar12)SHd%VN#kX`vI|}IC5ysoK z=s+%pxji0Qg2->SwE$8PsA1-%Cs8Hk!{` zo;BcO7KI6?CjxX<$O&$qswHv-}f$F?w}@=5AB!9JA4knjL?I z2yZ!`Kk7)-pv`STt!Yt6b0F)53Q@bQA)iN)XYhff1QX2o!hMSQZN^do#qr# zqM)Q3#GjjIkcsg#gYU{$a!$`DEno|qo>5Rd9En~v2@R0W-ol%K51NmO?Xs=U!4BcE z(_S^_uq=f=cM5!dqX5$6?Mtc))^VV*D5vxeDbR!@NcBlP4z7K1`<;h>1_SMB zy$RA%1fa!ZA&&&07<$QBMd6=I13a8ggL$9|PR$rNzX0vg&ZzcN%cK?6cPVzov~MI)$bN7sd+ zRjTV$r?=Ekr#;gJJf3*ib3+{r%8$!!uNqn(e)i|<;NA7$a_eMtxnsD8+cmF$-JJ_vUI>-d+QgVFxz#fukofk?#{pUT9u z>+owJix_)z(R%EC4&p>*mS214$G^}u5*`t*B%rrXc}Iy6ibE8|DkPPm-8ZYg?bU&A z-avkG5(e{`{^4O9_)mYlFX4Pn7nEXP2|>k&$$AlZIl6U69C=S+Ad{i@V=(n4L(@^= zZ_mSO()m&nTKteMDdjn*vKhV*Wo}6R8h}o?iM$VR@ z>1(>3Hrk_T>`i~(nAk1~m3yML$RG#l4u6^a{nPsolk@Y*@piV0c3Sa8rYGKLkEEr& ztQv(9MAb@;#lOW9Pw2nY7j}iXH5+$|6mI-N|GQ>R4i|npz18hK;n))W5%x0GRP3sGpy;+rsC%oI%q$m4S7%>(UNhBecWZx{x+SSzkMl|$q0r_<`@@cj#WoGmsbq+bh!*-3Af~Vnnp0R+ZvdcUn&$|cHB0r-4!l(t-*s?`BxC7?Exli z82{ZWY_orIX=zX7gJ@RQe8R<#jbKDLZczCS+~#H(m6pyG*x^S%J`tl4MrK6vk^w}|RX%}{^o2u=4bzaXFnuyC~@IWCOxJ0UeQr-n9)W2&Z@2qh3gdCV=)Aj6<3FW7PfSB4mV4#Jz;bWoB(ouM72C zI1@JqD3ksXPb7-&lCOMFfTKuxlO^g+*xUbst3PQGiuzuy&(+@$V#<&I#+x)Wm%2&5 zza!=QJ5xT2xyjJWXyiSo?OsxNMreL@)=PgJjj0zp|J^EBHaOs<&+>Z1uob5Atc5CB zaQt$^=_*~mw!}yi0%(Lr<+I-BXl{01O2G(?!mm)$DZiaWPPNmj?gK6WJVAS=8UJI0 z-751da!AESc#ih$tJHTJgQ~g08cA)m)V#HfjTC{Xj_sPumo~zat6TM!xqYmHVd#HE z6kwmxET|N0$zkn<>VX#mjLWxmQ>n5r4--{)C(lJo+A7RLB9P19wHKL(y1A#Uz7dSW zN0jp`X+}B2xpU9zCAEkFDvU?!C52J@kIzdA=K(w_FDaZkVB3Ce^{1iD1uDJn92amB zK%mz9bgd^vuxPye$Gjs7 zCmpm3S&<3Ubd}%WYdJV4;ZbQhIJco=EeEGMbf@Le2@TjH6r(-R{6(iRs8y`EL%7cs zG^;zq;zlJo(3?ePFt9w&=p+Q0qdJe0j3KIA>4VW}7e)BYtz%zpOwR&3Q=xz2z1G*r z3XZ{4Jt09lSba0H;Z)Jwh%ZcT#`iGsc|%j_;Ypr1FM4mbXJ&4vox zP@NFao5>CdQNM|fI44;~hKhglDnxIb7sR>EIV##}gFuqt!+ng#DVbGCP-l=X(QSU0 z#oY&*IPM8UmM(nS=GLi+R233WuZk+j2AMCm1j9b@vZ9`Krp;}y%5&LDi~tEwQ9)^Z z$LfO`q^nNQwDMo&eEwm+Gs?5YVf&=|(6i!b;qp2fTyAN}UVE2Y-uHi1Y1J!D?CUFk z`o~4|F$rSCO$7-^N*nNMh%9+))uiZ0N+)Qnxmgm#-_s$M>Hu|+MMrqr`9mNXNGSjO z#xBK`IMYeW)Uw{7=02Q&SmtKwuB?`|EBT)}u9z{5r^iUNS;?9lbeg*{46nyXL3bF8 zVVr$u4udg_vUgeJ%+-I!T3{NVyLo{#85oNTL-_kzT$0O)(LPoAKx?Ysy)1=`2J$yo zQTNJFxG0u(M}>=GU}rQ-HL)^AlBpY?{1}CTFQ&_z%5*JnP&Z_~|E*iH0c+Ec!1MB} zYR4Ule&bk@N=#KX(V6$KyMYyloTeKPG=c?Dd-2jXLEEITNoZ z#c9Ji0XVw$(wBOfcos4nb5|6LigD1;78DlN9U=_J}TCAxx%nS4YZhLby>#27tzK^eEJ%nqantn2~znMu} ziCwltb%7qh^I(784LZ&m76a2U#1^9u=$4jx*J5SK_H75UasVkuOx3nW@EBy7wziN$XLwv{10%WzPen!-uYIaXMt(NXT1UI(wIz|C# z=N7E|vk=E+K9pFOp*&x78EBcXG&jN$Dc)mxU(nQmkrOPLZ5m3%jsUJR5df^e)5uj-@^^|z(y^Ye~wRaT6l6FZFihPM;u>llu zj-QAro=1Ng;~*Y+GS+svB{WX7j;BE)KZ#YuEr=x*TJguCAzh)0aZnfp0^%%7z9{i& zBCCThr@^*7+Ie*>oebiA_T$jM5)as=zX(*xEXn9}B@KgAlk#Y)AT(hO?mGj$)hHlqavfQ39CwHVhS;-FHnFpVP`Lo?HN!CHKyTAY9a!YF~S>a86DszJ> zf8(jY@t)~!cYXc)^Z_#^ zH*G%RU?z)Jer=D>12Pf)-r3it7EfzL9_W*93F(+tm?+Ou{^;h}d2k|qYwzJqM)rSX zOmR@1b?>Fab|)?QYS5zLK@|3y9v^_{=ynvltM^3nnLi%=d@W-h@m|o-sy1` zgw4geP`}0#4Ah71_nF$D>K1EEl9Wa>eGQ%r(@1-A5M*9Jl`e7`oBZ0OKyT))fG&B5 zNfO>H0~yD@TvleW1aBgU4O{{+Lx6vEvD;8EfFGTvPZ1qpBeKtH0a>YX8yn{JGh&pe z$d>ynRMc6hXegF&F5%=iVk-}I&F#KJM)w*Jnnv?^pteRbe0L=slhWshsl(exWT=RY zNf&i6X9UMs!6BmzzlMRilygVHp&lY+v`0S}A(QANxhJMk91J&==NZ8QnmvEtPq>a4 zPU<_B#EMoB&GM%iE<%1J?hRFfgPP~>9Qt9!zdp}RSS%Pn_z@*SOGRhz-Hqk+K`b{ z$7|ew9G4Lzvg7PBVgz||A4Pu5tau;?U?M1T1cV@CH8D&lA+I5^a*nbt`fEsFB**-PtN4bOk2R8#D)Zo_HP z1ax`pL|PM7H@F|q7#a%>K6S3K;HZDUQ-$D(f{WdXn{OCVGWkG-rAK^; z-3@&4z1SnMG(vT)*bK*exZ#ZRF4QkFwhf8;5S+VR{^XI_Uprhl4kavV;WBu&zYOz~ zkJ!^O3uz-xgG7Hm4;U-OAd&5ErReM$ovjp|XPa=uR24?e#wLBjH?44ZKt7JpEll=Co`wEAx>0<1-{b=2wKfu6z=5$SE_&H{QMgJq>zI8L(&@B0MALLO z?K1sy8@;W$TNcky#zS!}8X8<~Wd%WW0ag{|Lx8>jQCNRuLz@E9;$8ATrwV=&8Z2K{LpX?3|VP04otrjMMRW4C`Cn4iO0(5RcGsr?X3IvGFHm&7j8g#9XtOSjYk!__ZVi}eyW2wm z^J?D*a&*7W<@4--fD+X}n6BZWHRd8RC^V~%-mFCILfM&WF*(eo?8P8fH!_Y8B!DLp1f0d-MFBV0|(8~bKi?%4aSpX-tVPmUU+D@^f#m>`I z9^SPsR`lgIhyx9(l(%W3_&t&|ii6pZHOGI%0;DF0=ckj?HT|QFJ#lB#wGf`4^Qk9UM>gFp)`?VxX(r2^k}K1P*I$2M zXW1F^ApYk0sWz3(4sEl1`1%s`Q;Z_`ES+M#3Ij3GYD1rhY4{jhE1Da7rq!hJXD3;I zgHp%ao*g}5J~>?!$}$YB7X<`^4LdrNFvt*pC^f{+bSmYM4JB?^boqz(U0vxj3cU%0faGytp|TFyFl}!AXAk&hY*Gunu?;_hRHxy(Ab>6K}7(@ zIfUVaq;qI&+UYT7Y!$0GZ0FF}IGWs?cRA{cO45XnlzYH@@=OxKFu?o2ERFKvHJSOW z8XL!|9qVPe?Omufu$@<<1QgnG^QEb}ryo`r{@2N2g#ml6hZRQVb#z!^G+uv4hqdj_ z?BFD$>tS(D3RaP|-fAwV1x5jKZ#VX_fw6#{*qSiL&(+q15qurlnlMBUJ~ki9#s4;& zJ$Idz{ZmnfD$3#pbg{a5Wx?J;7+GgN4i}p^6T_&3v2=!QpM`Zd-iZzFn(ljnL2=#e z^j@kD!(g_KE(jQj2Jdt^_j-SyXIuO>3}Qc?-rjlFakLP(hPoSO(R3}7!0GCqgG{r< z0>%F|qhK%u&G0T;`LVz7atdNG1Ji<%JIyUehw&2BOeTubFz4B2Tvj^Q;KDFu>O#jD z8%OJya@ppJjVKM(d_7$5T^NyOR6ykbjecgYnQ}>k0RMqZ} zipS4DUSf>SVE`JcbEWK=rVWfqV-;03c0ny3RT`b#-5kF`!Ek#)TW7Bq^vcZx5F{=$P%XPrDAVKABN;}M3Bbz~dB;IVcqxa!W4 zb&^akNJ(kv;CeL)4(I=aJPz?tO^%Yuq>E^1FVqJz{Z5k>pduChws^z#S<)C^q% z!~IRH{fUnKW&y`Wxb^$WA239uD6EPeAMe-?{#}v*}1kJ&)qop4gD#=V0*NXeR&J_Qrev$NFxTvkmZ6BV}mz|K0w9 z{OA7{myq`{2_$#3x)El%hm!W+{x2xY7}$8hI7Ry zPTwNf=ZxGU*W!PZoh1A-c+(Z&k=A8$N@JeV) z8%5f9XK#ciWHj`j246-0;e0MO;&b&y-}@-wU*2J~@~2@c2D>+WMW0#}8j!xBQCL8F zs~DxAxAe|c9NyffjGc``;B~dN(WSQg+S}+_+qKR8o1o`LkKLyb)%S`iF7$P_Q({!eCi#JvjONEhjpT_<&S^1K4 zfU)f<+Cz(wsjDu9py-rBg|$8Kp^h*Lh2chWPZ)$+ML8Txhg?=ASud8w0=c*%QD`pn zk#O1$D9jgQm7Ma2jjdvIhk2E@y~@wzYl!v8M8mq|dS&lR#sNa(xzx7M8sbYhOK-Ks zG2(yR%xEN6A6t=PfmAdi-EB-lh;9Z&?}!GJaOj89 zX=k88U8S87E|VZl?@%!(d&E$VS z47o5$rwz^0eDkBARPq+BOT+1<6UG*D3aA;W}wo#ZY%7RZ@9raC#%XYkGp- z9P|@9J?JHL`U)314U@FZ18F*duSkkvvnGX=O+WLmD2B$ym(J*j=3RB$ZwJbBY!+dB zrRwehFG-?>P;VXZN4$znY_i)N9%2Oq)ETzr(8-L}oA|0=039XFwP_dO_qvh6fpz0BlxAkbxO%r^#Kiv=Zujv|SwAat+AMN#W{6~AV z^PewEG_$>9%)PnU1K&L#J%921fU_!YHh{TZCnLbvEDAB%TouF<)7&M~EXaSC=Gpk! z>^bMapsmrZtBOg_x87fxpT&2q0nf-%d1xw8{XV$FHZ(@cW%xG zbGuI726MA0cf-bjVtZdlXo5nTOVT(p6u^>$rS1nzjlxI{LfnYsfU{8M-Eql*6J@(^o9HHQqjAl_PK<&I_;fsH>_a2%e(6aYf zTMkVhSl@E{wk>B=J!tm7&bAy1e972yD3m3mSyYfBNrj!(=9oNCOdk-TH1^#0>b)DG zfS8<>=|>r$z?DN4VUVfYnZaZ?20@1X5uT{8qd3F!oxNsu>Il!r*ED}h>mrPpBA^iw zB@xnSRhX$QO3Kiyo60b^>t2unY!<6B(sd$s3n%b3A|Wr^cjSJH|8+EmrEu05uXaYy zfOcIqhM`%M0G~i$zs87zWIa!JW?{0L`!<#pV?SuFJO{v+@kU286m%au~LZYchwSS(MX%v9{we4`)MnBrx`7HLm935P1KgtDyKTXf{LFJ*91S zz?BCzivmlQ?+Cs(0}Yq#MqY;#q=+HBpVPd@hNEpgh99$O(KKpyT4*P*m zj{3n*j&K0V%`Qh8>gN93kk&M-$oP&T;VJEA`uI6Z0urXO=169Fu286dO2)oK0Vf&F zqCA*}eaY9vXimDWC=+_p7ATY?qgj-;xQW9VH}Q9b=Ar9VL7)li+7$#-0vd3#0|kKs zNiwz~3gpOW7NsCIThY-0h~|Flbz7nUlAJZ_M_r&Gk3;pX(4>oCx#nmL6s8fsG|!n! z(@);#2nB*gjotSk+G|5hbo9y_>IQP4-uTJ#gZK%p6jat*k?NEEWM_vi%*{m5CC zexesB5aVW9*vDgxLN7uNxo0e<8x*LqH*doj1%B*K8H`EjM>od3u_NHo+-@&KGGiRz zF;o7*b*hLle9;1nqs$TTs63FIHR;FgICg_O8kokp)j1G}SqYu^Zy!PG)Gtu$!`k(8-`!x*0*k|;Kto(eNrmNSxyQ}bP zFrTge2!>z83u>imdQYRpuIOUCJKEbF@9+M;kn$-xi zqkH1R9QQ+rImR(!W;-FLsNk$U-xg6Tzs=tOe1k;jY7QGQi5N5MQ9T-7dr348#nDTG z8%fNP45S2qZT=!i1T?4eL>%*2yE zy5Yh|#%QX`t~E9a%gHI@&}8S|e^%4l8`u+#Q+t@=FHal^Mm14)2-ka@-RvbKDOsbBu#!mbTvO zjA-?L=`f=VmmjjCi+xW@Y>sh&&Gz+r%11Yl0G(xxalq0TB;=;< zPJ1oF)Srh_Mvo+Ht zejG<%jQd6Xl(k(b$|kw>SAj$^coy8Gv9J9uI4(!cOLM;ij!Upv6vyReJzjqfVu|K| znA?}F^lQ}hgM?&dqK>=+`9IDYb`Vzu+jWntg3Y4hs-?xbEz!qYSF!wyU92OkK;eO2 z$+mTb`s*M}0=DZOCV`qoVM;M%j3&!_-;puXsZ7p34rmGn#~HlZ`zVYlr&4P#k&%5A zB=oy!v{?Ad*~Q%|c*A_@?~}lxRR|q_;kz zELL7j&`C?FX5*0{VLGkH-}`R=K>h=L#yG1aRA)B?|NA6pXPuZ<55D;SI(+Lg0WLMf zIQ=nLdHDpn`y@Wj&U2aeQ3z2;!=?CH zP3?)9NrPBvylwBhV6mDm^>r{! zUwf+Ruy`!aqA!CRf1MV$+3=e zZmjm`rg;as;W|op)^@J5x4}<;8HbSuJ|!iInEULfRKPw8TuN^i1sMG<^=}fZd285= zBy8yIjlX*By|f)sQ#TZy@mY0a^%k4Dan%H-cKgu;D72?uT12SQ)CrT_yEVLK>d&zR z2)B&EKCc@3$lI6y;|!DmCeQVjHPOh>AD7dZATo3;CYkGz>9@mFzp zwNArmdFHQFtGVIyT8wN*jqsZkWaX!~qM0O~?k@arxht;UXdO?3WLH*U+ntn5sUtt0 z4X?j0=0Xy2R08Q<5Py2TUQT64{#E^jrs;o*KD^JuY!a=i zPiB`}qv77=mKQ8V7h?N==AVANIN3S4-1<)qiK54tdwHqj$EgW8J(+lX{dIT~L^3`3 zZg{GmZ0&=Bw-ZKXgZ(GdU>PWbD~{$vsqiQX>6uMX3I^0L!g#ppCWFu8_aILmcu9x)JV_WJ8<@N=P;mr4G4#=4MAizHgm z-|miH=D+&-`m6c3H|X>tO)K9?WwqRt;6Kh`+c((iUQZ&)K;_bbo0S5&3Xhki79dolU&>CNQiLQmJv3Z}f7 zujk_9e9H~B=%>qBP#lK6*6n7TH>|Cnk07)6xzmL;^*0@VYU9OAqg6gyIU8|#g5(ER zQJO}J@+Xp$XtTM{d#kA#&}10J?sA(Xbi5?*PbuC+CNXX-Svg?)M&n9{E+JCLr(=ed zOF(?LrD=qYMEAuVP%S!!+||w77#(COOIcA@C6L-4|X#9Ib35iO0yyU3S?5qEaDBI1>NSww9a$@QB`ed%xZ)5r74r}rNwC!fww z|9gTyVSr%h0!rmm=DJ{5)m`dR?PP9$cvWjTI7@#aEho7*@{cYr|G(=nPEyo~YF#6B z?#Imv4XAKWWwNANYVYion6BoVm#T8}w^Vhqq{k0`HDrS$1ysa8#&`bm&3IplZ4d`o zxIAEVYSDb9qIb)D4x?}YYF*!>lyJK^nxyJxbF@@ECNGraQ!c^~L*Y_8{$0?wV!VhI}y_IgZp zNUPZXUmofHJkm9fu$b~+#TwvzZcV&`qhp%jax+Qb1gthSigzw6Z^C2pp@B*chS(IB zLAD8CV=4cs5MB;;_!;uFAvJ#!frEEllk_ovC2aN*qodAz`O=XTvwtb4o|MyY8KlFH zAKsvbGJesWE+Pi$Tr`nI7oN+1xA#37?TniRQyrsW`E_s>EZ5xOJBGr_BK+vbTqztw zVPz>!(_q0B!!aHfF8rHdcq;$R-4Pu{!_H+<9!zY~Sjv~6^m;N8Q1LT*t9UIZ?$tPd zic&8X*F~5}t`}gZOLKyixXFu1--yaMGf?a#q{#a>zzi@jxOD`(_ZNRt0VT05*| z*TVru$d7(d)OaV$P5}dyx|8~UrN;mdSx=+VovPy~9#CdAS;OY(bYJny@8|wBxQ*ts zAO_P!)!t32=&0X$!z zrbg_q`t4Z-kV%|H^=`C(M0bI0Dy9(?^My7Y&6Edsy0RW?s9O;q6$`QoPZ8Jp{iD7{bW%eY)=HZ zRr&DCVEc~Tju;e!49fJC_G{EgdOEsBG#C#isG^O+k(;M!<817IE_ef@B(x|UC<#41 z*sKq`l7^WmY!nRC(++|mQ-+Q5fJ)dw9%S;cQ65lFJII4bBR0xHGo{;QK_wI$rGX(7 z4&op{3}#_yN|)X~O>gSK{(Gbw8;4A{to5*+Q;*Fe@t_x4EMh{fSqPdgZ@$$YCNbGO z9@-U9dwFy=t2D)b5BNc-Nz3CsY|e5i5%TEPU)}_p#=Pq&7H{gWo+QI*OM5gAo_5PL zw-o9PZSLO1M|1C4&}P$?b|E!~fOAEd`={MO&Hnqyk~T|AyV2l9?<;TGEH&5NQk z5dYfArn5a?&+Mphy)0bvxy@3!ULl6eRdz~u@yF~Df!7Qs6}M$r+Aqu;R`JK|lw9y0 zYKz)g2b72IxMM2+JudbDKwbFP+U6>|h>oMz$}pDZl=hf<*OI9^p>H48$JWDT*PF-0 zztb$6r}u1sd-HhsS0meufni42N2^1)48|HEyduavcC$a5<8C9}kn9l40hHU0B3sQP zF8{uH?X*CPYgqMu^V(^#l|GWzXz>)++5I=jYwsp(Qo2gOmR%*bBf~1(#CDtt ztLQ94ZhIOesaloYBnW2fJiBaHqK?H2SN#7t*bSwBlWK z=^rxfO^GthL>XqH45cVTC5n|m{W-{#9waHNJnr%;vK6{nv z9W=a-qeVVHgS{t~x=p6Tjmq|>&jBS#M$Gv1Hkkh51@blt(>rf1lgyN>J@FTTcO`~L z7lD%PQohXwqitw*M^A<~L0bH$ZLW(_Y z9Gw>}gB`iz+4=L*$on&hqw;5Tfhh3j%FORsHp71lu^gtJlE_k#>6v9WILd_8l-9~z zaMP}QXK<@nFf;GkLML=LudQMs`1ckmS=;&EBBfM!aBppP>duIBb2*oKgr7=O)z$sY zMM`ouE33`??scFUNQuzqyK5sv7wXD?IaeBPm14lvZ?F1QC9kjAjYb!UlCfbnW$GKk z$#5X0L04pYVcQRGGGX;4{q}M$D+#uW%2ejxUg(tN^6eGqRpQ)Na5}Mx!c%`;hcX1I zHiY>8I=#&~b@fNus|lMs=Bmmj&Q4VBFn!p>=cT$C6thrLT#Ip#uH$7QVMO$Q3j@yb zwa@#;JvC@f`!L%C;Ivy#rg`E)4c4iI8%^?zCt@#dE_6A}^4^H9eh;Q;M|%TQTpi4O z^Cz5HN2T$S2TjV<6|=rv&*zQlR^&GHt{FP8~IBQ)X-$qv;Tb*9JG(@aVr(Sc4aPSg^r7 zx(TPdZ{)wv{H1>r#18;7P(s)$d+)v488=m{6;PbR0wbQxWt2L{nT zzWwFxyWie^I(m0@cKFsJm!kH@qNvDnWfXAAVmFiJUKu5ba?i6 z^Ts=n_1*xE5(1!sBjDuh@bry?co@6LLAC!r6CwvV zq%c?mHpEd+F58Kr}f@sQ6=#6qUmM|KgzAIu-jKwCP!F2f- z(WAWkhlkUtnAYQ9Df(#_KMjD0500nq2Oc=(1om^kWR-GYUKL*!P98CPFWlS3A z1r)g;C_FyE3?M{*CulObU$K@K!D4kB#*E%wv0>l|M4=~gJ!4bLhqGCxndzGp1((1G zkxB4DajjZ|Oe3hSD+(fkkwej0watcRng?csf>^al5#(yBm>7iSd?_Dqd%*UiSdV~I zD?b+3Vp%3hI3D060KJcfk_Ukt@C zeDzarrhe==A~#li)6qdgOn%60TCz!t=BUs1uY3Z3d1)YzsUP2+MAma??$zljYn&}? zG$P+s$`0_yeN1rpiw3jyy(|p zx=w>nS@J>VL^z4!g`a*(m4mzbh;M_I!nFi{C^)(-j$f51-$vpPhSTfYMfByL!I!CT zi^3b{iJmD@n}Vun+nymz#<<#1D3w+K4BWJn||0&jO z630=TZR)zWjJ2&f@D!o+f;4FCYW=bIs&zv{lSGP4S9f+}9xC!}wstc(-FkZfg1Q5L zPmFWmivNXM#p*50?gpwlpr5J0?k=mKPsv)nHN`I0+uPf`V6Ap6xJ)l8#d)%AJ>R&) z^G#jykPkDB`02NIAI#_h<2=2j7=e|2eV)xrNxbcfVEO(&|9EsHzTMWZwKmNS$%s{i zbj|(JH82ae3M#L5{=nVc)(vkY_j?I{YAS4>&?(5wM;(ekjf!p0Q1fP~LA8aIy0Iru z{BXXG17TwoVx7d%B7c4~-DTU^Asb#Rvur>g0H_=(1IWM17X0w!^v&ecyZ7gxCLcb$ z`|#=H-G{Toi*3N)Cjpchrf7h`1p@;B^)Pk-#uI1m4^+&U{>WV&fXcStV|W06>eJ4S z;o+>8V|c(MJasvSWyi1cF+2eEcz4I}{p7>h>G`=36+DsUu{fW|1E<@Aej*Q?UgSp9 zUuQ3JVM{e1{0E@kHT!zXCrd2QNjOh~IG9aJr6)fvWbb$CTYa`ZE|c|2Mzw<3yHybT z>ZL^Hbotg*ZM z^eNc|^$JZ+@YK`qX2qNzc-dRplm8RHc^$?JO{q_QUA#iO5TANG-ZI(*&Jxd$1O32R zW-NQlOviQVKZ(*FiA5@~3}z3#~V0@c@~na>tAVy^T&_*^YqpsV%f*;>nQ%J$eceG(}CPx+<8n3e5O z_!;V!-L_Ztl``B9qdkg$|Dl2h^mGaK+ykNSmCQyRlxMSzum%*1?uDpjZ{*~i&d?*Yu1EY9PJUbA9T-d zS1(!5uOBO=%GE_EZ{(u3O}76_SJX6$W3k3V#u)I*^8PgVXb&BKO0uYM^O&i?p^^@- z1&Ihcye0Mki;7CRvAui;Rne;A=T>@MQaXlrgv!2YwZIK+yAm!Nn#Jm~7Ucj26-IbM zQ>=2R-@@Ih2g4``w(0$;2UPM6LOmG9j1I9IO}su7gh5z3g{oCS)Ca&)5e88^d8ET_ zJ9DHOn(gA5Zd5>jc*awlijY4F?$da{)1%&}c0d!PvWy2*R*zjfRL5P@4V&si)BhB! zDH@z5o^rYQSM#j;O>r7GFEYk7Q5Xy57hP+a`zHEK4G&Z!-d5*?h?iFd&^UOqt$wut z1KM6uGmyc(K+?MV3=T7P&a=?G8QntT3g zUc6$S=`VKvyg0PC_RpxwquxM87>{4()w#m1P+ogZC` z+cMXorNp~$`IU8br`pMrH;R^wZxS;v2P%_EkATrQ#ap`aV}IcVwP%^Q3a^5;aWf>t zdrS+-swZ7ZlHc3~zh1aZ!dXTBisZGGXUL6Krj|Q@$IKFg)r_rojtN0jP9qH%o*nbd zkdmTQM&(MpY1B8_v&fv|RLK0Xp6tY6!hw^WoT+KxEF}9Iad+1{T`FScGI+}S5{gL? z8VJt8)1DC(=#*Q!vZCIX+h8fILDA_A{iO&eFLj?QXwTovw?#Wj2pR%~%~F2-@b0sC z1cWnxvpH;DaRvjqI=tn?PXBXIee{DA8P(a`*5^mkGpUJUOcRCtxBQiDyz-{w=n9HU zqSCczVWlv4N40?I$$2Aml9XznL*V6-DrISw5~ru+vNA-W^SH#xZ$VO;XCEX^_?sp7_ezlg&dF|OQkQ`7&#q!lgBq`|5muF^ge zwtzpI<*q!&B2yG#W)u3edYbEoYORtw<$do}s5-@eSGh6iGfPVL%D=w%s)VNE12hGz zMHB+xQ!Yu46yCUR@()UTyvFM@5aK- zf^!7nbTRuhR-}={Ncofv>hsE)B}$$w=+@hu5Of?G9T~CAB-X-Z7%^~CnYFMyCfNrn z=1MPN52g61yCEabF6EnA9}ZF`Kp;?=TLs!|j7$P!9FLKfJc84`xB}%#3{o(iz`&6S z&I{{gl1{S63{x;rOLGPLX&s&isl0iAF(Fq-98d$dij&57t#4kaH&C~>_9nmdkdx|= zRaGF)sA)v`xeVXDsh>`7y@6bW_mK*Bm0TL_ZU9IWP)VYur0Te@{3CDXC~DN~D3MX9N*1LdD2DJ&O%I7$+sT3%jda3)*P{`w z)<;g1ySp){PsNaKbWYksRsSgXd)uIL05z?93@TC@v%kE{^=FQ}zOIGNz>P$pYj)*~2U3JxJI7GQH@kH$EelR0siFq3&GQN_ z^hzzHS{VVEa@#myHc5S{+g1vHVPo%XGUWw<v%##Y z(ViH=ESphbs5aVTt(guzl+A!!MKc#S*?t*zT?ddLpjE8n4bQUMya4fkuy+#6u5nC^ zQ1HU)WHs1S-C)8|B`oYdMB_|g)DFE>YyiXRjx@hDh+M>wD^jdVe#KxtkuY7qOTa<# z?_r`14)FyP5}m#Ti~s=uNPUnL3mAdU4Q^D{kh4BctVG83VQ4rI{jEwA6c=r6v>7(m zh;lX$nvtQCe^nW@N>R>#1`lIVgEITws_;)3Vsn5ngyb5q9xfUXPS^f!6(NkRc2m&W z*gTQ_9Mb-?^-6pux+?AfHpyIbm%z|$Yz(?6jxOUqxqdXML-|pS=t_KItCMZiiZJq< zpfU0|YfWQR2gFwyFm@cLG5{rU{PF#p)1$+SNkK=<(A{V>IOAx4c0fkVtY(1_*5;=# z`Qe`_Km7hPXNUXa_Od?*jdsWN0~@7#*;RE=J{H7E_BnfmP#IZyfO!CkRXd~shh}R5pThKNlB2lXYaKFFD#gXV>Fs*GR4&n>crnhD z(bwi$1A2BM5HpU4pt-sXH#xh;;n5Hjja;4Uui|!{&x5H}aqq5#TKO!KXbLx|)m1SN z0YcNhgnjtr32~hW*Wh4hVM^HlZv;hIgprvZYF^re0FErd2i9|})Hwx8!J^*gsp?pB@EX@_JtW>;8gV~RF>R$dN^iUQhxL(gm zWuu4=c0^d|JY8RD`Gn<`9|EzTg3Na+f8Gc-ng56tXk(Oaz1K*fv$r4IVX(K~KI|&t z_O$X}<-m#I(qTYah(4Z4EqCyx6tH&FXgYw>e1=Q!H^fn*I$`L?O_=D zi3*B#ujsbhVwS{f#1u?x7-5{w-oUDTjBn9~;ZC*j9${e|T3IF!GAx#ge|VJ;P< zuvgI)TGSt-D>p$Ysr*%?t!Bxtxz)6{76b>@tbj8(<v{n;cRwXGe>9o<`c2ccv)9tY*5g zUy4VL;ssDBDTZebRYN%!s76-{5R<95uXGw7`O9c2fn3TGf8u@bU2gp=jl{3&Kf2tK z{9saO^`mc>TMXIhI;}v&ENxcigPw<73y=I1Ik?PgJ!E6XMZK_qXr@d%@3Pq(J z)`Yf7kLJMKiL6I5xZJw94U?P+GP#Y`bD?jeR5Gy(jW!QvLmTzAdDEw)<2kq=d}ZB#d)QNZ2hfX@ zRx_6lj4;&2bja zsODd&Zl@+`2Ww+Je(i-XH_O~u{b(-|rw_*VGEEO(dtF7*Jn)y^t)Fy!DUxctKFqcv zm2tHhTBi0L4J}i%_oT0XIJ78gIP`-C#A zj+@He(lYI+?Gn}1EG!oV;%qf^1=fe#YNSG|jIHKYAJyFKJ?SqFo<7@ZRmKQin?2u6 z87!w%N~cPb#@cL;U$3EI_1w+Yk6t4c7DoF3T({+aEw}Bd|Im+!3ykgqMFVwTn`r%SK~Ppu^|i^`vID`6K+R|Bh|&JN zD?Vm*PP6S-6y~hiee!d<%?C)#tljxA%8^;mlc5}mr8*fM+`Apftix$}1eZ1;SWA|* zANfY2&W%yoNu0fPZw6lnn0({=#SN5iZnjTU{s@NUTb|2*5}kimL*>g~Q3b1fFA0}7 z^G(FU2*@|TgnLEgk6=i?g}ekt=9gJ4yx^<&gIO83&u{?1IQR_Gb5gn$?KMBv3xmoe1{B;HBt0q&tS;`1iSe$1rpsBZ4v%D!X_XCg=WQ6QFdG zivsm;+0Nj8zy=8DM`et{-!q!U+B_TsVhp42i3Wr}|Ki^X^Fa|cs>HrR!(9b3ztor9 zZFFN|jK}OVjEOOfz9$FR(1{OGHry7Puf8VCMj@MP#O@6P;mdRxf$`gQeQ zVabZsopzOP-Xl(LMsu^2R3(0}bqs^}9}ogQhB5p1y1yx<3CbeWHnx}>H!&z`j$y5! ziU!kv4J;Cd-@&lw)CcY#1U#lx3;>j)ynt&`Fp4;k(Ebb~8eKb>u`T;44=_eS>Jj4p zBX8y?YE;!LMPF3Gvy%T)m08(T-IIW`9fhpom)(=wq?girM!&675k7N`jeesAv{*qO zMe#Dxn&*fXR3ML>77gInurdljiwcmNr(r*T`YNns6pt1_Wmi}-_D>6^w)LMC{bmG* zKz(isRJWD!5oa&FS#EHBZKn}1_z^~kW7m2UVT?`m?_j#{!PYGEvM>o>&bTU3#YTeXuMzg zK<~_fBBN}p0|IC<_~niPMai!Wcv4lRLTn*21N8*I*;~W^+KH?VY@^aZcHOkUegJ#2 zXM+-cm$#0#dTKpCoz`d{OFtbH`;0SxejZk(Dc`sg0fFZu52ljFcMLs8EF)MxBw`Ax zg%mi8L07Zt-Rw=JE7WULqVQNqHP|0O00uDz&O`IjAwjUeptYk4cc`S?(28gXg0bYM zgFW^CGF{%HCc%3Lc0tf2&2JX0xSFb!BP>meg2KuJv|(V~RyqYm$!b&`FvEa24tasr%0sA{QCl#lUp zBKHB_*r+++`;(edfLD3PBL(kk#yhk-&r(xH@HS_^l~L{`fZerwA&@>Mh}yAJVaV01 zAsV;G=JjHz$}U`Az|=S>R5$;B7a&VdZYPWr4C{1yKqnYO;dWXD9T173pXr@26l~Q) z2U%LJ?=}c`O&0{~sRN8Dh8C^6>*Pvr%1k$2ukuj2C#eTuB4)1G{a_hHt;o+#Yr>co2qh;$!DF6@=Uja%P;EoI;rtq3e2 z4MW{Fq)}%k#W*AZ0T^nQ{)}X5SLK_n-zN?Cas3wt&$qo1V=7=D6;4XJzZB^IUS9Mp zJy-L?JqMj|RR*J)-!K`JzipkJS4huP`|7m0sDLSAXhuXYSV!11$nUk!b$lJo13&J? z=T*axIXSsTs&3le0nW*PMJmPyG>QS2R^3=u|3+zcKT1PiAC~OXa~-U;j$8ulaIP&F zOKFp}cz%e*mi5aD>qMPK{aFQc$*7gx#~NYMiTG|dSw`#`L_qFd&Jh?329e5kQW<;2 z;8b0`QpV0H*+mv19Cs$Fe21m`qWBVH0(#M0sPv!8bG)wq?N!)+;7;9($3m@QvGUdj zy}5ZJL>|K31dCN#1Fc4XCoIqCL)7{iVe1Rq4pX*SqngUrWODg?+$i(zC8QI3DV!ZY%UDq;^Cr8R(D zBaUDlWIzJjo?dPHv1l-KeG$3_LnSfMTgB)_gs`^9{U-J4rOJF7Kj*&X^*0}aWIazG z@nc?>v~9X@TuVlQjnW_U-C$DW84yYV`Ec(-pc5I|pv!}Qv9nq7yp7m%M0nlPWV(pg zj45)hng?!7!mGba4~C;r4UYv?scMQ1B~fZ)cGb?IcTG`=B`e6V<%M9Z zY3)Vtk;p*Aw2F4GgIIj*rNWeN>OSTS)0LlPhWCbl&#zfC+>3=pqWY-JaIOe1BI%jX zw@p_QPJg}Iwltu{i(xSD8#k5_W2=-3E0x7aZlfv%Rd;&+0+5!G#zg1g)?JND`~tc zQT0&CvqdUliZy6DSVg$>>HV#u+01cVMXa`eryD$QxmD~2d9|}Q-WdaIaNS^yjLl<} zY9(7J;{rHS)sC!YkFj40pr}u?$0#60#p>xOLeRNT6@i8-xFDgcNB%NeO1yz)dGNmX zF1P+wy+w5cmyGQ~dBW#k-&f~U0ply;WI}Ei*GDd2<4?onJo}Zw6SDB+Vys$tDVWrM zh8CeF;>Xz_zFlt7cLS*gYsE;+_r!KhCJdj3SsbkOY}R7NrZEZnk1yPL#`QAB72K&0B*l7QXc>k4}waT7uZk_C@<(jzgJLb2)M(x zbg%Iq4<*s)jX5&cT1{}P6g^kje)8^@7t%C}gJHOw1z(4!^552!g3-=CP!W!Qoodwq zXOVekx=6)h7)FmG2a8hFq)T2RsH#Y}lE{~*G|Xl7&|iYPFHt;8igL>g@d#DvT9{^L zVVY0Vaga>oaFs?el6M9Wtb_b7V0U5^UQ1OsxM7qx=Bbx2op&o9+CiL^old;#C{|Q1 z(iu_c1G*F_-;BL*8{9BP#X(Si%=~%RngIy(=~@R9eq&)h71?Mq(?wT!%e+Ou9=Cgg?#cU6{6P?;o^3OlCB=pS z(UMk=vXWF$lZ#V*Rmi%3&yp33cS9)kpPDz%?K-&<<`qjaY+Mp0S^cuPj>CW{m#c#S zZnXp5ueAR0s)#Lqs}Ol}Uoj*m!fmV) zH?DK5$k}f*WM;CCT8D7{OWO`tuh7y6G6w|x1qvg1I+EYK(;@k7yWA{4lT8{Wf7>2v zj-hQInFHKzJk|DpakQM?<}g}Luz3^=7aP5k`=C>Wkv?5_;_840Rnm(N6#wbllG!Tv zkln_;-1;wn5hU_=#?lcc!MN%_US=Pu@4aP|dj5PKeFxb&9tZ|KA8;FidTx3Mx? zEX>QTSEG?%8JQ0cYIPeeIiu>}4V8~-W7oCVbjr8!A9ucg_N~dGEy5&`P3f`ykPR`p zTU{D}rt8|4*}L7*(I##yBf-eUQPa!bW(p-3;p)z#h8 z%FcTV@4VE%p^xaLYh`-4)ehcMVjd39eta|e^xMy;7nAe%hewmmR9#-Co_Bc}%YQBH zo{$lUU0ekVHy~N%C*+8w)UbqKPAKU5n>hBO$V8jMP7(5w% z3DaAJ-miML;6&Gmsp zWrWH|G_ii|o!2&%04|h*(XR<`v*|y7+_%@1G0zMEty9^BrPm~P7m6n6yYPUL1KY9- zr2vLqSo{dyg*MU6bIpu`BX%KTDuG={$)mOH!t9;B-S9fOY)tobe`C|G^z(45So@lT zwmLw6>)xl{M04^cUV0mNH{s`C>HX^mnN^bGtiH(vpXGHJFXZp|Sz_AsN~dy}6EID} zy+Y?gJ@s~!R66@p7|Q?pK{WJ7HT&$Fw~&>o#Q-v~^Sq?mZy}{N)>4KOdNlj zuKl?}iyB4MKeb`HL1NceXsQ7Qr0o^Y<*(9zC_(<)yi!oMt+q2NfDGJkCOkOV10hICciozTqzp4`)S29hrg(*rVl~#tqI{b=~ z2P?n8H4{~T zRZh%ndg&~+NgPM<;Bre}9a5O+I^R7qk#;?wDgVZ`Fq4KdhjnVH!e$YbV)k0^bwm5^ zxu(YCf<4FQzo}WQDzjM)Wr`m!^{XfJd?B_nl`fV(KWc6=?Z)SYCc?Qu+&vGN1Tj%*?-LB*s13)%8 z^jmneM|B8vbPbPCJjw6{30^~HW`^1%acF1J^vat{sl?KQ&FF3V?(pNmtsKE8QjqAi1^yGVGQnZ2wUw$MU0J0E6(ZVX=~m*Oj1voPr+O>trR~Bm*7(}4i>)n(Rw+(^_Mrn ztOXYi)nUVX3Fyzq5t^jA?Xo%%R^&Pk94;%?t%0ulq%_5@_eHEv9EkPsujYX?g=WEZ zuuR0Ep5F3LwmdvH89F1b-s-MoQWb0NuXhbbI^D>#bVHZc+_epsqKcb z=?$I~RB$#gh24O8zOx7MA~5P$fzE-Nj_+Y>GD3i$q~-0{5VXVXhP_`H?`w3LYKsjA z(>}o2rq+A@<7(!o8`DGS`EMHQk!o(9*lB@r9u{^?&XpF?;wtT^pijm7V4X%wGMm|{)wTPghY1&P#8Hv;2c!@ zjO1h59H8uOZ5zG#iDeF1vqDc*m0x8@(*OL!OIGtRm2vNUAO)>|g^*BlDh}1}3?z!` z@-q3}#sHZeL*UMXvsUest><*D)Eqdi(x9=jZwxdI&(KfQ?-zsppS^z|DBgidM`gCs z)d-xBO1Ni7+dZB?bUJEFq#GQ$tJnHDlz==!<$5BFfPdu8$Sqc5UMwFqNffxL?XFL`U^)x8ac>KlC_^=F(AYk(UnYxcW#>j4{84E(5I%g^5$Dw0; zx}j>s37I+382}{wo#7xWV4l*i5W?k;;wQ{%Oy_bbCTOVcG~>z3AWOrDswPeddiwTw z^0!YXrytHQBnJG=yT4Cb88U$@nL(yTm-2ja^zQAkiB^XNrWL{yNuaI;lj6ISGj3|BReF0QU6huILLjVjEBjfWA3+t3wrO<-xX z_y^+7;K)rB21wrSg!vErh5FrT7bpaJTZ?@SMt_Toll?rc{o!S z=*Q)CDO~X>$xtr#igbJ8|F8^=L?7ctq&GOl*9h5vneI+U*qPqybF7?CZ&vxQ((bPO z+MqsqDSbZB(^m08FC?nsC4JX1JnJxOAfF8V)1kNo7JfRYOv~_Wa(;gJlgvVYGr5=) zYy0W^FkdwZ3MoJ=TjNhP~zXQI@rB6}D#7$qPg9wF{NZ zaiLd#q#o*%mmi|$YS9i`|kyN;v9yJeuS zR$M5?``#OIjvS~T+o}n&uHc<^`2g})%-foOzOx)EVb)N6ux==>viySG(4*)Z_Vk!B z8E9@px`IHF5Yk)4YBZjLptAZIEcBDE>~ol{&#nz1z(x+$0IY7t5l3NgB@Q61IIMKTc$#d^NR2BErcy zYAVaxMk6Wsa81rO2yyM=Dw|t0G$Sy7kY0)&!fb4h=TQ!GxjB#e-}6xpldW}fTcLQ< z=&g41C^toN(Tru4+e!nEIW9PuW{h)KPQo}zTTcw`Tcyy5iLD{p zy%w*9W$LAOD`0zEO9VMx3JR%M394?H_z`Q4d(n0z(l9Z{%eAnsJDOO!o@<*}DIIHW zdr@r$>aW%(&SoDMX?CO;Hv^JM1Yfu*e+O=P&I)wK4F|Rs+@CF{o=Xi~Ec$=M&SDobbe8@~akM$c3r~ z6BLwFzVwg$WweyAMxB1D${PHuB(DBzRs5hl+w#}G*?9BKW1-N5f%FF3)mb0re|ym8 zp)kvXW)HIx*BRP&dZ3z{#VRiz!4*D-pTml|!N*at5g8_l7`;5b1sXgQ`$ zmu^v&!dT9t9#^ucU#cwXgMFuTe`)DT?j>c~h%|6Yp3c@CNVg!#KyID}?Cv9>+6*Y` zU$nOoTRKolcegH}-fbH^BkR#901ahBZk|SBV#z@)5}1QLFk0j?7ok%6=s{ge6K{b? zR5bPvn}Tcs+ENzHa*%w47BNzxj^+6aZDvF+G_WQko(jFL#+5{y~le`!sd5T`SS z7(5MW6GJ||7=nPx&|W_VBh9%`=Id773^*ug+LJ!so|PkPhMEnJW=>?y`e`-&0U2m2 zu+`gRHgIUFuI~29(KEC9xH0%(BT5s_Qf_ku$=*E$;!)q#xI_o}H_E?pxg}@oaw|jU zX&o>ajrU6*=>0#?ucQ`KeHTViJ+?lk zfaRrW&g#onC@Zy`#X@rgpqY=L6AI$~lH$;iGEK`C&cj9mtV;*bo2ApHAF}idh-e@% zbDip5VDvnCy~@gnftOr?+ur4t)pBi2Ow;Q*`qoCj2M>m(#L4Z$e|g=llVzijvky5Z559( z2Q(#z=m6^r->>2=+k>@Yw&|zx@`q2Zi zg|=3nHws2!xnl@ct&~j{k3xgT7OyCzO_vXa!*CX`RG*q5B1R`aIGrvE9rECOy0AC@ zaT4mnF8{~Ls7rvcJRqYk0pRkGjJmFP7tj)-(4lt9sOyS4e};`kirNmG8Fin7Zf=TR z2DAsCQ5Sah6Bu4=>Z|l{P~Ybo;y6gAakxsO)@U-o{Yo*t$-(rIsVW4DAhiqDU$}RM z9t4DN)W#@sRcG#DcmfFZc6#O>W>DwDS{^dJlsw@Snu zKN{|2X9iPvVX+w(_GBAl^H^9h1iJ9&^OG=`&yw?1FjXCP$e|3o+_Ai6VsmeB3+4S# z(~yHF!z=k+JB$FJWMr_Zz&D3C+k9J=)ppGcs$+B+e+P%HdZRtmWCMvurC$NL;I>Pn z=19%pccE~emGykiLoqo%z371N430K1`Od1lfHRRDsBs`{!$=)DBe0z{OEeeJr+Nk4 zE|fb=ze*uMOEzRSt(hW{K51QYXDl8)UrE zJKpFCnSm6L*o6;v4$Lw}nKhQEFCtjd5gavNA22^FZgw)mtY9xVUCJ4-8K33pJVzvVuW=9R2>0WGaC^s(;TLqb+St_kBoi_PQYxpt~(qi zqy4wInqjirhq{_kB)RnEVK|o`@zo4d?>bKsogwleZa)-VF7Nh3apuxn?J(pAHSZGg z>&)W^^WQ#nDFT=j*L6W*3R_|crqgA)e=5Yo--|H!ZRhb>c=%?Y20si6)9&_febEJF z6lKW2T--(Z)N-`#qA4opLj8N1>880&7`pm;~uPq z1Svzv0y+Np{>|ypVX5*aYaKiC34=53?rs2^?a(U>wogSKW0c}aXDSg+0(FAc(7`m!DLHDU zJ1DCpTi^tx*6-3br=+XpyUku%m5kHOF_GVU?IeQ02;eNYM}Ww3Fw9Xoe|AhYU0XMt zC2lMPIYMRa(X}9)T*smtu3mu4)>CNDjyG-P4q${!fb4U2?S=j~JPYMpw?!k^FUvN&3w=={Cb zq*7?0a1LH~w;eTu4tv{mfA{F(YoA4a=L4;B-4@ za~Do~>&K{|+YxYf+oKMIj!?OCblV5cb$jf#4=Rn0`2a*E(=nRG`c3UuqNynR2+oA- zuPXZp&S0}2qU&(!&nxFWNyWeY7%F()?$^&b7&+$&PG@tb#zJM6f0ZsUm-5^O2{<5H z_>DS^R(Hq7cdDJ{Y2dUt%%E4ki!wT@--I4M7Zd!eo?p`5s*asA2vUAp$vUVViM((y zIHs1;!SD|0AX^P=mXg$vZ~f@%_h6cKwDn18X6-Xx`bnUU}Xwu=tEX>2Mb?%#2PVLoPvS(N?1XQ*bV@l9fi|Z>>a&dRHJnVNj zV|hSpQ$FK(tJ6_70XQwaFo=!dbS(0d#aIO#l_6Dsvg8Glf6fB&hcoNb#n>^NL}l30 zC9V)l+{qG7vdGaL5m*3!+!|V9g^b|bsqPcyw++K$$?Q)1mCIUw{3uRD>5)6~m(fx( z1S-dmj4)nq{VUv*;=0@tAL(5re`Fe3{>zL3I*@~XZ`wan)NhwtocX3Fd1VD*^6B0# z?~_ttG}cLTf7ia|ww<)Exmk?%MO+sD$eTHetOaG{nXVL+DHm6l#^{bh|2Y(tY3{E_ zUt0#C>UO_sn~nZeTV^BAU$tfasx8B;jdFN={9$r_{)o%VOwJBZ-#q5>GW_y9eb<(8 zug}wSS(z^C^K|fp2U;a)^G@q^bbulPM#Ct*Vq3;Oe=1f`AourLF`xs`J+vf*a7}|t z9<~Y@m>X0f7rMQNbxdNCN3g}#-NUvfsvs1QydI?C$0q>+nA!4H2(3NP*KKeT4L+|0 zner}kr=v;wcCS1zsT~BffmS)OY<@rw5P%Yiu}t;Gug;j-4vJ0z4?cPj0k3ji#vR3OQE8BNO6JD;*6bBjEl2%U_`j<)`0=t zn60yt%*tKu9fncoyh#ky(EM#eH|+Y@CcT()ewPGL~hJMR>3is_>~p&<>I^jP^olk`DbWaP9zY3&la|eQj8E#Y?#F$? ze}Z82H5*~m6siSmBi}-7_zb7^NB(6(&qztNfWs)B$m6P9CK>)m+24G59k@Jg@@k_R z6j)h;e1RE?8Y8ea??8bwn}jbisFmAt<1j+!rUoc>>L-6-g$9a)fJ(dzp=BDXQREv3 zi5ba0IC*bCaanjaPLUD|stu4B18{RIe^X+=x=ptcs#XcYA|T+LFK^%d z_GWVY)8uUO_JY1dt{!)=Q3AZIOT30_76CXG3h=A4gqr@~O#Yir6+{7ZnR?CGf1(*Y zMXtUXa3WFosw%pos{HI|0k}^zIw1}}i`Ft0?uC_oo5lRZk^{#EZj}dCPi{n|=9K!b zpeFEQx>T$BY5HyLZ))R=1eV^(zLqeE zylegcT8%wG1m`l^>fyi94udBRe-`!1OuBQaqp(?a`_yP8Ve}%RS%Q5kGa+6vEz*;4 zIr}%UNCCbecZ(Eg^dYk!KzRRO*$?#W2RpdcY@;_Ag7Sph^G|P1&o3s&pWgjC`S9!M zy{P2cR+NE!?CU4$wh~fx-e;A%zC#Ub; z9&-51`xZ>PwDe~cLO2dVcOP0DWus>!mzUm9jq)&#{X51*M9FE`^mY`@=faMW8j#VY z`&%Ds^?@Gyus!ZPntq@A#%}NBy>B#%D4AJ6??rVfM%N6j14xiF)emL3O4`4ExJ-Tt z?!H9vED@s3RM7(lR=yWae}l?lXrT~>8%CjbpL+QW$+8f^P3%jB;z`Awcmw%S>?URL{oTAWkt~2uI7tqCp&R?KsOu_w8Xzi@}e^VD1+x(|qbNc*J zFlG6d+$>h%1|{2Qn1suld5}h`aLM3uO9_6t)dDJlrKMy<*rzWE#9z$Z=Z}J0>t_D6 z3B)uIy;fu0U+=x{obIu*E!>+B!ATW8NJs06k$sf92iP_ePFNtbg8m3?P}@O-ZQLdrXIg1)!)$+c`XnR(HLfMMi1_ zX+uciS(~C4-N;XtV5SnnQqYrMH73|J=_A$*_oCrY*$br^=B2;FU2~JcOw)=;gM|g@ zMWMk72d#B9%K1K7i9ynIo009@gjk#EsNC+Xx$mTa9Ncs-e<}%`Ab@yN0s5WF84n=@ z{tV(Mw~9Y4qoR(fEY!iOp~E48ui?qF;8K1s>Yom;qj=$$-~pz9)3&$Afx%OBoBhGF zsy%h&2P;1gHjj?WEl<2E=s_oRYD3-ZnA%P16~f3c%EU?fDmzhz>(xy30#^P*2u4h7 zpx`a0eb=hzf21!|;K}9JtGEKvJ6&05yRG&)XF5AlzJMM>QPa~~?N|B2h<%#!U99J6 zxS9ur0?t1u!iRi4%)#e(tcUkGkof!6!@sQKKfQ@KMBXp!<)192Oya=5C#B3G#J?A% zjAFZgSfvaz=M$8&4vr7~M9r4Oacp}MHnHs~kU}roe;KCO??gMJDDdg6cB7q*=`Yx4 zc*jYgXmWgp`f7J(S9jj!)*t#e>>g~>P)Kz9bstxY4;Q1`jB-)*tszsjBuh(rY9VQf z4}P;UZHZ~-K~Ta|hK#h*JiGC%!zBBiq@ls|_O2P^XqI{ooB&Na?>+V2`*9K^IXYl1 zmg#i4e_E&CB*Y-{{QL*jQ)>Yd7{Q15n#pu90gAz1sm?4g-m1o`Mpt$ui^<}YF+8BC zS?vlVtItBfVX~TsQk`CkujG5FO&KQHtB$brz>2-<081~MwPEQ?$(=71l>Q|*xl`(1 zm6Y5Ip58!T>jJAc78E8J+2pnf4&gpP_C~n~f5veSSbL*b1YU*iA@@e9`i0zI9G?F| zgWH2bGDxrcM%^1_CHP#(ZPTIiXgsvJBsm=yPlH99dnRa4dgBDm$OlQAyC*15dgBZY zNQO+CduJ#*E^^u|ge#Z77D6(nNKG5wEH@qy&Q^A%?JtQV4HJe0jBFsA1gA5G42;wt zf13=_RA!h&j6|O{DR{_sSiEk4_l0=p;wD^kEXO`gM;K@iH*R?#o7<;2NIQewm!Ayg zC$m{-3iFov)ogB`pc5NN{Q7gq9`1qr?-7n~_eaCx+yls-BNj0zmWw49NaMiOcO{AB ze-H9+l;iMnYY_ygba9L>w=%%LR_cS%e|W$2fmR*^%_m@`G=N`-3~np=CA)9jy3)I0 z^Aek-AQnTd%&3O)Vy1KzM+zuAZcgd54yTk6HtS(ZiD0nGl%}^~jGWOR5p8I7yx*MG z=N(QflcllaX(e(mR?mL4jwOREZC(@aS#x4vbU3k0cE*k;mU#78BYNguT<{jHe|bda zZW%C&R>PH+Qe^hUF>io;3$)7Vm|bKRoKZo$eNt(OMrPrdmq0hOipV)KOWvp7gHtS` zZriq|A(ej_o&R7KnZdRTifqkGs>qB^PBIHk(CPHXiK<$DIixC?;}jQWM}tz*_Y#V8|azF z=5D)_Fni{^zmoi;WxHfom86E*31`nNG(;*%rAwt!T~&1IlUV{bR$4Kjf6Vgu1W1^M zu@)i}EDr-HUGt&L!V%%n7y@GMf#{0hUG1ne2n3Hwo;#@6c~~F@ym4aZ!592N{t_%Q z!xb=mrLv|nndN2RYR3XGM9?>k4rH`CEF`D$Sx*?f6pRu=4-3WcNO+B;H%FG(R$uT# zZ-Qkd0zDl|shkWRmcj%Je@C<=wXyiH%3)SGgw+8$5-c*~Bya<()gw~%@}c{cS%?es zI35||!nBY9$e0%WpQj3_Mz>tJ;uzYkzO5mX0q)*U9GD667*8CS8^Y#p)i1sq+EeAm z>W%GbOJe;*s%M^a8o~4sm!}cT`EY$2!SoN>X|zlPwoh*2X^Eqye|2wh4#D)1M{VB2 zq?C1>L*=={I&xs1$|E~+V7|+GjvScBvfd*HCZ;^_kpoj&9^;X-$M#7NU2^;!Eqg@Z zrynhQRM6J~E&OrG%;GXm1C3HP{M_q;R%Vu-crY-QlNnj44)HcvY2k*fwPIj(;VUQw zS($X4xn`hsv-g!1f63@R++rYgv;URl%IThg$*sw+qo`Q@dpC;1Edn?qnnw~Uw|1CR z%Aex--5;bX(Vw(VCd>tPTqjdggYnrD`k0O; zl3pLP1$y7=W4e>)PgfuFM(ENXtv)7%@EbshN{dRB^c==Of2B%opZc#O1cpYRM^;l9bcu3_%NE>&`oZFo$9nW zp1p+%RjI?Ef1!usco-=3RveE~7SeHXJUc7YsthD2T^!E->IRAJze8odoZA7@eAE-JYBT@k8QMj$%A$>@Vf6Zt~&yEPEqOjI#$d0 z?;viBTK=Eff!QTe$WKRGPb=?ci5gF}x=N*LlnQe3M5xByJQg?gA!ZajA|_(@1|7pa zF>F{wFW6`nu{Aq=38i7)>OUrtf>XIhe_n3)CS+e@0U47Bf6L!Y;Hn9%6xjyil_hZ#C9yXV)(aCK9!l39%_U6` z1}licr=;J}2OSi!p+mk#yK+sy;*dbGx=B;gkH1RjGmmlMU}l zj>%F#kM4tO@qOES;xO$$d@c9xJAq~KYjVPu@S&mFJ7r*D{2HL}WqfF?wYR5Q%TZ$& zIV&-PmZRW9^Qg%1o!Z^SjpcOQe{Y`&L6kQfTAe=_?QR62vzjkM@(F1u-X^$b&o^ck zVl}dPTs+ymcruuvu;p&bM*6p$dGQNxaLmxqyZ~lOuxzR%@F#4gB%xj<w^ZA*H>2Dk!>sSnGH4Z2(N`4-!QdHXFg>04ydx5%V#kxAbof0MpNCVh)c z`WBf)iA?I458q;wzQrc3*T42HHtAbz(zn>8Z?Q?1)5b7hSB@p^5Db>LEtk@*_2z&b zu&%GQ7Ld7gusdL1s_Q{oz@M+(ag+q_7wNS$9$EVXcDDM6-GlwE4;#C;vrY4S-9-zr zjL-I`Rm!jT>VpT%O;yMj1R+tUxn`{!m&-;p_~!X2D%%U$BE{ey!KLgLGV!?QP+`^W#HC(XienOzC^`t&tj zKtj$_j(~^9`$z9A<`2Vib|W5Z_9$6a8RAvjL|zvTRw1`2MHU6Sj<$lw1}vp6~yaE1~C9hxG#U;0Bf2%ZYd_xIyIzvk-5kd(7$c ze41$T@#fF-aq|Ad;r{XKcZZiJrzbMG$9eA@hTEIlU6TftrObtlKmT-eet7nN|4ncD zb%T(e&y)&aF5iAQe>yxlpszG4Lz)W#fBJa#dY>gBEAE{o>e=6i_e^>D0ONfVw_OFri+66bxkRlj8kNnsCIRSh-+`+4cB5x@PPTLIq8C zq*iziyx`w+4E{CZ*r4aY!Q9-y`wul!d%NGDur?Yrsn(zLRnjubg)t=QtzuId_eScO zn@5);(?avq{9Q)#`P*4MS5FfBdT1xK;jK3_VxaLr=%D-h$ZG z*{FR<#gTX60y*~e6QOy*Ryvbk&z=QeZiKOv-9?i)NR#=!teza*ewxQ*cjPWT8M1Dn zkBU9E5dgl?;QOHAv==`&z0l%=<|`sydKQ1G`uaX-KLU%7TK?0G7H*8%N;sSmzgvWD z*Rr$)e>@p49F)ibUb!jB;e}@2F6a5|ZXO5XNX>%HK)^>3O=LK4Jf(NeD8O!ni{nx< zi3oh?*a$lQq^D#Md4Yvv{c8}jWSPd7Pz3J_5``48+ll)c*lA>E`U@6MwY%lp&kw+s zC-3JMj6C<%*8sfeN;?cSfTmd&-!R@!U)b22f96)56yGp5|B_RDqcDUP@m(z1pPrm}A;rJlI-557cPq%(SVj8a5h&n|$_`^WzhliZ^*LwEo`ALEYd~!!P|6k zf3Un0drfpJiww=a#@R@7_4lEkaWZY{E}C1V)Xvp4;!Zj>7%BlmAzLMyAu6tQ;uRKH zZFNEogQFC$Y%cERRw+2BD@80FkaVSZMQ}hOl%g4B>Rc%(7;2*wY8Wh~u({5gTP0rS zYo#c?f()>DMQ}tS^r9WV?OZb`SZbpgf8{_}x?yuoH@3P*0ZLsru9O!psLW7$$MiC9 zkZRETWnAK`uRcTf`|gR>L9@0Q)K+V<-tJi?zN@~hHdEIC-dh*U%IQ?TK5b{!KdZ^F ze;Pcdjf3%m$a_RYo+WC9JZ0Zz!!0k?X^7&J0jg2nTo@fP+@J{M&@DaZ>Vaa5xlj*_+e?Td zj4_%e`bAB4RKvnzh~WnrQ9LYHf3{Qzv#Qv--+x=`m|7ggUl%U2jVTnriry@W73I#D zf+R$cp;@B%(X#xnooY zmLAWtOlXu`&a-rJukfIP14L|9 zk2sVF%ko64RHHmfs-0QY zzza`1ByoQ<6)10~d?ldVifxpj0|T9mIUFURV5dVR@I&tjsr(+v=ea8{)|EyudZl;^ zDb_&uEa)PE3oT$VcwA@!7C;#{513+OuVGlrk9qSzQ(U??kJ8_U=5q81;UNa6r#A`) z5uRv^>K zAO;Nuf2CEfWe4s^0cQyA{Mm5CEg&fkE~TWs&!6UwXqKg#673ySn&zXYL4LDHzhpu4 zl-dZ|XDVmOXz*BF_>POh@gcuzJRk}UBwM0vI~9cnl$9t_HOE<;e@ted<3$$D3!onD zazvn+pOpyB4H86oU7@=)der}oF4Uz@Mhi8*e-K5P0ZAD}%gy3$o45OjjO#Gph7y`C zyB}5G$ir?mbz-tM>c3H|y!x@Mg?%M%d~x}4$CeQ-i6#aE+yR>grsNFjhM3(|>GF`V z(lE;g)9?1G<84mIbhuvm{)#f@;W$Tll>-Mlp@A{kl>n1)tWQ0lBRYPz ze^0&b-lVO@j(Mn=FYY;=(X2)tTF@|!Kx9BLnz>mC^?NW8g4_h7rkxSQoRxriGN{SX z{bi$AQV7e4ype#?izi3r6IAJC2nw(B{|PQGk_-Btpj6Ol9}x2Edm)j$fBYcVGz+3Y z{t)D;ItGq~DDmR`A{|THO`IO$r|gG7e|qRY9KAn3Iz1VdTKsRjD>V-g+kzi{jl^jb z|4;~h8^`6j#_&?o@ezZOKu2_gmC*?eC=p1HeFBi{s&%8b(dtb==xWEV`hodApv)1^ zPXzr&p#3`mVDZt#Aol^PI?j3F;l-dUAGkvt&jGkWP;*sRe>>~j z`;R_)#=Xn4)4nSsXo;|8v~}DAof^|ur$zv2>h4BPH#YHe}-L)brAu*F(4H36FGbx0fc0rYjw3P-zC(4*-sOI zNDPpzM5>e86p5n{DQ?h7Z2&cSaP+=F%IM?pv4a8a^ea6Ru$3>j4Z%I`T(L|+e~56f0TMFN zSvgeohaah8oc`D0Re&ETaIApRU##Z%;>kw2m#*Xd?QEXMinuFk3Bjd+l8?C9>*e@d#k(f z_W56cMllSBrcV(XQk{jde?KCBDBoiDp%O!37#6R@#?JD8l$V<>Z=-i<~U38%9yH zz7zIK@FfnSMOmwSn#!;sRl$7oQ~EV1qg^(Fbh%JJ1d}L>Gx2vpf0BwH($DH*n%{_9 z#bOpIw=7*&6s7AsAw!0@rszrtq`P(P^5+iVIpSb~>4e)t@D5^5rlJ7?cpG#z2=3McevL zo15$=UCyV$r?^nLqDnzi6lFWmMM0%h`0g3KVGI~Hyif*vXei?i)VF>90?5`umuD^= zS-^k*Cl>HmeRb50(%I*Ofm+2fTzmas=H{_v)^2(v<*wLYe_Usmi#T5{lB_Y0tUS%I zSI(joy+YoN?kbPM;Y(IGE(7+*(aE0BI(V_dP>Jg;lm|=hH|Ew->QgvSoBmUt`Z!8_ zb@3#UT0^51H}s3bEQYOebl!WquA#EkBbvot*+a!7-r2IaqkrQP|M|GYo*BU&D7&<< zW6z9W{EgI#f3@qLN9>ff>x@+Ffwb#@P)rE>@y;6NlXgKwe8~739){Y4)n} z-}bZFZ!zK(AJ|kp=G;^du;8#unS@?_I<`Da2ZQj-V7)rMj{}3C10|F7N~fkltXJ@O zV?^|8#JxcZVj*QwIff~NZ+ zzD+;Jf0=qZRJ7OGRQzKlPxYcGKR!ALmYMiymZ*=Wv+Qmj-N)17-^>NDj$IOt$wSil z#HGBW+odr7KgB^5+@;wppM8#n_<1bMx~EK89n*|g>wt=a{O_U}17TE;hi1GDMfHWO z2ZO`uEdRrV^zCkL0al>pQy|#rpCY8M_92%Fe^AHCwd>3dy~lNLV{U@^a00$QeN7h- z^MGt2V6${DT|7cSprv@M*~7eKTZjiGdZ!CX2}HCIay6H95m7;k4rHwJq%%as;JO15 zSE<_>GGfjE2QpR(+ZhtNIZ%ueHfo78#PfWhG)tQ^KK1oV8M zf3&L`FeLPRrZi6!o)&sOQS|eKB_Jx|(^^1Vd4K=91R6NyaK0CWl^62aM{fEQ1NB^uaX6RN2++^LHA||;MurQ=@b99)b zQk#Jxm7C+jB$d!Fh9|=vx`@X!xo~5(d;?Gi<$0jMZ;xk`4*c+Ae;9*b zs(HTYP!B(K_3tL6FzWj%Am$*>CX3l!o(=|zcJ~q`SuQ3eTv>vZAqWE@`vg(7gBfBl z5U@`SOkgG;1&DBbDOA~Qh8PqZ7z_x#9-l|ojGY5wB4PZijB4OMLFQKjX2iCnD?D5> ztrUEb>!)|YJ=>B>!B%&vq|(xef4G_@(Y)k{slt~<3C}V><>HC_-}ixy^}TCLD1}?a z5=#5V+kXBlp8d+f(?z0GRFz*eW}bc&HFkBV{_JUjkT3}f`pW4i{qY}_1Jskq5lT&epKR7x+Jm5^U7nFKI zsm-jbv<$>^G3(e`%Y(BnC*7S^W5KMKQVoyTHlGpPDi)e}==&0FP?@pxfBi$Z7Vf1{?LP_J@s?kdZ%@c`~nU0-6bi#~ixS$Q$rzr~Amc&6cn zrNB_{OmF#}Xa^}hfL5_+Q%-cbrGjX2y}T8_&4N#{wBXe&h>tU2Qx?08E(+Gn8a@Ss zEWM3`g*YhETXEr7s5(F{*TO+QqHe3NCvB6J;;)R-zuMf|+uZJ!AbUl@L4x$Fz^RQuc_N49zmtDPAAmdbYz$x(y(umh z(yu%`fLQ(+eE`m~e=Ri!pvTB=1f`FDco3yGl{}0+N4MtoFscBujo>`G9u_~3uIZwC zxlivA@6(NK5L~76dHSUwGhwvLD22-_Hn_jVhs~h&-VIM*94~k9J@DY@uNNuS=*!J) z9;*XHnjHW6QSx3i-}LW6G?$C_Wj3D&Vi(1ENkqHOs$8e#f4`}oCw?!jmv}nM-Y4e*P3hMnMC11{kg*!`vc(D*olV{iQq0)+S)jug? zy~>Z&+d&Uf(6!I;=>m_Wc=G6u%IQcPA2Xob#`SSIl5op5gEOeK;TF-;aVs{->~0>{ z$o*N`lG#S^e`#6f{*@d4YPQJo=AQ(!ESN-hxtLbE_b%LW<{>fIo1hUSKI{Za*Pqpa zwMGCl-e|%t>Z6tXG8@DUZNgqr=y$4c3v)kVG>b)j-mNO!!s2)LS{2RbZ>4`aJFEQD zmsy!imXnG!+yVi(|DaZ(OX4J3hy$+pzI@Je6fqZWe^IcseCl0_O?M>om{-DR@=5yr zX%fGVvREek{XS^YP5?Y5`!+%pqpZEp+NPcOpiKd7d;Yq|!B7flNLVixc?i?N`jrU| zCJCmiZ(DE0#>kV=)3G$QR9d9w+u&2W3gS}jx4u;W$~Ygj2nU5|>Yh7lu}z9!mG{R{ z=MXT;f8MhU6eo8>c40(RB4~mB)l=(=oiJSRtVcSEUtD`~4C1c>@`M#%{S3ztjI@2f zp{Wr|R4-8lAug4E*TQIL4X+_@qdhka*Jp_0ficf%>pc5#v*<+o%ySw=n}W}2`B32W zpoSSzRtL3h0Dg$h%J1x)CeZuA@aYi6l458If5YG5{N#gA9>%g#oF0wy!*Iay4-0f< zfQLUUP{b%kvrNB&-^0R9+JAV&sJ#D-W}Q_iF|^MwQ6jdjIx8F<6(}xGr7|+4r0-$N zJYELm4ID_eB&HC>`>{EY@aZ1l;|Hb?J%Sq&wt_J<=@cLC!(udw!?boVg*i>ufCtl% ze|p|7df$i5-BA3cT*JfhgB+Q!$&7XRh&4eORt$j10NLY-)Qv3#DGY!Sem^-2%C}}&9 zGBv^*3T9LJ+E8W(v(2WW*xL`VsUD@He-%ahVhonZc{7m+V(Z^bTr!#8&4i+mNr@PaC=`*5(X8j_0yNPJpp}*(Hy`4=SadWk zUNA7>+s3pZA&MNP;nJ}zV;z4LzsMxbsVuB6)lV zGnLVSvxFfe5j@3d+DR4gmtqbV<=ma5iGYY!{5xGT6itoMEYUeogjeZNvt`H?qw7cb zl7(WMRl;x_hhSVUGW%)IRNA~|^)%~wLTFjH#Hu{p}CY~e-T zM$@e-@gFQ2XWI{ZYa7kpe`=i+ULDojXwDZMdbeQ`SF3GAyZ^45d6RbPBG&srmBQFm zw+>d}!?&}f>pOj{g%4jq*~M+)2W<3DQTWh%g$1_-M!XeRuur)KXb>Sgz1(eMmCJd5 zv54;bM*wza`-TlRO2{zpvRVL&x=9`kseT`zgmsE~4KV5JM4@D2e{-+P(;=EA+27;) zFX>{MiQCImU1K=G!(OHygI0~)-{7G%l+6+9+18|iTg6&5Ro>;!aDcqaoxd3%=)jWM zUi#oxo!$B1=J{7Xu@Cb5{l)cVezQowWX&S;!}&iUW5QWpC-oOH9Ud+1xTXiKwBsBz z7kh8)wMOBI@?v(Oe<_SSRYTDYVO3LpPoZkrGYShF>&$?=C%5gW@|`2shDl0BT`2z^4x_XL z(!ly09Y$#he>JDbZ4;=pRJVt*PeQgVa@z!c72gSB>>YN3I2s!43*lGoYeO(&xNiI+ zxe#J3C9&~~K;jXglioN1@j6}-_~h#e3^z(aKr(vc1mI~qPP!vBcu%^2IQU|RcA>bM z2V#1^-dnD@7a}#(p)B$bH)O2Q?N+emH0hbR0u> zi}V*UuEI5R8^^h-YSQN(GLMMC(eHIul(Gf2SR2MwV2BI5c3fRP89-|5J~9i#;5-d` zk*d|HfBZ=0DuKQv+od7~N6`-g*aPHB83+)~5Z&oD7w5v-dBJjC9Y>2_J^HPFNpF(- zH2v)+POiVsqQtTPDn$CP`o$pk0qTB#A5Gs2d{N(58(eZ%OJB?RVmbJRj`UwSo&j+C zpk{#WqX47;x0&OSf`$rit@}I{+PVmj7i)!9dL+DUPE=fGPtzVISD*#eI~#+uqsQp?Sdsn$510cv?j` z4|-Rj^oUMpr*_UUriKBk7)g#8yB~Ix*~=ntDGX^CAdHdbOq`U-77Xu~}V+IB;J1IVOeK&9?P?Z^T6Pdk4zOm@Kf%7z6+xOt%77^Y_1-6PHF(bJ&t zat6&aZ6j!(!ko2ZKxlR0RHsRx_GM$Kv_poqN+6b+j+siB0v-fdNN}h#C8#FZ}yzV9HoQoq_*d5{C0fbqH0Svq9 zkQ%hw)xqtgQliqBQ~xIhFV;tlpP@$#5U#apB5cWcvdrU=QY=pQ40vw3a^&@{=w8y{ z-p=OYHWVxUR-VA8^3&0l`aex`pN{jicybWHQOsyLuNP0mT;I*(Jf5;96n4K2e~)Ou zK?3!}0BS@peV!6+i^}_Zr!S#SEC)()TFC&3$IM&Wg-Ws6(AWSRGvx4pmjbhU z*&I7im@A#B6IA_ zIKm?|Mi7-aogoH2`f!jZ$jM&dRti;;fguK)x>-53uE*!mHN!&lVxplqe@+cgQq#!o z=NiFXqIplH&!{}duVzU!FC(lPm6L<|&hz2N$xS@Jc*2-nECC85luFUFlIr^xyW(E^ zoFx{O-PtErnH^{)SilkqokAEPl1g8+5-9!}$xEwzhGL0^Wk6v>JKz87O0d6NEoN~t zWeH`UH4VC2VVO^TLj|``e-(eSPD7WG z8Eo_qt*^xBvsKVoCYEk2huWT|y+P#u^x$tDFayWgbeE4~kCySN@J|Agd0Y zRa&@KM$OL0%52*Rgb8?S~Tz3*E=B%dD!oHLNHPB^9T>NvPV1Fd2KjHyy+ zEP_=kUFN4(AEM+se|D`^^aN3T^Wy&nyz!8t#X1R!2&recp z@(Q>+MuJHFEn@`vpEt}%-3!x3=LM?f8GY=;_0wxKbGAgoH#uSYIk! zWmFtgPXjrm!E*_C9z$0M8`3Obk-WTOpsRB+HH&S5Da|Tv`l3V=+4?fQETGGK+1vC= zt8_0ZOQ~GJe-*GkUY<(PwYqppg(|pZR;ras{X7$mEc2i1L$4xts%2vsKwTUoRq>MD z)|4>ygBIl1stG@o&Ka6FiZRwWnRS`ECvsb|LD7I|!g|_#Z zesMskcvrvA7qi>jVmTeDIpx||`n?j-dsDnh-8GNcfA_k3{Cn*;3>~9nW^=j~0a+;3 z45?eOJF%QCi7wQ;%LD zOyy$bf9OU8fM%ouQmWtjgf4#4j_5)xU7hImGO3spct|TLx~FtkxFPAF*>Y4V3ToQE zP!u$s4(migLbG#*L%MFXnH}nT2-lVBx0>%{|7f$hh}a<5&7hc+JFM${2?}I=k?q}> zz!Y;fXb6|9a&j7ls3KB~W?f!uq4wGL+A@6Ce~TF%qDw!yvZKq<*jv&esYIp#xZ=o7n6!1 zOzUb5-549FLNJx`m0j28c=fY(l2_6-^^3zhqE}34o#v$|-SZrlk#m-#E7H)d?GRO9 zhC#5x!hayo-VRYz2*MsPn%r*p0lJ=yW^|Y25wzJ|g(O=V-e``7&n*iIW_>dr+_K=5 zv$igpy}>xXP&5oivktGyVEgR5vLdhfF~Uh@WLy~GYAg;+aCGGvhJvAZ5{zb@71c7d z&#tOfD3~V$98FHJH^2+!YA~#L%HO%?E>_Qt!GR_=$S>7# zeTEl5>2=vIF}i1WS31sl?TW9i;I_L))p= zQ-bVDGdq_3qmAr>QfFymllTsE84tHbco_w z(NdqZQ~*4+^60ulF((+!dWI@AO#xIZg#9en&5a#_qCHf~Cc3SUXZgK$I7^8%sypY* zLvtmJN3#&3doZ^pV~OS{pbl)?KB5k6)_-A09oRlQrmm~wMvK{@o>PMDN_#nvuF=+V zk>J77T1GQ3{BK4Qv4XZ4JJZVAl4!OCV@smw5{zd3lEFeWX#(1kcA+0e>j2HPaA+cD zd>a`}v|!x3Py`7^vwqoNA)2TFYt^JqnkhH^QDHKx-?+1wQG^F)7IW4rV5cGNMt{(- zra2mjrdcpF5XG@zH0v4H&~ye^1666&Rqoc64_bVD7Uvv>79=DC=wv!{P{FiJvtuQG zkstl(cvgr#8fF|pB6gTGa4}9_KzCcR@XFl3Wj1x)D~=br8Wv_@|KB`TmPUn7RWZ<04(P1Ug$QD&JVnj zcpD~DT+GczLj_m^^v5d;QG5$TyZ^45d6RZZBIx-UWf6i^F-d`pn+nBPB@tw?ien*G zym-GzeN>ffO@n=HgzihYgFpx%4JD${Z?zF9;y_D&EWQ=$kabETG)u9Y6My;asDO^H zF=|^I!64qplfR#w{(Mr2N0$p@$9SsQ0GRBI{N?Mf+2DX`0I?(R3qdN{@B+-t&#Isx z5B`C^LRaMzvV0Low^f~pbio;;7~)RFc*_r4$hA6XMN0 zjuw0|F!wHu7zeSeqs5nlP=CLrSB}H!EN4q$T|U7qjQYMRVRsN`lf~>#Z1Hv0R%i?N z)n=v$0M{$U+gZZjL@2TVMv9-}`5j*hidEPrg*a1G3x zZBd(*V5LxOQDFLkjVRJ>#gM~6q7iJp1$cCgLNf-}!C>KAW;F#eD#1(xbJp1^6MvC{ z9~d1_3K{sT;WE3-(g^gGbrymK&o4UytvqNh#r`0Bm|;-}C|0=}tGyUh(Ao^xZD7Xe z>G+fUZg_2hT}uG6N`JPMbsv-`bS2zq^{c0i;=JXDBOPL7HQLqRkE(%k5+lP@1wsnv zl4aPDWuqD)M<^%sDo~?PR0Dde&d618^K5QawIe6;M(1WvqL~S;S4Bvv^^4}Xat;1` z`r+VdAk3gVN+xl773hD}|3&}{%zOqV2^@ScYq-cF+Abw`@_#xCH*Nbk3b*R)Z4_)C zT~fig52nhc;ASJB*#+{e;mhcNf8)0>{?o++kxnbY4ay113uwCd-}g%V?U!Nke}g#R zHDqA2!jOoaRmD$A~0lFkaCAtaBwBH#_SBy=tEJ@F<}hc2Xq#)3Z78>*329@rqiGv-2oy()8lVhR~}|(W3h1 zH=$wl$9^;~Lw;%RU7f>N`<Ke`#WvE)&({mLUtm7%M|rN2}n4@h|Btk#z;t zKN<>&gnz}Sdjqu7R2#>rstaL!wHZ}IdWtz%&AQ;v3t-LvfLrzJ1>mzkDpa|N=XY*U zg+uc&omAR`vH4)t{)nOcXeNh+xbVShDYrk{62%mux9ZonL^C^#TVSr(8&0->L)%h| zRxob??Ti3@K5OS%2omMF#vy;Z-qC4ZW?VcY`CWD!r&>trVG_>QYRqpNUe zO4i5zE3DA*Rl2y1@=0ks(Im2m{HlnG(3ZJ)!Yg#{hUWoml5MsF zxK(G#4&dh5xeiw9|7((dNva>+>AvF{LWU6i1|=5OwB`tTdWWyrL03FnnT;WW(er+S zk$?7@A_+Asevu4W-jt>li(m9Hxs4XTmQ(A4U-V0Qlia82Z#Qvr{dE>4%}KGK8~b9SHP}X8^=;)C@3K07fZ5$ag$a@BqNAbzem9@oL}E#|@qu z_A)ilfG!nyV%STi#T}QT4M!duWrT@EY=0ryq0wdm88F%tn0ze%%aDSBqC-*~M~T3C z2BO2vB~yGsj~IEB{VG9rcAdy?pBhs48P>_&D4v$q{4w z!{jM@S)_B8A&o2CZb@?{4)EoW&Oq`oFq_^91A^%W76U>Xk?97bb1*U;5QPDj>VGy> z#*!bmB`w3grFX&r(ZP$hxix)fHSFv4H}shW2VFFH03b7#)i3D=q8a0r_-0vD6A7z zE!s2vaD9NZOt-yv`@*lh15kIZ$&5gwf1Z3yZ>2G^j)Y8J^FuKR_)uyg&Al^z|Kaf9 z=*|B5;pN#+r$1lrzk63lCx4&OLGp>@3c6VYKyXg+UE%vw++>On*`WOp&u(AdP$t z$b=w3(iAV)gUYVd@N>4!!@=qjK&Q6Gn%FErtJt`v+E1#Dq;T$3KhRxGCHB2QIs~y} zHMZ&|gwwP&(KU*7N22&mmM@kv7Ji@{s-aVQtfm(H{xOr=E4~sp$&JQh%6q2v%ibk4 z2*$2~Ck4|m5)!TPYk!V#3~pyf#s)%-G*{*7!?xV5e=wX6px-)n^u~npD*!4-!1(q2aW@VQdTXhqdX>6Vo znAy-URgPr!<0QSC#hC`L{d%egh)ApRo;7pk-~y;V0UEsf1nllV5b8E76TU{~Mp5Z!1Rz?p(D4j?;VhmD{C zh&PV{isoRgmb`L#d#`eD$3Kdw2mkDoCosEPDy0CA=!ChqxcpK@CnH z)W0uqI)5%jVyHNraERckmHl?X->{4v0qql67#G9#1`N0A>J(B6t>^%)5ICz)5&0V-h`G2}MtummlNcI6~rc>&Pz`&(g+NO;jcxMzfT+ z+Go##EV_+@&(VAtXEg$q_CSz}gOMQt1Aj14ae57%-v|(og*|#ebOy>VV`Sl*^zME= zQZozTG>()Kx7q_3$ZTs^Yd>+!Ta=)|N{Q1?zr>T=l@c>^HV(}+Z7feS=yo%#(94D}mq@ODsCvk|Xpv_n)$_s5{g|5n5 zkG$=;+7K|=BKmE4JBzR8(ISTBDhSN~@4vgr_@x~!uV^Ys#M5zhH=oJ(jtlXXeLqBM zmTLjXX#2piyqk(%z)RzB`uJvffqzvpdBzbJb0%8*iH+kX}AbjQpC zAQZzz3Otaa7g|dc&jr!$zpG~CG15v~p`WEPTf{2&ucX0jO3xQ9ZAC+E9$(%HSv>`+ zmu+>gFg5xuZ^eK-e}udhgtQQ?+_GhQBDo1vDZnBV|Ng)xtS{5Dxkm!jLOpT@NkG$8m(uiS^krq+8(Ss7o73bTR=yPDXfUo6 zZ9T5OR@Lm(LH72aR@#8dQ(^A?^pk+y&(WuO%u^7GR|Jz)qyjcN)PGXE8W>5mbnFMq zySZ}1RMMeSvt!d{7+qa1GJbcDOW5zhNw(4|o6VRHD@U|ZEeU?;M!J>GwT2OOh4Ng` zheQlbsM4-n&5~%&3R2*_kF2fU{GW8*vma9|BA6w+xT?t*pR4|-xu*m8_m^K zg~=NMN}SXo_Hm!aX@9Va`!u%dChpVNJSSm~avqDeBNd^}Wtu8)4{)c2Q(3r=Om8Yz zJtj6237sQ@p;}(B2u@q!Ots)N6S!c^m4?X(vVTbW(T6yio+k7Ac3kn@JetIrS~*T& zF`RgU5>qBl8`*nx_!zFSoFfR%NYO8wQL76nIZ`mn~Fc5<@dro zjOSD13#CycIAKJ;NY!Kn@l;&or~6`xV%_*`-6iyB*!|+(G3vNhi(j8d*VXSdr>3#I zsd-eC;HT@%Kw;fxjp zE}C%Zv>aYpXn$IMZTJ{Wi{xmy0ht%LR|a z1?Q@GT(na-k%e#Lp3XZ35)HV>bpbD&ZLSMLtFCfg7=N0#$aS$U-YGxDMbW2Oi;$E( zPx&egD`J_i!qBQ;(6Y%_u@2%XoT7qq2ct7j0Vx}&*Cz0Chj*!<@M&Ry4^U}Zbp>52kmBf{2u=m44tTgd<7#UuW$en`YnsG zxajm3jDJiEmdUyet-49pZDKFOnJ3U3^>uU8;cONjx#q(gAh4D5z8wu-e9pMCco+5ZD4uIO2#?}GgxlU_#f@hkXplV-8z7@tcb+ayYY z&$DzcBPNua>?~d$lntpbh%R+49Hf7SI2Rs6 zPKCbL5cC8U zK22%cM=?+X9*A>oo4yVl3kEpk6%bc}F()Pf4fQ&}-8)4Cr=Kc#f8%OvNEBhi3z2FVb6e z7GVU!F)GDmTgzwJKeS~SQeC)TVh&1`?76f%$Vh?8wqS$5v3;FPk52(S<8!9dVj-wN|X}wDTPzie_@qMOry(1$E^Xmf?BZbPEw46G@0Mi zuPa_GE_9xUa@}oL9hKOzwcBJ=sc~{&&wmY`@4naw4&o&EkVeyu;4h-S( z8Rl58fSdK|r%4=4ZlXmr5r{z-jGiIAU$A$vIPs5?$^Qi5_RjO*IDcCF8t1|i_@Ce` zN`kkGD4EQ%NgBM_55({HUcKD=pWx%!em$IdD*pX2>KaDlB!Cib+6o{|@mz2+311%c2xAatvkmhRiwHP=>a>+rD6 z3-@moWoT*@PS{|c(5Y4F6QdN|>N2gl-5qaTapo4zxL`fE?6NWj=w(hWx2#Mr_@3rB z@gi^m!EovXCt>ZVqy`A<3im=)ge~pva$l&jY<8W*Q~9ds_J_*WPcP9$gP8$%GA1tw=1Jy;5KtASnng2Q7&+M;pB4gnq?FV+?vj`1hf+d2F-Zi zGWHJ|3(iIdngYg6-gxn9gG_(W2iQCO?q%wJ@IGknhlFMAi=m@8E3Ulfa8#e;b5UDSSB*~QDh3X znNpG9k}g%S!<37Rv-G0^e#UdRNy*sBJ1XE;JnT_1?0>*EcT57gN_QFx(}bdiSG#d` z6}yhEM(~TByUQR83N1X`W=U)judxsfp9`=MoE;6n>bYAA7LZvuzs-`6p$oGVjSpG# z?-%Xh$2qK}NG_=i%V1$KmOe*t7ch-L_<_&ajKgnrh#9wXqMOCBFbjJof54}17RRp} z5PrBLO@BVe%Wjs(!j9`xedquvY)#IZtih;*AO1{zAlmP9zH7~jj+u`4!`o;!|3(b? zMhy8z4EaV3Dcs~WBz&WV{I}CW)KY&Vg*-A+h+36LMhQ_e{XqyJg;wi=e?*B2WQ(c{eJ_P#RsQ;fHM6z(LQcx;vOzegS%*v zuZ8r{Gp|3!Un7~5b393J>nW}ToTrm$uEgwN&7i9OhpVHo)1k25haqO4-$BwkqRQyd6B+;!o5Yvk9;fLy>sd2?xW2!L)9tjh@ zVt)u#@>$KaQ(#?5DfRfWt;ow{8ZWX*x{xV?QDVQ6;i_BR!fzx(3Qp{xmb)!>3CKcL z3%o#AJ!MREV3ruE8?eaSSabM*Ys%afc^*eo2^&guvOX|aGw9hZC0!lRGNJX{LRLQ~ z$B*E&PE%oD$8L@e5?2Q&_>V??fF!ovf`4?Ay+{7d0e!CJlzvTdfE4vZqu}QL?j}x* zzUy#v>*eNl_r8W=3DLD?b4d6&nOckP{v;faF%y3iWkLQWRbG>Lvdm|nV}U}8S=v*t z)i?-`2c;Ooj~Lyz0(18#rjmaQqfRYoOZ$uICu1gwe8t1}F(|#R{#@Ce9;2EeNPnC8 z{>^Ka-v7zEIXLrN**%@Kwd^aCAiWb7%;$Js4M9TBT(Y0@nLW{sPcrVxBZ(U)NnW*!2=^M5})giYfR3UIL$8ZI!*6gv9x(?s*9B(vMdyzfll zhb|n9kx0J6|EQ+tCe89%wrGBL6Mc$vrneGRfEX)cxV`gZ_m2!6>nF zmY_=;qZT>*{!=`jRw@~`Tz+5kr9iOss+i+yFmeRhT|AkIA=SxY=%)%?M1Pq%5OpqI zs)O-!ytv<7{YU0}0j(63493R)16NpP4q$dQzE79q=^~D9$FuxW{xFG>@iY}b8SWT% z&SP{nW{mi;OvtnQ;^mLaak9+D@pQRTBY6rc3q)oUS{*RO)YH`ldm_@)@Sw^)lUeO> zm1k#Zc;F(<{?hQk<(Lg>Q-8d{$NEeB>bd*ki8ASaRKI4W-$4~(rngE=1mQgW4!T@( zYiFv7)I(9>dFEt&fJ;1E&ouEd#ChT!xcV}2rej3B2Hd+Byn%}$uO;aYy54d7uG`dH zX38DAlE}tZDfXealsj&tOY#Z|Lf&XAJ1OzpBykm#Mp42s5$_m z!8{B2^w$EYP+&&rhn0(m=DA5J7e=4CRda- zYcpTo%Kq-vw*?93W0EcJr0&Gi)4O;PN$Um8#DN7RAkNDDS1f2G+fU zuBV)!dF4UaA(RvBoi2bEQH^J;ieO)7Lij~|n|_W*Tf?;k0r{PzmWP+kvI;JY$Y|O{ z|E4fDPb?4FTv1Ys}M(}aq9V%ca6}Ztq5xiSf$E0Z2=P3q2XQb*#~N$&@#}N76K+V z^e+Tm^-qMrqo!ZO!p?#j4wlGisXcZjL5$i%CGkqdC{##MUM5kt4jlqvo`j>X(@%Y> zR09#9NPpuzeV2ZT7jMK^M^A0kig6t1Y9(a>l}ZebrBWC)r>hhtDzZ{3#U5x-eX=#E z6~+E7lP*YUf0hSUDePIn{wh_gsW`#+f#Mp|PcJwG9|M{sJ% z#DDZw*}-}V*?cw&Vf9k-z*l@m>@lDexI4Xh2ECvfHQIQk9Cy-z=t?^nmX|Y^Ctoet zrO#ceg%^X26tvvJW65i9qZV-RvTL<~-Q9e(AO%PJQVUdUG`&@#2XLhpRn2Kfiox*l z(G{cT8G^4I+`ww5%HhD5*Y!i8!lz*aIe)t5X$Bw!tDelWXLRjgzd}7XB!k>z)?%>K z605kf{$bI52q}0;U23NOzDD-zuv_Yp#_yv zR|;Lk@5oS{H&K!%GR#rg%ukgc`ajjJ>S$X0yNf5{^Fq1AKRK*_TmJoqx++wEN`Kch za-l-~OA|~R!bV}BLgE*8VD)DO83i0=k?pqlv+@Arj}gS&U(%c8K23kSiIeNEvnWB2 zv^twA@p4&M0~$qDx3T)OYr|h%SAX<--y1|Rx^7hH9^Di^EJ3PN(2Y`DUV07_B{o~$zC??U-1weX4&tmbX(>~b?lov-P#6E0C%bKh5x7-~gR*za zwboSkob>*?kx>^olSFyv?tdRnYn}1qF)IjXKwi+6R2Ri2#==j8m}p$r^^I5cP>kHQLsO7!FdH1=Ow;upC)neYtcD<=oAp@KcVmF zrfT0UOT87UB&GC0vH2=$&FXS z>gB=_sThL;)ln-T73WQ~Nasw|;U~A?t4<}amGamY(1WLg7{z%!`x;L-B_ETIIHW2J z4%8-kcT^$Hr_an^xN`w7GKSy zMeGr=Rvea#CwpaW5%GDSLOzG;!;|Pt)t5$<04BH@Fkeh|P|q`B_n0T#Ng6n~X)74F zE}zhE`&iXS=-58?QOKkU3WjI&%Gjwkx%{(ndL{Iw{C`bYY|!$jZC3pg5_QSBVN?zA zk6Eh05H#L9II`ErggCvP+L3c9!KF;A_}k@jwkA1Q5H7Pqocx z4UPq44}WxmH-}?1!M?1+h2d6Rd8xu}$jnAX1-C6V@tZ7PEGK!oxRg))W$Nk^@$LI` zCjQj|o3Yv;6r)mRkq#OX0muSfnMjz5Rp7=$#TpM8{D#3>I^PYgVx8}U&d%MB;4qa%@fZ8~rstOJGNR-J`_fcT3J+-;^Z|3|e3L+T25N=;%aBfth6 zU@$I_0&Y1_E9YRW&j%NB?egIp$4~TUm%EEs0h$zct9#=*lPH0xtkSDqHiWS$F^et{ zH-7{TkSM4{D$I|3kdo~TtM?^9-K!>Eq|u;`UjKp7xOsh$;ixV3dnd6eHOdmLwYTy z^lw57vor}lMEAkp7LD0eW#Z*tVF>Fa76WV=6(US0io3bx8k^_baxF@&qvM9<*GW~v zqwT;Ks-o0J{lI!=Km`obTjh|nT$Wjf!+3}HqMT&C>@PIQ9QV3ie6F!o4oS;pjem7g zxUOlMhp(Yv-*DKi?UbUTV%zsBH^r(+p|iTd*qBXbfpxpo?#5QxiS}F;SVw1o@0(a| zeRWh!E4@|XrF812zB(h3JD{>FoIO>QFRanlL7=IrX;h%86 z<+s<%Z?Bid>tziI-<~i3+n+Cs7=O!e@0XA3{Zg&UBYVJ9GW|hbFbl2L1^@Pj`LJ)8 zRUXNBP^P_b^;96M z7UVZk66|0WaTih@_KPMcT#?the#T0Z&GMbd&&wr#(ze3zZtHmny!^>$qJLQuOlP7G z#*+&-9T6<%PPiR}yF1U@dS@x5ZN4J=*U$PD*bZ{ww@oC)NqMOadun?}zQC?9=xa2| z=l8*@AxVuyCirpFTGAIn&RRj}LV<{FE!3+Q;!Dh5^9>WV(q>V=y=6Yax6DCRDQ+Ei z`rTt?;5Vp&bnX39J!?`nrGJ`k-SZAiHwP}hJ#d<*`3`YQ{r1G!YXUXZ_S+k$yEo3p z%zk_1L_c!Uxbl6d`|5eP%|zWl_(NxdwfSPB`|!ELeE9sB%>H*7SLp~OKl{Jz6%-bL z+%}^$gUhNg=5&UhG?76qHlDSI)*3uiNLnb2<#N0gr2HfIbgsUQp`%alQe&uE|aN+l<+h0gVe5qpOqac4g9)n zuyXZqBG}M2`w-0%5WtPzI5Exc-D37RQiVg3Xby}qSav_sJeb{oz$vi}KUKS$5n`J2 zUPrXK7Xr|={m~W2QN>?XbIFXuG7HF0q)Unl=<3V38sCsN%YQ68F^{D2u5P{^63~y{ zI04W28VElP6E!ei9Vkbt!~iblZU8|PE55WB*RGkO$RNNbY-B!EJ^t&g(585$il!Tx%aW zhGe*^%vvB>8>oWjjexC`aJ3qzO6l{43>SQHu9Oxx8b4Qo^U^9>GF0jZaT3^@NMG5Y*Es4qHdr$O#u~ zajK*~krS@5;#^4`A!pn`&7(}ZWa?jL%gIDK6<8Yi@Qy~ffD2g!qi!>zg&6f;fj7mf zqzCXT=WmN}jh23q&GK2TCtTPC19GiWC|$WWfPaPONa+1q4i{f>1YL0X71z-9%HmpX zhOVEYOm`<+Vb`mNzmdOUz~|$4AHQNCa`nY`AMY_x7k3Wm-eZPb3}}7e(_oJQ!2_p( z&kqK}hhyk|xFK))?mH9V*;<-kjCQ7$bS#N`g&~$DU=*gA1$97N~L5!F@zMh4pS?= zvT#BQ4aY(&DO?+qR!TLTCD%1L7N6HD$9qUteU`I%034bxP zmBRU9w7#B8I+gij)Yk6uii7QLF7s-heo=uQlHu@vk$#>{A(&z+?<2UPb0|a)eco_5 zM}8cBRHl((1shOemXswS!#TRYsijmFl2J?N1E(EzqWjpU)nWuM3Dq*S@2+h)08@WirHjXm2e=Q?`Ln;reWAIo$FMl#5W}tZW z)x>V|T(j&e{}ijxE5|Ba56LRDVOd4l$K+OZ6@8k=r=Nr(ewN><%YgdDy>>77m}JX4 zncFO$p5DcaNNT0+X166?^~$u`G7QO>!K{5W*q+%QJ*{2}wphD`!pvgs779O$(fWFx zyr@(veYfOkQ7!K{7XNT|)Y4_tSvySV9V|Bq zLj; zQ#ul~@}&!QnDUXanSQ*$p^fe~G8t=m#|s=vh&^70%WaxFCIMlkLmkEGLYDr>)jju$ z9Z6RyIAYP=rIH1k7R5QulGvhRXF>Feai#^~>~c7+(A|=-K!47ne5Y9wGMr(Tr1J~b zI`~CGIIa+Db&`rFnq{!CJd0HK=3T)wB;l|@XR{8+0wQL8YEu~0ERKa)Ij{f&)k4i8 z`E@hGL4KqK;M5N_%VS~l4Q&C_!4TjoiUPu}!2pEA15JG(+VAu2Yt4#|8P5H4@gMgU zM2+QRt(^Khn}1=qNG!P9jQx|FrxkzqSVj~mO734YR3%ZMaIb&KFvUc>g3$`hlbZ)E zlA&?)YwvXhpw)6FH%~Gxdg|KAovzoklORN{XZH%}`*$~d*ynG?I{ke^$JxOrcA#q- z%&Gf$qs&{?e~?$-XxHKDm&1{sfMjHQq$`*bsx8o{`hVs`+?&LyFK131`y2Hi98E{N z+K*=fKbF}@SusyH`p2=oYxyh?XkR8XWza_j%RvKA`g+kY5amIFJEEas$A$DYo-FhD zQXt0%6+=`hDK;CHlneP(Fj(!r+B7N-S^mJ;C?I+ccCB64YboSksZuaX6oxGDa{zuC z%BU{pOn<;{0mzvs?hFp6f{v_1@i;&yG&7RkKFt>7Z)(_sPTthj@|~AqT2^}+_P8U} zsSH3{ZE$?pS^aMa!DhgW(qWRJf1V9P*lF)U|6q4JS^oz(59Lc?eYC`csEe*5 z!p{0(R9)ONEJD~HKiHW=7>E7rgA)86Orm^p6Mu|At3QZ`BTxZR==cZ1Ks>&V^J4)- z(RD1hxN^cWW`>TEynPM3*d2oh>}WT3g6IJ2(UJEV)Bh&QFB@b~!sOS+h5 z?-%h@F*@A3zTgmEOTX9lOPt?}6SoeuO$aCV=kWsMB7~WHb9Vt^5u(L?`MLn9oMo5; z+J7dnbIK9R{WUIvbQL#^J{|(8rqicJ6Q*}e;LLP7md7l;M@kM%dgBDxvUO2H-TMSC zN>WUE;{^EW`2Ge@pdqUV637|T4{F>!(GTjyg6D?|GJ?BhF!WY*+~T%ZzMfvq7Fk}e zWVy7s6a^Pg?iQ&G2N{Yyg2%w%@)^dE#ed>Yr+tHH5{fm!H-d{Nw{a}9C9+0A$!bY& zoWZ&t+^nq?FK37@8-rA>dz=U592qr}vrG&^_3%u#^o~814EiB$D$N^&GnYPLo0D17 zGBypC!>;~$Q+KO?kmjeuuPcC9&eC8&jWZD0GE@`3zA^H(QDN^*dUwy=uhjIL4}S}N z7RfiUnk*-iqs^2In)JpQsOlol4;F@zPDp<*f>$AAO}fvEH78jnJERqsfStUeZ>CWR z=^$yGr5lFaNerB9Xn2*_%hA;Hvsm^`eam*?tb*g*l~4~pk<3HpN~jl$#Ff(5tR6+7 zW9_okDs`N2Zo8a>l|@*N5bGQfntxN?27}c_uo0!R&5hClhQh!{-E`o_=>U>2a8iKB zX%Yv&77I)7l3`yC+jV!g*Dq==Ou9LTbD=O6k&`1+v+e4s8_S(CsIl+9#aSA*?de=ee43urB$PFv&F_O$pnuw}eAO3| z%!W5gib`L~!dex6Wg*Ae2_@8n`^p$lFBXL{l*OG0RVXWul^W5uxr>Vx$LOYJuzbWuHz%LvkkS3O z^d@2MBc7M_|Hg}yk3iH+lz%+an_&*COeaNfDq}7w*)N-zRBQ}~phQWPNpGBI0H37E zrnOnaNsh@>3>DOwUWx5haB6QwtGrD{&4B4sF}wyc@r>ST>I;F_!R5W+-M0{H7iTs1#FP<$Z{HzXL0i0&7=r&KI_mG>XQ4c$T)2M_A-Cq3=5&=TF8$x15$+IK3 zvyx#cUz1Anit#!@Ss2)^CLsF(E6d=Jvx%9BfyZyue75zhN`L#MFk7mqjCv*qvseM^ z%wsz$L9#gin9M%Mi!7R#%NK5K4RRa-A$S}|)9jS8JT3LF)WU7f?AXx3VZlnJ*6H7? zbv#Of)%};XoOA|wy_~aTvWTUdrGAPF3F98M`No|AJpJ*PpyA z{Pptf(c!y;%j3hdv;DswUcNp3aJ+v`FERxlpS?5apnvF1Ieo~)c=YM3g%TS=x@uM_ zJzpQ5oSmM~rwKe8ZM7FX@!+{{@s@k}yvF{(lW3?vURUsaWT>w!U&PUEMUze!JsM=} z7z1teRx#+szjDj{@ElJhwjK?LQie_6*jSVF_EtUju97AmiM6_p=Kqkyq2Z*7W|;)~Z);%1gK3ehvOMmJoR#Hc#?i??_TL>HT%PP7A66Hjizgp`oZQ6oo_7cH zykNi%E7bd+PERzczJIYBZtpy2iG{&JtXTU82Y(-g<+KtkV2OkQQmjaa$NNX`RszLe zBcWTdgj|+r7{d-L+WG!pSAzZJYB7tGDN862Tdnso#yA@qYIh42rlRIDTX|g=Bgfc! zI2ju|Y9*wCR$D1CIE$0Aq0K8P)oExcCCn>kN!fydm7JydU@IvI@4uus$$gssb`vMp zUw>y&!V&y@|LpI8*wP_`6uLZ9Q zPT?yzy}V`UNYV2~E$LXBa8@yMnB)xTlF{dC)FYU$Y^(e*+1Q!#!%SlcWer+COO)PA z+oUYp3*N;0UU1FAF~ZLfdQMjw5Y~pz&-M!nw71CTB1~VV2~&NA8;x7rhHlzz=zkW} zM$=H)(2xHO?KEYa^Du|maAvjQ=E~f(6@E!299N#`H>W3O=O6ZuPR`Hh2N{RX+^C=n zZi1?WZcF?Xy#4TlwzW9uhBch&=myi8ZP5*896Lidm_|%MH<_rz3$(!;``x zUYC^xlbl&-sI<_HnMEZ=KN5U{nbuD54dzMP;u}m^c870he{GMM`m}qDD0XLW=ynjYJ%gU<-6N-tDs5#es01MW}c57!9AmqxDAb+H>$!=giXD0}HMuG@a%FUdTm0ff4~s}xgy$fV7b-`H;+t6@5{g!a zu)Ji9t9wL3(bFmo8;H==1l3`wrX3dlwD{u@W}o+nO$pf57Q41@@=Oc}-z}l~r z%9=jS*AOPdJ&^qx!hei7&jxIt`KqY`=XjwO`y|4$D-?#gcWzJ^MW{oxOUQn(%7`Xe zQ=7$`L`R8!2zM>=B0PB7w4v+>MnlYL&a`gxYsi^~Dy9yIMoS{(JQaaC;Lh)g(6R$r zXLAEyy8VuimTt`t+1w}`DJ4%2uUV!`8+X$4Fj9Qc^70HxbbpRW+X&nRX#j{3;%Lec zg9e2dF)-YBKoC--Fh-6dlhlwTuey>r%`6Fwl!kRCE<8F-A|L@hSz7N!&fF0_$r+R< zF-etrCwI&IGREB9%vslHKnYwsifSFLoQbX9j|v}6xV=;4OAnf<(uZ2UG=Be>Z&?t z?@i?1>w!mv?cUo;@MM`ZC_2lpHQUzWS*2-}Xf_#flOR&&b|GVjj zG`w=pN7MBqL6YV$E=cij1L`ZE7&pUl%vtoO3mYebMe}PTtV#23v7Dn?m3(7Toeq@d z+FzyKsL=v|H{JHV$G3mS-;e}Qj>#?0Fm%%_k9v%qrhe_Mlp zQDFV&>OIv7eVPl6mukoKrZ4rO<1!hjbS8NRKZQIEOfexpOg}PhXLo()ep5*3qhyz= z*TBi>gQ0zEZDq|lbepG%9dk?-N#N8eK}qK{nz5Y*`Mm%5BJ#D5_wPSm%6+=HySqL= zoakm9*YUsADqK5%Xl`NNBztl}aejy)WN@%bx$b=YuB5Ra9H{{>m;7xSVJN;&W|qYq zd%m*|yt)~UP9cwyXE0tKl@a_oul1;vnGFy1s12^k|I)&$?L^*!8!tUat&;>`+N(qN z_oHgiCEWiz;}upUZK*&v&!kw;0dd^~y;sc6uh1$%zgM9-lKZ+}RDQ6CyWsw?oNS%A z&sj?-lXt$In?_0MEw&3^gI?wEZLoG5!KeiW&7-@`5qmiWskm41-@%PX!sT3KVnKsC zHjdf6#U3=w+-u>VAZ$^1J^Q*&L&fEti}n`3$}etDZzH|Q z*m&&?n(H$v{|?TAzB+AE_7tuyhg5FVQieWZBDu0=I=J(HUo~);C7Iv(sil^Z9VXVO6 zu@Djvjf$u2(_-q)`4fLUkiR6;j-5%d&CazrNn<+mm~Fxy)tNLC!(5@xtvIF=7LM=E zygJjh^jP^-xUv=bfj(_2LE5zPbU;65`tBp8#;>~}SmyF>?5VlyS=w|gusdlG&6oO; zR&Cx7rEKx64(3_>;(UsnO$cZCVUZRumf_>;f1ABFy(j@7zIQ{m(rjQ%EqTi)x_GkY zqm7fCMm;!JzAryEJmtQ;S}2tiw;bL&kCgOu3HZHQtTO%NvedN_t|#4dDFMNRCm$(} z=%`0KF%aoXCL+OP_v3fi`~|E=D#!HgqFc)eKg}_(pvM$28By+~=~$-_$x8(heANf? zQ=vFEZQg!4le|l3sx^&V$LLf_)0Qs0EnJECF&=V?HHP^(=bx%58r)rmc{$cJW*8^_ zAiwX1(ps9!%6!X?xYM!Iw1FPuMeb8m*TQn844f@xu2>i`o^IX{0^#jhxNd8Q=p=%0 zCRpz3la}v5Ul_OgEXQ0!JQ<;GRzd3qczPT{7M1Wfkz$_!x<)?3!uhk3le9S{?Mtld zBshRus;rxS3JYmRahsOimSYU{EhhqZFE0zlU;bPdQE1x;~(g zMe3eneXdsdD~+qonQeL*yca2ts)H@0WCVjCvI>JD`DlR768%L8jQ$Z&M`>A=&5t?m zD%PnMLNVY`*kk=er$vES&wp?)ODsp54sY_yL+@001CX%kTLU%3r75?|TSV+~ zB&p6!#asU2sZ2PFzhf1U*mLg8(ykVBrDPOJx@iBcZ#R{DBnkb^=tYb^1>^*}jF3Lc z0y1ZM&EB^61K0C`Ar7B36|;+pr-4K&LKe+Cf~tG2&_Jl(l4nTMDG!8=&~dS^ z-XrD;xO3`ws!Kg|KmoE2lfXUu)oyXQ^}qRhBUUL}jK`5rHL&fpUjV4v5t^l93bPsn zxHvSO7n{f_R0KCI0viIM(#QeH2^9@ z3w|9Sf2P#vgH^vHVpj6h%8Imq~z3I8`t!PL>%23S`O}!kgWA(e@TsDDg;$0^~`fST;p^~@{0!SNc|7SRK@IFz*t9( z^=1L9Pi<>sb8B=(d+=nYfz@3%Nm3~~RHY&j0*jANsVa+(t8qRPS99N_ef7D;AoA}% zUG|4iNzgv&!xwL-_6*R#ILM^*G0eZnNgpbgHK@;WIdUpSDxT#*3q@}SwL(5DU}UwH zaYtJ$S0XvmaAAG}!~ZFA1G-bd)Sk}TaHke-h=G!xFqrA^!FbkWCH51TI?ivnY-69) z`DrDUUZtN*tb9Cy0<-a=XJ9uLf8op8ti1~6SN%a_d`mUlZ0B7N}O^SoUfXfnDZNaoKBkGBg&VUu$QHP{AZ|nL6+8S z7?lA}8WDEU`qUL?tD^?Vq1O=XL}ALX1;w&awhD8E%)vR-_6h;NRV`C{VrSNeCt?|K za$c^&Hzn=PBGFStUw+@wkKGvuOsZr&3OhxL^&J5#grn1zR-#G$hphLjAF%Z*n--o5B(4}fXRTCtkpt^H;5|pM=}wxJ%w0^Ygsgso@7u#AXw`nn+>OsiZYy zP^uH&*qX8nI~8k}nqjGstTjaP;fXDO@i_j}Fz0 zZ^A>KC*QQ>TeD!Z@_ysc7Y#NerW`y}cs<~i#1>e{GV1pbv@jql_;;i|nOEKqRV2Dr zMl+$PGmi@8gp*}sk(z43uWgY~)j?Hx2f4764Id||Ye)p_OxltLAvII>PqF-+Sa30GedreXTxQa# z=yVU3Mguqk5_@F$k(LN%NF=R6toLF8sfh(*W5(fa)u(QRD~|Yp39$U@$q6V{F1g0} zHZMDf6*-Q>&;;}a28O}B^TUtS_S_Y#oAIZM_5B-wOFm-Np;FIpcAyn>xbY2-3%gdY z?T@+zd+ihnc;LLT-k02VfC%F>NzyO_$6@84w%7-}clwVEh!j*GD5A$Ei7H;fe@nH%JlO314H=8Rn{5WZjo%Qbj!%1!Y$3fJ^Dk z{jNL3|M>*SvMT)*6_JbQ1&0M+RUr6M=)&j$7@S!Xd^?(?=)O(hyem)eF&JFhK^%T+ zXhf38qfx+V}6)k@W+k_$KOHPLY z6WGDfWb;PMW5j7oa8*$zT5x*LWb>?JKHv~);-(_F_tyN0h==G=|5iJirl7BMMAJqQ zIe#tJoE%=`wYgmJL1-Wax!F?92MgJrtuIAnoQ(+G@YHd3vIma69?R8XkvwZib;~>M^s_|#>-ZbWI3Th z78r)76)NiJsx;PpYi}3x#AZ5r>`hrE%TAtNGg(y>)subre53ieuO{*S)Jx4eI>AZ! zg)aO0&6FDp>j%nzqTFUV#vH}~8sA*`OKqNWx?lp5{4+g^?mW9^Nn!ZU~ zTHpph;0Leg75P<=Ld4iC0riil9m$Zrk9cjd1aD{&t(~K9R+yX!3QG=vWX0VW5997W zjx46{%>Eq7cWO|V{e>VqTanP1da{}rWCaU`RFOmtyJVLzyrozNNqucXAuE6Nen~Sr zUy+nhhd|E7czl7K9Y?M^Y--mc8x`4%v%7tXqXS4nK1qcj)32W}Lx9M#NRLqwhP5p* zuuL_FSAM_npNxd@@iWA%61RjRl&;WIj#c`^U&VdS;fos;hv2# zU&Ua_>&LR!;69lU(xEitI9p53s6Y0PQ|_o*<>$BU_6}ao8Kh>WM;&Nq-MgRMC5UK> zHWP$2IosuoOaX@hupiTU6<=IA9B5DnArfa&xobobG8BP-l<~0`2$n)NjVVX((Je%* z0}kl)@#4$-wZB^{Q(DF_d@8P0v$4F>s`a!3H&HVe%_+xH~bDUkN}hlLC^gK$IL_H z^Q&GQnQv1P+`NN}sUDC0TP|W7$e=%P9{U$7&XAdEZ2AE^Bq6F{jx9f;jU;z)JnFVK z1#4*~*JLtg0;A_i2KSJaJl%s^`(fjp?Z9qkMN38YPBuEzeXBE zChbM4ZtuHp!ybCJ4M_`{sdDpAO6}_`M(t}@X-;mb5E^ZdTlG2B?eiPeoNEdQ#pnMc zm;%f+xi=tRF7yJp4_e^JH&JB6wt!{TdY_K53Ft<+XisrYxV=nNJ{xL`je{3epFjP( z%i?~AyEW4^XSh`NIG4#kwt3o8qQBh({wqB9lL@|!LHn8;L;>~_5u2nXQ4o-OrYqKS z#5Y!0F@~`Zgsf6XLr{VHCNGC2WcI-x6DKncxQ4mVImmSO5K-%dvN0;B7l4IJYPFkm z0=O2AHXahILro$4e(_j36|iGtB^M^u?XMQrx4InVhtcjM3&H-?VM}qU_k3u7GiOuTYLTP+XIrTtIHwdqw90Y$m*tjo%h&9$Od?l zP!vB>@zi6>@GizP<0CiaG=HZ9O5O|ckb@VY#0ql2qP_l0b_#@_ObBV&PBdM)U}ffh$tkRwKh|;>|sHg&8RaQxBXX3^;qHf@M4FpICwaz zGoQM*2hOd+|LS>bbw*(Q9^b#SDj2}q{^>@3-7NSmO9x5X3W(+%_0 zEn@abm&q*pHV8ZM_*^DW`e3n~&3gEfB!#8KON@-PeE|U8ZoVFMfVYNj3sd&r?Jel) z{ii+H{+Rt%nimtV&-v4Es*Uo^FJAq>P2FT?QD{ivw*LM1d^h^jy!BV&>O=o;tvw8= z9zVc+$S#Npyt(d?1V?&^Pg$2pHD1{g41>iWN-q2(I{hy-moRGXUJkd4 ziDg#vR?{$%)Vw`q;FQ=lCjAgCIGq2TQ87G>7h5XW?;Hy* z^m)L3k}h!pk~U8b{{bfSz86MHePwkgv{a})B=)qPsuHX|VF{2nFEpAr4_2*d@?c(fC7_EJ-BVqDiQJyiP_^NUKek zv~wV}mgScOfuxK;=gu%|MG$zqmI)yAC3(%n9Y{N#0G;*pK#b8ENPcW20l};ceTg0gnE*wvG z6O}>|DSm3r8E(-#1_PT9gzWdl#K%%f?F5}7l_dk7^pd^aeSqR2m-(jZ

_=-;Ex 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

IxntH5c^p9MMR*VQgOKG!>;tu+5pUnEjY> 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

&NAorup}>#BDT5;t`mrD5-ce7$ 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

Ce5BPnX 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ఔ}-96#l3nw_q% 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

DCFP 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

>Y=E;>O$m1VlO08o=XPy7>QQ^oWEMzp6oMc-ZPt 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 z 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%0A*L<^<+v1UD2B; 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�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

L9a=5 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

_o9enY6@A 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

PC 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 z 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 $=Q5#3;A zbV3741kz)l0OY!A-KcG}dJ_=3+OeyCV7?D1bHwu#LBA1b|4sl{d~`9$eSoTtb6$9O zG3d$%?hwaw0B#V}9PnNAT`52_!|_O6xvJWK&ieNLqmQ0(@AB-l@5%^TB5WCL9ru9e z4>VKQo=BAU9*}~8o{n7jfG`XUby-Ufkm!%`s9^8EW=stqh%KKN09hDt?COmHkme8Z z#=ww=TapkEiGj{^i;RJ=^iDYDXX6#bYz_}zegSb95UQLY)oTbW4fG%a|K+gL8xWd* zVb@|^L_lv02!;Ga4qrzAAsOgeU2V&E3H4w0(*z(A17s_a>ZCSB;wVIl8+1||Ku`w$ z(mSzudnj;SplUVfQDa)3{*MZ$p9bkw5U%Ovp%$s}?9hIHko&Fu_z-UI7@r>;y)Te5 z`Z#>-U_d+lO3wsr<;!hDaF07zEK?AFA{=ahgiLf+4psf(N2(a7|8;m3;0FpEE1>ij zt2w@SvQh4(>o|Wqo9FRjrHk)o^3;&O8EvWmlS`M4^lusbANa{*czuR^hrlE;fECdT z)Mp!}{uiK848x)6Q-p?8XJPDrkH{a& zx7dBC#84Q9#VfI~v-}_B<)+Kq=v^8)kvJ!%H!;g(d~`AG)5icBgrP3*J+k4Re3;rs z`Xp_~g5ly~Jev);q3?85?tOZz7~p#L-FNhcQPiyOg#8kHiGyfS)+(Q-GAu|{FyH)? zehtcKmyIA@F4PafB+BAU{9TZLq~eG4v$~k(H{w>Ym_^DhOP3Wz>H1E{kY}@LEN$}q zCJq`48pz{e9K1~zL0r6RZUnRBPW+2N7zGzk0{J)MyCC{B5kKY8ud!@|E-Q+_^<9vu ze0*|Zy0lQqUAd*$#A3 zP$?C@dq!^<1BMMRl))Yv%6J3yZJ)mYvUSkqnM+3&Fd)E*1^iWC9d)C0_W59-R%&}hXC{h~07VXGXS_nxk6 zsBHC!X0ccHP%(*jwk+=G-?+qoJ}$9mMz9CUE-mcXGb0#(Bei0G?Yid?J7w)UBNclf z?K&V76T*JHvxfPkT@Vo;GQNg~p*Ep4P=?^!A4r%ZEaz@Ix{cQGIjCjQdHWiOKH`N0yIP6j; zp;w=dEf3SdAp9~|uTJmdz#!;A$z;9Ksc8`F6+GTJ^i*Cxg$Fsz7=&T@#pLbsNWyBp zT(EO_*yog;%VY?5K*u{fm(L=uz9i3esx-Br>3)cB)6a2#rk)NJ?R7R4|5(XWy(r3$ zj}C%mCO(=a>Z9o_yPHS%@wE6ia{;VlmxN>TkaRwADevfZDa`**aS#P}X*SDepJO3@ z9t*SXDN|O*G~?AeprRoEyJ*Hh7}evU8E->TeIe_?;BY$2|1cqayPI2p6=?Ys2sZks z2UM^Vm@~kEj8(#RhJ$2|b@F%@c*Eg`Q6o{XAg_ zh>G~M7EoagPd?9QiGGss1oV86v?{7H1oV84w2LM&B=mfgtR!SZ4Jt4dPc@p)&hC>u z`Z|99;qdLzKP!wGy43+USvRMMNiGE}45{249VV&NW?)F==D09PCG?BoiEwj1cxT$7 zf@L3n0o4wE(1No)_K92PU^&0Pn@ytmQ8JCc#+fkd4-Wr%`S$3;*}1GJ_3rdvhdr8D zxa~sZi=OeMm7x8n{o8`PG0Ku`THe50^|U1z+U)>0NNowxm+9)mz>#7A}hW`NWTOXkJk+jYiEg`4N|Qg3HjCR9sISe{*8 zmAudaE-EYog^Q{x69>wE4YIp2u!V93iAlHBv zSQgKxHZ$$01awJHhXCs2R9xW?j?NDcI1}v!rCv~KGwUiX1MytUI=0sG;H=9@cc;}@ zFzcmM!y~rMX9Ty3g(e>QzC;^TrmO((%i8Q%0Db{2%S#N{=-L`zM`g^S&{_I_s3|Da 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 J985-$?+gd-DCy=S326a3yT(;3oX;DzK%Kz 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

ACzvt(If6E>Ikg9Z9CP;fWh! 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 diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index 227d36a5..92f522a5 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,60 +1,60 @@ -Apr 05, 2024 2:36:52 AM reposense.system.LogsManager addFileHandler +Apr 05, 2024 10:51:10 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Apr 05, 2024 2:36:52 AM reposense.parser.CsvParser validateHeader +Apr 05, 2024 10:51:10 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 -Apr 05, 2024 2:36:52 AM reposense.parser.CsvParser validateHeader +Apr 05, 2024 10:51:11 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 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias wang found. The alias will belong to the last author - ChrysanthemumT -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias chen wenlong found. The alias will belong to the last author - c-wenlong -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias pughal found. The alias will belong to the last author - Pughal77 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias rah found. The alias will belong to the last author - rahhulleee -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yorklim found. The alias will belong to the last author - yorklim -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias liu jiayao found. The alias will belong to the last author - ljy0422 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias wang found. The alias will belong to the last author - ChrysanthemumT -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias pughal found. The alias will belong to the last author - Pughal77 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias liu jiayao found. The alias will belong to the last author - ljy0422 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yorklim found. The alias will belong to the last author - yorklim -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias chen wenlong found. The alias will belong to the last author - c-wenlong -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias rah found. The alias will belong to the last author - rahhulleee -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Apr 05, 2024 2:36:52 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Apr 05, 2024 10:51:11 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Apr 05, 2024 2:36:52 AM reposense.parser.CsvParser validateHeader +Apr 05, 2024 10:51:11 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Apr 05, 2024 2:36:52 AM reposense.git.GitConfig getGlobalGitLfsConfig +Apr 05, 2024 10:51:11 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 @@ -70,1663 +70,1663 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Apr 05, 2024 2:36:52 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-1/tp.git... -Apr 05, 2024 2:36:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-4/tp.git... -Apr 05, 2024 2:36:52 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-2/tp.git... -Apr 05, 2024 2:36:52 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-4/tp.git... +Apr 05, 2024 10:51:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-3/tp.git... -Apr 05, 2024 2:36:52 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git to complete... -Apr 05, 2024 2:36:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git to complete... -Apr 05, 2024 2:36:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git to complete... -Apr 05, 2024 2:36:52 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git to complete... -Apr 05, 2024 2:36:54 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git to complete... +Apr 05, 2024 10:51:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git to complete... +Apr 05, 2024 10:51:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git completed! -Apr 05, 2024 2:36:54 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-3/tp.git... -Apr 05, 2024 2:36:54 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:51:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/92] Analyzing https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Apr 05, 2024 2:36:54 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git to complete... -Apr 05, 2024 2:36:54 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:51:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:36:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:51:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git completed! -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-4/tp.git... -Apr 05, 2024 2:36:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git completed! -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-4/tp.git... +Apr 05, 2024 10:51:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git to complete... -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Apr 05, 2024 10:51:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Apr 05, 2024 10:51:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! +Apr 05, 2024 10:51:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-2/tp.git... -Apr 05, 2024 2:36:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Apr 05, 2024 10:51:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git to complete... -Apr 05, 2024 2:36:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:36:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git completed! +Apr 05, 2024 10:51:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-3/tp.git... -Apr 05, 2024 2:36:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Apr 05, 2024 2:36:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git to complete... -Apr 05, 2024 2:36:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:36:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Apr 05, 2024 2:36:55 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:51:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Apr 05, 2024 10:51:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:36:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:51:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git to complete... +Apr 05, 2024 10:51:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Apr 05, 2024 2:36:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git completed! -Apr 05, 2024 2:36:57 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-1/tp.git... -Apr 05, 2024 2:36:57 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git to complete... -Apr 05, 2024 2:36:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! -Apr 05, 2024 2:36:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-2/tp.git... -Apr 05, 2024 2:36:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... -Apr 05, 2024 2:36:58 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git completed! -Apr 05, 2024 2:36:58 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git completed! +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-2/tp.git... +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-1/tp.git... -Apr 05, 2024 2:36:58 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git to complete... -Apr 05, 2024 2:36:58 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... +Apr 05, 2024 10:51:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git completed! -Apr 05, 2024 2:36:58 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-2/tp.git... -Apr 05, 2024 2:36:58 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git to complete... -Apr 05, 2024 2:36:59 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git completed! -Apr 05, 2024 2:36:59 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-4/tp.git... -Apr 05, 2024 2:36:59 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git to complete... -Apr 05, 2024 2:37:00 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git completed! -Apr 05, 2024 2:37:00 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-3/tp.git... -Apr 05, 2024 2:37:00 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git to complete... -Apr 05, 2024 2:37:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Apr 05, 2024 2:37:01 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git completed! -Apr 05, 2024 2:37:01 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-2/tp.git... -Apr 05, 2024 2:37:01 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git to complete... -Apr 05, 2024 2:37:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Apr 05, 2024 2:37:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! -Apr 05, 2024 2:37:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Apr 05, 2024 2:37:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Apr 05, 2024 2:37:02 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git completed! -Apr 05, 2024 2:37:02 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-1/tp.git... -Apr 05, 2024 2:37:02 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git to complete... -Apr 05, 2024 2:37:03 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git completed! -Apr 05, 2024 2:37:03 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-2/tp.git... -Apr 05, 2024 2:37:03 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git to complete... -Apr 05, 2024 2:37:03 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... +Apr 05, 2024 10:51:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git completed! -Apr 05, 2024 2:37:03 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-1/tp.git... -Apr 05, 2024 2:37:03 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git to complete... -Apr 05, 2024 2:37:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Apr 05, 2024 2:37:04 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... +Apr 05, 2024 10:51:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! +Apr 05, 2024 10:51:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git completed! -Apr 05, 2024 2:37:04 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-4/tp.git... -Apr 05, 2024 2:37:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git to complete... -Apr 05, 2024 2:37:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Apr 05, 2024 2:37:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! -Apr 05, 2024 2:37:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Apr 05, 2024 2:37:04 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:51:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:51:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Apr 05, 2024 2:37:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git completed! -Apr 05, 2024 2:37:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-3/tp.git... -Apr 05, 2024 2:37:05 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-4/tp.git... +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git to complete... +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git completed! -Apr 05, 2024 2:37:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-2/tp.git... -Apr 05, 2024 2:37:05 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-3/tp.git... +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git to complete... -Apr 05, 2024 2:37:05 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git completed! +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-2/tp.git... +Apr 05, 2024 10:51:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git to complete... -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Apr 05, 2024 10:51:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Apr 05, 2024 10:51:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! +Apr 05, 2024 10:51:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Apr 05, 2024 10:51:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git completed! -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-4/tp.git... -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git completed! -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git to complete... -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Apr 05, 2024 10:51:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! +Apr 05, 2024 10:51:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-1/tp.git... -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git to complete... -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git completed! +Apr 05, 2024 10:51:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-3/tp.git... -Apr 05, 2024 2:37:07 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git to complete... -Apr 05, 2024 2:37:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Apr 05, 2024 2:37:08 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git completed! -Apr 05, 2024 2:37:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Apr 05, 2024 2:37:08 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-4/tp.git... -Apr 05, 2024 2:37:08 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git to complete... -Apr 05, 2024 2:37:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Apr 05, 2024 2:37:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Apr 05, 2024 2:37:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! -Apr 05, 2024 2:37:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! -Apr 05, 2024 2:37:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Apr 05, 2024 2:37:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Apr 05, 2024 2:37:09 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git completed! -Apr 05, 2024 2:37:09 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-2/tp.git... -Apr 05, 2024 2:37:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Apr 05, 2024 2:37:09 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git to complete... -Apr 05, 2024 2:37:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Apr 05, 2024 2:37:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! -Apr 05, 2024 2:37:10 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-1/tp.git... -Apr 05, 2024 2:37:10 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git to complete... -Apr 05, 2024 2:37:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! -Apr 05, 2024 2:37:10 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-4/tp.git... -Apr 05, 2024 2:37:10 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git to complete... -Apr 05, 2024 2:37:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! -Apr 05, 2024 2:37:11 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-3/tp.git... -Apr 05, 2024 2:37:11 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git to complete... -Apr 05, 2024 2:37:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Apr 05, 2024 2:37:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Apr 05, 2024 2:37:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! -Apr 05, 2024 2:37:11 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Apr 05, 2024 10:51:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Apr 05, 2024 10:51:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git completed! -Apr 05, 2024 2:37:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Apr 05, 2024 2:37:11 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-3/tp.git... -Apr 05, 2024 2:37:11 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git to complete... -Apr 05, 2024 2:37:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Apr 05, 2024 2:37:12 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! +Apr 05, 2024 10:51:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Apr 05, 2024 10:51:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Apr 05, 2024 10:51:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git completed! -Apr 05, 2024 2:37:12 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-3/tp.git... -Apr 05, 2024 2:37:12 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git to complete... -Apr 05, 2024 2:37:12 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git completed! -Apr 05, 2024 2:37:12 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-1/tp.git... -Apr 05, 2024 2:37:12 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git to complete... -Apr 05, 2024 2:37:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Apr 05, 2024 2:37:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Apr 05, 2024 2:37:13 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Apr 05, 2024 10:51:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Apr 05, 2024 10:51:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git completed! -Apr 05, 2024 2:37:13 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-4/tp.git... -Apr 05, 2024 2:37:13 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git to complete... -Apr 05, 2024 2:37:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! -Apr 05, 2024 2:37:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Apr 05, 2024 2:37:13 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Apr 05, 2024 10:51:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Apr 05, 2024 10:51:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! +Apr 05, 2024 10:51:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! +Apr 05, 2024 10:51:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Apr 05, 2024 10:51:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Apr 05, 2024 10:51:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Apr 05, 2024 10:51:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git completed! -Apr 05, 2024 2:37:13 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-2/tp.git... -Apr 05, 2024 2:37:13 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Apr 05, 2024 10:51:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git to complete... -Apr 05, 2024 2:37:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Apr 05, 2024 2:37:14 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git completed! -Apr 05, 2024 2:37:14 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-4/tp.git... -Apr 05, 2024 2:37:14 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git to complete... -Apr 05, 2024 2:37:15 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git completed! -Apr 05, 2024 2:37:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! -Apr 05, 2024 2:37:15 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-4/tp.git... -Apr 05, 2024 2:37:15 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git to complete... -Apr 05, 2024 2:37:15 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! +Apr 05, 2024 10:51:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-3/tp.git... -Apr 05, 2024 2:37:15 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git to complete... -Apr 05, 2024 2:37:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Apr 05, 2024 2:37:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:51:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Apr 05, 2024 2:37:16 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git completed! -Apr 05, 2024 2:37:16 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-4/tp.git... -Apr 05, 2024 2:37:16 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git to complete... -Apr 05, 2024 2:37:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Apr 05, 2024 2:37:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Apr 05, 2024 2:37:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! -Apr 05, 2024 2:37:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Apr 05, 2024 2:37:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! -Apr 05, 2024 2:37:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Apr 05, 2024 2:37:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Apr 05, 2024 2:37:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Apr 05, 2024 2:37:17 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git completed! -Apr 05, 2024 2:37:17 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git completed! +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-2/tp.git... -Apr 05, 2024 2:37:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git to complete... -Apr 05, 2024 2:37:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git completed! -Apr 05, 2024 2:37:18 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-1/tp.git... -Apr 05, 2024 2:37:18 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git to complete... +Apr 05, 2024 10:51:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git to complete... -Apr 05, 2024 2:37:18 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Apr 05, 2024 10:51:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! +Apr 05, 2024 10:51:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Apr 05, 2024 10:51:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git completed! -Apr 05, 2024 2:37:18 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-3/tp.git... -Apr 05, 2024 2:37:18 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git to complete... -Apr 05, 2024 2:37:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Apr 05, 2024 2:37:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Apr 05, 2024 2:37:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! -Apr 05, 2024 2:37:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git completed! -Apr 05, 2024 2:37:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git completed! +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-3/tp.git... -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git to complete... -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git completed! -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-1/tp.git... -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git to complete... -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git completed! +Apr 05, 2024 10:51:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-2/tp.git... -Apr 05, 2024 2:37:21 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git to complete... -Apr 05, 2024 2:37:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Apr 05, 2024 2:37:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Apr 05, 2024 2:37:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! -Apr 05, 2024 2:37:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Apr 05, 2024 2:37:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Apr 05, 2024 2:37:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Apr 05, 2024 2:37:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Apr 05, 2024 2:37:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! -Apr 05, 2024 2:37:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Apr 05, 2024 2:37:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Apr 05, 2024 2:37:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git completed! -Apr 05, 2024 2:37:23 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! +Apr 05, 2024 10:51:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-3/tp.git... -Apr 05, 2024 2:37:23 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git to complete... -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git completed! -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git completed! +Apr 05, 2024 10:51:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-1/tp.git... -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git to complete... -Apr 05, 2024 2:37:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git completed! -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-4/tp.git... -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git to complete... -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Apr 05, 2024 10:51:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git completed! -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-2/tp.git... -Apr 05, 2024 2:37:24 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git to complete... -Apr 05, 2024 2:37:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Apr 05, 2024 2:37:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! -Apr 05, 2024 2:37:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Apr 05, 2024 2:37:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git completed! -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-4/tp.git... -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git to complete... -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Apr 05, 2024 10:51:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! +Apr 05, 2024 10:51:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Apr 05, 2024 10:51:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git completed! -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-4/tp.git... +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git completed! +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-2/tp.git... -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git to complete... +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git to complete... -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git completed! +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-3/tp.git... -Apr 05, 2024 2:37:26 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git to complete... -Apr 05, 2024 2:37:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git completed! -Apr 05, 2024 2:37:27 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! +Apr 05, 2024 10:51:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-1/tp.git... -Apr 05, 2024 2:37:27 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git to complete... -Apr 05, 2024 2:37:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Apr 05, 2024 2:37:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Apr 05, 2024 2:37:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! -Apr 05, 2024 2:37:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Apr 05, 2024 2:37:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Apr 05, 2024 2:37:28 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Apr 05, 2024 10:51:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! +Apr 05, 2024 10:51:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Apr 05, 2024 10:51:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git completed! -Apr 05, 2024 2:37:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-4/tp.git... -Apr 05, 2024 2:37:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git to complete... -Apr 05, 2024 2:37:28 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git completed! -Apr 05, 2024 2:37:28 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-4/tp.git... +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-1/tp.git... -Apr 05, 2024 2:37:29 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git to complete... -Apr 05, 2024 2:37:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! -Apr 05, 2024 2:37:29 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git to complete... +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git completed! +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-2/tp.git... -Apr 05, 2024 2:37:29 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git to complete... -Apr 05, 2024 2:37:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git completed! -Apr 05, 2024 2:37:29 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-4/tp.git... -Apr 05, 2024 2:37:29 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git to complete... -Apr 05, 2024 2:37:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Apr 05, 2024 2:37:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Apr 05, 2024 2:37:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Apr 05, 2024 2:37:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! -Apr 05, 2024 2:37:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Apr 05, 2024 2:37:30 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Apr 05, 2024 10:51:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Apr 05, 2024 10:51:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! +Apr 05, 2024 10:51:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git completed! -Apr 05, 2024 2:37:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Apr 05, 2024 2:37:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Apr 05, 2024 2:37:30 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-2/tp.git... -Apr 05, 2024 2:37:30 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git to complete... -Apr 05, 2024 2:37:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! -Apr 05, 2024 2:37:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Apr 05, 2024 2:37:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Apr 05, 2024 2:37:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Apr 05, 2024 2:37:31 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git completed! -Apr 05, 2024 2:37:32 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-3/tp.git... -Apr 05, 2024 2:37:32 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git to complete... -Apr 05, 2024 2:37:32 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git completed! -Apr 05, 2024 2:37:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! -Apr 05, 2024 2:37:32 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-1/tp.git... -Apr 05, 2024 2:37:32 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git to complete... +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-4/tp.git... -Apr 05, 2024 2:37:32 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git to complete... -Apr 05, 2024 2:37:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git to complete... -Apr 05, 2024 2:37:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Apr 05, 2024 2:37:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! -Apr 05, 2024 2:37:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Apr 05, 2024 2:37:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Apr 05, 2024 2:37:33 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Apr 05, 2024 10:51:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git completed! -Apr 05, 2024 2:37:33 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-4/tp.git... -Apr 05, 2024 2:37:33 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Apr 05, 2024 10:51:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git to complete... -Apr 05, 2024 2:37:34 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! +Apr 05, 2024 10:51:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Apr 05, 2024 10:51:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Apr 05, 2024 10:51:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Apr 05, 2024 10:51:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Apr 05, 2024 10:51:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! +Apr 05, 2024 10:51:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git completed! -Apr 05, 2024 2:37:34 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-2/tp.git... -Apr 05, 2024 2:37:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Apr 05, 2024 2:37:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... -Apr 05, 2024 2:37:35 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git completed! -Apr 05, 2024 2:37:35 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-3/tp.git... -Apr 05, 2024 2:37:35 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git to complete... -Apr 05, 2024 2:37:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Apr 05, 2024 2:37:35 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git completed! -Apr 05, 2024 2:37:35 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-2/tp.git... -Apr 05, 2024 2:37:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! -Apr 05, 2024 2:37:35 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git to complete... -Apr 05, 2024 2:37:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Apr 05, 2024 2:37:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Apr 05, 2024 2:37:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Apr 05, 2024 2:37:35 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git completed! -Apr 05, 2024 2:37:36 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-T14-1/tp.git... -Apr 05, 2024 2:37:36 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git to complete... -Apr 05, 2024 2:37:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Apr 05, 2024 2:37:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! -Apr 05, 2024 2:37:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Apr 05, 2024 2:37:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Apr 05, 2024 2:37:36 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git completed! -Apr 05, 2024 2:37:36 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-2/tp.git... -Apr 05, 2024 2:37:36 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git to complete... -Apr 05, 2024 2:37:38 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git completed! -Apr 05, 2024 2:37:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! -Apr 05, 2024 2:37:38 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-1/tp.git... -Apr 05, 2024 2:37:38 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git to complete... -Apr 05, 2024 2:37:38 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-3/tp.git... -Apr 05, 2024 2:37:38 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git to complete... -Apr 05, 2024 2:37:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Apr 05, 2024 2:37:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Apr 05, 2024 2:37:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! -Apr 05, 2024 2:37:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Apr 05, 2024 2:37:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Apr 05, 2024 2:37:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! -Apr 05, 2024 2:37:39 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Apr 05, 2024 10:51:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git completed! +Apr 05, 2024 10:51:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-1/tp.git... -Apr 05, 2024 2:37:39 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! +Apr 05, 2024 10:51:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git to complete... -Apr 05, 2024 2:37:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git completed! -Apr 05, 2024 2:37:39 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-1/tp.git... -Apr 05, 2024 2:37:39 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git to complete... -Apr 05, 2024 2:37:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Apr 05, 2024 2:37:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Apr 05, 2024 2:37:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! -Apr 05, 2024 2:37:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Apr 05, 2024 2:37:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Apr 05, 2024 2:37:40 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Apr 05, 2024 10:51:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! +Apr 05, 2024 10:51:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Apr 05, 2024 10:51:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Apr 05, 2024 10:51:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git completed! -Apr 05, 2024 2:37:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git completed! -Apr 05, 2024 2:37:40 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-4/tp.git... -Apr 05, 2024 2:37:40 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git to complete... +Apr 05, 2024 10:51:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git completed! +Apr 05, 2024 10:51:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-3/tp.git... -Apr 05, 2024 2:37:40 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git to complete... -Apr 05, 2024 2:37:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git to complete... -Apr 05, 2024 2:37:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git completed! -Apr 05, 2024 2:37:41 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Apr 05, 2024 10:51:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git completed! -Apr 05, 2024 2:37:41 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Apr 05, 2024 10:51:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-2/tp.git... -Apr 05, 2024 2:37:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-4/tp.git... -Apr 05, 2024 2:37:41 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! +Apr 05, 2024 10:51:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git to complete... -Apr 05, 2024 2:37:41 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Apr 05, 2024 10:51:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git completed! +Apr 05, 2024 10:51:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-4/tp.git... +Apr 05, 2024 10:51:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Apr 05, 2024 10:51:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git to complete... -Apr 05, 2024 2:37:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Apr 05, 2024 2:37:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Apr 05, 2024 2:37:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! -Apr 05, 2024 2:37:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Apr 05, 2024 2:37:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Apr 05, 2024 2:37:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Apr 05, 2024 2:37:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Apr 05, 2024 2:37:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! -Apr 05, 2024 2:37:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-3/tp.git... -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git to complete... -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git completed! -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-3/tp.git... +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-1/tp.git... -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git to complete... -Apr 05, 2024 2:37:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-1/tp.git... -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git to complete... +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git completed! -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git to complete... -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-1/tp.git... +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-1/tp.git... -Apr 05, 2024 2:37:43 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git to complete... -Apr 05, 2024 2:37:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Apr 05, 2024 2:37:45 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git to complete... +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git completed! +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git completed! -Apr 05, 2024 2:37:45 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-2/tp.git... -Apr 05, 2024 2:37:45 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-2/tp.git... +Apr 05, 2024 10:51:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git to complete... -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git completed! -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-2/tp.git... -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git to complete... -Apr 05, 2024 2:37:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Apr 05, 2024 2:37:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! -Apr 05, 2024 2:37:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Apr 05, 2024 2:37:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git completed! -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-4/tp.git... -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git to complete... -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Apr 05, 2024 10:51:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! +Apr 05, 2024 10:51:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git completed! -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-3/tp.git... -Apr 05, 2024 2:37:46 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git to complete... -Apr 05, 2024 2:37:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Apr 05, 2024 2:37:48 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:51:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Apr 05, 2024 10:51:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Apr 05, 2024 10:51:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! +Apr 05, 2024 10:51:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Apr 05, 2024 10:51:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:51:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git completed! -Apr 05, 2024 2:37:48 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-2/tp.git... -Apr 05, 2024 2:37:48 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git to complete... -Apr 05, 2024 2:37:48 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git completed! -Apr 05, 2024 2:37:48 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-3/tp.git... -Apr 05, 2024 2:37:48 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git to complete... -Apr 05, 2024 2:37:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Apr 05, 2024 2:37:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! -Apr 05, 2024 2:37:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Apr 05, 2024 2:37:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Apr 05, 2024 2:37:49 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git completed! -Apr 05, 2024 2:37:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Apr 05, 2024 2:37:49 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-1/tp.git... -Apr 05, 2024 2:37:49 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git to complete... -Apr 05, 2024 2:37:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Apr 05, 2024 2:37:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Apr 05, 2024 2:37:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! -Apr 05, 2024 2:37:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Apr 05, 2024 2:37:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Apr 05, 2024 2:37:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! -Apr 05, 2024 2:37:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Apr 05, 2024 10:52:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Apr 05, 2024 10:52:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! +Apr 05, 2024 10:52:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Apr 05, 2024 10:52:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Apr 05, 2024 10:52:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Apr 05, 2024 10:52:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Apr 05, 2024 10:52:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! +Apr 05, 2024 10:52:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git completed! +Apr 05, 2024 10:52:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-3/tp.git... -Apr 05, 2024 2:37:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git to complete... -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git completed! -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-2/tp.git... -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-2/tp.git... -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git to complete... -Apr 05, 2024 2:37:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Apr 05, 2024 2:37:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git to complete... -Apr 05, 2024 2:37:52 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git completed! -Apr 05, 2024 2:37:52 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-2/tp.git... +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git to complete... +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-1/tp.git... -Apr 05, 2024 2:37:52 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git to complete... -Apr 05, 2024 2:37:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Apr 05, 2024 2:37:53 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git completed! -Apr 05, 2024 2:37:53 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-1/tp.git... -Apr 05, 2024 2:37:53 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git to complete... -Apr 05, 2024 2:37:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git completed! -Apr 05, 2024 2:37:53 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! +Apr 05, 2024 10:52:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-3/tp.git... -Apr 05, 2024 2:37:53 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git completed! +Apr 05, 2024 10:52:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git to complete... -Apr 05, 2024 2:37:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Apr 05, 2024 2:37:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! -Apr 05, 2024 2:37:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! -Apr 05, 2024 2:37:54 AM reposense.report.RepoCloner spawnCloneProcess +Apr 05, 2024 10:52:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-1/tp.git... -Apr 05, 2024 2:37:54 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git completed! -Apr 05, 2024 2:37:54 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git to complete... -Apr 05, 2024 2:37:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Apr 05, 2024 2:37:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Apr 05, 2024 2:37:55 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git completed! -Apr 05, 2024 2:37:55 AM reposense.report.RepoCloner waitForCloneProcess +Apr 05, 2024 10:52:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Apr 05, 2024 10:52:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git completed! -Apr 05, 2024 2:37:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Apr 05, 2024 2:37:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Apr 05, 2024 10:52:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! +Apr 05, 2024 10:52:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Apr 05, 2024 10:52:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git completed! +Apr 05, 2024 10:52:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! +Apr 05, 2024 10:52:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! +Apr 05, 2024 10:52:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Apr 05, 2024 10:52:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Apr 05, 2024 10:52:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! +Apr 05, 2024 10:52:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Apr 05, 2024 10:52:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Apr 05, 2024 10:52:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Apr 05, 2024 10:52:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Apr 05, 2024 10:52:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Apr 05, 2024 10:52:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! +Apr 05, 2024 10:52:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Apr 05, 2024 10:52:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Apr 05, 2024 10:52:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Apr 05, 2024 10:52:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Apr 05, 2024 10:52:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! +Apr 05, 2024 10:52:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Apr 05, 2024 10:52:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Apr 05, 2024 10:52:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Apr 05, 2024 10:52:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Apr 05, 2024 10:52:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! +Apr 05, 2024 10:52:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Apr 05, 2024 10:52:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Apr 05, 2024 10:52:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Apr 05, 2024 10:52:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Apr 05, 2024 10:52:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! +Apr 05, 2024 10:52:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Apr 05, 2024 10:52:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Apr 05, 2024 10:52:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Apr 05, 2024 10:52:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Apr 05, 2024 2:37:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Apr 05, 2024 2:37:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! -Apr 05, 2024 2:37:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Apr 05, 2024 2:37:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Apr 05, 2024 2:37:56 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Apr 05, 2024 10:52:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Apr 05, 2024 10:52:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Apr 05, 2024 10:52:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Apr 05, 2024 10:52:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Apr 05, 2024 2:37:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! -Apr 05, 2024 2:37:56 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Apr 05, 2024 10:52:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Apr 05, 2024 10:52:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! +Apr 05, 2024 10:52:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [33/92] Analyzing https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Apr 05, 2024 2:37:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Apr 05, 2024 2:37:56 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Apr 05, 2024 2:37:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git completed! -Apr 05, 2024 2:37:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Apr 05, 2024 10:52:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Apr 05, 2024 2:37:56 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) completed! -Apr 05, 2024 2:37:56 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Apr 05, 2024 10:52:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Apr 05, 2024 2:37:56 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Apr 05, 2024 2:37:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Apr 05, 2024 2:37:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Apr 05, 2024 2:37:58 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! -Apr 05, 2024 2:37:58 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [35/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Apr 05, 2024 2:37:58 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:37:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Apr 05, 2024 2:37:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Apr 05, 2024 2:37:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Apr 05, 2024 2:37:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Apr 05, 2024 2:37:59 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) completed! -Apr 05, 2024 2:37:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Apr 05, 2024 2:37:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Apr 05, 2024 10:52:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Apr 05, 2024 10:52:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Apr 05, 2024 10:52:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Apr 05, 2024 2:37:59 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) completed! -Apr 05, 2024 2:37:59 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [37/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Apr 05, 2024 2:38:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Apr 05, 2024 2:38:00 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Apr 05, 2024 2:38:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Apr 05, 2024 2:38:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Apr 05, 2024 10:52:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Apr 05, 2024 2:38:01 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Apr 05, 2024 10:52:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) completed! +Apr 05, 2024 10:52:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) completed! -Apr 05, 2024 2:38:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Apr 05, 2024 2:38:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Apr 05, 2024 2:38:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Apr 05, 2024 2:38:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Apr 05, 2024 2:38:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) completed! -Apr 05, 2024 2:38:03 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Apr 05, 2024 10:52:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Apr 05, 2024 2:38:03 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Apr 05, 2024 2:38:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Apr 05, 2024 10:52:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Apr 05, 2024 10:52:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Apr 05, 2024 10:52:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) completed! +Apr 05, 2024 10:52:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Apr 05, 2024 10:52:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Apr 05, 2024 10:52:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Apr 05, 2024 2:38:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Apr 05, 2024 2:38:03 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:23 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) completed! -Apr 05, 2024 2:38:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Apr 05, 2024 2:38:04 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Apr 05, 2024 10:52:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Apr 05, 2024 2:38:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Apr 05, 2024 10:52:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Apr 05, 2024 10:52:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! +Apr 05, 2024 10:52:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... +Apr 05, 2024 10:52:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... +Apr 05, 2024 10:52:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Apr 05, 2024 2:38:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Apr 05, 2024 2:38:05 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) completed! -Apr 05, 2024 2:38:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [41/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Apr 05, 2024 2:38:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Apr 05, 2024 2:38:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Apr 05, 2024 10:52:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Apr 05, 2024 10:52:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Apr 05, 2024 2:38:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Apr 05, 2024 2:38:05 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) completed! -Apr 05, 2024 2:38:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Apr 05, 2024 2:38:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Apr 05, 2024 2:38:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Apr 05, 2024 2:38:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Apr 05, 2024 2:38:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! -Apr 05, 2024 2:38:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Apr 05, 2024 2:38:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Apr 05, 2024 2:38:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Apr 05, 2024 2:38:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Apr 05, 2024 2:38:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) completed! -Apr 05, 2024 2:38:07 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [44/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Apr 05, 2024 2:38:07 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Apr 05, 2024 2:38:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Apr 05, 2024 2:38:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... +Apr 05, 2024 10:52:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) completed! +Apr 05, 2024 10:52:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Apr 05, 2024 10:52:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Apr 05, 2024 10:52:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Apr 05, 2024 2:38:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Apr 05, 2024 2:38:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) completed! -Apr 05, 2024 2:38:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Apr 05, 2024 2:38:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Apr 05, 2024 2:38:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Apr 05, 2024 2:38:09 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) completed! -Apr 05, 2024 2:38:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [46/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Apr 05, 2024 2:38:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Apr 05, 2024 2:38:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [46/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Apr 05, 2024 10:52:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Apr 05, 2024 10:52:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Apr 05, 2024 2:38:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Apr 05, 2024 2:38:09 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) completed! -Apr 05, 2024 2:38:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Apr 05, 2024 2:38:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) completed! -Apr 05, 2024 2:38:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Apr 05, 2024 10:52:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Apr 05, 2024 10:52:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) completed! -Apr 05, 2024 2:38:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [49/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Apr 05, 2024 10:52:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Apr 05, 2024 10:52:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! -Apr 05, 2024 2:38:12 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Apr 05, 2024 10:52:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Apr 05, 2024 2:38:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Apr 05, 2024 10:52:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Apr 05, 2024 10:52:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Apr 05, 2024 10:52:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Apr 05, 2024 2:38:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Apr 05, 2024 2:38:13 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) completed! -Apr 05, 2024 2:38:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Apr 05, 2024 2:38:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Apr 05, 2024 2:38:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Apr 05, 2024 2:38:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Apr 05, 2024 10:52:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Apr 05, 2024 2:38:15 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Apr 05, 2024 10:52:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! -Apr 05, 2024 2:38:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [52/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Apr 05, 2024 2:38:15 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Apr 05, 2024 10:52:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Apr 05, 2024 10:52:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) completed! +Apr 05, 2024 10:52:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Apr 05, 2024 10:52:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Apr 05, 2024 2:38:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Apr 05, 2024 2:38:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Apr 05, 2024 2:38:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) completed! -Apr 05, 2024 2:38:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Apr 05, 2024 2:38:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Apr 05, 2024 2:38:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Apr 05, 2024 2:38:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Apr 05, 2024 2:38:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) completed! -Apr 05, 2024 2:38:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Apr 05, 2024 2:38:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Apr 05, 2024 2:38:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Apr 05, 2024 10:52:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Apr 05, 2024 2:38:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Apr 05, 2024 2:38:18 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) completed! -Apr 05, 2024 2:38:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Apr 05, 2024 2:38:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Apr 05, 2024 2:38:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... +Apr 05, 2024 10:52:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Apr 05, 2024 2:38:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Apr 05, 2024 2:38:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Apr 05, 2024 2:38:19 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) completed! -Apr 05, 2024 2:38:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Apr 05, 2024 2:38:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Apr 05, 2024 2:38:19 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) completed! +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Apr 05, 2024 2:38:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! -Apr 05, 2024 2:38:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Apr 05, 2024 2:38:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Apr 05, 2024 2:38:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) completed! +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Apr 05, 2024 10:52:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Apr 05, 2024 10:52:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Apr 05, 2024 2:38:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Apr 05, 2024 2:38:20 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) completed! -Apr 05, 2024 2:38:20 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Apr 05, 2024 10:52:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Apr 05, 2024 10:52:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Apr 05, 2024 10:52:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Apr 05, 2024 10:52:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! +Apr 05, 2024 10:52:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [58/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Apr 05, 2024 2:38:20 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Apr 05, 2024 2:38:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Apr 05, 2024 2:38:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Apr 05, 2024 2:38:21 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) completed! -Apr 05, 2024 2:38:21 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Apr 05, 2024 2:38:21 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Apr 05, 2024 2:38:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Apr 05, 2024 2:38:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Apr 05, 2024 2:38:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Apr 05, 2024 2:38:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Apr 05, 2024 2:38:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) completed! -Apr 05, 2024 2:38:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Apr 05, 2024 2:38:22 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) completed! -Apr 05, 2024 2:38:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Apr 05, 2024 2:38:22 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Apr 05, 2024 10:52:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Apr 05, 2024 2:38:22 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Apr 05, 2024 10:52:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Apr 05, 2024 10:52:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) completed! +Apr 05, 2024 10:52:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Apr 05, 2024 10:52:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Apr 05, 2024 2:38:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Apr 05, 2024 2:38:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Apr 05, 2024 2:38:23 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) completed! -Apr 05, 2024 2:38:23 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [62/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Apr 05, 2024 2:38:23 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Apr 05, 2024 2:38:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Apr 05, 2024 10:52:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Apr 05, 2024 2:38:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Apr 05, 2024 2:38:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) completed! -Apr 05, 2024 2:38:25 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Apr 05, 2024 10:52:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! +Apr 05, 2024 10:52:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [63/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Apr 05, 2024 2:38:25 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Apr 05, 2024 2:38:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Apr 05, 2024 2:38:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Apr 05, 2024 2:38:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Apr 05, 2024 2:38:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) completed! -Apr 05, 2024 2:38:26 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Apr 05, 2024 10:52:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) completed! +Apr 05, 2024 10:52:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [64/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Apr 05, 2024 2:38:26 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Apr 05, 2024 2:38:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Apr 05, 2024 2:38:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! -Apr 05, 2024 2:38:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Apr 05, 2024 2:38:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Apr 05, 2024 2:38:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Apr 05, 2024 10:52:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Apr 05, 2024 10:52:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) completed! +Apr 05, 2024 10:52:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Apr 05, 2024 10:52:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... +Apr 05, 2024 10:52:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Apr 05, 2024 10:52:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) completed! -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Apr 05, 2024 10:52:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Apr 05, 2024 10:52:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Apr 05, 2024 10:52:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Apr 05, 2024 10:52:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! +Apr 05, 2024 10:52:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [67/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Apr 05, 2024 10:52:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) completed! -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [68/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Apr 05, 2024 2:38:29 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Apr 05, 2024 2:38:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Apr 05, 2024 2:38:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Apr 05, 2024 2:38:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) completed! -Apr 05, 2024 2:38:31 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Apr 05, 2024 10:52:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) completed! +Apr 05, 2024 10:52:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [69/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Apr 05, 2024 10:52:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:52:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Apr 05, 2024 10:52:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) completed! +Apr 05, 2024 10:52:52 AM reposense.report.ReportGenerator analyzeRepos INFO: [70/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) completed! -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Apr 05, 2024 10:52:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [71/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Apr 05, 2024 2:38:32 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! +Apr 05, 2024 10:52:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [71/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Apr 05, 2024 10:52:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Apr 05, 2024 2:38:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Apr 05, 2024 2:38:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Apr 05, 2024 2:38:35 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) completed! -Apr 05, 2024 2:38:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Apr 05, 2024 2:38:35 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Apr 05, 2024 10:52:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Apr 05, 2024 2:38:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Apr 05, 2024 2:38:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Apr 05, 2024 2:38:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Apr 05, 2024 2:38:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! -Apr 05, 2024 2:38:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Apr 05, 2024 2:38:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Apr 05, 2024 2:38:36 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Apr 05, 2024 10:52:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Apr 05, 2024 10:52:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! +Apr 05, 2024 10:52:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Apr 05, 2024 10:52:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Apr 05, 2024 2:38:36 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Apr 05, 2024 10:52:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Apr 05, 2024 10:52:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) completed! -Apr 05, 2024 2:38:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [75/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Apr 05, 2024 2:38:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Apr 05, 2024 2:38:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Apr 05, 2024 2:38:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Apr 05, 2024 2:38:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) completed! -Apr 05, 2024 2:38:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Apr 05, 2024 2:38:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Apr 05, 2024 2:38:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Apr 05, 2024 10:52:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Apr 05, 2024 10:52:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Apr 05, 2024 2:38:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:52:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Apr 05, 2024 2:38:39 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:52:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) completed! -Apr 05, 2024 2:38:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Apr 05, 2024 2:38:39 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:52:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [75/92] Analyzing https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Apr 05, 2024 10:52:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:52:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Apr 05, 2024 2:38:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:52:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... +Apr 05, 2024 10:52:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... +Apr 05, 2024 10:52:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) completed! +Apr 05, 2024 10:52:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... +Apr 05, 2024 10:52:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:52:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... +Apr 05, 2024 10:52:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Apr 05, 2024 2:38:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Apr 05, 2024 2:38:41 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) completed! -Apr 05, 2024 2:38:41 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:53:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Apr 05, 2024 10:53:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:53:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Apr 05, 2024 10:53:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Apr 05, 2024 10:53:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Apr 05, 2024 10:53:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! +Apr 05, 2024 10:53:01 AM reposense.report.ReportGenerator analyzeRepos INFO: [78/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Apr 05, 2024 2:38:41 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Apr 05, 2024 2:38:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Apr 05, 2024 2:38:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Apr 05, 2024 2:38:41 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) completed! -Apr 05, 2024 2:38:41 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:53:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [79/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Apr 05, 2024 2:38:41 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Apr 05, 2024 2:38:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Apr 05, 2024 2:38:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Apr 05, 2024 2:38:42 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Apr 05, 2024 10:53:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) completed! -Apr 05, 2024 2:38:42 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:53:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [80/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Apr 05, 2024 2:38:42 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Apr 05, 2024 2:38:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Apr 05, 2024 2:38:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Apr 05, 2024 2:38:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) completed! -Apr 05, 2024 2:38:44 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:53:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Apr 05, 2024 10:53:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) completed! +Apr 05, 2024 10:53:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Apr 05, 2024 2:38:44 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Apr 05, 2024 2:38:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Apr 05, 2024 2:38:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Apr 05, 2024 2:38:45 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! -Apr 05, 2024 2:38:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [82/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Apr 05, 2024 2:38:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Apr 05, 2024 2:38:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Apr 05, 2024 2:38:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Apr 05, 2024 2:38:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Apr 05, 2024 2:38:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Apr 05, 2024 2:38:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) completed! -Apr 05, 2024 2:38:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Apr 05, 2024 2:38:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) completed! -Apr 05, 2024 2:38:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Apr 05, 2024 2:38:46 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Apr 05, 2024 10:53:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Apr 05, 2024 2:38:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Apr 05, 2024 2:38:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... +Apr 05, 2024 10:53:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... +Apr 05, 2024 10:53:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) completed! +Apr 05, 2024 10:53:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [83/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Apr 05, 2024 10:53:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:53:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Apr 05, 2024 10:53:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Apr 05, 2024 2:38:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Apr 05, 2024 2:38:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Apr 05, 2024 10:53:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Apr 05, 2024 2:38:47 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Apr 05, 2024 10:53:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) completed! -Apr 05, 2024 2:38:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Apr 05, 2024 2:38:47 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) completed! +Apr 05, 2024 10:53:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Apr 05, 2024 10:53:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Apr 05, 2024 10:53:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Apr 05, 2024 10:53:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Apr 05, 2024 2:38:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Apr 05, 2024 2:38:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) completed! -Apr 05, 2024 2:38:47 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:53:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Apr 05, 2024 10:53:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Apr 05, 2024 10:53:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) completed! +Apr 05, 2024 10:53:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [86/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Apr 05, 2024 2:38:47 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:53:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Apr 05, 2024 10:53:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Apr 05, 2024 2:38:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Apr 05, 2024 2:38:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Apr 05, 2024 2:38:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) completed! -Apr 05, 2024 2:38:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Apr 05, 2024 2:38:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Apr 05, 2024 2:38:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Apr 05, 2024 10:53:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) completed! +Apr 05, 2024 10:53:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Apr 05, 2024 10:53:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:53:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Apr 05, 2024 10:53:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Apr 05, 2024 2:38:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Apr 05, 2024 10:53:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Apr 05, 2024 2:38:50 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) completed! -Apr 05, 2024 2:38:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Apr 05, 2024 2:38:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Apr 05, 2024 2:38:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Apr 05, 2024 2:38:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Apr 05, 2024 2:38:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! -Apr 05, 2024 2:38:51 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:53:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Apr 05, 2024 10:53:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Apr 05, 2024 10:53:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. +Apr 05, 2024 10:53:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Apr 05, 2024 10:53:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! +Apr 05, 2024 10:53:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) completed! -Apr 05, 2024 2:38:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [90/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Apr 05, 2024 10:53:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) completed! -Apr 05, 2024 2:38:52 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [90/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... +Apr 05, 2024 10:53:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) completed! +Apr 05, 2024 10:53:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... +Apr 05, 2024 10:53:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Apr 05, 2024 2:38:52 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Apr 05, 2024 2:38:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Apr 05, 2024 2:38:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Apr 05, 2024 2:38:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! -Apr 05, 2024 2:38:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Apr 05, 2024 2:38:54 AM reposense.report.ReportGenerator analyzeRepos +Apr 05, 2024 10:53:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Apr 05, 2024 10:53:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Apr 05, 2024 10:53:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! +Apr 05, 2024 10:53:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [92/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Apr 05, 2024 2:38:54 AM reposense.report.ReportGenerator updateRepoConfig +Apr 05, 2024 10:53:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Apr 05, 2024 2:38:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Apr 05, 2024 10:53:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Apr 05, 2024 2:38:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... +Apr 05, 2024 10:53:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Apr 05, 2024 2:38:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) completed! -Apr 05, 2024 2:38:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Apr 05, 2024 2:38:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) completed! +Apr 05, 2024 10:53:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Apr 05, 2024 2:38:55 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) completed! -Apr 05, 2024 2:38:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Apr 05, 2024 2:38:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Apr 05, 2024 2:38:56 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) completed! -Apr 05, 2024 2:38:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Apr 05, 2024 10:53:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Apr 05, 2024 2:38:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Apr 05, 2024 10:53:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Apr 05, 2024 2:38:57 AM reposense.report.ReportGenerator analyzeRepo +Apr 05, 2024 10:53:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) completed! -Apr 05, 2024 2:38:57 AM reposense.report.ReportGenerator generateReposReport +Apr 05, 2024 10:53:17 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Apr 05, 2024 2:39:00 AM reposense.RepoSense main -INFO: Elapsed processing time: 2 minute(s) 8.24 second(s) +Apr 05, 2024 10:53:20 AM reposense.RepoSense main +INFO: Elapsed processing time: 2 minute(s) 9.86 second(s) diff --git a/summary.json b/summary.json index 5caae5c5..369acbbd 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"b139a954a4","reportGeneratedTime":"Fri Apr 5 10:36:52 2024 UTC+08:00","reportGenerationTime":" 2 minute(s) 5.45 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-F12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-1_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":[],"sinceDate":"2024-02-23","untilDate":"2024-04-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"}}} +{"repoSenseVersion":"b139a954a4","reportGeneratedTime":"Fri Apr 5 18:51:11 2024 UTC+08:00","reportGenerationTime":" 2 minute(s) 7.06 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-F12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-1_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":[],"sinceDate":"2024-02-23","untilDate":"2024-04-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"}}}

UWcBVbZ+I$*E8!Sl_VWs6!iL-BCOTq@xI=VS7N|xapE&DPPbyXyDQ`zW ztIozx0s6~BqG+P*<;V%zY8NFEx2CB|8W1E_fG~v}h-w`>$v>A)eOGg~PsGlxRNChyU^)_Wkg=3L z&Em1id)`3BzfktJZMl;7>S4Q)F6nJWrBbKT_ zAl&0~Ighrne!VNE(!pK9?47Ap!%Ng3D+7El9T*@D4)gdZ5px&&m?W7#O`|=f>o~C| zJU_Xy7;htwWurSLq`@=b1~~f^4P5%8tB=2bT}*TXCx;SOLgy*csgunSNtvEuFVB}j z>SKEIbwO8Oc(HD>9_iw0LnZiLX>BWN&Fbk>uFP53W545#73uU>`sB>Cd9C9npt&YS zedWxZvNu!8X;+3$>__?l!;gSJVvzaCQXl6=`iwkEMlbrK`dfyDy|3RYN5;C&LCtAq&f1pAH-WdP$2v(MR|)-mrjnoFIval|rMjX(}mOad)q_slWn%*Kd`l zsCsfjp)o$pt#k42B_>nHMEN7y6cfjlBegAPA0SE)QJ&~!#t)tu!qm68G}y{kIU*P921r$`L!Itgr^?xTg&U9*deZ7a zGO$J>qmEMbA6}ol1-%-&A+;o%D`JL~b<`7YH;tvD$ab{1CZ9+;i=*XqMq|o<2OK-p zPC9dpt)=-!b4M(l1aZk}MC*(VMPTiqe>!X0DE(up%0Da@Sb{j~Xxx0tk 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 z%0A@JULPNx96Wz__@{%@gTwRV(^{PJ_wR}NJ=5XJrU*X4>IQBVwL7^51-G8PNWmslV64;0|oz6eOh{ie& zqNG_BPv5?sg+)RSD?Kn;6KOQmLDFhY+_cSS)0+xhHeIOKn^M0^*z7KpTIg7`8b+Zu z&mtS=YJI97?j+gg@pL_b!AVBLc}uv_z?7;%s2_q*N`!%~g@f#3`1I|qv0tY*Iu@+9 zoch;%nSW$zfTj%3?4}%}e>DC*&v}oy(NuFe4DJYjuUvly^tv}RFhlj9*_|d8IyJEW zM?aeXxusWoBeADwmR@IOMr+@IX0FpomaG?W4DC;*=|wgzL=(wznz$hq8ARh&W*`f- ziRTmPl+rV*YyEG|31AL{hn$>qUGE?MzgyeOjeliGKqY2Mh-9yRw5Rjgd*Kvu9$ZZk zuhNfMlBMITriA7=!j7xPfNLb7#9ZG_tHhwqExUk6(w(H*m0H)Tt$B5`P$x?L2!cto zo1x@(B?rLo-ffBo)4Q$3`5Tma3x&*%gXgdRbnx=ci{sOi!*?%Vy?gWWNGa{ZSEt9D z_7Ls)|9 z6C2YZSep)DqCRlkmMVck{8$%XDs+4Sw-`)Chp0IcbfQ1Zga~><$7d+ZEZjPSeFK`iY(Ghh|ml>D@Gsnb7G%$0fQ-NETV;@CyN6Bt8o*22CMRSai5Vg_Y|ACPxQS2+laUNM8^p*Eso7 zkQ@tp(Gy6H48stFw0ki=$Uq8tNSj>2uS1X=3u+Muk|Sd&1WO)8xekzf&+k- zHJkkJw_gAOvKpwW29#{>Fo`3R6uSCVU0wCnSHs&8=xTg@LE}ip_j-fI^-x~V`RGCH z2~>H#zM*l?4tdbH*NTaK@w>yuxw(`(o)5UYXwUBnF=xfuM*o0%1uIT(;5o||4Pcmi zosI48gDR-A`+6FRcrM1T6@Pj|HPbcn+Y15IL)4}(HA92j-ijdrGF}pw^#mPp-TG-NEk}{S)pr+_=`x|kv-0?5LGo}-AuUa28PA; zv2HfkOYrV&>%ICK(uG|V3c=_l`6x5~?P~|_6!EBVuANw}Wstresf zSO|Qj{6g3IfxAOJmD<;jo4M!z{v+D`*U|2O|7iao{P^fUx_=iu7M8~r_@%0`w;`%R ze$4)7^2_eV508K0>`)kc#}@eF^o>*C7v&GEfhC@ME;+Z%Pcz1^-krTUy0|zwE5+XW z-Z;H_uYXvKK0a9Q=8q3L3)*a7P+)LgADz+TPwdPOKS+JV>j&fLEn!e7tc-ivGS0}2 zmVc7k=`WqF!+-te9Ba09yIri=V9f{met>aw6cMUhXfR`4MPc9@Spu~#gMxJE@Kq^A`P0T&>)E<6VdEW<+tQw z)_S1=_Zf^`>k^GV0-PH}h5agT044g%{+-cVj@@60p?@}UC4>44LjZ3^rker6zD#8nHc%Fbu7janGwBs# zNyBn5^|2m`>aG#gkWA%5H-H4~cKKN+L{w|ev45`0uhRR#ROxHaP_?c~(V7>|hnu~? zn%JRPpo% z7#h3d{sXtevwG?GAL~a|$7<UzpI8Cv3$B!-{+{xSa2F!Wku|Fs1nqO$Gp_Q z;L~mq6zF!_ma|7%$Qlf$RlB|-h{8-|DOE=iEl>&=*V-+`FM&vM!RR&&V&!!Ew2Hg2 zI?gm@=|%#KYxOWiU{DlMBhnjSXf}>37Jmk}cB*zfsk^a&>Btrs|JuJ}4hF+g0%IFV zY)yr4y00%{9cl~oYQUh{?tNog|HqHE{g)P>WHo3_sIk1U#Kp*jOn>eQ$$>H+GL@QA z@(uCE>f6#>{euYgml}-l{d%(Zct5H#Yb0<}Dt^qs@2|ck~EfP-F60Q+DjQ#YSp=Ifd==sp0 z_UHE$YJbiPwSO;)+>~#&UK9&9`Lkivb2exh&waDV9Js&JoS!Lf2I_Ia+mYX58ZrRU}k_gPAa(GKr2Ti^bj9$H7s z_jFqg_xab=waZcNfAxRn=J&I&c*wtyn(@Tk`P958Mhgu4g|+j^DNP$YU&jr6cRo2k ziMjKsIZD9J?+lGNT4w1S#?I#?9o2Wfe-19lov;4S+xgrqp_1B!g}4nl2|bLRPtDC? zw7@W4czKn)faTieFQQ_Vd+&WtVhU&PbMi?xjegx@P9OUZKsp-YM<7)w@wyD-oa>$< z_CJtW$H~2@?SC)qd&o(@;HUwjwxM@~l}6E^M5`uKd+>R4$w{TC%_TF3CgkK#e=uf| znkfN}@t?3G4Em`;PBKMpggtVFLQZ}KJ<=Ldb0rwdg>UnGNfqX2J7~|^EIvqH0FxSW zcFz5nLDYN*dPh7mA)0eqMK^uQ+nrT6C*45AiULgk}uU?iw zN6)GKx#YLB)7nLF=@!ZFKDSMFX<7BU*e=}y-OnA53cshfzyZi(PeZ6VzDb2;$8=8` z3m(6@iV#ehEfU-d@AOrgzwdMKrl$AwtuK*fvY%8e*>%Y?5S=2j%mhhxkCu*fa{q0)(# z|8swo$o=rkkBz?tKeknIb#7HuNpZ41LKg~$if&#>OGK#ydT|F-@o)N5vD%Dt{-Y~q zJBSL@KryOrq6=j+s&1kSRP1MD)_uX zmZjUITl46W&gumg+SDD_t@l-C6J3>Ay-I)8Q87-nsu5SAO?35Sy8Zeq*EnWX2F9xj zLjH35CU+IvM3+G3Y;tr73@eJpFZUWT#t!Fy9R)&w=abt52QlVpdw=kQsTY?LF7yE7% zC$pAAHGICiKiQoC3_?SUF6N+a^9Z?~3kORbyI4h>M6OdHqhjs1J~tcqmok5fU3X^( z){PNFi@P#3_1P*R<522CL;*6RZUOB9A9yf8jp9;in-OHEjtyd!1~JzW|LRR`zfJAX z>A!T4SHeSqwh@{&ex$xC1yF0dM=>zKFB!l&WiOz}h9`0BT zMWJ2h538%-PT8%8ov3A?KUn2PU*V`wE&ZujedV#ju^PwE)#z*<9hraa-_?i?-1g#X zB!z704kc80mi| zb+$>-S9YbSl4l#vfsubc%ak8s^zlKtEIvNiSzjt@IVW^a0y>)PUMVFb4asIJ@0=}?ug#gzlY=z-I4Za+jB78 z@z={9p+A)viX1v8g<@!{*T)C%Yr6!_O|hSCCZMRai6W49=)8Xj4uV-MTg!taU0k!W zQHTyrT1J6NA(;Ko!Okz7rR6N34-bDg=Dl@F@I{Zy=t&C%CrC#D1Auh$_5 z(|%u&e|!Rod^LZ{vT8Z#fPb`yl5TUL9FX*`v>$UO_~j^yL&sJS71VDvdzAWWm`_nGYBH|1z|-#`F; ziYDkeYDUTqscRxu)C`>+(z*cMkM}`yx}Qo38}u19L+5{ulb#%$oyDFyUZN1LHZ0kVw-r-_|Us}2fb5C=!Xg_QH1`~ z;q3@iPDt%g@y6$q(nYA;f$mm^vnNnlAHyVk^bXG7=Y_V;#5~GA|L$U2T*}A&XSgtz z`}sXZyqtgH^vZAvJfFyK*~x7QG(lyyYz;qUdI6IHPfo$8M3-$bs3^IO?rbQEEC`hd zvx{vLXoARf*$6oqrO|~;1sdg)h+~Cxf{zc3ka;jwxZ3Em&=~;wIO39gxtT-zElCHJ z)?tquAx`3+wjoMkLhbO%L_u*5GyCp9hg*gL3Soaj%`od=n(&8JdS(2>{FTwyA((xk zcKF1;W*$pdsOe}YA|4Wf&F$L=j#vTcTZme_u57;%k}$0^8t=a*FVsrEC3&~CAg5X# zlCmA@4nrAn*{GrBIeG}|ymhzAP)m%JLex9-1{ey*W2NxRefw0pf$l1PRlgl>U*&U@ zmXd$G)lB1Tx{`KNd==!H4noUI7n51QrF{MTbFl4*v_>hr$O|MVvu;B9(sz`n=Fg@} zY&1HvN12&x>ll0ZpL(n{dA|;k(?#yT&;r!T(6>-dc|86GrdG*gIMv*3_fg>mU7G_E zp#O?4P%FI_bb=nkt5{2fM_bB{@bGIILflaWy8)H+Pnmy* zJArIFnOPU1{+jl#NMU9>Yv*nozBHV`rH+Tn6#z94hAyO>3-ijt=i6*^k=YV!D05m;kqeTQ8!` zXpFd=MftRdJA?R&0FA!A65?E%2df@DxGI05SK2~@#hYy(S#@XCUPtBz)Mrk)^o9ub zewS|PK^%X&`C`Yd1~ex)?z852o!d%owxU~?EevdjL8$-G_;OYS2~bnDF}OUc&XQ>v zg-NsEHZE?0C`s%NryuZm_6rV1o5|8+dpfF)f}OgK-l;3koy{G;v$>v}^>3VG;_EdF znkrxiQiwYpd$q&E0pso2)kin3W+OA^cC_s{SL1(c$CaTgs6I3L2v9Jvnx<=kEZ1jfmW7qjI0qK@e02Ttf;Q(DsaTqLKVnyOrWAoAxjb(I9_D;zR!c3{VroVEs;1 zg42Hln2D=sl@#TjTGb&g4<9+u+FQ3W)%VI}NY(0u}96AXSs zCor6dfYcr6v(nwXj{+qen@$1X+ytZmgcH;)0MoYQ9Hwp|n1&+vFolI+sM^iLbdVb@ zoC1LqZ0np;qE+_)=;MQr4?0Bxf)q@Q3UGhqD|sx|3ndJ;0*6N&6K-V?$_R93MU7}U zsMt>12?Cyh4D5`;8@zkS@3*o>ov}ephDqAy%m%vBMr}5j7c_K@4aRf~LwrT#g)zpI zoDTg1Z#oz>j?A0uQ-3~2=fHXKF*^Ceu-n;A$J)mvr(}KLbX&1N(+pB;kL%ns@9Te@ z`_Vp?JKaykZf!d?`3HQV6WOqKb4>G7{u6!lV zy`@I9awFE}sVa_9ny>1fu0FIdpdEt(P1LtyRnfgY5bm^{4)J6#t+g}Ylqtpy#%=_M z%UkXX^LLE80(#4Kd+RM?=YnnrANqfjwz?<-551sH&Zlxhb@l8JHB3me{b$uct@N8!12llu z7i}k$3%2l_0#VvLo-7a8Wm?>nKGZz8iM|MPIF;U1dUW|YsBzk*x==^pOk95{+-(pA zw<7v1G6f!s(}g-aHLzd7k}gGYE5srwZqrI?hKPMsCwI;YsCw{aYU2D{j(h3WF1`Oc zli{3SwB|V(d=S*wib^R+q(x3qnA9|_q(yE-+I}z8G%e5fa+J6q%c=KMPc<^_A zaFrxsB!8Ywz;p=y7{glx`E^#-GqP`K~!cX7{ym*d6#STrb;aWI7YR2@V- z8R8Nqs-latHQJB?Hr{8TqBf3;yvWkU^^gZfxZek4$~j#qP`P?IpU)`7)m7X+j(TFr z3vsCO&4Y(@;-~=*cS8WLi>5fI9yyNYdZ`uE@_b*Ng`+(Is1%`~^v8KbP$7K_!3s zW6>n*9<~{pG`%mf$&ggiQ6BZHT$nh;T*zOV=^(~*l^5yUTK-xd%_J{RViC=h5nffs zR`1`Xt1L)w7YtdMpdqW=OKw0VAPQo)Q^6?tc-?S7ZuW2(a`x~Z*xAEhgPuL);>f#7 z1GcY<5Ly*XEM)nz#R%0ZR)q)=<_Ui!1s6=dA%)&WN(_uC0?Of;b7SSu+gQngF*`sx zJeg>$99EAgNpL0xC<{~BZOCF(nUbYEuF0{BkOf%Zmc?jOC5k0@V~h#~2C>on8Vj#P zs4y$7Qh*SUkb_bO1hS`!k_Kt&K_kLMoma9TN|(0G$AESmin-pC;kijLqvn6LMldrm zq|b*FCee&FoqumcGd)H{e@)hBKpdi)8>r-|Q@p-OqamauQJJ)oMwiI~3^Eb`lSY=z zuX1ULmFTKn>V|Ak1@2&cg+K+gCYt0Vc5>)Q5GuViy#YSRte=vkZpl0h#E%c`kQ=gW zU6s@@W+%&=Xd!h%CM7R54guM|%7 zp@+f(kR(jK!z?E26vKZb^nj`>>ui{5gVC2TmCuIW0Mk%n7gm5|VCo zUaTc5PYk_*d$pE0v@WdL98lZ$TAKqB;9jgIm<)zpIzzR9k8FRcF8Y_w_^^ooxhgZ# zR6h6bF1G0qfc$U@?zi8l=C&*pobT`jKAd7wAiv~?Q}DW5^)F5fkwrzy0Haf2xbzAi zV3U+ADtg8yuRm8`<>D#VOFn+}xAp32r(SU6VD%!!yUSc;UsOz(H_)Uy9biF{h5{Rl zuT!x!qP<)#<;j04C9taYr2L43v>r@KE8N?(c$KaeGan%->XQC+iURC*b=S=%~J&>DN;Fq`6?4;E^EX-at?Ke zW;4O)5-BV8Q6L4=y;7K#av^B|j>zV@#^RS5yB3wRZPNumq_;v|BzE-YnV6^2#8$r= zRXtK;MDKqJ<@8wd9e>ksu08A?Zq11-zDCnRAuP&FWt*LF8z+gvPv~xm8KY(bsjLBA znb0!o~KW6Rb;y6g9FNV{-bgzD(a&mJyuv3PCh>zd+tmMZ$Nv><{68elP+xCoAv!A zZ(*5;=A(z>XmR&O0Sro^Uc6|Wha4HHO1jHG2{bXNZvu`=_q^BP$aMQ&Kbp<*n(Ztt z*K)VhH!d8j?jp%q+s5;i)G_APC|A<#PTGIT+OSyo$VAtFbY%j^q`Q^Lmo(P35^73B z&Id<@z`<#%3Q>(ST(}(drNX$C4mB;a`pxA!C~h+4m=L#t)1Sq$!QiNNhdgv;1xKvA zhP!K1T2YA$Phagj1?4YEXcLW8!O zHLIEZp_7f$4iYs~b&6ev27{&a7%P@V&3 zxBKf?xcE%3Rw7)9rmxY2i_P?GCBh|Ux~xPM9x_HE;D)=((z%DR0#~LX-r|3IFaqIP zHa#0naOE1L(PYAOwadGi7>+uGi`r1{@3wsg6o}1i+Rz?$Kq^64Bf-&O!_CmE($cm;Gmz58)9#Z#p|F5$HP{F6x6h)5}JWGGVmwS`5}u zaJifZy6VwO|FF~_T)w9_urteI1I`qm6-L#Lj6tNRI0jgos;5{8T(}+f4ibYQ50T4g z`dRs+_1U4F)IlBdQtI?3_Jwhtm!9@PDSxd-Ran@3!9J?>*cDdh(tzMM`x$c`ajuaN z$Yw1DCn;q3Tc)FePjAbJlrrMEj7XUuwPoZ*ya36;_3*Q47a$?H4toOW0@UpN_~mJ} zeHf4Dc(wR+3y=h?fFw+|u;ruSl`*1aD{L<*6zKxgE+-1fSW~1F1;*n!7rbrvntz_% z?YBz`hV8lL7eDI3n9_$}osnTXMaa`LMz8O~SsKF{TjZn$k5iJKcEF-$fLiX$sKWCz zKA)!H`h>jK|-H_uWwvhnBpu>s<;r4b^%jwu*Dr0%1!EdG6vHzdt&(rnX zyrwW`G{835rlS5AV30Fp+!i>sfuOzuvaGr-72(QMc zKRx8x?yQ7^9&LD5(t(F9&rUSpv~@p81djSRxYLk%oxg|Ffsm9tfO!6o<$vRj(=8&a z^;1>5JmRV~YssE7&h^{jvZ|4+^h9fgEeZH+cmL_`{&rzY-vaFnkVj2v>>5!mT6grW8#cjLILPOw<`ms&D2t|Msp~+TPh0SMhdKWwJ+A z;>1Iz9pr2QRhF@(?7V9hD1W-J!BF7bOM&<*zdy@^vz6@ZT&zD}fQxvSnU;7qC%}#w zdi%;(a&?YAK6tlYq`Gnov`Uv|aejQ@zT`Nk4GuMsYOgsTjj2P6cq~${ADB98-n!j| zO8h;m_TJK`2@hvwPE)pVtIF5BMmj2Aq>5N$W_0#aOtmQGC4rGcMt>5Ke#4~Lx6N8z zj&WSfy@hwOR#?c%qclE$rBpYDbeurh~_4dr?$uh!w3 z4zePyp%=O0)ioqAQG%^{6{mitR%y6h6_m(R3^E!f>2*9EFQY6M+4#Nw--ot!;_M-j zxVT%G8oQ#F3&*Jl%36jg%-X{Dcx3+eU7CKT?;nh{)YA5uh-U8=$(@%B9G1|wgWC%8 z>+^)3sN&YYJ`w0^U9oszu1|y=#VnN*nbvZ;6nNjDuqHmZB`AgD*RKE9Rx?ClO5Y>isY8v<#lTwju%PyEn z)6VU{a7u|W=Q=zX@PjcHThpX&Sg3A~fZImo7cFd*IW=20IC=B_;_si%PTm}y{ke>O zC|JJvc=Yi>n~T7#;{9jaLNY1Xtb}$O|KrEtT7MK~#Hx%Aju(Xt`>1)tYgva(PZ;!z1;xI&kEC93|pw@OP2k$cfp}U(#oQ{N(W2W&7;|BmaG}0Hi=$zbycl?$R;I--&DyPet(e)z&OO ze?ECOdG_RRYnCs~@7%4trx}L5aHjcnnx%4<4}x=%$>~nhMeu!;$=>E_zMt)ehphRA zF*D@(K3QBRan77_I{Rk(lpo(jS&|lo2;L>}7ZHDF>GsqgOv3%i;lb9_Ps`u+pL$Hh zrF-hbFgQ{b(9_`0aawNjXOHEihoKx#-lU^~Hl36H{^l-^r#W-dQNfnq(Ef&dfePph zzrWoAa?Y8)_c!%S`K|10xHptQ(jfcVDH;ray5D`xf;P2G`pf7`JPTgO+fyCxAB2;` z$<}{VC-F@Ej<*7bK~Ut0ethtBdrw!^+EX>*(poz}h=?uoNuKZ@;=D++JLZIQF;0#N zKh3V9MR0nVMK|$$d)6n9pG#rFtyz!Nuldh8^;B}q`Lp0c3Zmj6)lBcJnSQo=@Pu__ z!^kS~OdsEfxtwhFTyrp2EpvUA-UZ)9N%Vg?lZVS9S^(4ibn^IdxP1}J(z{Fl+2&k! zfZ2W$93?-k7AkUSXZ!GpQRD|9Z?-vS%=T=57pF;jt>>CN)i6HHA;K?o=RV9XOM*T) zA3aF$4`zM^1a3NDfJn&N6;pe&%^TyEiDJmtB``j~qszLVsv%4(mgO80`gd~7*)A$qjHdxW4eL`*9GG6sZ#85#?q%~H0zctyUCbxteT>C1ZH9N z4n1R)PKN^@emJL$@;VhG3SQT$hv+PxlE7M3g3_@%sZ>-xO>U}(w8CS+h%(Hv3N4Rz z4?f&~M(Ovau3YC@n9!t6wUBzi{9S)DRG5^a@pxPg#zRAalLyUsd%LE9hlf$HS-l)` zCza3*HCuu}%x{?Qc4SDw(lYDQTb-*D#f*sdFE7?3${0Il31~fjW^vm!ZpUhk>M+m> z^QBQ;V$Ps>RIyh{BUZ*gloPs264q!jOWK#O_0rNc3d~;_!vS-{;^b(>r@?=%f$F!r zHAYK*CGFS4%NSCuj%@|sf*KYkd-XjOVRlzEQn)(7+rWs;QsxRXQO^lE)ZpRA6D&+o zc`Kr8vG*rANk_A2S%{g@4t>KE-3tarELy?3%))Rx>P2gv{CpmAv5$J@J)#-GlI9Sk zY5el&;^fn-cV};oE-p^adcuD__9)-Q=^HQkh$sI&p(6DvS3=s+pcZkJP3w z;toU^*fjA>CO;p>Gj{fEn$E{pvLTUuohu;r^s`z*(PEJn8cjb|YVbG{nELkHngPZ( z_9N6^qNF?j5fEu;Z3qJxiKt&W0&|7(tpR>dlSEuciS9PKmO3C_&&Yp9HqMi%2I(Co z>ap&m6`&33z2s5wC$pM&ud-MyX31UfMP#|UQR+fT^5LKDjir-45)g-a|L9Co0oouc zvIeSd%cf%7ZeS>5kD3%lA$GVLEY(8;x@T{`Z%)q7kG?D!BQM7dsA zH0I4iy*@rDmtJIMz^;F@-0)9d3PX@B)D?anJ=FRS%eEocL^I|^#d4Dh5 z32tvhCd%(L={!C%2Alzv+YyEz`#OOi&se5THjx z5pICt_2Fo77?#-STa`D_yvSBlwcJWT^p=9Nu;_JBX8Xm2tK(q^W0$aWJr9Em+uQlJ zW-QVhgEUy>g1&)a(A)qUn4#62`^j2sdAiD`i0Vp! zG)$j#b1Rwl6>Cy;1LOoZU?^MPI|~M@^|-TO3|XHIFf`D&)y&YF$N`Lx`}_6_aduvQggep2Y?8)-$R$- ze3oyX66U+~!vF?Cb#;W^3@0}BDEQXKzCqWMrA3nWz+3f4w7An*f0{$7$mD%cj`No| zO(Hdxu`hNsKOAy<49LhFfyxKNttqixokh4 zDK%{m_YHro*@c6GgBnb|X>8`Q$PhR{Bfx>eIP_tp))4Vw7>0#DLo^_vWqKH0XQ*XH zw;4*gL;1t;DVEOMVx=wZee5xyZU|r0&cSFeSa6mWZq;6JI}9z^#7dQnwcEPF8d^V9 z@2~(WOo!h_NywTIj3{T1_ugLdUS@><@uOX4FGYV5#YtY?fYyB;%kRxc56Ag3i4`9E zqkR3`l?C1_)@uz}vO3WPKhwBm zj6Z)Tvb% zAx0f80*<~Nbh3WKjWSdnqiaN^MQ?zin>betxHNa?6+@%S)jgr>PN98Dk?|-oTuHFZ ztoR50b^%xYCS_unLD;K`G;ksC9ycXi1pK#n z(U(92LLGlIlio7gv{rY5CW@Iem`ppd!q5f^QVWQ!J_E&`NU@vXW{%igqf^z!$&V|r zkd^pUe(zdjMqc@s(WYI*5s_(oTD`gux33#fQ{`E;nxwIWcWMh~r#2fLk(oxTG9|Z1 z)yf@m4gk0!I?jZwMov{`H$Ro4al*`S<#bP*5(a-|!d2AKMrGA;dM6#F)%y-zItrur zi5G^8qPtr_bb^qzr21D+Tk=R(vI*qB3axrql9DQ3a=04;cuAk^GuJ~g*>Vgbb!U5+ z6gnDvy0a-vUfotxd69`|K0Z#9M4kd^=BBH5wu_;PAwLwuThM31ic=5*D>_P$_nE3o zQQUvgCBd*CkROUF2{TMWid&|h`Oo=8>^(D}bBWjqN~^8;S3;c2mAGmj3H9%`2*2qZ zp?l|o@0t9Z%LU&v^*Ngho>FjYP%d~1neUKX@F;S1x>PHc zGXP_UA~a|rjB)moqQkbb(@LJGzBtUi7XyElW(uN`FZ0n(&(BZae*fv!>B;MtpGt6* z@u`$9gO3kt1&I~j@&DxVAtIS69LzkFy?+iv;E+O>#wJDiCk!pXE>A!Dxz^d}v7wtQ4_FLy%FvC{3{#b=o6V$%5 z-6x}5Yu_|)bWIC3Wyxz=sx!MLUiDrVv-9>j&dF}V3u}*3B`W&dWu=Bu*j05Nu-c8) z3C}VzNhH#`O})3vMwwP7i6L6Is`qW#D$~p)kwWWMt0h^s>|tx7DWj{_tqOlC+h&`a ztfZz=h?0Y&OpxUoOq`4-^;%=Va|&-|uW3!yU|2!a%p4_2DHp?nhO?Q-M9R(?XX-=U zNpnn;6V5f!(Nxil-g%WqbUqcUlQ{M;oKn$$mK%RxNnOaK+_l_nmJzqE4IxkaF;p~exs z7QxiC;EO;h4YG9}uf?dMQ3}Y%Jfh*uAcrg)r}J8pvb+X=NSFwt&7-=KsH~~cC6V*+ z=B5)hkCL@Owx}pho^bp4peQc8t~-k8zP|Zu^HVsl#q$hCku7^U+>})6S=t zkq1H=e|&{=j6h3*K1P)IupOhph$hO|E`5a1S73&%1t%MI+ghbz)g!sYcF(!_Nt=<6 zhTBE2;@ADeJbFuT(o(B>72C9=R?)xk@fT6Eq3UY9K3=sV4CBVkbB2jx)Y4TtoHymG z(&5Y|htSF)QM(b~ToUf4sTEGUxJ+z;8O5<0mnsNC3V(M;Z6(GEiC$8)FrbYTS0ZET zDLzA;L8`lFlbv+8)U>swjk>Xt)Y7C~v!q2M(ayMKqxco+!w#o3x$b9LMXSyk1@pG< zpDqh0>RDj)6JsdSpGwhJYE{)Q;+}gS&J?<*y{|n7{cV0YrKrDENKun|^PB$J-EZ6^ zdg^%lpMP3vvumb|bUi5miejV>y(9IfRRiem85Qup?zmbPM>TW70CU6HK>oOOikedk ztnLl-)B}#hpnFmT+JD!dA_(_~wE)9?iq_Ps!1U0n0^_dKv&T{e;XbvNao1!S@%qsP z;eJ0AI^EBwXhNe5bpMPpIH|jk*9DQyY;bxzOn(v!DvPDQ#G1ZfUv&T{tlX12I4bjT zdQ%8++Dm^+5|z)=PzYrotx6~z_I4I|Y5`7Z@tCwy$et7foa)l!EO>CdH3Ju)Rh#&OlOts}VAT4ME{3Gy+5n#iP)@~jcPR3h5Ar3q_x?O*^D z6QYuLniAP_z=(9z3_8~e-&dy><7}W7+Gz@C^_&s#ycvU50+!KdtK~V0k6NgQF)`$z zQcx$iC?hAM%I&pNyZ-Lftlyo+MD8?3jem}q4$(#Qm{+%yHVm#-Wr{os8qTt|5H*oI}cSF0xpfvHyxL6JeLtcWL_h-|QU! zX6N`fI|nhw)UzPNvU5-*IZM-m2UA2jLm2l(diQxQQ=!RFNxc+1zp+Pj5KaE zMF)%Q1$)i*O5=vF&bSmA#{h5TbC(0`%w~o61SiP`zO8roR7}!gxe7|4et#(iecz!e zKIrZUn8w5V(uxfvv3MEK{zrHI8DMGhbJ5(AqQmTrQNW|qgKw8n7R_z$N^rF*R+$K< zH__r+y zj1KjrcVLOYP&bP9+?Iyg>d0?#3yRmH^k?HWUw?Tmj3K})Q3h=ens3dhpvGOghvb!h zm@Dd1MYW%|qjy?YGD3GSrA3EA+)PO+vwnWse(Qyo0SHrGbV#ROReyrF{eP`w#|8y? zW3uV$7pBHQNLWLC>0rxEl$RkuD|Apsj~vCpsMa_z)Y8UB!Dp zh-CTKcri($rsl?uSU`rDh=ZF3P$b|(P!1i7(%DpUfGTF7ZK{%%ziZ85Lsdb+kd zNeI1y?Y@pKMGF;|t64&zwb5+6SgwlkaS|^t(|D!(wxgAeihD6@WIy$Y>s*nN3= zrlV&-1tc$SZhvPd8K~%%0NRK1le6zXoW4By^x^FFI%sxN6wCa@-d=P!IhZ`oC%e;p z67C-qyM+|&@mMx{v$`C|>0Yti`;d$5`&B#>I$?D=BDjtt5RRKMMZX>^xn&`4uXV2k|p@(0^4AhK=|&M#Il5Lqo4YQSHPj3t~NCHK~++(XyJXRNMGjzksZ3-@yS{C?=*l zM7D^~Q0a0gjR_P?)8!r48bXCr=}*Pp@7f2-`FLt=0&TPDI`%>8+x3F&I5U=V4S~tSn87Kp*1j2$1SOh;n@r z=nqouFZSy%-h=NpXPgg5s|0f@t~)X^eOA3}i#s_RrZ|A|)lwcNYAf%U2HWnlj`k=X zq1r}PWkoNf-8QP9{Vnagwl_Mw==Qld_xK>11Aooo&(R#{7+tTL0~NmG?j&>+Z+jCEdnC+Egk;&n8MXSdsoVX8c&bywZ|VS0-m6+*&!gTP_r{znR+CPcy1;jm6zG*E?pJUpiielmr7$y2LWZ!+jJ0c zSA9(fLHA)di`p3SE;Wy`yTCYS>0%M|V}DkXH1q?HJW=)8_SlCKo>{)tbaXtNcnSNG#xp%#t(K$9uqV;O8z0~J zO8)-ne2d$1iN4$=5LsN|B@*=1(hI$-YBlZ(KC4YQp zb5rf&e788CW}zeeZZ)`Rtj1}@n}5KM_N`3|KeeAij_P6xY*K=u@ke|ZNVzB&7(j(GThCGn2dF;M=}UKcA?DRv9P^$;Y`r0!#lQuttU>9z z`8i80irSIwkC&^$fG0)`1b+*oX&T-2dK=}UC_5|#Vm0ia3g&*cAH!93g=+&)HyN%% z4WX8uB4DWB$dCSwp&lMX{S*w@ctW?phf-2Fny6QsXQ}ypUj6NO{WnHgzg~oRcPS6i zFDk#am9fhy1s!QEzQ}jSN4ou!FRgH6?WO`&5*=ra!m!I_JK3IWE`PSV#FD=ei`A(- z(daF6P}Pm56=>pALA))hmp;-Ipf!Lj|FgI|PUn~Mgl*@pa*hCjy9#cexx!!^Hfnbn z0Zc4w{KI$YS9%>~6j-~Z)$>B01n;A^8s<{9Jplpe^!yM%BtIcVqy@?U{VF~eg*>RQ zTiE~1X$QzaP-33h1b?m*1x0EFiXacjc&gftr(Hc~0L8c4z6fqL4T1r;SWJsZg#2Qm0{e^LQUuFHezCqxH}mD@(rFSXvjA{VWM`6L?leW7ceg;q4TNKB8Bs|jq1rDb#7BnJsFF0My#8Pf|<&FCg z2l6zPYE2$u@l5RwU9mV;s-RTA!c9%*6o<->zn;&EV@cWBNy+I^y}_V#12qvwmg$W= z;mrl!3bXkR{eVY9&r2zc>Gv|u<%x5rrfK~*x}Af@rhk{M*AhH$svqeQ8b5L=CyXB( z>F7!+Q#;iIhF()f=6V=dyIEdR-zz)eCQW7?w-@lzhyte5hYcIm=o~iq@mN(<4qNHS zv8gF2uMX5M#sH!}6;0*IT4Q8JrtP)1sUa~dj>y48Guwb(QhAeF2h*ur$#h7-U~X!7 z>}bLQ`G0uH-B0Z&=;@p+YS42%dX3Y`OY@bn^=|8k+)E)Y`vIkk0SUZfY_3I$ z24uJRgC_fG0Zz6HW8v}F_1s4b-e2Fuw|KtoH-9X!UpZ>*JNhc-X2f+1+5_s!{cs}c zYTfbC_I-Aze%<7t3elKs^{Qth*QIFBssueiet>P)@>Ow{386t!qrhto`LiEYK;hv;@@Mo>^$vV%v{sYpboY7Vr*Eu91E zOWFuyM=3z6wJ)NMC99{M(|r_ZtT#P(1qJM;Kb4r3ZxoVT#_wy&s3Xk^PG>^FyUV$< z`4$8X2({>+qVIgPr$g59RH_%mB))C#&VTkCIB;z4e$ygUputGJ^C}j}%zSv1iRhs&_`{HtM4JCd7wTBeRn;K_eczS)KG3M(d>niy zrja6WJFX&A>r#GEP?K7I$Pkrssnglc^`Pd4AZpBZYVt;%cyb9T4 zO3|lMP*tVrHqAaONRT=2batFt`8rT8wg06ZS@mHx;yPd3%*QOaykiJTNd%IDs@6AG zqpHZrXqlpxSv!!ZmtRR!XOZ6S1h+yJGLSQnB!;WO4E0r<6o#aB8ZC9ft$a1TSd@TUoUJFtD-DLyo%u=~rG*JDOULvCsw?6*!$=^S{KRY=;KY6)hSJ7@K)XjC( z3vnFawU;UfW70LGs25Qt|CCofsR4^f+86Td+&WiuRjQ}v&keJ3Jb#ah>5X|_TNRm> z!6j*L`>KphDg3*INjp)==yFvhLKE`UQc+sHWp24h%G$onxLV!Y?%r}WOH#c7=e8Q+ ziY=GVXZ4~NDi+Yg5c&~!yC2)fZQDge6r#zt)sZ8Oi#%8@gD6Q1f!8`Lo15FMuH(p~ zI}A}M?=D^GemYhinSX45+11m0ZK)82AMe23LgPRMZ0d2? z0!Y@UaPz~_0JBGhc7jrOOyB0$vGWIuj6$$89!oI+8!(;voPRa!z-~$zsLTq*5_G|Z zfLUmK6*B|wrQQc}9eOOq2t3ztpYNjVmF$MRyW|^xZ>Yk?N9$cws|6`Hlz1N%H?0Hm zTotZ@a@Fuvp0)1V1}cF{uOYSPjCqnMyBc={fMfI*etX{kjU&VA)2>U*3 zVkkx;2ss93W`F%X&q*1M>Mulr6f;0$G~1vg!<;RdZm zzhSUJh=#|rYDJOJ@nr~Q8(&d_Rn+_30d{h9nxf3=F=-Vv`9Z|jH^rzXgW4lTVEY*d z_7UQ1Gy_8YHJ(Y$4$5Rc;)z62e#&0~3UHii-?+l@$$y)}A4+w&N)q1Wkz9|!Sp5wl zrh5Bt%t0f0E&=)ej+F23Jo)f!_B_3ermyEbdk~CFh~|-J`4lLO@$Z&mvBh_(ysuYl zHo>@1do3=?BJ?GHwQ^o}R9y!#O(B6_p5bXgrwZ^gi9$33e1m>ddmt4SteZmm0B~mD zIpD2k{C~q5jaKK9g+}Srgz590GuDINgA)dj# zRd2bU@6V#@o)}*QuH&&-rGO=45BK4r;hR0|rHs`WoY@#8!7xPQ^I5kN6bj#-P{&D{ zTS|^P<2|EMd?5$M%>#|dXP!D}w0+}dV~(AZuYYmDs$3AFnbXzFabv3cBkEZ7#@@Ov zuM`iPDIV&B@{+Sd&N2x}xc>4riWkMhEh+w{M1w!-G>jd>5$i(4Q)R8!hp>JxB-(C#5EicaLpNBI5+8dG@`NMLiE`?Pv zC4W#+h`@v)7(#%GtxE`Z{+qiYP?w=$u57`hv*hF8Kz{YpXaXmIbcjtqjwWzgM@u`LHW&sj=YLq5 z!1)_^OWJB3A47TqXJ+(oNKfFr3bG-+iKgSI*$JFFfw1_{XgRimn!wo-{|f+!6FA$V z&r$WkAUb63>7ozZ$S0_T3o=4=f=-d>u6hUYSreciCk7Uj+eAYR#?c8XSy=({rXVEVtzy4ProIz2smwe1ejwo~zQ!WEW3@p=YBUFE+W1?Yre<8OjQVJCDCVhwR9g)= zUR&s~R`6B%wZvhCGG{iVh$}9^u(6Y)sy?-IaFj9K) zLAoDHN*D{wg|XQ|6KOYL{%%?Rg z@urKKm9?HO(<*1Ws9KIQU7(`sHUQPjW!`h@PJrr&B*wP8o+HOF3Wt=JV6?4fEt-1P zUqK}sRI4YLs#MNkv}qLtKYwqU1%kDQNI44IhvJcJH_H_9%v9GRp9Qz_njx&YQ!{az z=Vtp6J~_|`^X($`6H;CR=7iJ{e^MZ~aI)G3)ETuE?>g!vutSlBEJWRs}kHt|;knMUX2?x)tY;5q~E}(KcInrL9QP zYx!2X7{5HaIQjJI-PxO?i;I&pMn#1od(N*&*bJMj+TYC6v(8_?ftFt3>9GWl&-Q&GvO&*Y{D(AgYJmWBmGOW@~dYdi#}w zU5AZSr;`43iq2vM?|(@_*++r2>^__-du^F6RCJ`ciHcxm3@OEQbd_dvLuscu2P-;m zJ-RLQ+fMmNAzMzooT9`URnh8J09Y5z?CdVKm=HZ8=9;8r8R@+@_gaTAHgW%75hmC#eBk%e#|`2Yh@W z6txURizz+s#>UKj#C2ZyV)YRyen%w z&Q^NaXRAdK&wmADNXbwb#>yjuU2H7ID6c5E$;6e}(;pv{jFR#(H>*ok?N#22c5Bz7 z%QXGGn}{zWdAt|r`AXz_2M13-J}}x(RrS>Gs?@a_9YLUfBY13@+>6Y&>0KoUbvYsS zLDeytpu`?Uwv?l`qU31uj49Zqhi%-R0oIawD>pMk0)L7wra%3Ds!G8wJZvGDsXQrp zw;4b@n12J^xqNl`lbA9t>@dYf|K0P`C@N0I z=-d716n~iA0^K)dGc!sg-j7OwnJW-|E4`T33S(%M-+J*&Gkcj-E7|A1N?i8ley3^^ z&Sf5Ev1q?iZ56MxzOZBYv%7koahK`aeY}{7uj)QL>tJ1Wi+vy0BbW@M`wmg}qK%YK zx{+P6W3M*WiMEuV@5m9UT#jOn=0a+jy-86AwRiw?_@5&N! zauig6`Y)=23I{tuF3VX7QoH1BO7mxNXDEr(hw`T)H5WscfMlr$yXSHQFCMZNl{G9VAKrna`5IbjY!wJj^~hU7xBg_=Ey@;y!3P$m}O@_`RFKal~Xt@9Ac~8T81OT6!dF(uF`Xhlo7pV;w4POyisOiButYE zRVS5?N`<)Ql$9UUWzEMwOl#?}jbzz-MSnrmrD!Jj-VZFoAO6DuLBRMQ6{!^o!&yXv zKXi%kmss2~L|`hi-heoK=$8)=hoQ@w2cZJps+H`tVh6Qs*keqZ0#5*mjxf^GOR2kwKxzrp z4ACf>bXWuf-@iI?eGPb!(CezJoAABei#4} zKc^InauKR3hWV(-qD8KJmYU0Bb4WOTLNZ3fC7`;)y^5wqn%#{O`+ilga+66(eW-qc z<=P|zJm{`X61Zb{2nR_CqePX_1$4}?QKZrq zyOBnkVdt~tNRc`~R0K$eDsy?G%7d68Asr99LDHwS(VA*)>-sS~Ohk!fbAh7;B#IrV znoxSs>;MlBFyWk{WI%~MMWHhjXV5jZ>)>ZE8Ooww)IQZ!b)7q^a^9Oqm~V69rDSZ3 zddWc!Hi;dB7rp~Z#?NdIYJVf-Uy9R+fR`Q`bv-oOhc#-PD04M(CFZ&|WcnS}pmC_` zYA?m0k*r6C;nW2)z`je7*h*hZJRPMz7r%I1B49tslVvP2p#&v zZ;DBn%xG!Q_z(+VQ)f<9=0t-@bH~`Q@@<107#f3fKfoIPS(!F|vk8lS)-cc3hV#Cc zfhIx}99%i*7??-FvD7W{j$!>fWiarUjpSbK2+E@6O_#AILK}a^w*SApMpq$#a{MSe znSLv0>72nb6_FMM&dG)w?ljV5Hk;42O?V zSwi)=ZFB9$u5y2N?iRVGRiNL9AT3>`+Hj zjAp26lHLSdai}k&0WLh$eL`6yIf&;=n|2?pk#oZyO>haL-UfuDyZ8qmT%oAz;4@w@ zm8dY)gDyHxyfoYiI=?gFD0{f95n@x9c6(S$HmJe2ZO>;e(os4Azrj#IaFwIpwE|p| zs9&ux=-rxBH^>wA-Q>@ci>ZbKKYUEVfv@iaeIvj(7z4@3Z_5Wi*#XUv|}Lbdw5obq*PZPLt1Y=WLfTC_)o|v$q&BPCkIv^mWn? zhT9WAdI0V9zPar%_)%DpL9`C4;sdL=J&G*&QE)UQbsSV89VHf{nmxrxY2rrLC!i-{ z6kazNbwyt{hq{h6Vu|A5j$^$tJWON%<6%0$wX+Oq-Eple7NluhW= zGikhSUu3WvvK2}0z9(UIB#lVT-5yr4F}s7+L9a0X17Th``uL04|{b$=PF+f^m9xb@#UNi_15Zk%su7ohC!@j_)zLz%` zhf2G=P4;*9pX^Sy=YWnJy>B8g&)kUS^q10QKPNU2S}vzk04!ZTPR4&J~V?vOxd`V${{ zD5d$TV;K_VRr#TmCf7gQ7atsyzad4CC**wOEb;7r9uXgal}4G1*=QYJwZH~N`euZC z@uHGbV;mkzeWa_pTe`R^!*b0Y*Pe&b(Zg-$5giL#@8MONokY_cSlS#Y0-2 z@MZmi9JDEz=wO$;SmVa zz{dN3!vDjT2(M>+sxnwxvZcT=m4S`=Rtl_O92lZ9Py*jlfprNwiAF#P?yp`T93%Bc zS#Su${xBsz(rp?T?Euc-}neLO&2U9 z7sElO>DrVS!O}&5bf6`EBUkue=Z1Zh;$khep81$(A7FG_XEn zA~XZzGhPo&sgr$l9k~i%&6Bgul2xAu`k0Vu^Bl6Y5@Io!+PHa~=S|UczOWTn{hZf- zSz&xHCO5sMR%5dv$+rdH6G?3^wTsl2p?GizO zuEK~Ejv7NH{KB2(C^9$G#TKN2LTUjE$kBEBVBaLQsANL$TEL?8MRX7Q%Q*(AdNo)x zn!pM?aRw|Bmrz8HKZQ60Zk}s@+UAkO83gc9PsAB;i#|po7gPg7)O-xSO$v{H8s4ee zfJ_n(c-RJ^sw04neA4ydW`27-bxpTLP`A`MWKLX7XN~9jV!x+ykPLD)s`8>Q6cSda zC*%!>biq8n4RcU~7(9hJ7OE7#y)V-G+j|*hpD%92T#ToA-XoY`14=QzjHaKjvvjqX zx!1XZRUFEHaliop2eNzhb$8u=kd!(}vlqckNRv{Gz6odQpPgW`|9{%yiHE!4HW&qq zf!%KZn}b93&wt7*QSc!b3X!YtBQtRot&(DVQ_Pb{4@7t(gym8&a}3-O75(bqnV0dO>!E~9B&$jPUdtx2jUy9>Clu6P9zTV^eK57WTn}v#`;V_HHtKVzN%4)`t+w__WIb4zDQV>D%mu!%9^*PDTcrh${Ll(PoI8N0zdt!7!5Ek zqRZW-$|j{xJ~~lfO~*2t&EmziG?Vl{jJ=0S)n^R;AjUr`8-G22`1&Vvvg}5gh&Z!B zIoUU6W1le_l$}417qWNiFnPghi?Z+M(N~|gP^tR#RfbB@r#}_D#S^is+#if(1&8*W z&WKzpck6ke-@D)lpQ9~{G~bOE3%P05ZU~?DDVG7j@xgAFbO+G0ITeY#W2Ko=7`Ay` z5=v3cwm3K4(@fES9!3PKuKE;$qEjjr)^)*$8uCtug55~IDf;kJQ4Yu2CRcedtNEgu zARkvG97;oP39sdV%EM>Ok{8XZ^Qjo!;hv?Ppz)cy4Y4kna8%1NU-o{<*g)v?dA%%* zhPaJq#f`BzLe9wyhqvx&DN-zuhDM~jjj_&09ll+6irx@^np)AfAv6)9eA(zlX-(_| zhx`A>nF;J}5>4UJ>>GV$p!3XYD%~<%U8%UNeJ@LI^>yNfHaceI$1ie`7_1&6I!UoYwvTGF zL8KJs4aWRoG!A3_F#3f4RE*vj=gTB6w6o}i{AT+_I*))MqojE1Q#ny$qHH9>Ncn0d;g zS-i@-RWZ~YNtHBi8l2Wh_nLvAH*ifHZ|wya!|~N#&vBvCI4`<9kgg5*oTM1mb5dE^ z^gaKaVrZ;=>5PVG-c`T#cBoCq{cR!q0xQnGc?DLSPsPEi)Ou4!4dXO?PSF7d6W||C zc}}^1s@TjPW5!=c%YYT>cuu*m`1df}A11OA?hg`L3HMR4m1?1t*0a#L=;UP`?)zzi zZw{sh;^2y|fx`V^c7M1($o3ESY5TvNmUPy3k8!u=XAgYyBz*Gp$suP}{A>XCbA1aO zz>h^CCbwq=am92u$utYfsd+qkJbS{~Feq$)C1Yw(=t{<8QC9-@)O=GGieOC=Ufu@xV^QvgwE@NUzJ}<+P&AjMvu7xPB?n7A444{) zksPZz_;eXxf8tLA8BpCf#2H;`X%i**borHGXrjv=ZRQK?OQU7~F{j00{EZs-$K;_-oP-K@qRX8P>Aee4Kupfe45JKC;L5R%Fet_~YcRDNgHOPLL03WQE6(s_ zcmFvc1{(LUZIo_`5HdwTBO+=d6zQ^mGE+O0l%rKYmEnG_m&$NI7OOIfRW4TxC-4=L zkeA&n@}R^28ctv-yfw!2-4G}kjlxqh9*fc#naEd3v1=)b+9wBY2L-3}1bjJ9baY{) zLC_o_33u7FUs$~zCSS|lo_8*XW6Ag?b2uK0ayo9Tc+ADw(Hseky`GKBL~eqA;17lh zJnBHRIhr0QZ4(8cq(2q~maLxznC$8Cm*^ZX-WD3_VI zsuFw-_IV8s1D_0s!B2)b0Ofj>BMo(Tdwxi3npNbyN0IQ9?PmJq2}=SJrgFoP%<^2J zP?d~zi2_bC9*go|I@Tp$6Qf{%ls&3K6u^=*E5m3D6!>v`oy9Y5;%|roLJqDVP{2u? zf?!HO15Wm!AW$Gl#!^Iq92t*ADTwt_^mG8C(2s*JOB6toGe^Uy3l!v0*L6~wbS@Sv zj>bS?8u3%}ggG_CnsKb=fa{Ay zAsYveUZBvAoM{;*dVvBluBU~)JtiphBIJ;J%woDhff@(%HcU|9$NrSTgoJ+dW89l~ z0v_GZ9fU|`f&)BSVN#a$wT_pAJWCireu6zPJ|AZnvO3Xb%5UIg#OOg8*-_0N?E{t}Bgix_R9 zHv6OCrYM##_V$+XSCPzCpT+oA-k_FcjmRdBHzuW zt?GteyUh|hsihA$?1al=`OWN5{ljUI>A_etO6Y%f)W6{lYn=~8aXApjC646MDAN}= z=@*_^MB=%GvU4JT^$%w@hVfWTP{2&aV{zp8W;XOuF633Ue8V!tn`tUP=1dn7jtNf| z_YQ-k!`##rY#luiALe8jLd*${5!0@OlA?k$_k3GK&-@O50q_kHsjE3`#3W)&+oHZS zya@6%iRISI#kC@4$wx|pE`Jdu0vgl_&;h7(iqj;6DWW`oAVc#Hv*8}7Ai(GPb3uTQ zMP+`Kx;M@h8w{Y0%TG9)k;JH3^Xo7W@e@xhCtnfMxHEeoJ0Hkdg2HvuAB%!iU|sf*_aGl!}gKgOgi>ez2_Ampz&Sy zIcGza-WbL&fx~QqbEadIWBV=E9C531w8D4Y&5?;OZ!LURWfU_Syl1Y<$w08o$uO|Y z2@aN7TY4`n(dwhIr3_bZvZCZ9XeI)~z{2fL1_EqmiFopp_I z$kG@jJu|AZshMWC`2bH9Olqy&Des!A$4=1rcqW=3b5;)u;pv$d>~5T*T8ONPV0(T_#Qj_^ zCE|W8S&6I{Oq6Bmt#iHTPg%=_qHOY;XektmA!xx(I@>zvgX1#XJ~R({;J5@Ii{iLk z&&P`|B2#FNqnH4F~bf1Ejg>>;iSKG#343O*JUSFKIXO^rUjbr$Pi z>|-8T1qu(%Om@v9)Lsu^67aeHVG`)EC`>7ajL~IzA9ylmdX>pJzyVFc;5dU<`v8S8 zUM%}mLkj3#p^gPl zy&YXgt2~dR#g55&QdEFD7I?kSa7G;r#OHb7%jX$RKx-8R68*+7V!bR0vARQ=?q%Z# z=BOQ1JEfxD0pDfpKpNtdlo{e~bC~)72Pi}-{jo4g^rux`#EV2MuBSH}D<=_ux!mBn zd#OwwtF|WFED#4Ic<9Y_w0sdfYum7n9f0QWRLy+R&9pj$>j-e^+>rI z^NrNn=l)ne=2-q#7GJK4I9}Qo;;q@ zRW=p*o+{0@ck)$=kjqEq<7u8tG2}iG%Gn@)=W4Z>s#c;zuH%_dGRmIi4_^GE*~dX@ zF`>NFBFj<^qK%#7xBv9%ld#UV8SFg@E^b6%B$-Mv@*uxSSMs_ZCAZOkT^=YXYZlK$ zP{^;9Q0MBQHlMpCrP!q!hRFmPBoByKzDdlNMH_jr9FfWH1Sp4$oK-nxC%OsMS{~f0 zX;`F1a1(tIa@OP}WD&{zbR8(|y~^^A*#Tt%)pjDpG8Iw$xl6q%UzmQmufDFM(feiy zb_eCCCa(*Wb9!7v*Sn^FG7)R9dpMyP=~+0Q19v7GqeX@zsXRTq&9H7Zz{S{ld+9s^ZvY!>o0qvL|*`A2Ifeb`i=0crJRjUmUvn zn<6d}@jAUuJEAd81r4gBmXiU#Qn1elP(KlxxBED3BVl$n4yvkuuEy=HMio2_!hQV* zy=72qb+tT?7nXHeHvX8^V^DQD+I8+A=hHzA=6E{!;S>{Qb6c=)_Ml?xngDS?j=v{% z{J8Zg_pygGcM0i`gi8-=)X%g516 zXmEkMS(ZvdUbWq=auiYTrUD%L$4KF0DZl`Lj#m3H6kvovZ;BX3e+u-aDq#QsLRJ3o zUHX*~rSeo%T4Mwrni9qV-~}jsHoVIo3>WBcsZf*-{pl3t(!@NxPok-~VOo}OjQ{?u zI~WVVJ>eK00_x3+UM$nyHtYITBMN!p*L8|^qCcIYjOe=&h8FZDJVlj!)2zuy--9r? zfW8O0XDkdhXj_Lve;GG0`T#45F>pFBeCprrmdTEwZ6oKhm6+V^DkM99TqkG1Jvw28 zLT{TD#w7H$Sz&@I$J5azW8KYp8ack#QJCQBzONxL@fH3W!rP@V!4>`*!rh^sMw0LD zg^jLlA1ehcXsT0`21eimMxI8hne|6mwP?Qs6(kQxz{&b2? z`6e$`Gx?)J?03!7Hkb)!&bq&A56qs`-#iWKUxul%5c7m_Yi!RI%#4K#0KDM2|6$TB zq{gkHEfa<<4)bbJ7bbgM!rWT@#g7NoA24;6b6rkv#B7xama7e>(;`n3*9L^CwECN- zLDdILljZb^e|9FLyBp#t4qi^WTLuqJ;v2bz$+dc0B{0cWZ>wZbRRPmxx$MI=R9M+* zV)jCO5iP7j?pAxUI!+Ew!k6x{bnf;&?=dE1XO^YGMlobyIedY;)B)>chxxdWC%fNv zglV}5QOkhoXNGyZ2tM|pC5&t=4L>CbGl2D`s9-Lyf4)=+OxA@~CFzWViGUfq7*43k z$*U8Fa{y-cx?fEK(}3NdCh_pfcw@3)4zPRBB_Yfb_8U?rAxt>dA9f4o3hNDA2vdWh z^@+(`X{)5t(liUsv#nLWdo2Gs9}uqR;Qi9(n*?A}yK2-Aq&%Xa3*z3z2Olkm}u zElmPKe={CW@kEUt)0^ zFz#hwfI8$MqPI<`r&09$vZZ{nTL90SA@OGBe-Pr{>?ue49D9oF<#Dv_foQCbI##dy z!%91z-H+pJ32)u=9wwo&``yF6 zMfM!e?<=$iKb{1qZrj5s6Vf3A$EHG)7PPd>akEoQNJq0AZRKe~Iwa{0Jm7eKUm-!q zf8$y3fokn?R%$O^^sbw+qirt}iPa)S^)QwP2}jL%JVmXbYD>9qGbF(D02t$tgsEoS z21y`l#^XsbIYPOqmL_|O$gzFrENnEX;#5o91EH)vOv;3_+m-m=(62Z0e%bF z_5Cpe85NQc(~O-#!b~$BPclx_&XBu8T*ki})pA_g`EvM;R&ev;wZXhUR9gT8y3F#)_XqT!- z09`WKXSvnM2m;l*!gu;(fBCrMw3Qk8`5}fB`Hg(30iY(Jlhg&3c!KfBuw!`;dAt+pvjq(uhxr7TUxT8nnb;!dsf8;4ScH}VG0oeB(L zJW_=3qKqpAhEX0V#c3htTrp6ECR*f(=h3wopQ=B(%aa5?#)+a#LhcGBft6dtNus-S zRg6{6KU)-@uG|#iypYz1e}YXT7Ri&{ePD*z+Or|YU%H3Fy-q0>Sc@piC>y_$-(=5; zzcww@Iz2DCw@iyu#^+>qjxoi^GF`j+`XWoyB9J!r51P2Yv^<{fD|=+F?4nt5Q@;E7 ziF!9(94Bcm&cr`gBCmeqo117cOT@|7xRBq`{PyKX7po%8E;6}_f7K__tSUd)9#Q!P zX&o){@*6irv3#+&XTK;f1NO(gNmzdM#no5$x0OA&C%?*_C~V;nGn}z}GiRz%RMC*q zP&dtKT^X#hr0oBO+d-9emZQT6RWtx8ebTAn&rA_%D*yDCS+P13dL(RHeu9Z|ZR+Yf9l$?aCH%@s(s6VJ*;J2!92^{Ip! zf4R=m+w!xwCx1CP>)O3)Y@R}8tj0g_x&{c=|q)_qFxS>?%rfrL5F>RKE90 zUK%@Pb>7vmg)7_TRkmc8%<1At-)J40yVfK7R+rvz_6e&!f8qY@sSYulMpfqSZ|Z*# z$&x+wsB+)Psc-D88!1)!i8{?$%ffUG=q-C$pzDecuq-GlA81zTDQ3&$T25OMsH;eG zg12k4$Z1(-;;L!Pg@@X^q&{eva|e(2)dx)5hzziYdo{g@6KSk0xKeOjtl05wR%wz$ z7$x!bLLOMvf6yMEyuCO%`}F$c)de{8W`wtgK0J8pGxQwi?r>AUVLfh_$awngZ&{xB z=8%JD>dPyz@+n$W-xosnmr$SVZ&c zVt0O*tJCN^9WMw}AfsCNPxMrDoE`2?kU8g39oX|3e^+va!ftVlzG2EkE?L+qPvw*g zuHvG(raZd#na{o&;7RBOz5`uW}BI~5hJ?)*iz5@r|Y zBKsoF)UP%_yAOd9ANP+o!EL>_B6zko9YPbU7y3BKnwpnV;U zHF>J#f6tYvuLIJ`<9S}QY6Un%`JvN~;1q*ZHvkr6+j83|M$}@u*<*g&1-g5>xQZ8X zaR)d;>z}FTk8kQ;i=)?nJ^K4OTTPKNb-I^}=V~G6@^nj71vJ1plfzjn38c)2;w}-# zQtIl2Sjyksy^V_-3p5*K7C2W$cb_frsQdQ#e|$Ft3J3Ika;*h3aq-|XEsAtrj@=VE zq6%MKS#9bt&l-11ZBVDn`fqTJIyl{lJ=A-iW6kkzIwYx9dbbA?jNFlvqB`X9)dl?? zWT<&^3)ANft8Fi6OSZln%sY+kVBV_l2d`@mDWeN9?|vgq&iZPR#KT}9Wq%E~3CLA4 ze|jE;LBdGnOtI}wIZky~tv_W|MPD}@m1Wc!dK>U->i1FR0W-AZo(1k9(T6oaPHb}v z@*6n);dD8CIKXo(IWel9PIppL9W2B4&1a)tiEHD)j?#(!V0*ietmz(#pupYrRNdr+ zKer@**&g_HK@RtI6SzwrJaz?Vkjkxle=tB$Hn~(w`+%TL3|N>xFE}l#E!?!_x^-KK zH00oZ_2u8A8gj5SeL3v<*^T|X>P+0Iu`PiVl8sQ%2m6h{W+(D@RG)#cb*FH#30R`O zqfl$9bj+t7*_k}XUU@)KNr|L*F_DoSSfoCKO|-}kEYH2U;_B>B>eHlYxVy~*fBy9M zdm8y(^2k}QEuwT|?cAf%$MNAbSk{&z&OhF-+2ZT6-8M4ev|WPdj(9mc+zo;Bl>Se( z`?h2V#h1u~i@&bHqubYk)~^26JEM2)2d-Q=mze|sM5r0(sFL%U9U^!tU2>r(Km-rZ z8l3s;>sf;no>2}4=jx1#Rel*|e_hMcy0{Ryf7m|(r%iWa%h4+lfJw44rq@mDb0@zM zQeAQvfsgt&LVP%T9ejzBRb?4}d-7HOf=c(z$5VME@|7^TW)wy`&9HTGBj&&Acf9EGJ?b2|2Xk~$pqq};hNJ_#$1(okR`-=0nF!ZwA>s8>O^U4=2jf8^Dl)m{Jp zYg6k%x3O<(J@`=1bkQ=WSb<)SG7)w6E!>B!fqt?@DOsyeA)Dw|$QT9hV3-4bV18-5lS(d9Y`)uy>H<)oi%-o86h(Xfr9 zblW+1;N_en<@h%a*YyC{e>ck6<4Qs}0txXsqk)iz;8T4DKE)h?=QT&#ag@#aJ_XzL zVb7)yHYFnlI#<&x=g1Vg3;H z#8hL&`aX+i2m`_${P;D9K)g@6Zb{C>wcOBLStutNLYDNlhjl|bf9kr0LJ*bobJF#6 zdbM^`BRpy#X@0 z13*j#^ecDC*o@-oe_|#o1%k?HhHXfX_&*_T=WgFG2GSC#+k#U**+P%A(3EgDJYp!6 z2%TF1k3fDe8-r9z)isenAht)YN;a(TP*3i$x=Tse8(RxLGI6wLHfBx*`)u;2*|32|i8$HF< ztqSoRKvE^x4pDpnSEP!uO$Dp(;?6>4JCt3!*T>j~{fVHX03Qo@a5lx&le@M;<(TM0rjWc3ZBufdY#>0J- z8eaq1hd>|vySxp%(9F}_aIzb2x9~PQ z)7>U7kMa+@yTQpKU&%XNP~1d?{6hq$aJmXb3j}c-ts10a6^*i@1iR6Ot1lYn*6r(9J2@O-)2`A!Yg=ZAH+P06J`&}-(}AM zcv#@p^{)#>Ak^n!cPEp>n}2;~_NMw}RA=^|A!GKmwRI)Lxh8O6cB20KY(-7Gs`wB( zFe3e?(SAbA9MyqTKhjAjzRl z)I69FLnVU*y#F05@eFJ`bLoHm>eiV19r>a7um>T49X{*RfvOJ4-G9mUIY|p(+oKW= zB(Ha6FL7j;Hx940C?_E{lB<=}vrQdUh`i8KvX=`nTa_i9_mcEFmbXpy=bLB|U5o5O zesiq8+0<6*0seYw8BIT{I#ODQu@z#hh4|0*I~!mO`m?4$7AE4McHb-Jtauuv+4cCR z)gqRowpzx8$i~q!9)BO@xyTAl(iG_*PyV@zlHA=(buC5nr#M!BQ!rqV$8Y41s%qEx z&B^)s(f22xPT&6J==JH#Pv;jOUY@+Y`1JDh{Qc{rzn{F6pS(Qzn^Rur^2cZ|hMXVX z{`u{@zrOu+{O--0qqi^Ja%n9BlyAl;z;3y0RiS)*T$Y5&i+>MAoQ#iNzC4qnetLOw ze*Ed^&EMSZ4h zHzytg35T2e6Yu>G@7{XJM|6dGhI8Mi> z?@qo>#Zn!OjI~M7;<~|wY*AS;RXLblT_fI3B_PNHc`pPnoA3|vLvSS_V>r9c?%Vt*{u)^_DwUWobfWt=fu_cB*q zI}jBlE!9k$YCf9Htahd^QdATaBZQT}Fg?2EFoOZOB`CIMn;aV9+BF)Q=L?z=ilx~m zg(%fjH82RxDW#Hg1S~&_c?n3hj52vF)@6FH-oZ&EPfFnWhEZ*xM00r!O~!B3pIx^` zU?3>gp?|Acdsn94Sy4gFme$WiG<&y5?vBj6-=*ni`hJCjop>QW$d&Lu6IU(fktTsY zz{WH?%p*Vq>&Y2gtB7t8p@Ng30C|ySa`MN2%F{({8qUqzjM-po&$=YlobcsfYtK>+ z+jQsVa7sYQwgDxnjApwozFWnL%apM^FzS-N`+qSiZ@Icm*JP`Cd?+7#|-zq}$tY$c-=j(Mwo(@On^nBhsG+GySn|k1)!YymgR)xghw~8n9&h z6@L|t(=%b#ue$F9g;2XR%I;pJt^3g3s@J{MIa*i`S{(!({&Hupy>y!Mso3cMx9dA2eHoy2m|1*Z(s(A1hT_9=^sq%`x|(}J z;r)m0fFRm_%d8x_GkY$E}&s z+q7MR)#e+uJqP_lOP8ug`E-baL~a^ELB8FC<~K&$3uR|(09u50?aL<=XtLHQbs6h+ z$4KkFow6$&S+M%{7y6^U2=!ft+7m1^>sw`%k@Y@Y`MyJ)iLYY1D#WLF@g+*)(tlg? zD$V9m@u|@6>gJWaRrNh{6mNP$sbG9wWUA6-Q=)Pi$-Ng(uWsh)?LWosH2U~}em=s5 z>m9-vzx~D#G)3D99N|R9*$tPmC#`AcqkUb4@Kdo`46&x6($`ph1Fh+4>EBX+mGgFz zWoc#?^``HOwXETa^zF-9Dm_t%t$$T*-VUC3E@)_wIK)$CVQ&pXL%j9M?g;3&+*n+9 zVYom%eWgR=;T7I+J{7COFe@EfXdSuI>+0xJzS0*hzs{PQS89RB0sm|QWI~dAy~QC&p#X=%O7{l)qku@i$gME zl_Fh>!$rt_wK!Y?oV>Q3AQbeC6j4v;R6q@wF%{W@_}X<&NW)6@RNUog2aVXt)-)uipVKr%l}mZlSTtt8*h9&3rb3TR_UC zl)e$_j#BT90N1}}ZG`tHXKzl=&!tr0o~VoMy(i#$*}Ys_QN^X{Pwnm6D%CHxXmgA8 zTHhOTGG4_=Au=(mB}aUktJd%Ik7jdxSmdjv3hjv5yQRn?eH}pU6n`fmo0AV)M}du6 zWg6>9%}yX?v-#4-oic`dJbF0J#60~XM*D4R($yJsZRb{l1)N^EZZpAPfuD+1qh3U-47qaqanfKV9qph$!N`Bp*wrKn3Wm5bhL(O}6hgRaG=3HglOrb0PPuVKs;sTf(c~^cNj%cRmWf&4mcQfzI5K zIY@VcW1}<5ziJsD(uG1Bn2+}8dy5)3)@mNS$5np9bCbj}+MF{h zratkkTDeG7w!|(A9T>}G*8(e+T2!Jm+O;I z9my3zja~n>GisVqYrp(d4DQA+(!poT6DOx&!}V*hZ5fir4W>Ohlk!FDn(0z zGt(5UDSm0CZ%RtXt%j(KlTH)d@obFhV>}kC&pMO?=xz_uf7F6#<*<1Q_p2Tpy&xE; z_op7v{DU3p!O>@QAlhl;4WS?$!cs!h2nDg(0hWq@MMb5!bgBr)vwg4Wj>q%LEX$(<4G6YN8T*Jn-f4_De=QQ31vAJOL)DYD%!x%P@ z&9#hv|H08A9zU;$_|>9!rONznSb5J_-VoL5Qjtm@CCVnq(xgoWO^0w>%pW3ZI>ck# zfyZVwfarf-qM_`>tP6?9E<3)TM zCAHg_I0`S5w)bX8h7XjMl2v!QlB77fi@ymQf16Fl75OWY*H)e`H@=z3apqXn8QmPz zdgj>bfy^e#gb~nj%nZdks(wOA?xDWPFGcpgpHk)z^#&jY=nJX=h_QB*vZ!azqQjYl zPp%Y3MPDXjHiYQ`I?(bsh)QcpO|C3t^yMa*2`BKgSWL!*P|E444RWsDwL$@S`bMQC ze|UZJS-AU?vEA{tuPrs?Q0ZKZKPTp`9zcCCr?0O!hlCkYbHkV!PNk~+%GJwMEzZJF z;tiEYM|PkC`{PJ$MQ-274pc?)Sbyidgin)@V^~V=ozlF?5QS4U%4iX_9~GRlg4k)a z(PmMH)IRm7j$tWQFiaDwLl~cCBge25f8!-i@w3I`qj;er3RAK4!aEfMjiv9Y@1WAv z5~sUZ_97}r7ZBaAq%~5xck#I1&bbB%tF#40PooMRruexEK*^Ao#l^DzdKy)+PQ@?k z=&a&bP3%eWOK<4WA>8!TQf!=;2bWHD@pHuvn1D7tA>8A^rToExJ7GtIM7KT3e=jrZ zfXq#BwkO;#)iQGxaU={-K2N>cRI(-dr5AG=TF0Q}5Z@iX94RKk8Ec`+__#q5j$`3;+~6|HxZ&P&)QG3GEl! zBF;De9!hIb(9(Q`%+n8aAwkO#e-Z@vW3tSDg+T(ew{~}-Mg*iuUvSwbSp)%8l8-Ih zd@RNXBu^v>DI8Gp0z{t;jfj5By8BU#V@i#mw zHjIV`=xd&T=t4vqK%e!UD3SbI=T#N-q{wx2--Aftp@4IM2?zk3!^Fl`s)7K{0qz%6 z{zM2{K`cvtvKa6=^rmpQf1(c=r%@n2?Liuk2o0(-kiG!qu+JuIQDKpTMup6U!6m}cyX(gOo0EZYc=L*X$vU1Yj2SKfHT; zxVL*YDsT)rQ{^8Ax9YVQl(uzLjLAX>>k6)$RH2$H^f{3%6o{oi>;U?UtzlC+eElnM zPy{Q^1k~gV$smiYUg^SP)`|IdS-iHc_03gTKf-~|}S{qNHIAjo5dw7{T@wLz$ z`AprShS*_LZ>3X`Dsa9`#&7P_5p*Hb3p)OOy_%A!e;mSw+?6y!?=Q80!bQqAfzYQU z4@}BGH#Q8A)7oLB3_GQzR>mY1#qeO^_5GMOnY`JA#zy| z4Sc2h{r=KM=ze+gtFm}>6jV5(&PjY$CQ;wx2XUrS4p1^sYE9w6WopZFbjTki->OKR z+=S8nfAhSv29DxCq?{KA4}Wte8t#{G5pQiGfYv3K8D+@FsT?T}+Lm+pm&x)bP_Y84 zyPmAwa4S58Ou^O&gUJF`eC72*17{&;!u&y>t+VD^I0BD~O>iQT_t1P`?PSG(>9dDL zJ?Y~*ioJ4`I1Q34s6CEvWykNX{P6iBA0y>se?u?RORS`C(n~KnNv-ZxBdR9JZAsOn zw{m9!Qc;@Yt5S&xamyqomm^UC%1vNYiZl7_nZ{&GRU){wa*JfSTFkO&xmej@D69g| zt3_lMvsYXGLB6YNzizGPgCz1Vp@T-H)B_h2EzZ|fk_DP*N~61dpY5gdyU=@$QU^y? ze*q~lOAY)RrhrjNo$f*n#JJbVLYm~|-5gMbYgu7Hmx2yfr%D-YQ$FNOFp7MWJ}S|m z$@pccS*4pY=d8AcR;_Y$V!+^@?G}HcqQUt!o;KT7zkxxs>74D#$<3N}tQl(~Y6XVw z#1^4gFWa4STX+afe`z}B%Tx!}jugsBe;fZQ{9H-~gmNoag+Yus8Hoq823`kXo2bjE z4B_p?vvej)my{>|IC>hLKlz<-U_Pc`}vpZMs;2$b!JZ(bSSfv!l*duR~jt+xaxPm9gZ!d5E65MsZLUI|2pI z2Ub6zNh#|VRJJUZ{Y;HAj5QRO%d~26m6uJSsHq2yfT!$eQHwf~=;XcgM`t&atN@eB zZqn6M*xPg|aan~$ni2 z2o{6d_Oy8=qTr>`l?X=%$ryGsmWjs7nCp>I6)82y_>rYUGy=wZQ6fA;BUg($u|;^6 zMqe#rSfk>AGu5Y}S?lk4TJ_*f6M>A8r&Xwq1IDl$vQ22_Lqn?+G;y^bfASy)D&`p{ zRGY#5su7xQk*h}C7$-afqNf^p7$-=Ll#0d8Kk(G+;ae#Z5h6pqP~8fQVZ&M}d(#uA z{LEA{12CdU+2+wzPPq+%`>=bB+WrB$c@o$Sof>6dl1}O$@C1dv8WqN1fjItRnS}%~ z%T|%N1@B3-!q_T%&!I0YUWR4Z4cRJELqRQSU}{kvaDowfBk%>@n>OL;1ew~@jh(_X z_#quD+w^ey26C;sOw(x+&!U?+3wijFVR-IAsY1C^mht_Nd+ft*$V9QK`OQOcoJ^Cl zkhxTezz|V2tLilAe2A9mCk1a9Mks zNy&w~o=67x+8vGq!|#QPp?5U|a>VKO0sG`aTvOqCbOe576|S$BvD@`5G;IhGmcr~7 zUA#p_BY(L`)$0t4=v{x94x$Os7|oEUJop?=TXwf07PumPv%1SMR9XaCrCw3t!6ZA4 zZ_9Xrk5rVfeTyoCx)7u$-Lg%(K|DlPrL!CdxG0_KIKy#Wz?ZIboCvrMo$f@y=q*9q3Ao(6WtVC&t;t@^#58gPaCMo$g6njL>?RP;_9AB!Zu?L8jEv%8~sd395W_T!J06NMuw zx-{Nx?XCKODtl)POUW*Jgg)TP_4}*1fa}yZs@rfaJ3@r2Qj3Z4l7eF27+wmh=$-CZ zk&4(ooOx0ydcc3|I|PS{Dq9DPVBSWzemDb)l~mhKca(R~HSKg2+(FfaDhQL$!E-_3g$3>-Un5%f7?5- zLIf^`kO=Gk>@C2%umR3*@nG88(`!DP4Qzgkrt1Zs%IAM4HXe(k>xG`~iC&JS>xCZO ziMc{GHdKJ3>qftgNfUagFPtwtYA`roczCQ^3qdO;xAUdxy!{k0f$>VOkUzv z*BADgIsTdit#wW` zZn=!UDL>9+>pPeGWI`u@{tF0b9Qj7xF*#vpY>7NFKsr|3YZ zUq^dq3=t`OYTXlwqJkOZ^8*#FU@~aJ4s!lvReM6`)IjipRQZ4B>$>hOL?)s9r%^^8?Hn z0ew^=dU5Ws6fF%3#P@HzZx8pC8+@^Q^j}4I>-^E~?OpVLCP`d)yf#M^jmCfz>&?lV zwODV`%V_T=O<8hbW3sJsDG$9mU&H*1B^WW9+a_3L#&+^AmSEV(ZmVGGc3PdW`1bB~ z@->!dx6)Z)$w$m!waHhRxXbj?TRtN9k6pez=un-(H`Da$Q}kTiSt7Yz#Xm@rWyDiK zZ1xK+X?5FwDoG`VQzUlqWhv`(maL!ww_hVsV(U9?RqD5sPe~Rn(7ej7gjaeMo>ZPvtpf`?BSnW1_8O~H0cv7i4o{7!gA zOtF1^YPgIn*nx5|8l9f)o_(m9?0GyHx4&+)_!G^xNf4~EI`jDMRy79++q{~M<2#m= z0ZtL+^X-pL_o@>YDW(V`YAb%K`mT(kL2S|yC2nOpTf`NgrHhL~5or-uJBTgQt3Ff; zTspgd42c6=Pz;IfGYm=0o8tg?7wt>7%(41VDRJo@Gb9dht1%?D&oLx1Z;k_8cM31F zWtQ`gl~NmSG(+wHx1oyM_PMsn&6{uVP-CC)`Pr`CVDIGU-P_UGXy5W4`m^P0tla{- zZv_Lx1bK_YOcA4_3W@$I-m9m>8o-TntFbs>smOsB(w#ctPRm#7rA z`FZ*i;OIR(Hrzrfy4#05fArV*Hp%2?c3uh>U9uOdAHL6jrM_2yQSo$|eo4mBWERbT z%CrLd=c z@p6WVcA96pDPSDy#g|l%yVcF}--geBfq;%CfR#_FZ-8v2Ij-liZ0x#@rednonRTx1 zvipLhz=dTYZmaJ{yGL){jxK)r>F{iH`fk_s3(n7%QFMO3kpFQ7J%xlrkopjf(S(uk zSg6(L=-rudY#!%z_U|O3!sWCjmu8XCvw+kxDj8)3m;sq1FN&(ce0fxO67-CJIT;_y zLqNpQ-vNIyyl1d>JbzDTA{u@I2STOp5z10~SA|6H@!-p3d7~&_t1-IA^ogb-YsxS6 z_;=Dj=+$CaTC&k?Jel@tp%?w9yg;beh!mehEQQ*GpXja!=*_pP@1z4~S1 z@!(RfMLS9mP;kpZ(5pM$OcfD-BhXa@P2!AD5h;L0ManNy2bczmlT(MUJhWeRcac5g3xkAxGgUf`cg|2uq8rKQxcPn_{ zbG7Q{-HOKi^s6fiuVkM*O(b$@`31C5y4p;w&!xa{Ef;r;PF6B^bajFk`v3AHFkhHK z-getFR)*1KNFt4vUm($ceRb(`f!$4@;PypvOt(stYbkDGtQ(62&J|rrlM(gmmFUrx z3;5lxFqGC@rI&WxcYSh5S;SpFR~{1pUeetU&L8!qsLpAEC8hY$&Ql#89&0<>`bwd` zrcR1y@l@0=4*dwG5nu;AgK3P| z2=~LhFIN80t4$K)kfKp#gNs@&W@Q;Ir>QTH0G>D7$wmv$g*RumW!Ml#)M}#fOxgEv z@gh)Y%R5Y5h*NieJ${cSnf422{vzRRW`3<|I6}92zgh2Axk2|Al??4#h@5AYB&74F zesrBP{gm+L(@D0Bl<$;GmB{5^CNuCBxkzqf@u$`7>L#9jOvdB@6oK-aadX5IeYYJ| z2f~9~EfSBTigjj?khPvYi@u2UStMdTBx{&-gvQBrGRwq&mY&`Tndf&(3slpf$})=A zn8%ArCX{z7q*?T%ER};?#WTiaQ-ElMu<1+)HBRLtFST@X+9u0PiIvV02_8uogM`&( zg6I|tX8z8^k~h$QjP)MWv3D64F$*(!OW@dshF`o#LF6Sr*A9wbdnJ%pj)MRl0wfHY zF-p9_L=tF!++PQ(Q?cK0Eu-G!Xe*ymS3tt;uDpP%k7#t~U;w~Sxr&PwMjbiW;h>nN z4mRWrr(@VdgmHyNLx{DwX)xXb+^Xw7%0DQYzS6x=*8F!}1(U7Mbaj@?2CSR(i#D|; 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�#iH_iSEjL3icD{NU` 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